diff --git a/src/main/java/agridata/spring/controller/RetailPriceController.java b/src/main/java/agridata/spring/controller/RetailPriceController.java index 95d7786..7762106 100644 --- a/src/main/java/agridata/spring/controller/RetailPriceController.java +++ b/src/main/java/agridata/spring/controller/RetailPriceController.java @@ -88,9 +88,11 @@ private List parseRetailPrice(String xml) } String itemname = getTagText(item, "itemname"); + /* if (itemname == null || itemname.isBlank()) { log.warn("⚠️ itemname 누락 항목 존재: {}", item.outerHtml()); } + */ String countyname = getTagText(item, "countyname"); if(countyname == null || countyname.isBlank() || countyname.equals("평년") || countyname.equals("평균")) { diff --git a/src/main/java/agridata/spring/controller/UserController.java b/src/main/java/agridata/spring/controller/UserController.java index dbfb353..c18fb20 100644 --- a/src/main/java/agridata/spring/controller/UserController.java +++ b/src/main/java/agridata/spring/controller/UserController.java @@ -33,11 +33,23 @@ public ApiResponse login(@RequestBody UserRequestDTO.L return ApiResponse.onSuccess(result); } + // 사용자 관심품목 조회 API + @Operation(summary = "사용자 관심품목 조회 API", description = "사용자 관심품목 조회 API입니다.") @GetMapping("/prefer-item") public ApiResponse getPreferItem(){ var preferItem = userQueryService.getUserPreferItem(); return ApiResponse.onSuccess(preferItem); } + // 사용자 지역 조회 API + @Operation(summary = "사용자 지역 조회 API", description = "사용자 지역 조회 API입니다.") + @GetMapping("/region") + public ApiResponse getRegion() { + var region = userQueryService.getUserRegion(); + return ApiResponse.onSuccess(region); + } + + + } diff --git a/src/main/java/agridata/spring/domain/User.java b/src/main/java/agridata/spring/domain/User.java index 8758239..b243ea4 100644 --- a/src/main/java/agridata/spring/domain/User.java +++ b/src/main/java/agridata/spring/domain/User.java @@ -19,10 +19,11 @@ public class User extends BaseEntity { private String nickname; private String password; - + @Column(nullable = false) private String email; // 사용자 지역 + @Column(length = 20) @Enumerated(EnumType.STRING) private Region region; diff --git a/src/main/java/agridata/spring/dto/request/UserRequestDTO.java b/src/main/java/agridata/spring/dto/request/UserRequestDTO.java index f172794..2bfc478 100644 --- a/src/main/java/agridata/spring/dto/request/UserRequestDTO.java +++ b/src/main/java/agridata/spring/dto/request/UserRequestDTO.java @@ -15,8 +15,7 @@ public class UserRequestDTO { // 회원가입 요청 DTO public static class SignupDTO { private String name; - @JsonProperty("email") - private String id_email; + private String email; private String password; private String region; private String interestItem; @@ -27,8 +26,7 @@ public static class SignupDTO { @NoArgsConstructor @AllArgsConstructor public static class LoginDTO { - @JsonProperty("email") - private String id_email; + private String email; private String password; } diff --git a/src/main/java/agridata/spring/service/UserQueryService.java b/src/main/java/agridata/spring/service/UserQueryService.java index e67c0f8..8b6c5b9 100644 --- a/src/main/java/agridata/spring/service/UserQueryService.java +++ b/src/main/java/agridata/spring/service/UserQueryService.java @@ -2,4 +2,6 @@ public interface UserQueryService { public String getUserPreferItem(); + + public String getUserRegion(); } diff --git a/src/main/java/agridata/spring/service/impl/UserCommandServiceImpl.java b/src/main/java/agridata/spring/service/impl/UserCommandServiceImpl.java index 9c480c6..1684ae6 100644 --- a/src/main/java/agridata/spring/service/impl/UserCommandServiceImpl.java +++ b/src/main/java/agridata/spring/service/impl/UserCommandServiceImpl.java @@ -30,7 +30,7 @@ public class UserCommandServiceImpl implements UserCommandService { public UserResponseDTO.SignupDTO create(UserRequestDTO.SignupDTO dto) { User user = User.builder() .nickname(dto.getName()) - .email(dto.getId_email()) + .email(dto.getEmail()) .password(passwordEncoder.encode(dto.getPassword())) // 비밀번호를 BCrypt 암호화해서 저장 .region(Region.valueOf(dto.getRegion())) .interestItem(dto.getInterestItem()) @@ -45,7 +45,7 @@ public UserResponseDTO.SignupDTO create(UserRequestDTO.SignupDTO dto) { public UserResponseDTO.LoginDTO login(UserRequestDTO.LoginDTO dto) { // Optional 사용하는 이유 == "값이 있을 수도, 없을 수도 있다"상황 명확히 표현 (null 체크 강제) // Optional = null이 될 수 있는 값을 감싸는 Wrapper(포장) 클래스 - final Optional user = userRepository.findByEmail(dto.getId_email()); + final Optional user = userRepository.findByEmail(dto.getEmail()); // 존재하는 지 + 암호화된 비밀번호 비교 if(user.isPresent() && passwordEncoder.matches(dto.getPassword(), user.get().getPassword())){ return UserResponseDTO.LoginDTO.builder().token(tokenProvider.create(user.get())) // JWt 발급(이메일 기반) diff --git a/src/main/java/agridata/spring/service/impl/UserQueryServiceImpl.java b/src/main/java/agridata/spring/service/impl/UserQueryServiceImpl.java index 554425e..d980256 100644 --- a/src/main/java/agridata/spring/service/impl/UserQueryServiceImpl.java +++ b/src/main/java/agridata/spring/service/impl/UserQueryServiceImpl.java @@ -19,4 +19,10 @@ public String getUserPreferItem() { Long memberId = SecurityUtil.getCurrentMemberId(); return userRepository.findById(memberId).get().getInterestItem(); } + + @Override + public String getUserRegion() { + Long memberId = SecurityUtil.getCurrentMemberId(); + return userRepository.findById(memberId).get().getRegion().name(); + } }