From 628dbad7c0ecca433b5c5e9e0eb4029f611775db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=9E=AC=ED=98=81?= Date: Tue, 3 Dec 2024 18:13:56 +0900 Subject: [PATCH 1/4] =?UTF-8?q?feat:=20=EC=84=B8=EA=B8=88=EA=B3=84?= =?UTF-8?q?=EC=82=B0=EC=84=9C=20=EC=97=AD=EB=B0=9C=ED=96=89=20=EC=9A=94?= =?UTF-8?q?=EC=B2=AD=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84=20(#193)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 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: 세금계산서 역발행 요청 기능 구현 --- .../barobill/application/BarobillService.java | 90 +++++++++++++++---- ...egistAndReverseIssueTaxInvoiceRequest.java | 4 +- .../presentation/BarobillController.java | 36 +++++--- 3 files changed, 98 insertions(+), 32 deletions(-) diff --git a/src/main/java/com/jangburich/domain/barobill/application/BarobillService.java b/src/main/java/com/jangburich/domain/barobill/application/BarobillService.java index 6e7e017..536fb5c 100644 --- a/src/main/java/com/jangburich/domain/barobill/application/BarobillService.java +++ b/src/main/java/com/jangburich/domain/barobill/application/BarobillService.java @@ -4,6 +4,7 @@ import com.baroservice.ws.ArrayOfTaxInvoiceTradeLineItem; import com.baroservice.ws.InvoiceParty; import com.baroservice.ws.TaxInvoice; +import com.baroservice.ws.TaxInvoiceStateEX; import com.baroservice.ws.TaxInvoiceTradeLineItem; import com.jangburich.domain.barobill.dto.request.GetCertificateRegistURLRequest; import com.jangburich.domain.barobill.dto.request.RegistAndReverseIssueTaxInvoiceRequest; @@ -48,16 +49,53 @@ public void getCertificateRegistURL(GetCertificateRegistURLRequest getCertificat } } + @Transactional + public void procTaxInvoice() { + String certKey = CERT_KEY; + String corpNum = "7542401719"; + String mgtKey = "000001-E"; + String procType = "CANCEL"; + String memo = "test"; + + int result = barobillApiService.taxInvoice.procTaxInvoice(certKey, corpNum, mgtKey, procType, memo); + + if (result < 0) { // 호출 실패 + System.out.println(result); + } else { // 호출 성공 + System.out.println(result); + } + } + + public void getTaxInvoiceStateEX() { + String certKey = CERT_KEY; + String corpNum = "7493500897"; + String mgtKey = "000001-R"; + + TaxInvoiceStateEX result = barobillApiService.taxInvoice.getTaxInvoiceStateEX(certKey, corpNum, mgtKey); + + if (result.getBarobillState() < 0) { // 호출 실패 + System.out.println(result.getBarobillState()); + } else { // 호출 성공 + // 필드정보는 레퍼런스를 참고해주세요. + System.out.println(result.getBarobillState()); + } + } + @Transactional public void registAndReverseIssueTaxInvoice( RegistAndReverseIssueTaxInvoiceRequest registAndReverseIssueTaxInvoiceRequest) { // 공급자, 공급받는자의 관리번호 채번 - String invoicerMgtNum = "000001-R"; - String invoiceeMgtNum = "000001-E"; +// String invoicerMgtNum = "000003-R"; +// String invoiceeMgtNum = "000003-E"; + + String invoicerMgtNum = registAndReverseIssueTaxInvoiceRequest.invoicerMgtNum(); + String invoiceeMgtNum = registAndReverseIssueTaxInvoiceRequest.invoiceeMgtNum(); // 공급자, 공급받는자의 바로빌 아이디 불러오기 - String invoicerBarobillID = registAndReverseIssueTaxInvoiceRequest.invoicerBarobillID(); - String invoiceeBarobillID = registAndReverseIssueTaxInvoiceRequest.invoiceeBarobillID(); +// String invoicerBarobillID = registAndReverseIssueTaxInvoiceRequest.invoicerBarobillID(); +// String invoiceeBarobillID = registAndReverseIssueTaxInvoiceRequest.invoiceeBarobillID(); + String invoicerBarobillID = "parisbutchershop"; + String invoiceeBarobillID = "tkddn0518"; // 세금계산서 내용을 담은 클래스(또는 구조체) 생성 TaxInvoice taxInvoice = new TaxInvoice(); @@ -72,7 +110,7 @@ public void registAndReverseIssueTaxInvoice( taxInvoice.setTaxCalcType(1); taxInvoice.setPurposeType(1); - taxInvoice.setWriteDate("20241129"); + taxInvoice.setWriteDate("20241202"); taxInvoice.setAmountTotal("100"); taxInvoice.setTaxTotal("100"); @@ -97,34 +135,34 @@ public void registAndReverseIssueTaxInvoice( // 공급자 정보 taxInvoice.setInvoicerParty(new InvoiceParty()); taxInvoice.getInvoicerParty().setMgtNum(invoicerMgtNum); - taxInvoice.getInvoicerParty().setCorpNum(""); + taxInvoice.getInvoicerParty().setCorpNum("7493500897"); taxInvoice.getInvoicerParty().setTaxRegID(""); - taxInvoice.getInvoicerParty().setCorpName("partisbutchershop"); - taxInvoice.getInvoicerParty().setCEOName(""); - taxInvoice.getInvoicerParty().setAddr(""); + taxInvoice.getInvoicerParty().setCorpName("parisbutchershop"); + taxInvoice.getInvoicerParty().setCEOName("윤원자"); + taxInvoice.getInvoicerParty().setAddr("대구광역시 달서구 달구벌대로344길 23"); taxInvoice.getInvoicerParty().setBizType("한식"); taxInvoice.getInvoicerParty().setBizClass("음식점업"); taxInvoice.getInvoicerParty().setContactID(invoicerBarobillID); - taxInvoice.getInvoicerParty().setContactName(""); + taxInvoice.getInvoicerParty().setContactName("빠리정육점"); taxInvoice.getInvoicerParty().setTEL(""); taxInvoice.getInvoicerParty().setHP(""); - taxInvoice.getInvoicerParty().setEmail(""); + taxInvoice.getInvoicerParty().setEmail("tkddn0518@naver.com"); //공급받는자 정보 taxInvoice.setInvoiceeParty(new InvoiceParty()); taxInvoice.getInvoiceeParty().setMgtNum(invoiceeMgtNum); - taxInvoice.getInvoiceeParty().setCorpNum(""); + taxInvoice.getInvoiceeParty().setCorpNum("7542401719"); taxInvoice.getInvoiceeParty().setTaxRegID(""); taxInvoice.getInvoiceeParty().setCorpName("Jangburich"); - taxInvoice.getInvoiceeParty().setCEOName(""); - taxInvoice.getInvoiceeParty().setAddr(""); - taxInvoice.getInvoiceeParty().setBizType(""); - taxInvoice.getInvoiceeParty().setBizClass(""); + taxInvoice.getInvoiceeParty().setCEOName("변상우"); + taxInvoice.getInvoiceeParty().setAddr("충북 청주시 상당구 중앙로 80 (북문로3가, 청주행정타운 코아루휴티스)"); + taxInvoice.getInvoiceeParty().setBizType("응용 소프트웨어 개발 및 공급업"); + taxInvoice.getInvoiceeParty().setBizClass("정보통신업"); taxInvoice.getInvoiceeParty().setContactID(invoiceeBarobillID); - taxInvoice.getInvoiceeParty().setContactName(""); + taxInvoice.getInvoiceeParty().setContactName("하이볼리"); taxInvoice.getInvoiceeParty().setTEL(""); taxInvoice.getInvoiceeParty().setHP(""); - taxInvoice.getInvoiceeParty().setEmail(""); + taxInvoice.getInvoiceeParty().setEmail("tkddn0518@naver.com"); // 수탁자 정보 taxInvoice.setBrokerParty(new InvoiceParty()); @@ -156,7 +194,7 @@ public void registAndReverseIssueTaxInvoice( taxInvoice.getTaxInvoiceTradeLineItems().getTaxInvoiceTradeLineItem().add(taxInvoiceTradeLineItem); - int result = barobillApiService.taxInvoice.registAndReverseIssueTaxInvoice(CERT_KEY, "", taxInvoice, + int result = barobillApiService.taxInvoice.registAndReverseIssueTaxInvoice(CERT_KEY, taxInvoice.getInvoiceeParty().getCorpNum(), taxInvoice, false, false, ""); @@ -169,4 +207,18 @@ public void registAndReverseIssueTaxInvoice( System.out.println("성공"); } } + + public void deleteTaxInvoice() { + String certKey = CERT_KEY; + String corpNum = "7493500897"; + String mgtKey = "000001-R"; + + int result = barobillApiService.taxInvoice.deleteTaxInvoice(certKey, corpNum, mgtKey); + + if (result < 0) { // 호출 실패 + System.out.println(result); + } else { // 호출 성공 + System.out.println(result); + } + } } diff --git a/src/main/java/com/jangburich/domain/barobill/dto/request/RegistAndReverseIssueTaxInvoiceRequest.java b/src/main/java/com/jangburich/domain/barobill/dto/request/RegistAndReverseIssueTaxInvoiceRequest.java index 72603ba..e9ad3b5 100644 --- a/src/main/java/com/jangburich/domain/barobill/dto/request/RegistAndReverseIssueTaxInvoiceRequest.java +++ b/src/main/java/com/jangburich/domain/barobill/dto/request/RegistAndReverseIssueTaxInvoiceRequest.java @@ -1,8 +1,8 @@ package com.jangburich.domain.barobill.dto.request; public record RegistAndReverseIssueTaxInvoiceRequest( - String invoicerBarobillID, - String invoiceeBarobillID + String invoicerMgtNum, + String invoiceeMgtNum ) { } diff --git a/src/main/java/com/jangburich/domain/barobill/presentation/BarobillController.java b/src/main/java/com/jangburich/domain/barobill/presentation/BarobillController.java index 49e69fb..2fa04b6 100644 --- a/src/main/java/com/jangburich/domain/barobill/presentation/BarobillController.java +++ b/src/main/java/com/jangburich/domain/barobill/presentation/BarobillController.java @@ -1,13 +1,14 @@ package com.jangburich.domain.barobill.presentation; import com.jangburich.domain.barobill.application.BarobillService; -import com.jangburich.domain.barobill.dto.request.GetCertificateRegistURLRequest; import com.jangburich.domain.barobill.dto.request.RegistAndReverseIssueTaxInvoiceRequest; import com.jangburich.domain.barobill.dto.request.RegistCorpRequest; import com.jangburich.global.payload.Message; import com.jangburich.global.payload.ResponseCustom; +import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -21,6 +22,7 @@ public class BarobillController { private final BarobillService barobillService; + @Operation(summary = "바로빌 가입 및 회원사 등록", description = "소상공인의 사업자로 바로빌 회원가입 + 장부리치의 회원사로 등록합니다.") @PostMapping public ResponseCustom registCorp( @RequestBody RegistCorpRequest registCorpRequest @@ -29,19 +31,31 @@ public ResponseCustom registCorp( return ResponseCustom.OK(Message.builder().message("success").build()); } - @PostMapping("/registCertificate") - public ResponseCustom getCertificateRegistURL( - @RequestBody GetCertificateRegistURLRequest getCertificateRegistURLRequest - ) { - barobillService.getCertificateRegistURL(getCertificateRegistURLRequest); + @Operation(summary = "세금계산서 역발행 요청", description = "세금 계산서를 소상공인이 역발행 요청합니다.") + @PostMapping("/registAndReverseIssueTaxInvoice") + public ResponseCustom registAndReverseIssueTaxInvoice(@RequestBody RegistAndReverseIssueTaxInvoiceRequest registAndReverseIssueTaxInvoiceRequest) { + barobillService.registAndReverseIssueTaxInvoice(registAndReverseIssueTaxInvoiceRequest); return ResponseCustom.OK(Message.builder().message("success").build()); } - @PostMapping("/registAndReverseIssueTaxInvoice") - public ResponseCustom registAndReverseIssueTaxInvoice( - @RequestBody RegistAndReverseIssueTaxInvoiceRequest registAndReverseIssueTaxInvoiceRequest - ) { - barobillService.registAndReverseIssueTaxInvoice(registAndReverseIssueTaxInvoiceRequest); + @Operation(summary = "세금계산서 역발행 취소", description = "세금 계산서 역발행 취소(test)") + @PostMapping("/cancel") + public ResponseCustom cancel() { + barobillService.procTaxInvoice(); + return ResponseCustom.OK(Message.builder().message("success").build()); + } + + @Operation(summary = "세금계산서 상태조회", description = "세금계산서 상태를 조회합니다.") + @GetMapping("/testget") + public ResponseCustom get() { + barobillService.getTaxInvoiceStateEX(); + return ResponseCustom.OK(Message.builder().message("success").build()); + } + + @Operation(summary = "세금계산서 삭제", description = "세금계산서를 삭제합니다.") + @PostMapping("/delete") + public ResponseCustom delete() { + barobillService.deleteTaxInvoice(); return ResponseCustom.OK(Message.builder().message("success").build()); } } From 2e28ffd719dc61ef72c066792a4d4a2fb29a4747 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=9E=AC=ED=98=81?= Date: Thu, 5 Dec 2024 18:36:09 +0900 Subject: [PATCH 2/4] =?UTF-8?q?feat:=20=ED=8C=80=20=EC=A1=B0=ED=9A=8C=20?= =?UTF-8?q?=EC=8B=9C=20=EC=A7=84=ED=96=89=20=EC=83=81=ED=83=9C=EA=B0=92=20?= =?UTF-8?q?=EB=B0=98=ED=99=98=20=EC=B6=94=EA=B0=80=20(#195)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 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: 팀 조회 시 진행 상태값 반환 추가 --- .../java/com/jangburich/domain/team/application/TeamService.java | 1 + .../com/jangburich/domain/team/dto/response/MyTeamResponse.java | 1 + 2 files changed, 2 insertions(+) diff --git a/src/main/java/com/jangburich/domain/team/application/TeamService.java b/src/main/java/com/jangburich/domain/team/application/TeamService.java index 8a97d2c..6354adf 100644 --- a/src/main/java/com/jangburich/domain/team/application/TeamService.java +++ b/src/main/java/com/jangburich/domain/team/application/TeamService.java @@ -113,6 +113,7 @@ public List getMyTeamByCategory(String userId, String category) MyTeamResponse response = new MyTeamResponse( team.getName(), + "진행중", team.getCreatedAt().toLocalDate(), team.getTeamType().getDescription(), false, // isLiked는 임의로 false로 설정 diff --git a/src/main/java/com/jangburich/domain/team/dto/response/MyTeamResponse.java b/src/main/java/com/jangburich/domain/team/dto/response/MyTeamResponse.java index c255153..d605242 100644 --- a/src/main/java/com/jangburich/domain/team/dto/response/MyTeamResponse.java +++ b/src/main/java/com/jangburich/domain/team/dto/response/MyTeamResponse.java @@ -5,6 +5,7 @@ public record MyTeamResponse( String teamName, + String processState, LocalDate createdDate, String teamType, Boolean isLiked, From 81d3ddf509f19dc7d07dd0309c96a752d8614635 Mon Sep 17 00:00:00 2001 From: HyunWoo9930 Date: Fri, 6 Dec 2024 14:13:35 +0900 Subject: [PATCH 3/4] =?UTF-8?q?fix=20:=20closeTime=20=EC=8B=9C=EA=B0=84=20?= =?UTF-8?q?=ED=98=95=EC=8B=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../store/dto/response/SearchStoresResponse.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/jangburich/domain/store/dto/response/SearchStoresResponse.java b/src/main/java/com/jangburich/domain/store/dto/response/SearchStoresResponse.java index 2e8b2dd..160ae84 100644 --- a/src/main/java/com/jangburich/domain/store/dto/response/SearchStoresResponse.java +++ b/src/main/java/com/jangburich/domain/store/dto/response/SearchStoresResponse.java @@ -3,6 +3,9 @@ import com.jangburich.domain.store.domain.Category; import com.querydsl.core.annotations.QueryProjection; +import java.time.LocalTime; +import java.time.format.DateTimeFormatter; + import lombok.Builder; @Builder @@ -33,9 +36,18 @@ public SearchStoresResponse(Long storeId, String name, Double latitude, Double l category.getDisplayName(), distance, businessStatus, - closeTime, + formatCloseTime(closeTime), phoneNumber, imageUrl ); } -} \ No newline at end of file + + private static String formatCloseTime(String closeTime) { + try { + LocalTime time = LocalTime.parse(closeTime.split("\\.")[0]); + return time.format(DateTimeFormatter.ofPattern("HH:mm")); + } catch (Exception e) { + return closeTime; + } + } +} From 533c3b6bbd0f07cd7913b119d361b0112fda9ade Mon Sep 17 00:00:00 2001 From: HyunWoo9930 Date: Fri, 6 Dec 2024 14:19:06 +0900 Subject: [PATCH 4/4] =?UTF-8?q?fix=20:=20category=20=ED=95=9C=EA=B8=80?= =?UTF-8?q?=EB=A1=9C=20=EC=9E=85=EB=A0=A5=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../store/controller/StoreController.java | 15 +++++++-------- .../domain/store/domain/Category.java | 17 +++++++++++++++++ 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/jangburich/domain/store/controller/StoreController.java b/src/main/java/com/jangburich/domain/store/controller/StoreController.java index edeac24..ce46853 100644 --- a/src/main/java/com/jangburich/domain/store/controller/StoreController.java +++ b/src/main/java/com/jangburich/domain/store/controller/StoreController.java @@ -57,13 +57,12 @@ public class StoreController { public ResponseCustom> searchByCategory( Authentication authentication, @RequestParam(required = false, defaultValue = "3") Integer searchRadius, - @RequestParam(required = false, defaultValue = "ALL") Category category, - Double lat, - Double lon, Pageable pageable) { + @RequestParam(required = false, defaultValue = "전체") String category, + Double lat, Double lon, Pageable pageable) { + Category categoryEnum = Category.fromDisplayName(category); return ResponseCustom.OK( - storeService.searchByCategory(AuthenticationParser.parseUserId(authentication), searchRadius, category, lat, - lon, - pageable)); + storeService.searchByCategory(AuthenticationParser.parseUserId(authentication), searchRadius, categoryEnum, + lat, lon, pageable)); } @Operation(summary = "매장 찾기(검색)", description = "검색어와 매장 유형에 맞는 매장을 검색합니다.") @@ -159,10 +158,10 @@ public ResponseCustom getOrders(Authentication authenticat @Operation(summary = "가게 엑셀 다운로드", description = "가게 장부 세부 내역을 엑셀로 제공합니다.") @GetMapping("/excel") public ResponseEntity getExcel( - Authentication authentication, + // Authentication authentication, @RequestParam(defaultValue = "1") Integer period ) { - byte[] excel = storeService.createExcel(AuthenticationParser.parseUserId(authentication), period); + byte[] excel = storeService.createExcel("test-owner", period); String today = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")); String fileName = "장부_세부내역_" + period + "개월_" + today + ".xlsx"; diff --git a/src/main/java/com/jangburich/domain/store/domain/Category.java b/src/main/java/com/jangburich/domain/store/domain/Category.java index 1c3416d..14d4614 100644 --- a/src/main/java/com/jangburich/domain/store/domain/Category.java +++ b/src/main/java/com/jangburich/domain/store/domain/Category.java @@ -1,5 +1,7 @@ package com.jangburich.domain.store.domain; +import java.util.Arrays; + public enum Category { ALL("전체"), KOREAN("한식"), @@ -24,4 +26,19 @@ public enum Category { public String getDisplayName() { return displayName; } + + public static Category fromDisplayName(String displayName) { + return Arrays.stream(Category.values()) + .filter(category -> category.getDisplayName().equals(displayName)) + .findFirst() + .orElseThrow(() -> new IllegalArgumentException("Invalid category: " + displayName + ". Please use one of: " + getValidCategories())); + } + + private static String getValidCategories() { + return Arrays.stream(Category.values()) + .map(Category::getDisplayName) + .reduce((a, b) -> a + ", " + b) + .orElse(""); + } + }