Skip to content
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,4 @@ RUN ./gradlew bootJar
FROM openjdk:11
COPY --from=builder build/libs/*.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
EXPOSE 9100
EXPOSE 9100
4 changes: 4 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,10 @@ dependencies {
//yml 파일 암호화
implementation 'com.github.ulisesbocchio:jasypt-spring-boot-starter:3.0.3'

//https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui
implementation group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.9.2'
implementation group: 'io.springfox', name: 'springfox-swagger2', version: '2.9.2'

}

tasks.named('test') {
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/umc/spring/ringleader/Notice/DTO/NoticeRes.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
package umc.spring.ringleader.Notice.DTO;public class NoticeRes {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
package umc.spring.ringleader.Notice.DTO;public class PostNoticeReq {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
package umc.spring.ringleader.Notice.DTO;public class PostNoticeRes {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
package umc.spring.ringleader.Notice;public class NoticeController {
}
2 changes: 2 additions & 0 deletions src/main/java/umc/spring/ringleader/Notice/NoticeDao.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
package umc.spring.ringleader.Notice;public class NoticeDao {
}
2 changes: 2 additions & 0 deletions src/main/java/umc/spring/ringleader/Notice/NoticeService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
package umc.spring.ringleader.Notice;public class NoticeService {
}
8 changes: 8 additions & 0 deletions src/main/java/umc/spring/ringleader/config/BaseResponse.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Getter;

Expand All @@ -13,10 +14,17 @@
@JsonPropertyOrder({"isSuccess", "code", "message", "result"})

public class BaseResponse<T> {
@ApiModelProperty(example = "메시지")
@JsonProperty("isSuccess")
private final Boolean isSuccess;

@ApiModelProperty(example = "메시지")
private final String message;

@ApiModelProperty(example = "상태코드")
private final int code;

@ApiModelProperty(example = "응답데이터")
@JsonInclude(JsonInclude.Include.NON_NULL)
private T result;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,18 +24,20 @@ public enum BaseResponseStatus {
/**
* 3000 : Review관련 오류
*/
REVIEW_POST_TITLE_IS_NULL(false,3001,"리뷰 제목은 필수 항목 입니다."),
REVIEW_POST_HASHTAG_IS_NULL(false,3002,"최소 1개 이상의 해시태그를 포함하여야 합니다"),
REVIEW_POST_CONTENT_IS_NULL(false,3003,"내용은 필수 항목 입니다."),


REVIEW_POST_CATEGORY_IS_NULL(false,3004,"카테고리 선택은 필수 입니다."),
/**
* 5000 : Region관련 오류
*/


/**
* 6000 : Database, Server 오류
*/

REVIEW_NULL(false,6001,"존재하지 않는 리뷰입니다");
REVIEW_NULL(false, 6001, "존재하지 않는 리뷰입니다");



Expand Down
32 changes: 32 additions & 0 deletions src/main/java/umc/spring/ringleader/config/SwaggerConfig.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package umc.spring.ringleader.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket restAPI() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("umc.spring.ringleader"))
.paths(PathSelectors.any())
.build();
}

private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("RingLeader Spring Boot REST API")
.version("1.0.0")
.description("골목대장의 swagger api 입니다.")
.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,13 @@
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
import io.swagger.annotations.ApiModelProperty;

@Getter
@Setter
@AllArgsConstructor

public class PostLoginRes {
@ApiModelProperty(required = true)
private int userId;
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,13 @@
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
import io.swagger.annotations.ApiModelProperty;

@Getter
@Setter
@AllArgsConstructor

public class PostSignupRes {
@ApiModelProperty(required = true)
private int userId;
}
25 changes: 24 additions & 1 deletion src/main/java/umc/spring/ringleader/login/LoginController.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@
import umc.spring.ringleader.login.DTO.PostSignupReq;
import umc.spring.ringleader.login.DTO.PostSignupRes;
import umc.spring.ringleader.login.DTO.PostUserDetailReq;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;

@Slf4j
@RestController
Expand All @@ -34,6 +37,11 @@ public LoginController(LoginService loginService) {
*/
@ResponseBody
@PostMapping("/login")
@ApiOperation(value = "로그인")
@ApiImplicitParams({
@ApiImplicitParam(name = "email", required = true),
@ApiImplicitParam(name = "password", required = true)
})
public BaseResponse<PostLoginRes> login(@RequestBody PostLoginReq postLoginReq) {
log.info("[Login][POST] : 로그인 API / email = {}", postLoginReq.getEmail());
PostLoginRes postLoginRes = loginService.retrievePwdByEmail(postLoginReq);
Expand All @@ -59,7 +67,14 @@ public BaseResponse<PostLoginRes> login(@RequestBody PostLoginReq postLoginReq)
*/
@ResponseBody
@PostMapping("/")
public BaseResponse<PostSignupRes> signup(@RequestBody PostSignupReq postSignupReq) {
@ApiOperation(value = "회원가입")
@ApiImplicitParams({
@ApiImplicitParam(name = "email", required = true),
@ApiImplicitParam(name = "password", required = true),
@ApiImplicitParam(name = "re-password", required = true),
@ApiImplicitParam(name = "nickname", required = false)
})
public BaseResponse<PostSignupRes> signup(@RequestBody PostSignupReq postSignupReq) {
log.info("[Login][POST] : 회원가입 API / email = {}", postSignupReq.getEmail());
PostSignupRes postSignupRes = loginService.retrieveEmail(postSignupReq);
return new BaseResponse<>(postSignupRes);
Expand All @@ -82,13 +97,21 @@ public BaseResponse<PostSignupRes> signup(@RequestBody PostSignupReq postSignupR
*/
@ResponseBody
@PostMapping("/signup/{nickname}")
@ApiOperation(value = "회원가입시 Nickname 중복 검사")
@ApiImplicitParam(name = "nickname", required = true)
public BaseResponse<String> retrieveNickname(@RequestBody PostSignupReq postSignupReq) {
return new BaseResponse<>(loginService.retrieveNickname(postSignupReq.getNickname()));
}


@ResponseBody
@PatchMapping("{userId}")
@ApiOperation(value = "User 정보 추가")
@ApiImplicitParams({
@ApiImplicitParam(name = "userId", required = true),
@ApiImplicitParam(name = "nickname", required = true),
@ApiImplicitParam(name = "imgUrl", required = true)
})
public BaseResponse<String> addUserDetail(@RequestBody PostUserDetailReq req, @PathVariable int userId) {
return new BaseResponse<>(loginService.saveUserDetail(userId, req));
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package umc.spring.ringleader.region;


import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
Expand Down Expand Up @@ -30,6 +32,8 @@ public class RegionController {
* @return
*/
@GetMapping("/{userId}/list")
@ApiOperation(value = "User 별 Region 리스트업")
@ApiImplicitParam(name = "userId", required = true)
public BaseResponse<GetRegionTotalRes> getRegionList(@PathVariable("userId") int userId) {
log.info("[Region][GET] : Region 전체조회 / userId = {}", userId);
GetRegionTotalRes getRegionTotalRes = regionService.getRegionList(userId);
Expand All @@ -43,13 +47,16 @@ public BaseResponse<GetRegionTotalRes> getRegionList(@PathVariable("userId") int
* @return
*/
@GetMapping("/{regionId}/detail")
@ApiOperation(value = "Region 세부사항")
@ApiImplicitParam(name = "regionId", required = true)
public BaseResponse<GetRegionRes> getRegionDetail(@PathVariable("regionId") int regionId) {
log.info("[Region][GET] : Region 세부사항 / regionId = {}", regionId);
GetRegionRes getRegionRes = regionService.getRegionDetail(regionId);
return new BaseResponse<>(getRegionRes);
}

@GetMapping("/ranking/list")
@ApiOperation(value = "Region 활성도 랭킹조회")
public BaseResponse<List<GetRegionListRes>> getRegionListOrderByActivity() {
log.info("[Region][GET] : Region 활성도 랭킹");
List<GetRegionListRes> regionOrderByActivity = regionService.getRegionOrderByActivity();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,19 @@
package umc.spring.ringleader.region.dto;

import io.swagger.annotations.ApiModelProperty;
import lombok.*;

@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class GetRegionListRes {
@ApiModelProperty(example = "Region ID")
private int regionId;

@ApiModelProperty(example = "Region 이름")
private String placeName;

@ApiModelProperty(example = "Region 활성도")
private int regionActivity;
}
12 changes: 12 additions & 0 deletions src/main/java/umc/spring/ringleader/region/dto/GetRegionRes.java
Original file line number Diff line number Diff line change
@@ -1,16 +1,28 @@
package umc.spring.ringleader.region.dto;

import io.swagger.annotations.ApiModelProperty;
import lombok.*;

@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class GetRegionRes {
@ApiModelProperty(example = "Region ID")
private int regionId;

@ApiModelProperty(example = "Region 활성도")
private int regionActivity;

@ApiModelProperty(example = "Region 이름")
private String placeName;

@ApiModelProperty(example = "Region 이미지")
private String image;

@ApiModelProperty(example = "Region 위치정보")
private String location;

@ApiModelProperty(example = "Region 상세정보")
private String regionInfo;
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package umc.spring.ringleader.region.dto;

import io.swagger.annotations.ApiModelProperty;
import lombok.*;

import java.util.List;
Expand All @@ -9,6 +10,9 @@
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class GetRegionTotalRes {
@ApiModelProperty(example = "최근 방문 Region")
GetRegionListRes lastVisitRegion;

@ApiModelProperty(example = "나머지 Region")
List<GetRegionListRes> listRegion;
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package umc.spring.ringleader.review.model.dto;

import io.swagger.annotations.ApiModelProperty;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Getter;
Expand All @@ -11,6 +12,8 @@
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class PostReviewBookmark {
@ApiModelProperty(required = true)
private int userId;
@ApiModelProperty(required = true)
private int reviewId;
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package umc.spring.ringleader.review.model.dto;

import io.swagger.annotations.ApiModelProperty;
import lombok.*;

import java.util.List;
Expand All @@ -9,12 +10,19 @@
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class PostReviewReq {
@ApiModelProperty(required = true)
private int userId;
@ApiModelProperty(required = true, example = "맛있는 음식점")
private String title;

@ApiModelProperty(required = true, example = "음식점")
private String category;
@ApiModelProperty(required = true, example = "한식")
private String hashtag1;
private String hashtag2;
private String hashtag3;

@ApiModelProperty(required = true)
private String contents;
private int regionId;
private List<PostImage> postImages;
Expand Down
Loading