Skip to content

Commit 94930d3

Browse files
feat: Barobill api 연동 (#155)
* 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 연동
1 parent 6c441c3 commit 94930d3

File tree

7 files changed

+245
-0
lines changed

7 files changed

+245
-0
lines changed

build.gradle

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,11 @@ dependencies {
5959
testImplementation 'org.springframework.boot:spring-boot-starter-test'
6060
testImplementation 'org.springframework.security:spring-security-test'
6161
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
62+
63+
//barobill
64+
implementation 'com.sun.xml.ws:jaxws-rt:2.3.1'
65+
implementation 'org.glassfish.metro:webservices-rt:2.4.4'
66+
implementation fileTree(dir: 'libs', include: ['*.jar'])
6267
}
6368

6469
tasks.named('test') {

libs/barobill-api-sdk-java21.jar

855 KB
Binary file not shown.
Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
package com.jangburich.domain.barobill.application;
2+
3+
import com.baroservice.api.BarobillApiService;
4+
import com.baroservice.ws.ArrayOfTaxInvoiceTradeLineItem;
5+
import com.baroservice.ws.InvoiceParty;
6+
import com.baroservice.ws.TaxInvoice;
7+
import com.baroservice.ws.TaxInvoiceTradeLineItem;
8+
import com.jangburich.domain.barobill.dto.request.GetCertificateRegistURLRequest;
9+
import com.jangburich.domain.barobill.dto.request.RegistCorpRequest;
10+
import java.util.regex.Pattern;
11+
import lombok.RequiredArgsConstructor;
12+
import org.springframework.stereotype.Service;
13+
import org.springframework.transaction.annotation.Transactional;
14+
15+
@Service
16+
@RequiredArgsConstructor
17+
@Transactional(readOnly = true)
18+
public class BarobillService {
19+
20+
private final BarobillApiService barobillApiService;
21+
private static final String CERT_KEY = "164D08BA-4305-4256-8E8C-0BD955D08862";
22+
23+
@Transactional
24+
public void registCorp(RegistCorpRequest registCorpRequest) {
25+
int result = barobillApiService.taxInvoice.registCorp(CERT_KEY, registCorpRequest.corpNum(),
26+
registCorpRequest.corpName(), registCorpRequest.ceoName(), registCorpRequest.bizType(), registCorpRequest.bizClass(),
27+
registCorpRequest.postNum(), registCorpRequest.addr1(),
28+
registCorpRequest.addr2(), registCorpRequest.memberName(), registCorpRequest.juminNum(), registCorpRequest.id(), registCorpRequest.pwd(), registCorpRequest.grade(),
29+
registCorpRequest.tel(), registCorpRequest.hp(), registCorpRequest.email());
30+
31+
if (result < 0) { // 호출 실패
32+
System.out.println(result);
33+
} else { // 호출 성공
34+
System.out.println(result);
35+
}
36+
}
37+
38+
public void getCertificateRegistURL(GetCertificateRegistURLRequest getCertificateRegistURLRequest) {
39+
String result = barobillApiService.taxInvoice.getCertificateRegistURL(CERT_KEY,
40+
getCertificateRegistURLRequest.corpNum(), getCertificateRegistURLRequest.id(),
41+
getCertificateRegistURLRequest.pwd());
42+
43+
if (Pattern.compile("^-[0-9]{5}").matcher(result).matches()) { // 호출 실패
44+
System.out.println(result);
45+
} else { // 호출 성공
46+
System.out.println(result);
47+
}
48+
}
49+
50+
@Transactional
51+
public void registAndReverseIssueTaxInvoice() {
52+
// 공급자, 공급받는자의 관리번호 채번
53+
String invoicerMgtNum = "000001-R";
54+
String invoiceeMgtNum = "000001-E";
55+
56+
// 공급자, 공급받는자의 바로빌 아이디 불러오기
57+
String invoicerBarobillID = "barobill";
58+
String invoiceeBarobillID = "barobill";
59+
60+
// 세금계산서 내용을 담은 클래스(또는 구조체) 생성
61+
TaxInvoice taxInvoice = new TaxInvoice();
62+
63+
/**/
64+
taxInvoice.setIssueDirection(1);
65+
taxInvoice.setTaxInvoiceType(1);
66+
67+
taxInvoice.setModifyCode("");
68+
69+
taxInvoice.setTaxType(1);
70+
taxInvoice.setTaxCalcType(1);
71+
taxInvoice.setPurposeType(2);
72+
73+
taxInvoice.setWriteDate("");
74+
75+
taxInvoice.setAmountTotal("");
76+
taxInvoice.setTaxTotal("");
77+
taxInvoice.setTotalAmount("");
78+
taxInvoice.setCash("");
79+
taxInvoice.setChkBill("");
80+
taxInvoice.setNote("");
81+
taxInvoice.setCredit("");
82+
83+
taxInvoice.setRemark1("");
84+
taxInvoice.setRemark2("");
85+
taxInvoice.setRemark3("");
86+
87+
taxInvoice.setKwon("");
88+
taxInvoice.setHo("");
89+
taxInvoice.setSerialNum("");
90+
91+
92+
93+
/**/
94+
95+
// 공급자 정보
96+
taxInvoice.setInvoicerParty(new InvoiceParty());
97+
taxInvoice.getInvoicerParty().setMgtNum("");
98+
taxInvoice.getInvoicerParty().setCorpNum("");
99+
taxInvoice.getInvoicerParty().setTaxRegID("");
100+
taxInvoice.getInvoicerParty().setCorpName("");
101+
taxInvoice.getInvoicerParty().setCEOName("");
102+
taxInvoice.getInvoicerParty().setAddr("");
103+
taxInvoice.getInvoicerParty().setBizType("");
104+
taxInvoice.getInvoicerParty().setBizClass("");
105+
taxInvoice.getInvoicerParty().setContactID("");
106+
taxInvoice.getInvoicerParty().setContactName("");
107+
taxInvoice.getInvoicerParty().setTEL("");
108+
taxInvoice.getInvoicerParty().setHP("");
109+
taxInvoice.getInvoicerParty().setEmail("");
110+
111+
//공급받는자 정보
112+
taxInvoice.setInvoiceeParty(new InvoiceParty());
113+
taxInvoice.getInvoiceeParty().setCorpNum("");
114+
taxInvoice.getInvoiceeParty().setTaxRegID("");
115+
taxInvoice.getInvoiceeParty().setCorpName("");
116+
taxInvoice.getInvoiceeParty().setCEOName("");
117+
taxInvoice.getInvoiceeParty().setAddr("");
118+
taxInvoice.getInvoiceeParty().setBizType("");
119+
taxInvoice.getInvoiceeParty().setBizClass("");
120+
taxInvoice.getInvoiceeParty().setContactID("");
121+
taxInvoice.getInvoiceeParty().setContactName("");
122+
taxInvoice.getInvoiceeParty().setTEL("");
123+
taxInvoice.getInvoiceeParty().setHP("");
124+
taxInvoice.getInvoiceeParty().setEmail("");
125+
126+
// 수탁자 정보
127+
taxInvoice.setBrokerParty(new InvoiceParty());
128+
taxInvoice.getBrokerParty().setCorpNum("");
129+
taxInvoice.getBrokerParty().setTaxRegID("");
130+
taxInvoice.getBrokerParty().setCorpName("");
131+
taxInvoice.getBrokerParty().setCEOName("");
132+
taxInvoice.getBrokerParty().setAddr("");
133+
taxInvoice.getBrokerParty().setBizType("");
134+
taxInvoice.getBrokerParty().setBizClass("");
135+
taxInvoice.getBrokerParty().setContactID("");
136+
taxInvoice.getBrokerParty().setContactName("");
137+
taxInvoice.getBrokerParty().setTEL("");
138+
taxInvoice.getBrokerParty().setHP("");
139+
taxInvoice.getBrokerParty().setEmail("");
140+
141+
// 품목
142+
taxInvoice.setTaxInvoiceTradeLineItems(new ArrayOfTaxInvoiceTradeLineItem());
143+
144+
TaxInvoiceTradeLineItem taxInvoiceTradeLineItem = new TaxInvoiceTradeLineItem();
145+
taxInvoiceTradeLineItem.setPurchaseExpiry("");
146+
taxInvoiceTradeLineItem.setName("");
147+
taxInvoiceTradeLineItem.setInformation("");
148+
taxInvoiceTradeLineItem.setChargeableUnit("");
149+
taxInvoiceTradeLineItem.setUnitPrice("");
150+
taxInvoiceTradeLineItem.setAmount("");
151+
taxInvoiceTradeLineItem.setTax("");
152+
taxInvoiceTradeLineItem.setDescription("");
153+
154+
taxInvoice.getTaxInvoiceTradeLineItems().getTaxInvoiceTradeLineItem().add(taxInvoiceTradeLineItem);
155+
156+
}
157+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.jangburich.domain.barobill.dto.request;
2+
3+
public record GetCertificateRegistURLRequest(
4+
String corpNum,
5+
String id,
6+
String pwd
7+
) {
8+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.jangburich.domain.barobill.dto.request;
2+
3+
public record RegistCorpRequest(
4+
String corpNum,
5+
String corpName,
6+
String ceoName,
7+
String bizType,
8+
String bizClass,
9+
String postNum,
10+
String addr1,
11+
String addr2,
12+
String memberName,
13+
String juminNum,
14+
String id,
15+
String pwd,
16+
String grade,
17+
String tel,
18+
String hp,
19+
String email
20+
) {
21+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package com.jangburich.domain.barobill.presentation;
2+
3+
import com.jangburich.domain.barobill.application.BarobillService;
4+
import com.jangburich.domain.barobill.dto.request.GetCertificateRegistURLRequest;
5+
import com.jangburich.domain.barobill.dto.request.RegistCorpRequest;
6+
import com.jangburich.global.payload.Message;
7+
import com.jangburich.global.payload.ResponseCustom;
8+
import io.swagger.v3.oas.annotations.tags.Tag;
9+
import lombok.RequiredArgsConstructor;
10+
import org.springframework.web.bind.annotation.PostMapping;
11+
import org.springframework.web.bind.annotation.RequestBody;
12+
import org.springframework.web.bind.annotation.RequestMapping;
13+
import org.springframework.web.bind.annotation.RestController;
14+
15+
@Tag(name = "Barobill", description = "Barobill API")
16+
@RestController
17+
@RequestMapping("/barobill")
18+
@RequiredArgsConstructor
19+
public class BarobillController {
20+
21+
private final BarobillService barobillService;
22+
23+
@PostMapping
24+
public ResponseCustom<Message> registCorp(
25+
@RequestBody RegistCorpRequest registCorpRequest
26+
) {
27+
barobillService.registCorp(registCorpRequest);
28+
return ResponseCustom.OK(Message.builder().message("success").build());
29+
}
30+
31+
@PostMapping("/registCertificate")
32+
public ResponseCustom<Message> getCertificateRegistURL(
33+
@RequestBody GetCertificateRegistURLRequest getCertificateRegistURLRequest
34+
) {
35+
barobillService.getCertificateRegistURL(getCertificateRegistURLRequest);
36+
return ResponseCustom.OK(Message.builder().message("success").build());
37+
}
38+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.jangburich.global.config;
2+
3+
import com.baroservice.api.BarobillApiProfile;
4+
import com.baroservice.api.BarobillApiService;
5+
import java.net.MalformedURLException;
6+
import org.springframework.context.annotation.Bean;
7+
import org.springframework.context.annotation.Configuration;
8+
9+
@Configuration
10+
public class BarobillConfig {
11+
12+
@Bean
13+
public BarobillApiService barobillApiService() throws MalformedURLException {
14+
return new BarobillApiService(BarobillApiProfile.TESTBED);
15+
}
16+
}

0 commit comments

Comments
 (0)