Skip to content

Commit

Permalink
Merge pull request #42 from SSUMC-6th/suffle/#31
Browse files Browse the repository at this point in the history
[suffle] Chapter10_API & Paging
  • Loading branch information
Gusionling authored Jun 27, 2024
2 parents df026b1 + c4c5624 commit a070fdb
Show file tree
Hide file tree
Showing 9 changed files with 112 additions and 10 deletions.
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
package com.example.umc.repository;

import com.example.umc.domain.maaping.MemberMission;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;

public interface MemberMissionRepository extends JpaRepository<MemberMission, Long> {
Page<MemberMission> findByMemberId(Long memberId, Pageable pageable);
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
package com.example.umc.repository;

import com.example.umc.domain.Mission;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;

public interface MissionRepository extends JpaRepository<Mission, Long> {
Page<Mission> findByStoreId(Long storeId, Pageable pageable);

}
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
package com.example.umc.repository;

import com.example.umc.domain.Review;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;

public interface ReviewRepository extends JpaRepository<Review, Long> {

//특정 사용자가 작성한 리뷰를 페이징 처리하여 가져오는 메서드 추가
Page<Review> findByMemberId(Long memberId, Pageable pageable);
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,11 @@
import com.example.umc.repository.MemberRepository;
import com.example.umc.repository.MissionRepository;
import com.example.umc.validation.annotation.ExistMission;
import com.example.umc.web.dto.reponse.MissionResponseDto;
import lombok.RequiredArgsConstructor;
import org.springframework.data.convert.ReadingConverter;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;

import java.time.LocalDate;
Expand All @@ -35,4 +38,8 @@ public void addMission(Long missionId, Long memberId) {
member.getMemberMissionList().add(memberMission);
memberMissionRepository.save(memberMission);
}

public Page<MissionResponseDto> getMissionsByMemberId(Long memberId, Pageable pageable) {
return memberMissionRepository.findByMemberId(memberId, pageable).map(MissionResponseDto::fromMemberMissionEntity);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
import com.example.umc.web.dto.request.CreateReviewRequest;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;

@Service
Expand All @@ -35,4 +37,10 @@ public ReviewResponseDto addReview(CreateReviewRequest createReviewRequest) {

return ReviewResponseDto.fromEntity(savedReview);
}

public Page<ReviewResponseDto> getReviewsByMemberId(Long memberId, Pageable pageable){
Page<Review> reviews = reviewRepository.findByMemberId(memberId, pageable);

return reviews.map(ReviewResponseDto::fromEntity);
}
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,18 @@
package com.example.umc.service;

import com.example.umc.domain.Mission;
import com.example.umc.domain.Region;
import com.example.umc.domain.Store;
import com.example.umc.repository.MissionRepository;
import com.example.umc.repository.RegionRepository;
import com.example.umc.repository.StoreRepository;
import com.example.umc.web.dto.reponse.MissionResponseDto;
import com.example.umc.web.dto.reponse.StoreResponseDto;
import com.example.umc.web.dto.request.CreateStoreRequest;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;

import java.util.Optional;
Expand All @@ -17,8 +22,8 @@
public class StoreService {

private final StoreRepository storeRepository;

private final RegionRepository regionRepository;
private final MissionRepository missionRepository;

public StoreResponseDto addStoreToRegion(CreateStoreRequest createStoreRequest) {
Region region = regionRepository.findById(createStoreRequest.getRegionId())
Expand All @@ -31,4 +36,9 @@ public StoreResponseDto addStoreToRegion(CreateStoreRequest createStoreRequest)
return StoreResponseDto.fromEntity(savedStore);
}

public Page<MissionResponseDto> getMissionsByStoreId(Long storeId, Pageable pageable) {
Page<Mission> missions = missionRepository.findByStoreId(storeId, pageable);
return missions.map(MissionResponseDto::fromEntity);

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,18 @@

import com.example.umc.common.BaseResponse;
import com.example.umc.service.MemberService;
import com.example.umc.service.ReviewService;
import com.example.umc.validation.annotation.AlreadyExistMission;
import com.example.umc.validation.annotation.ExistMission;
import com.example.umc.web.dto.reponse.MissionResponseDto;
import com.example.umc.web.dto.reponse.ReviewResponseDto;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/member")
Expand All @@ -20,6 +22,7 @@
public class MemberController {

private final MemberService memberService;
private final ReviewService reviewService;

@Operation(summary = "가게 미션을 도전중인 미션에 추가")
@PostMapping("/add/{missionId}/{memberId}")
Expand All @@ -29,4 +32,16 @@ public BaseResponse<String> addMission(@PathVariable @AlreadyExistMission Long m
return BaseResponse.onSuccess("미션 생성 완료");

}

@Operation(summary = "회원의 리뷰 조회")
@GetMapping("/get/review/{memberId}")
public BaseResponse<Page<ReviewResponseDto>> getReview(@PathVariable Long memberId, Pageable pageable){
return BaseResponse.onSuccess(reviewService.getReviewsByMemberId(memberId, pageable));
}

@GetMapping("/get/missions/{memberId}")
public BaseResponse<Page<MissionResponseDto>> getMissionsByMemberId(@PathVariable Long memberId, Pageable pageable){
return BaseResponse.onSuccess(memberService.getMissionsByMemberId(memberId, pageable));
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,17 @@

import com.example.umc.common.BaseResponse;
import com.example.umc.service.StoreService;
import com.example.umc.web.dto.reponse.MissionResponseDto;
import com.example.umc.web.dto.reponse.StoreResponseDto;
import com.example.umc.web.dto.request.CreateStoreRequest;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/store")
Expand All @@ -32,4 +32,14 @@ public BaseResponse<StoreResponseDto> addStoreToRegion(@Valid @RequestBody Creat
StoreResponseDto createdStoreDto = storeService.addStoreToRegion(createStoreRequest);
return BaseResponse.onSuccess(createdStoreDto);
}

@Operation(
summary = "가게 미션 조회",
responses = @ApiResponse(responseCode = "200", description = "가게의 미션을 조회합니다")
)
@GetMapping("/get/missions/{storeId}")
public BaseResponse<Page<MissionResponseDto>> getMissionsByStoreId(@PathVariable Long storeId, Pageable pageable){
return BaseResponse.onSuccess(storeService.getMissionsByStoreId(storeId, pageable));
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package com.example.umc.web.dto.reponse;

import com.example.umc.domain.Mission;
import com.example.umc.domain.maaping.MemberMission;
import lombok.Builder;
import lombok.Getter;
import org.springframework.web.bind.annotation.GetMapping;

import java.time.LocalDate;

@Getter
@Builder
public class MissionResponseDto {

private Long id;
private Integer reward;
private LocalDate deadline;

@Builder
public MissionResponseDto (Long id, Integer reward, LocalDate deadline){
this.id = id;
this.reward = reward;
this.deadline = deadline;
}

public static MissionResponseDto fromEntity(Mission mission){
return MissionResponseDto.builder()
.id(mission.getId())
.reward(mission.getReward())
.deadline(mission.getDeadline())
.build();
}

public static MissionResponseDto fromMemberMissionEntity(MemberMission memberMission) {
return MissionResponseDto.builder()
.id(memberMission.getMission().getId())
.reward(memberMission.getMission().getReward())
.deadline(memberMission.getMission().getDeadline())
.build();
}


}

0 comments on commit a070fdb

Please sign in to comment.