@@ -203,9 +203,7 @@ public List<CouponRes> findLatestPaybackList(Long memberId, LocalDateTime lastCr
203203 market .thumbnail ,
204204 Expressions .TRUE , // Payback은 항상 available
205205 memberId != null ?
206- savedPayback .id .isNotNull ()
207- .and (savedPayback .isPayback .eq (false )) // 환급 진행중 or 미사용
208- .and (savedPayback .isExpired .eq (false )): // 만료 전
206+ savedPayback .id .count ().gt (0L ) : // 미사용+미만료 쿠폰이 1개 이상 있으면 true
209207 Expressions .FALSE ,
210208 payback .createdAt ,
211209 Expressions .asEnum (CouponType .PAYBACK )
@@ -215,7 +213,9 @@ public List<CouponRes> findLatestPaybackList(Long memberId, LocalDateTime lastCr
215213 .innerJoin (market .local , local )
216214 .innerJoin (local .metro , metro )
217215 .leftJoin (savedPayback ).on (payback .eq (savedPayback .payback )
218- .and (memberId != null ? savedPayback .member .id .eq (memberId ) : null ))
216+ .and (memberId != null ? savedPayback .member .id .eq (memberId ) : null )
217+ .and (savedPayback .isPayback .eq (false )) // 환급 전
218+ .and (savedPayback .isExpired .eq (false ))) // 만료 전
219219 .where (loeCreateAtAndLtPaybackId (lastCreatedAt , lastPaybackId )
220220 .and (payback .isDeleted .eq (false ))
221221 .and (payback .isHidden .eq (false )))
@@ -227,8 +227,8 @@ public List<CouponRes> findLatestPaybackList(Long memberId, LocalDateTime lastCr
227227 // 인기 Payback 페이징 조회 (매장 orderNo 순)
228228 @ Override
229229 public List <CouponRes > findPopularPaybackList (Long memberId , Integer lastOrderNo , Long lastPaybackId , Integer size ) {
230- QMemberPayback savedPayback = new QMemberPayback ("savedPayback" );
231- QMemberPayback issuedPayback = new QMemberPayback ("issuedPayback" );
230+ QMemberPayback savedPayback = new QMemberPayback ("savedPayback" ); // 현재 로그인한 회원 개인화
231+ QMemberPayback issuedPayback = new QMemberPayback ("issuedPayback" ); // 회원의 발급수 집계
232232
233233 return queryFactory
234234 .select (new QCouponRes (
@@ -240,9 +240,7 @@ public List<CouponRes> findPopularPaybackList(Long memberId, Integer lastOrderNo
240240 market .thumbnail ,
241241 Expressions .TRUE , // Payback은 항상 available
242242 memberId != null ?
243- savedPayback .id .isNotNull ()
244- .and (savedPayback .isPayback .eq (false )) // 환급 진행 중 or 미사용상태
245- .and (savedPayback .isExpired .eq (false )) : // 만료전
243+ savedPayback .id .count ().gt (0L ) : // 미사용+미만료 쿠폰이 1개 이상 있으면 true
246244 Expressions .FALSE ,
247245 issuedPayback .id .count (),
248246 market .orderNo , // orderNo 추가
@@ -254,7 +252,9 @@ public List<CouponRes> findPopularPaybackList(Long memberId, Integer lastOrderNo
254252 .innerJoin (local .metro , metro )
255253 .leftJoin (issuedPayback ).on (payback .eq (issuedPayback .payback ))
256254 .leftJoin (savedPayback ).on (payback .eq (savedPayback .payback )
257- .and (memberId != null ? savedPayback .member .id .eq (memberId ) : null ))
255+ .and (memberId != null ? savedPayback .member .id .eq (memberId ) : null )
256+ .and (savedPayback .isPayback .eq (false )) // 환급 전
257+ .and (savedPayback .isExpired .eq (false ))) // 만료 전
258258 .where (payback .isDeleted .eq (false )
259259 .and (payback .isHidden .eq (false ))
260260 .and (goeOrderNoAndGtPaybackId (lastOrderNo , lastPaybackId )))
@@ -265,8 +265,7 @@ public List<CouponRes> findPopularPaybackList(Long memberId, Integer lastOrderNo
265265 metro .name ,
266266 local .name ,
267267 market .thumbnail ,
268- market .orderNo ,
269- savedPayback .id )
268+ market .orderNo )
270269 .orderBy (market .orderNo .asc ().nullsLast (), payback .id .desc ())
271270 .limit (size + 1 )
272271 .fetch ();
0 commit comments