diff --git a/src/main/java/com/brandol/apiPayload/code/status/ErrorStatus.java b/src/main/java/com/brandol/apiPayload/code/status/ErrorStatus.java index 9096fe0..51c7562 100644 --- a/src/main/java/com/brandol/apiPayload/code/status/ErrorStatus.java +++ b/src/main/java/com/brandol/apiPayload/code/status/ErrorStatus.java @@ -66,6 +66,8 @@ public enum ErrorStatus implements BaseCode { _ALREADY_COMPLETED_MISSION(HttpStatus.BAD_REQUEST, "MISSION402", "이미 도전 완료된 미션입니다"), _EMPTY_SURVEY(HttpStatus.BAD_REQUEST, "MISSION403", "비어있는 항목이 존재합니다"), _NOT_COMPLETED_MISSION(HttpStatus.BAD_REQUEST, "MISSION404", "미션을 완료해 주세요"), + _ALREADY_CHALLENGING_MISSION(HttpStatus.NOT_FOUND, "MISSION405", "도전 중인 미션입니다"), + //DB _DUPLICATE_DATABASE_ERROR(HttpStatus.INTERNAL_SERVER_ERROR,"DATABASE500","DB에서 중복 데이터가 조회됨"), diff --git a/src/main/java/com/brandol/controller/AuthController.java b/src/main/java/com/brandol/controller/AuthController.java index 59200bb..fd61060 100644 --- a/src/main/java/com/brandol/controller/AuthController.java +++ b/src/main/java/com/brandol/controller/AuthController.java @@ -7,6 +7,7 @@ import com.brandol.dto.request.AuthRequestDto; import com.brandol.dto.response.AuthResponseDto; import com.brandol.service.AuthService; +import com.brandol.service.MemberService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; @@ -22,6 +23,7 @@ public class AuthController { private final AuthService authService; + private final MemberService memberService; // 로그인 @PostMapping("/login/kakao") @@ -35,6 +37,8 @@ public ApiResponse login(@RequestBody AuthRequestDto.KakaoLoginRequest @PostMapping("/signup") public ApiResponse signUp(@RequestBody @Valid AuthRequestDto.SignUpDto request) { AuthResponseDto.SignUpDto signUpDto = authService.signUp(request); + memberService.addMemberBrandList(signUpDto.getMemberId(),1L); + memberService.addMemberBrandList(signUpDto.getMemberId(),2L); return ApiResponse.onSuccess(SuccessStatus._OK.getCode(), SuccessStatus._OK.getMessage(), signUpDto); } diff --git a/src/main/java/com/brandol/repository/MemberBrandRepository.java b/src/main/java/com/brandol/repository/MemberBrandRepository.java index 3135a9a..1a411ec 100644 --- a/src/main/java/com/brandol/repository/MemberBrandRepository.java +++ b/src/main/java/com/brandol/repository/MemberBrandRepository.java @@ -31,7 +31,7 @@ public interface MemberBrandRepository extends JpaRepository getBrandJoinedFanCount(@Param("id")Long id, Pageable pageable); - Optional getAllByBrand(Brand brand); + Optional findTopByBrandOrderByCreatedAt(Brand brand); @Query("select count(mbl) from MemberBrandList mbl where mbl.memberListStatus = com.brandol.domain.enums.MemberListStatus.SUBSCRIBED") int getRecentSubscriberCount(); diff --git a/src/main/java/com/brandol/service/AuthService.java b/src/main/java/com/brandol/service/AuthService.java index 92b7ccd..2c966e7 100644 --- a/src/main/java/com/brandol/service/AuthService.java +++ b/src/main/java/com/brandol/service/AuthService.java @@ -81,8 +81,6 @@ public AuthResponseDto.SignUpDto signUp(AuthRequestDto.SignUpDto request) { AuthResponseDto.AgreeTermsDto agreeTermsResponse = agreeTerms(request); Member member = setProfile(request); wearDefaultAvatarItems(member);// 성별에 따라 아바타 기본 아이템 장착 - memberService.addMemberBrandList(member.getId(), 1L); - memberService.addMemberBrandList(member.getId(), 2L); return MemberConverter.signUpResDto(member.getId()); } diff --git a/src/main/java/com/brandol/service/MemberMissionService.java b/src/main/java/com/brandol/service/MemberMissionService.java index cdba998..8d8fb3b 100644 --- a/src/main/java/com/brandol/service/MemberMissionService.java +++ b/src/main/java/com/brandol/service/MemberMissionService.java @@ -42,7 +42,9 @@ public MemberMissionResponseDto.GetMemberMissionDto getMemberMission(Long member public boolean checkBrandMission(Long memberId, Long brandId) { Brand brand = brandRepository.findById(brandId).orElseThrow(() -> new ErrorHandler(ErrorStatus._NOT_EXIST_BRAND)); //미션 존재 여부 확인 - Mission mission = missionRepository.findByBrandAndMissionType(brand, MissionType.ADD).orElseThrow(() -> new ErrorHandler(ErrorStatus._NOT_EXIST_MISSION)); + Optional byBrandAndMissionType = missionRepository.findByBrandAndMissionType(brand, MissionType.ADD); + if(byBrandAndMissionType.isEmpty()) return false; + Mission mission = byBrandAndMissionType.get(); List memberBrandLists = memberBrandRepository.findOneByMemberIdAndBrandId(memberId, brandId); if(memberBrandLists.isEmpty()) return false; Optional memberMission = memberMissionRepository.findByMemberIdAndMissionId(memberId, mission.getId()); @@ -55,6 +57,8 @@ public boolean checkBrandMission(Long memberId, Long brandId) { public MemberMission challengeMission(Long memberId, Long missionId) { Member member = memberRepository.findById(memberId).orElseThrow(()->new ErrorHandler(ErrorStatus._NOT_EXIST_MEMBER)); Mission mission = missionRepository.findById(missionId).orElseThrow(()-> new ErrorHandler(ErrorStatus._NOT_EXIST_MISSION)); + Optional existMission = memberMissionRepository.findByMemberIdAndMissionId(memberId, missionId); + if(existMission.isPresent()) throw new ErrorHandler(ErrorStatus._ALREADY_CHALLENGING_MISSION); MemberMission memberMission = MemberMission.builder().member(member).mission(mission).missionStatus(MissionStatus.CHALLENGING).build(); memberMissionRepository.save(memberMission); return memberMission; diff --git a/src/main/java/com/brandol/service/MemberService.java b/src/main/java/com/brandol/service/MemberService.java index dd8ac57..270b559 100644 --- a/src/main/java/com/brandol/service/MemberService.java +++ b/src/main/java/com/brandol/service/MemberService.java @@ -49,7 +49,7 @@ public Long addMemberBrandList(Long memberId, Long brandId){ //멤버가 멤버 return memberBrand.getId(); } - Optional allByBrand = memberBrandRepository.getAllByBrand(brand); + Optional allByBrand = memberBrandRepository.findTopByBrandOrderByCreatedAt(brand); Long count = allByBrand.stream().count(); MemberBrandList build = MemberBrandList.builder() .memberListStatus(MemberListStatus.SUBSCRIBED)