Skip to content

Commit

Permalink
rank 수정
Browse files Browse the repository at this point in the history
  • Loading branch information
hOch1 committed Sep 9, 2024
1 parent 9ca1eba commit 0fe80a0
Show file tree
Hide file tree
Showing 16 changed files with 136 additions and 18 deletions.
Binary file removed .DS_Store
Binary file not shown.
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -45,4 +45,6 @@ out/
.DS_Store
src/.DS_Store
src/main/.DS_Store
src/main/resources/.DS_Store
src/main/resources/.DS_Store

AdminInit.java
Original file line number Diff line number Diff line change
@@ -1,12 +1,26 @@
package com.dongyang.dongpo.admin.controller.dashboard;

import com.dongyang.dongpo.exception.member.MemberNotFoundException;
import com.dongyang.dongpo.service.member.MemberService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/admin/member")
@RequiredArgsConstructor
public class AdminMemberController {

private final MemberService memberService;

@GetMapping("/{id}")
public String detail(@PathVariable("id") Long id) throws MemberNotFoundException {
memberService.findOne(id);
return "null";
}



}
Original file line number Diff line number Diff line change
@@ -1,4 +1,23 @@
package com.dongyang.dongpo.admin.controller.dashboard;

import com.dongyang.dongpo.exception.store.StoreNotFoundException;
import com.dongyang.dongpo.service.store.StoreReviewService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/admin/review")
@RequiredArgsConstructor
public class AdminReviewController {

private final StoreReviewService storeReviewService;

@GetMapping("/{id}")
public String detail(@PathVariable("id") Long id) throws StoreNotFoundException {
storeReviewService.findOne(id);
return "null";
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,23 @@
package com.dongyang.dongpo.admin.controller.dashboard;

import com.dongyang.dongpo.exception.store.StoreNotFoundException;
import com.dongyang.dongpo.service.store.StoreService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/admin/store")
@RequiredArgsConstructor
public class AdminStoreController {

private final StoreService storeService;

@GetMapping("/{id}")
public String detail(@PathVariable Long id) throws StoreNotFoundException {
storeService.findOne(id);
return "null";
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public class RankController {

@GetMapping("/visit")
@Operation(summary = "방문인증 랭킹")
public ResponseEntity<ApiResponse> getVisitRank() {
public ResponseEntity<ApiResponse<List<RankDto>>> getVisitRank() {
return ResponseEntity.ok(new ApiResponse<>(rankService.getVisitRank()));
}

Expand All @@ -33,7 +33,7 @@ public ResponseEntity<ApiResponse<List<RankDto>>> getReviewRank() {

@GetMapping("/store")
@Operation(summary = "점포 등록 랭킹")
public ResponseEntity<ApiResponse> getStoreRank() {
public ResponseEntity<ApiResponse<List<RankDto>>> getStoreRank() {
return ResponseEntity.ok(new ApiResponse<>(rankService.getStoreRank()));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,11 @@ public class StoreVisitCert {

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "member_Id")
private Member memberId;
private Member member;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "cert_store")
private Store storeId;
private Store store;

private boolean isVisitSuccessful;

Expand Down
13 changes: 12 additions & 1 deletion src/main/java/com/dongyang/dongpo/dto/rank/RankDto.java
Original file line number Diff line number Diff line change
@@ -1,18 +1,29 @@
package com.dongyang.dongpo.dto.rank;

import com.dongyang.dongpo.domain.member.Member;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class RankDto {

private String nickname;
private String pic;
private Long count;

public static RankDto toDto(Object[] obj) {
return new RankDto((String) obj[0], (Long) obj[1]);
Member member = (Member) obj[0];
Long count = (Long) obj[1];

return RankDto.builder()
.nickname(member.getNickname())
.pic(member.getProfilePic())
.count(count)
.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.dongyang.dongpo.domain.member.Member;
import com.dongyang.dongpo.domain.store.Store;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
Expand All @@ -19,6 +20,10 @@ List<Store> findStoresWithinRange(@Param("minLat") double minLat,
@Param("minLong") double minLong,
@Param("maxLong") double maxLong);

@Query("SELECT s.member.nickname, COUNT(s) as storeCount FROM Store s GROUP BY s.member.nickname ORDER BY storeCount DESC")
List<Object[]> findTop10MembersByStoreCount();
@Query("SELECT s.member, COUNT(s) as storeCount " +
"FROM Store s " +
"GROUP BY s.member " +
"ORDER BY storeCount DESC")
List<Object[]> findTop10MembersByStoreCount(Pageable pageable);

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

import com.dongyang.dongpo.domain.store.StoreReview;
import io.lettuce.core.dynamic.annotation.Param;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;

Expand All @@ -12,6 +13,9 @@ public interface StoreReviewRepository extends JpaRepository<StoreReview, Long>
List<StoreReview> findByStoreId(Long StoreId);
List<StoreReview> findByMemberId(Long memberId);

@Query("SELECT sr.member.nickname, COUNT(sr) as reviewCount FROM StoreReview sr GROUP BY sr.member.nickname ORDER BY reviewCount DESC")
List<Object[]> findTop10MembersByReviewCount();
@Query("SELECT s.member, COUNT(s) as reviewCount " +
"FROM StoreReview s " +
"GROUP BY s.member " +
"ORDER BY reviewCount DESC")
List<Object[]> findTop10MembersByReviewCount(Pageable pageable);
}
Original file line number Diff line number Diff line change
@@ -1,14 +1,19 @@
package com.dongyang.dongpo.repository.store;

import com.dongyang.dongpo.domain.member.StoreVisitCert;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;

import java.util.List;

public interface StoreVisitCertRepository extends JpaRepository<StoreVisitCert, Long> {

@Query("SELECT sr.memberId.nickname, COUNT(sr) as visitCount FROM StoreVisitCert sr WHERE sr.isVisitSuccessful = true GROUP BY sr.memberId.nickname ORDER BY visitCount DESC")
List<Object[]> findTop10MembersBySuccessfulVisitCount();
@Query("SELECT s.member, COUNT(s) as visitCount " +
"FROM StoreVisitCert s " +
"WHERE s.isVisitSuccessful = true " +
"GROUP BY s.member " +
"ORDER BY visitCount DESC")
List<Object[]> findTop10MembersBySuccessfulVisitCount(Pageable pageable);

}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import com.dongyang.dongpo.domain.member.MemberTitle;
import com.dongyang.dongpo.dto.JwtToken;
import com.dongyang.dongpo.dto.auth.UserInfo;
import com.dongyang.dongpo.exception.member.MemberNotFoundException;
import com.dongyang.dongpo.jwt.JwtTokenProvider;
import com.dongyang.dongpo.repository.member.MemberRepository;
import com.dongyang.dongpo.repository.RefreshTokenRepository;
Expand Down Expand Up @@ -59,4 +60,8 @@ public JwtToken socialSave(UserInfo userInfo){
public List<Member> findAll(){
return memberRepository.findAll();
}

public Member findOne(Long id) throws MemberNotFoundException {
return memberRepository.findById(id).orElseThrow(() -> new MemberNotFoundException());
}
}
16 changes: 10 additions & 6 deletions src/main/java/com/dongyang/dongpo/service/rank/RankService.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
import com.dongyang.dongpo.repository.store.StoreVisitCertRepository;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

Expand All @@ -23,26 +25,28 @@ public class RankService {
private final StoreVisitCertRepository visitCertRepository;
private final StoreRepository storeRepository;

private static final Pageable pageable = PageRequest.of(0, 10);

public List<RankDto> getVisitRank() {
List<Object[]> visitRank = visitCertRepository.findTop10MembersBySuccessfulVisitCount();
List<Object[]> visitRank = visitCertRepository.findTop10MembersBySuccessfulVisitCount(pageable);
return visitRank.stream()
.map(result -> new RankDto((String) result[0], (Long) result[1]))
.map(RankDto::toDto)
.collect(Collectors.toList());
}


public List<RankDto> getReviewRank() {
List<Object[]> reviewRanks = reviewRepository.findTop10MembersByReviewCount();
List<Object[]> reviewRanks = reviewRepository.findTop10MembersByReviewCount(pageable);
return reviewRanks.stream()
.map(result -> new RankDto((String) result[0], (Long) result[1]))
.map(RankDto::toDto)
.collect(Collectors.toList());

}

public List<RankDto> getStoreRank() {
List<Object[]> storeRank = storeRepository.findTop10MembersByStoreCount();
List<Object[]> storeRank = storeRepository.findTop10MembersByStoreCount(pageable);
return storeRank.stream()
.map(result -> new RankDto((String) result[0], (Long) result[1]))
.map(RankDto::toDto)
.collect(Collectors.toList());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -55,4 +55,9 @@ public List<ReviewDto> myRegReview(Long memberId) throws Exception{
public List<StoreReview> findAll(){
return reviewRepository.findAll();
}

public ReviewDto findOne(Long id) throws StoreNotFoundException {
StoreReview review = reviewRepository.findById(id).orElseThrow(StoreNotFoundException::new);
return review.toResponse();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -110,4 +110,9 @@ public List<StoreDto> myRegStore(String accessToken) throws Exception{

return storeResponse;
}

public StoreDto findOne(Long id) throws StoreNotFoundException {
Store store = storeRepository.findById(id).orElseThrow(StoreNotFoundException::new);
return store.toResponse();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.dongyang.dongpo.service.token;

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.junit.jupiter.MockitoExtension;

import static org.junit.jupiter.api.Assertions.*;

@ExtendWith(MockitoExtension.class)
class TokenServiceTest {


@Test
void reissueAccessToken() {
}

@Test
void alreadyExistMember() {
}
}

0 comments on commit 0fe80a0

Please sign in to comment.