Skip to content

Commit

Permalink
feat: 요구사항 반영 (#211)
Browse files Browse the repository at this point in the history
* feat: 장바구니 추가 기능 구현

* feat: 장바구니 조회 기능 구현

* feat: 상품 주문과 식권 사용 기능 구현

* style: 포인트트랜잭션 레포지토리명 변경

* deploy: 재배포

* deploy: 재배포2

* deploy: 로그인 로직 수정에 따른 재배포

* deploy: 로그인 로직 수정에 따른 재배포2

* feat: 식권 사용 기능 구현

* feat: yml 수정 사항 반영

* feat: 식권 사용 로직 수정

* feat: 주문 로직 수정 완료

* fix: 장바구니에 아무것도 없을 때 주문 시 active 되는 현상 수정

* feat: 주문 완료 시 리턴 값 수정

* feat: 내 그룹 조회 기능 구현

* feat: 기본 프로필 이미지 url 추가

* feat: 그룹 멤버 전체 조회 기능 구현

* feat: 1인당 사용 가능 금액 설정 컬럼 추가

* feat: 내 지갑 조회 기능 구현

* feat: 선결제 기능 구현

* feat: 유저 홈 화면 조회 기능 구현

* feat: 그룹 상세 조회 기능 구현

* feat: 가게 상세 조회 쿼리 수정

* deploy: 변경사항 반영을 위한 커밋

* deploy: 수정 사항 반영 재배포

* deploy: rds 교체로 인한 재배포

* deploy: rds 교체로 인한 재배포2

* feat: 홈 화면 소속팀 조회 쿼리 제대로 안되던 현상 해결, 대표이미지 반환 추가

* feat: 그룹 상세 조회 응답 컬럼명 변경

* feat: memberLimit 컬럼 삭제

* feat: 선결제 시 기존 결제 내역과 멱등성 문제 해결

* fix: 팀 상세 조회 시 이미지 쿼리가 의미 없이 join 되던 쿼리 수정

* feat: 가게 검색 기능 대폭 수정

* feat: 프론트 요구사 반영

* feat: searchcondition 삭제

* feat: 팀타입 desription 리턴 하도록 수정

* feat: 카테고리별 팀 조회 시 팀 생성일 컬럼 추가

* feat: 매장찾기_상세 페이지 조회 기능 구현

* feat: 비밀 코드 조회 기능 엔드 포인트 수정

* fix: conflict fix

* hotfix: 서버 복구

* hotfix: 서버 복구2

* feat: Barobill api 연동

* fix: 홈 화면에 같은 데이터가 중복되는 현상 수정

* infra: ElastiCache 연결을 위한 docker-compose 설정

* infra: cicd script 수정

* infra: cicd script ec2 주소 설정

* infra: cicd script 수정2

* infra: cicd script 수정3

* infra: cicd script 수정4

* infra: cicd script 수정5

* infra: cicd script 수정6

* infra: cicd script 수정7

* infra: cicd script 수정7

* infra: cicd script 수정8

* infra: cicd script 수정9

* infra: cicd script 수정10

* infra: cicd script 수정11

* infra: cicd script 수정12

* infra: cicd script 수정13

* infra: cicd script 수정14

* infra: cicd script 수정15

* infra: cicd script 수정16

* infra: cicd script 수정17

* infra: cicd script 수정18

* infra: cicd script 수정19

* infra: cicd script 수정20

* infra: cicd script 수정21

* infra: cicd script 수정22

* fix: 보유금액이 선결제 금액보다 작을 경우 상태값 변경(200->400)

* feat: 홈화면 가게 별 선결제 디데이 추가, 쿼리문 조정

* feat: 주문하기 로직 정상화

* feat: 장바구니에 다른 가게 물건이 있는지 검증 구현

* feat: 장바구니 비우기 기능 구현

* deploy: cd retry

* feat: 매장 상세 페이지 조회 메뉴 정렬 조건 추가

* feat: 세금명세서 역발행 기능 추가

* feat: 거래 타입명 변경

* feat: pointTransaction 금액 음수(-) 표시 추가

* feat: 세금계산서 역발행 요청 기능 구현

* feat: 팀 조회 시 진행 상태값 반환 추가

* feat: 그룹 상세 조회 path storeId 추가

* feat: 그룹 조회 시 팀 id 조회 추가

* feat: 그룹 상세 조회에서 개별 매장 상세 조회 기능 구현

* feat: 매장 상세 조회 시 menuId 값 반환 추가

* feat: cart 조회 시 menuId, menuImg 반환 추가

* feat: 장바구니 조회 시 가게 id, name, catrogry 반환 추가

* feat: storeCategory 이름 한글 표기로 수정

* feat: 바로빌 세금 계산서 역발행 api 채번 현재 시간 기준으로 수정

* chore: 세금계산서 수신 이메일 수정

* feat: 그룹 상세 조회 리턴 값 추가

* feat: 팀 상세 조회 쿼리 수정

* feat: 요구사항 반영
  • Loading branch information
LEEJaeHyeok97 authored Dec 6, 2024
1 parent 845f28c commit f14ee19
Show file tree
Hide file tree
Showing 4 changed files with 102 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -207,8 +207,10 @@ public IndividualStoreDetailsResponse getIndividualStoreDetails(String userId, L
Store store = storeRepository.findById(storeId)
.orElseThrow(() -> new IllegalArgumentException("해당하는 가게를 찾을 수 없습니다."));

boolean isMeLeader = team.getTeamLeader().getUser_id().equals(user.getUserId());

IndividualStoreDetailsResponse individualStoreDetails = teamRepository.findIndividualStoreDetails(
user.getUserId(), team.getId(), store.getId());
user.getUserId(), team.getId(), store.getId(), isMeLeader);

return individualStoreDetails;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,5 @@ public interface TeamQueryDslRepository {

MyTeamDetailsResponse findMyTeamDetailsAsLeader(Long userId, Long teamId);

IndividualStoreDetailsResponse findIndividualStoreDetails(Long userId, Long teamId, Long storeId);
IndividualStoreDetailsResponse findIndividualStoreDetails(Long userId, Long teamId, Long storeId, boolean isMeLeader);
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import com.jangburich.domain.common.Status;
import com.jangburich.domain.point.domain.TransactionType;
import com.jangburich.domain.store.domain.QStoreTeam;
import com.jangburich.domain.team.domain.Team;
import com.jangburich.domain.team.dto.response.IndividualStoreDetailsResponse;
import com.jangburich.domain.team.dto.response.MyPaymentHistory;
import com.jangburich.domain.team.dto.response.MyTeamDetailsResponse;
Expand All @@ -26,17 +27,21 @@
import com.querydsl.jpa.impl.JPAQueryFactory;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Repository;

@Slf4j
@RequiredArgsConstructor
@Repository
public class TeamQueryDslRepositoryImpl implements TeamQueryDslRepository {

private final JPAQueryFactory queryFactory;


LocalDate currentDate = LocalDate.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String formattedDate = currentDate.format(formatter);
Expand Down Expand Up @@ -111,6 +116,9 @@ public MyTeamDetailsResponse findMyTeamDetailsAsMember(Long userId, Long teamId)
@Override
public MyTeamDetailsResponse findMyTeamDetailsAsLeader(Long userId, Long teamId) {

LocalDateTime startOfToday = LocalDate.now().atStartOfDay();
LocalDateTime endOfToday = LocalDate.now().atTime(LocalTime.NOON);

List<PrepayedStore> prepayedStores = queryFactory
.select(new QPrepayedStore(
store.id,
Expand Down Expand Up @@ -141,7 +149,7 @@ public MyTeamDetailsResponse findMyTeamDetailsAsLeader(Long userId, Long teamId)
.leftJoin(store).on(store.id.eq(pointTransaction.store.id))
.leftJoin(cart).on(cart.store.id.eq(store.id))
.leftJoin(menu).on(menu.id.eq(cart.menu.id), cart.status.eq(Status.INACTIVE))
.where(pointTransaction.createdAt.between(startOfDay, endOfDay), pointTransaction.transactionType.eq(
.where(pointTransaction.createdAt.between(startOfToday, endOfToday), pointTransaction.transactionType.eq(
TransactionType.FOOD_PURCHASE))
.fetch();

Expand Down Expand Up @@ -173,10 +181,77 @@ public MyTeamDetailsResponse findMyTeamDetailsAsLeader(Long userId, Long teamId)
}

@Override
public IndividualStoreDetailsResponse findIndividualStoreDetails(Long userId, Long teamId, Long storeId) {
public IndividualStoreDetailsResponse findIndividualStoreDetails(Long userId, Long teamId, Long storeId, boolean isMeLeader) {
LocalDateTime now = LocalDateTime.now();
LocalDateTime oneMonthAgo = now.minusMonths(1);


if (!isMeLeader) {

List<MyPaymentHistory> myPaymentHistories = queryFactory
.select(new QMyPaymentHistory(
Expressions.stringTemplate(
"DATE_FORMAT({0}, '%m.%d')", pointTransaction.createdAt
),
Expressions.stringTemplate(
"DATE_FORMAT({0}, '%H:%i')", pointTransaction.createdAt
),
menu.name,
menu.price
))
.from(pointTransaction)
.leftJoin(menu).on(pointTransaction.menuId.eq(menu.id))
.where(pointTransaction.store.id.eq(storeId),
pointTransaction.team.id.eq(teamId),
pointTransaction.user.userId.eq(userId),
pointTransaction.createdAt.between(oneMonthAgo, now))
.fetch();

log.info("myPaymentHistories: {}", myPaymentHistories);

Integer totalPrice = queryFactory
.select(pointTransaction.transactionedPoint.sum())
.from(pointTransaction)
.where(pointTransaction.store.id.eq(storeId),
pointTransaction.team.id.eq(teamId),
pointTransaction.user.userId.eq(userId),
pointTransaction.createdAt.between(oneMonthAgo, now))
.fetchOne();

System.out.println("totalPrice = " + totalPrice);

return queryFactory
.selectDistinct(new QIndividualStoreDetailsResponse(
store.id,
Expressions.constant(false),
store.name,
Expressions.constant(false),
storeTeam.remainPoint,
storeTeam.personalAllocatedPoint,
Expressions.constant(totalPrice),
Expressions.nullExpression(),
Expressions.nullExpression(),
Expressions.nullExpression(),
Expressions.stringTemplate(
"DATE_FORMAT({0}, '%y.%m.%d')", oneMonthAgo
),
Expressions.stringTemplate(
"DATE_FORMAT({0}, '%y.%m.%d')", now
),
Expressions.constant(myPaymentHistories)
))
.from(storeTeam)
.leftJoin(store).on(storeTeam.store.id.eq(store.id))
.leftJoin(team).on(team.id.eq(storeTeam.team.id))
.leftJoin(pointTransaction).on(pointTransaction.store.id.eq(storeTeam.store.id),
pointTransaction.transactionType.eq(TransactionType.FOOD_PURCHASE),
pointTransaction.user.userId.eq(userId))
.where(storeTeam.store.id.eq(storeId),
storeTeam.team.id.eq(teamId))
.fetchOne();
}

// 리더일 때
List<MyPaymentHistory> myPaymentHistories = queryFactory
.select(new QMyPaymentHistory(
Expressions.stringTemplate(
Expand All @@ -196,23 +271,20 @@ public IndividualStoreDetailsResponse findIndividualStoreDetails(Long userId, Lo
pointTransaction.createdAt.between(oneMonthAgo, now))
.fetch();

Integer totalPrice = queryFactory
.select(pointTransaction.transactionedPoint.sum())
.from(pointTransaction)
.where(pointTransaction.store.id.eq(storeId),
pointTransaction.team.id.eq(teamId),
pointTransaction.user.userId.eq(userId),
pointTransaction.createdAt.between(oneMonthAgo, now))
.fetchOne();
log.info("myPaymentHistories: {}", myPaymentHistories);

return queryFactory
.selectDistinct(new QIndividualStoreDetailsResponse(
store.id,
Expressions.constant(true),
store.name,
Expressions.constant(false),
storeTeam.remainPoint,
Expressions.nullExpression(),
Expressions.nullExpression(),
Expressions.nullExpression(),
pointTransaction.transactionedPoint.sum(),
team.point,
storeTeam.personalAllocatedPoint,
Expressions.constant(totalPrice),
Expressions.stringTemplate(
"DATE_FORMAT({0}, '%y.%m.%d')", oneMonthAgo
),
Expand All @@ -225,7 +297,7 @@ public IndividualStoreDetailsResponse findIndividualStoreDetails(Long userId, Lo
.leftJoin(store).on(storeTeam.store.id.eq(store.id))
.leftJoin(team).on(team.id.eq(storeTeam.team.id))
.leftJoin(pointTransaction).on(pointTransaction.store.id.eq(storeTeam.store.id),
pointTransaction.transactionType.eq(TransactionType.FOOD_PURCHASE),
pointTransaction.transactionType.eq(TransactionType.POINT_PURCHASE),
pointTransaction.user.userId.eq(userId))
.where(storeTeam.store.id.eq(storeId),
storeTeam.team.id.eq(teamId))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,27 +5,37 @@

public record IndividualStoreDetailsResponse(
Long storeId,
Boolean isMeLeader,
String storeName,
boolean isLiked,
int remainingAmount,
int availableAmount,
int myUsedAmount,
int totalPrepayedAmount,
int remainingPrepayedAmount,
int personalUsableAmount,
String usageStartDate,
String usageEndDate,
List<MyPaymentHistory> myPaymentHistories
) {

@QueryProjection
public IndividualStoreDetailsResponse(Long storeId, String storeName, boolean isLiked, int remainingAmount,
int availableAmount, int myUsedAmount, String usageStartDate,
String usageEndDate,
public IndividualStoreDetailsResponse(Long storeId, Boolean isMeLeader, String storeName, boolean isLiked,
int remainingAmount, int availableAmount, int myUsedAmount,
int totalPrepayedAmount, int remainingPrepayedAmount,
int personalUsableAmount,
String usageStartDate, String usageEndDate,
List<MyPaymentHistory> myPaymentHistories) {
this.storeId = storeId;
this.isMeLeader = isMeLeader;
this.storeName = storeName;
this.isLiked = isLiked;
this.remainingAmount = remainingAmount;
this.availableAmount = availableAmount;
this.myUsedAmount = myUsedAmount;
this.totalPrepayedAmount = totalPrepayedAmount;
this.remainingPrepayedAmount = remainingPrepayedAmount;
this.personalUsableAmount = personalUsableAmount;
this.usageStartDate = usageStartDate;
this.usageEndDate = usageEndDate;
this.myPaymentHistories = myPaymentHistories;
Expand Down

0 comments on commit f14ee19

Please sign in to comment.