From 3dec30bea9230c4dc4f60f4ebc36eb60c9b72dd6 Mon Sep 17 00:00:00 2001 From: Lee Haewon Date: Sun, 4 Feb 2024 20:52:55 +0900 Subject: [PATCH 1/4] =?UTF-8?q?feat:=20=EC=9D=91=EB=8B=B5=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EC=83=9D=EC=84=B1=20(#18)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lux/once/global/common/ResponseCode.java | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 src/main/java/ewha/lux/once/global/common/ResponseCode.java diff --git a/src/main/java/ewha/lux/once/global/common/ResponseCode.java b/src/main/java/ewha/lux/once/global/common/ResponseCode.java new file mode 100644 index 0000000..9c261b7 --- /dev/null +++ b/src/main/java/ewha/lux/once/global/common/ResponseCode.java @@ -0,0 +1,57 @@ +package ewha.lux.once.global.common; + +import lombok.Getter; + +@Getter +public enum ResponseCode { + /* + 1000 : Request 성공 + */ + SUCCESS(1000, true, "요청에 성공하였습니다."), + + + /* + 2000~ : Request 오류 + */ + + + + // ===================================== + /* + 3000~ : Response 오류 + */ + // 3000~ : user 관련 오류 + RESPONSE_ERROR(3000, false, "값을 불러오는데 실패하였습니다."), + INVALID_USER_ID(3001, false, "아이디가 존재하지 않습니다."), + FAILED_TO_LOGIN(3002, false, "비밀번호가 일치하지 않습니다."), + + // 3100~ : + + // 3200~ : + + + // ===================================== + + // 그 외 오류 + INTERNAL_SERVER_ERROR(9000, false, "서버 오류가 발생했습니다."); + + + // ===================================== + private int code; + private boolean inSuccess; + private String message; + + + /* + 해당되는 코드 매핑 + @param code + @param inSuccess + @param message + + */ + ResponseCode(int code, boolean inSuccess, String message) { + this.inSuccess = inSuccess; + this.code = code; + this.message = message; + } +} From 7a4733b5cf27e3dfaeec5a2dd5ca0ec83bf23dbd Mon Sep 17 00:00:00 2001 From: Lee Haewon Date: Sun, 4 Feb 2024 20:53:52 +0900 Subject: [PATCH 2/4] =?UTF-8?q?feat:=20=EA=B3=B5=ED=86=B5=20=EC=9D=91?= =?UTF-8?q?=EB=8B=B5=20=ED=8F=AC=EB=A7=B7=20=EC=83=9D=EC=84=B1=20(#18)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../once/global/common/CommonResponse.java | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 src/main/java/ewha/lux/once/global/common/CommonResponse.java diff --git a/src/main/java/ewha/lux/once/global/common/CommonResponse.java b/src/main/java/ewha/lux/once/global/common/CommonResponse.java new file mode 100644 index 0000000..0ce8030 --- /dev/null +++ b/src/main/java/ewha/lux/once/global/common/CommonResponse.java @@ -0,0 +1,36 @@ +package ewha.lux.once.global.common; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; + +@Getter +@AllArgsConstructor +@Builder +public class CommonResponse { + + private int code; + private boolean inSuccess; + private String message; + private T result; + + // 요청에 성공한 경우 + @Builder + public CommonResponse(ResponseCode status, T result) { + this.code = status.getCode(); + this.inSuccess = status.isInSuccess(); + this.message = status.getMessage(); + + this.result = result; + } + + // 요청에 실패한 경우 + @Builder + public CommonResponse(ResponseCode status) { + this.code = status.getCode(); + this.inSuccess = status.isInSuccess(); + this.message = status.getMessage(); + } + +} + From 3634014f1919234fbb5ad637103a2f3d8d0f4811 Mon Sep 17 00:00:00 2001 From: Lee Haewon Date: Sun, 4 Feb 2024 20:54:27 +0900 Subject: [PATCH 3/4] =?UTF-8?q?refactor:=20=EC=9D=91=EB=8B=B5=20=ED=98=95?= =?UTF-8?q?=EC=8B=9D=20=ED=86=B5=EC=9D=BC=20(#18)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../home/controller/HomeController.java | 42 ++++++----- .../user/controller/UserController.java | 70 +++++++++++-------- 2 files changed, 66 insertions(+), 46 deletions(-) diff --git a/src/main/java/ewha/lux/once/domain/home/controller/HomeController.java b/src/main/java/ewha/lux/once/domain/home/controller/HomeController.java index 8dc4e45..e174eba 100644 --- a/src/main/java/ewha/lux/once/domain/home/controller/HomeController.java +++ b/src/main/java/ewha/lux/once/domain/home/controller/HomeController.java @@ -1,10 +1,10 @@ package ewha.lux.once.domain.home.controller; import ewha.lux.once.domain.home.service.HomeService; -import ewha.lux.once.global.common.ResponseDto; +import ewha.lux.once.global.common.CommonResponse; +import ewha.lux.once.global.common.ResponseCode; import ewha.lux.once.global.common.UserAccount; import lombok.RequiredArgsConstructor; -import org.springframework.http.ResponseEntity; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; @@ -14,29 +14,39 @@ @RequiredArgsConstructor @RequestMapping("home") public class HomeController { + private final HomeService homeService; + + // [Get] 챗봇 카드 추천 @GetMapping() - public ResponseEntity> homeChat (@AuthenticationPrincipal UserAccount userAccount, @RequestParam(name = "keyword") String keyword,@RequestParam(name = "paymentAmount") int paymentAmount ){ + public CommonResponse homeChat(@AuthenticationPrincipal UserAccount userAccount, @RequestParam(name = "keyword") String keyword, @RequestParam(name = "paymentAmount") int paymentAmount) { - return ResponseEntity.ok(ResponseDto.response(1000,true,"요청에 성공하였습니다.",homeService.getHomeChat(userAccount.getUsers(),keyword,paymentAmount))); + return new CommonResponse<>(ResponseCode.SUCCESS, homeService.getHomeChat(userAccount.getUsers(), keyword, paymentAmount)); } + + // [Get] 홈 화면 기본 정보 조회 @GetMapping("/basic") - public ResponseEntity> home (@AuthenticationPrincipal UserAccount userAccount){ - return ResponseEntity.ok(ResponseDto.response(1000,true,"요청에 성공하였습니다.",homeService.getHome(userAccount.getUsers()))); + public CommonResponse home(@AuthenticationPrincipal UserAccount userAccount) { + return new CommonResponse<>(ResponseCode.SUCCESS, homeService.getHome(userAccount.getUsers())); } - @PatchMapping ("/{chat_id}") - public ResponseEntity> payCardHistory (@AuthenticationPrincipal UserAccount userAccount, @PathVariable Long chat_id){ - homeService.getPayCardHistory(userAccount.getUsers(),chat_id); - return ResponseEntity.ok(ResponseDto.response(1000,true,"요청에 성공하였습니다.")); + + // [Patch] 결제 여부 변경 + @PatchMapping("/{chat_id}") + public CommonResponse payCardHistory(@AuthenticationPrincipal UserAccount userAccount, @PathVariable Long chat_id) { + homeService.getPayCardHistory(userAccount.getUsers(), chat_id); + return new CommonResponse<>(ResponseCode.SUCCESS); } - @GetMapping ("/announcement") - public ResponseEntity> announce (@AuthenticationPrincipal UserAccount userAccount){ - return ResponseEntity.ok(ResponseDto.response(1000,true,"요청에 성공하였습니다.",homeService.getAnnounce(userAccount.getUsers()))); + + // [Get] 알림 list 조회 + @GetMapping("/announcement") + public CommonResponse announce(@AuthenticationPrincipal UserAccount userAccount) { + return new CommonResponse<>(ResponseCode.SUCCESS, homeService.getAnnounce(userAccount.getUsers())); } - @GetMapping ("/announcement/{announceId}") - public ResponseEntity> announcedetail (@PathVariable Long announceId){ - return ResponseEntity.ok(ResponseDto.response(1000,true,"요청에 성공하였습니다.",homeService.getAnnounceDetail(announceId))); + // [Get] 알림 상세 조회 + @GetMapping("/announcement/{announceId}") + public CommonResponse announcedetail(@PathVariable Long announceId) { + return new CommonResponse<>(ResponseCode.SUCCESS, homeService.getAnnounceDetail(announceId)); } diff --git a/src/main/java/ewha/lux/once/domain/user/controller/UserController.java b/src/main/java/ewha/lux/once/domain/user/controller/UserController.java index 35185d2..c4ccb46 100644 --- a/src/main/java/ewha/lux/once/domain/user/controller/UserController.java +++ b/src/main/java/ewha/lux/once/domain/user/controller/UserController.java @@ -4,16 +4,17 @@ import ewha.lux.once.domain.user.dto.SignInRequestDto; import ewha.lux.once.domain.user.dto.SignupRequestDto; import ewha.lux.once.domain.user.dto.postSearchCardListRequestDto; -import ewha.lux.once.global.common.UserAccount; import ewha.lux.once.domain.user.entity.Users; import ewha.lux.once.domain.user.service.UserService; -import ewha.lux.once.global.common.ResponseDto; +import ewha.lux.once.global.common.CommonResponse; +import ewha.lux.once.global.common.CustomException; +import ewha.lux.once.global.common.ResponseCode; +import ewha.lux.once.global.common.UserAccount; import ewha.lux.once.global.security.JwtProvider; import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; import org.springframework.data.repository.query.Param; import org.springframework.http.MediaType; -import org.springframework.http.ResponseEntity; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; @@ -27,69 +28,78 @@ @RequiredArgsConstructor @RequestMapping("user") public class UserController { + private final UserService userService; private final JwtProvider jwtProvider; - @PostMapping("/signup") // 회원가입 - public ResponseEntity> signup(@RequestBody SignupRequestDto request) throws ParseException { - try{ + // [Post] 회원가입 + @PostMapping("/signup") + public CommonResponse signup(@RequestBody SignupRequestDto request) throws ParseException { + try { Users users = userService.signup(request); String accessToken = jwtProvider.generateAccessToken(users.getLoginId()); String refreshToken = jwtProvider.generateRefreshToken(users.getLoginId()); - LoginResponseDto loginResponseDto = new LoginResponseDto(users.getId(),accessToken,refreshToken); - return ResponseEntity.ok(ResponseDto.response(1000,true, "요청에 성공하였습니다.",loginResponseDto)); - } catch (Exception e){ - return ResponseEntity.ok(ResponseDto.response(2000,false, "요청에 성공하였습니다.")); + LoginResponseDto loginResponseDto = new LoginResponseDto(users.getId(), accessToken, refreshToken); + return new CommonResponse<>(ResponseCode.SUCCESS, loginResponseDto); + } catch (Exception e) { + return new CommonResponse<>(ResponseCode.SUCCESS); // ** 예외 처리 필요 ** } } - @PostMapping("/login") // 로그인 - public ResponseEntity> signin(@RequestBody SignInRequestDto request) { - try{ + // [Post] 로그인 + @PostMapping("/login") + public CommonResponse signin(@RequestBody SignInRequestDto request) { + try { Users user = userService.authenticate(request); String accessToken = jwtProvider.generateAccessToken(user.getLoginId()); String refreshToken = jwtProvider.generateRefreshToken(user.getLoginId()); - LoginResponseDto loginResponseDto = new LoginResponseDto(user.getId(),accessToken,refreshToken); - return ResponseEntity.ok(ResponseDto.response(1000,true, "요청에 성공하였습니다.",loginResponseDto)); - } catch (Exception e){ - return ResponseEntity.ok(ResponseDto.response(2000,false, "요청에 실패하였습니다.")); + LoginResponseDto loginResponseDto = new LoginResponseDto(user.getId(), accessToken, refreshToken); + + return new CommonResponse<>(ResponseCode.SUCCESS, loginResponseDto); + } catch (CustomException e) { + return new CommonResponse<>(e.getStatus()); } } - @DeleteMapping ("/quit") + // [Delete] 회원 탈퇴 + @DeleteMapping("/quit") @ResponseBody - public ResponseEntity> quitUsers (@AuthenticationPrincipal UserAccount userAccount) { + public CommonResponse quitUsers(@AuthenticationPrincipal UserAccount userAccount) { userService.deleteUsers(userAccount.getUsers()); - return ResponseEntity.ok(ResponseDto.response(1000,true,"요청에 성공하였습니다.")); + return new CommonResponse<>(ResponseCode.SUCCESS); } + // [Get] 회원 정보 조회 @GetMapping("/edit") @ResponseBody - public ResponseEntity> userEdit (@AuthenticationPrincipal UserAccount userAccount) { - return ResponseEntity.ok(ResponseDto.response(1000,true,"요청에 성공하였습니다.",userService.getUserEdit(userAccount.getUsers()))); + public CommonResponse userEdit(@AuthenticationPrincipal UserAccount userAccount) { + return new CommonResponse<>(ResponseCode.SUCCESS, userService.getUserEdit(userAccount.getUsers())); } + // [Get] 카드사별 카드 검색 @GetMapping("/card/search") @ResponseBody - public ResponseEntity> searchCard (@Param("code")String code) { - return ResponseEntity.ok(ResponseDto.response(1000,true,"요청에 성공하였습니다.",userService.getSearchCard(code))); + public CommonResponse searchCard(@Param("code") String code) { + return new CommonResponse<>(ResponseCode.SUCCESS, userService.getSearchCard(code)); } + // [Post] 카드 등록 @PostMapping("/card") @ResponseBody - public ResponseEntity> postSearchCard (@AuthenticationPrincipal UserAccount userAccount,@RequestBody postSearchCardListRequestDto request) { - userService.postSearchCard(userAccount.getUsers(),request); - return ResponseEntity.ok(ResponseDto.response(1000,true,"요청에 성공하였습니다.")); + public CommonResponse postSearchCard(@AuthenticationPrincipal UserAccount userAccount, @RequestBody postSearchCardListRequestDto request) { + userService.postSearchCard(userAccount.getUsers(), request); + return new CommonResponse<>(ResponseCode.SUCCESS); } - @PatchMapping(value="/edit/profile",consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + // [Patch] 프로필 등록 + @PatchMapping(value = "/edit/profile", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) @ResponseBody - public ResponseEntity> editProfile (@AuthenticationPrincipal UserAccount userAccount, HttpServletRequest request, @RequestParam(value="userProfileImg") MultipartFile userProfileImg) throws IOException { - return ResponseEntity.ok(ResponseDto.response(1000,true,"요청에 성공하였습니다.",userService.patchEditProfile(userAccount.getUsers(),userProfileImg))); + public CommonResponse editProfile(@AuthenticationPrincipal UserAccount userAccount, HttpServletRequest request, @RequestParam(value = "userProfileImg") MultipartFile userProfileImg) throws IOException { + return new CommonResponse<>(ResponseCode.SUCCESS, userService.patchEditProfile(userAccount.getUsers(), userProfileImg)); } } From a0d81270543ef6f767b9158f5964eb823de86366 Mon Sep 17 00:00:00 2001 From: Lee Haewon Date: Sun, 4 Feb 2024 20:54:47 +0900 Subject: [PATCH 4/4] =?UTF-8?q?feat:=20=EC=98=88=EC=99=B8=20=EC=B2=98?= =?UTF-8?q?=EB=A6=AC=20=EC=B6=94=EA=B0=80=20(#18)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lux/once/domain/user/service/UserService.java | 6 ++++-- .../ewha/lux/once/global/common/CustomException.java | 12 ++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 src/main/java/ewha/lux/once/global/common/CustomException.java diff --git a/src/main/java/ewha/lux/once/domain/user/service/UserService.java b/src/main/java/ewha/lux/once/domain/user/service/UserService.java index 999fdab..b95eec7 100644 --- a/src/main/java/ewha/lux/once/domain/user/service/UserService.java +++ b/src/main/java/ewha/lux/once/domain/user/service/UserService.java @@ -3,6 +3,8 @@ import ewha.lux.once.domain.card.entity.Card; import ewha.lux.once.domain.card.entity.CardCompany; import ewha.lux.once.domain.card.entity.OwnedCard; +import ewha.lux.once.global.common.CustomException; +import ewha.lux.once.global.common.ResponseCode; import ewha.lux.once.global.repository.CardCompanyRepository; import ewha.lux.once.global.repository.CardRepository; import ewha.lux.once.global.repository.OwnedCardRepository; @@ -76,14 +78,14 @@ public Users signup(SignupRequestDto request) throws ParseException { return usersRepository.save(usersBuilder.benefitGoal(100000).build()); } - public Users authenticate(SignInRequestDto request) { + public Users authenticate(SignInRequestDto request) throws CustomException { String loginId = request.getLoginId(); String password = request.getPassword(); Users users = usersRepository.findByLoginId(loginId); if (!passwordEncoder.matches(password, users.getPassword())){ - throw new RuntimeException("비밀번호가 일치하지 않습니다."); + throw new CustomException(ResponseCode.FAILED_TO_LOGIN); } users.setLastLogin(); diff --git a/src/main/java/ewha/lux/once/global/common/CustomException.java b/src/main/java/ewha/lux/once/global/common/CustomException.java new file mode 100644 index 0000000..c451c27 --- /dev/null +++ b/src/main/java/ewha/lux/once/global/common/CustomException.java @@ -0,0 +1,12 @@ +package ewha.lux.once.global.common; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@NoArgsConstructor +@AllArgsConstructor +@Getter +public class CustomException extends Exception { + public ResponseCode status; +}