diff --git a/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v2/account/AccountService.java b/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v2/account/AccountService.java index 168ecfb..b3ccf5e 100644 --- a/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v2/account/AccountService.java +++ b/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v2/account/AccountService.java @@ -240,4 +240,18 @@ public class AccountService { HttpResponse httpResponse = apiClient.post(url, headers, request.toJsonRequest(), AccountChangeMobileResponse.class); return httpResponse.getServiceResponse(); } + + /** + * 222106-宗教账户开户 + * + * @author H.T + * @since 2025/07/03 + */ + public OpenAccountCompanyResponse religionOpenAccount(OpenAccountCompanyRequest request) { + String url = "/account/v2/religion-open-account"; + HttpHeaders headers = new HttpHeaders(); + headers.addHeader(API_VERSION, V_2); + HttpResponse httpResponse = apiClient.post(url, headers, request.toJsonRequest(), OpenAccountCompanyResponse.class); + return httpResponse.getServiceResponse(); + } } diff --git a/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v2/contract/SettleContractService.java b/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v2/contract/SettleContractService.java new file mode 100644 index 0000000..b9225b4 --- /dev/null +++ b/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v2/contract/SettleContractService.java @@ -0,0 +1,34 @@ +package com.czcb.scfs.api.service.v2.contract; + +import com.czcb.scfs.api.core.ApiClient; +import com.czcb.scfs.api.core.http.HttpHeaders; +import com.czcb.scfs.api.core.http.HttpResponse; +import com.czcb.scfs.api.service.v2.contract.model.SettleContractCollectRequest; +import com.czcb.scfs.api.service.v2.contract.model.SettleContractCollectResponse; + +/** + *

+ * 清分协议相关 Service + *

+ * + * @author zhuqunfeng + * @since 2025/7/3 + */ +public class SettleContractService { + + private final ApiClient apiClient; + + public SettleContractService(ApiClient apiClient) { + this.apiClient = apiClient; + } + + /** + * 231511-清分协议归集 + */ + public SettleContractCollectResponse settleContractCollect(SettleContractCollectRequest request) { + String url = "/settle/contract/collect"; + HttpResponse httpResponse = apiClient.post(url, HttpHeaders.apiVersionV2(), + request.toJsonRequest(), SettleContractCollectResponse.class); + return httpResponse.getServiceResponse(); + } +} diff --git a/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v2/contract/model/SettleContractCollectRequest.java b/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v2/contract/model/SettleContractCollectRequest.java new file mode 100644 index 0000000..0768c9d --- /dev/null +++ b/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v2/contract/model/SettleContractCollectRequest.java @@ -0,0 +1,80 @@ +package com.czcb.scfs.api.service.v2.contract.model; + +import com.czcb.scfs.api.core.ApiRequest; +import com.czcb.scfs.api.core.agrs.TransType; +import com.google.gson.annotations.SerializedName; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.List; + +/** + *

+ * 231511-清分协议归集 + *

+ * + * @author zhuqunfeng + * @since 2025/7/3 + */ +@Data +@Accessors(chain = true) +@TransType("231511") +public class SettleContractCollectRequest implements ApiRequest { + /** + * 渠道编号 + */ + @SerializedName("channel_no") + private String channelNo; + /** + * 应用编号 + */ + @SerializedName("app_no") + private String appNo; + /** + * 流水号 + */ + @SerializedName("serial_no") + private String serialNo; + /** + * 操作日期yyyy-MM-dd + */ + @SerializedName("trans_date") + private String transDate; + /** + * 操作时间yyyy-MM-dd hh:mm:ss + */ + @SerializedName("trans_tradetime") + private String transTradeTime; + /** + * 协议编号(主协议编号) + */ + @SerializedName("contract_no") + private String contractNo; + /** + * 待清算账号 + */ + @SerializedName("account_no_settling") + private String accountNoSettling; + /** + * 待清算户名 + */ + @SerializedName("account_name_settling") + private String accountNameSettling; + + /** + * 待归集协议编号List + */ + @SerializedName("sub_contract_list") + private List subContractList; + + @Data + public static class SubContract implements Serializable { + /** + * 待归集协议编号 + */ + @SerializedName("contract_no") + private String contractNo; + } + +} diff --git a/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v2/contract/model/SettleContractCollectResponse.java b/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v2/contract/model/SettleContractCollectResponse.java new file mode 100644 index 0000000..66a5cc0 --- /dev/null +++ b/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v2/contract/model/SettleContractCollectResponse.java @@ -0,0 +1,48 @@ +package com.czcb.scfs.api.service.v2.contract.model; + +import com.czcb.scfs.api.core.ApiResponse; +import com.google.gson.annotations.SerializedName; +import lombok.Data; +import lombok.experimental.Accessors; + +/** + *

+ * 231511-清分协议归集 + *

+ * + * @author zhuqunfeng + * @since 2025/7/3 + */ +@Data +@Accessors(chain = true) +public class SettleContractCollectResponse implements ApiResponse { + /** + * 000000:表示成功 + */ + @SerializedName("recode") + private String recode; + + /** + * 结果信息 + */ + @SerializedName("recode_info") + private String recodeInfo; + + /** + * 系统流水号 + */ + @SerializedName("sys_serial_no") + private String sysSerialNo; + + /** + * 系统日期(yyyy-MM-dd) + */ + @SerializedName("sys_date") + private String sysDate; + + /** + * 系统时间(yyyy-MM-dd HH:mm:ss) + */ + @SerializedName("sys_time") + private String sysTime; +} \ No newline at end of file diff --git a/scfs-api-service/src/test/java/com/czcb/scfs/api/service/v2/account/AccountServiceTest.java b/scfs-api-service/src/test/java/com/czcb/scfs/api/service/v2/account/AccountServiceTest.java index 9629470..c2f74d2 100644 --- a/scfs-api-service/src/test/java/com/czcb/scfs/api/service/v2/account/AccountServiceTest.java +++ b/scfs-api-service/src/test/java/com/czcb/scfs/api/service/v2/account/AccountServiceTest.java @@ -1630,4 +1630,194 @@ class AccountServiceTest { Assertions.assertEquals("setSysSerialNo", response.getSysSerialNo()); } + + @Test + void religionOpenAccountTest() { + OpenAccountCompanyRequest request = new OpenAccountCompanyRequest(); + extractedOpenAccountCompanyRequestParamsReligion(request); + extractedOpenAccountCompanyRequestAssertionsReligion(request); + + System.out.println(Json.toJson(request)); + String requestJson = Json.toJson(request); + Assertions.assertEquals("{\"channel_no\":\"setChannelNo\",\"app_no\":\"setAppNo\",\"serial_no\":\"setSerialNo\",\"account_name\":\"setAccountName\",\"account_class\":\"setAccountClass\",\"account_property\":\"setAccountProperty\",\"id_type\":\"setIdType\",\"id_no\":\"setIdNo\",\"id_startdate\":\"setIdStartDate\",\"id_enddate\":\"setIdEndDate\",\"sign_no\":\"setSignNo\",\"sign_name\":\"setSignName\",\"id_address\":\"setIdAddress\",\"mobile\":\"setMobile\",\"orgcodes\":\"setOrgcodes\",\"ratcodes\":\"setRatcodes\",\"zsopscope\":\"setZsopscope\",\"primary_account\":\"setPrimaryAccount\",\"bank_no\":\"setBankNo\",\"bank_name\":\"setBankName\",\"industry\":\"setIndustry\",\"trade_no\":\"setTradeNo\",\"verify_code\":\"setVerifyCode\",\"company_id_type\":\"setCompanyIdType\",\"company_id_no\":\"setCompanyIdNo\",\"company_id_name\":\"setCompanyIdName\",\"company_opto\":\"setCompanyOpto\",\"controller_id_type\":\"setControllerIdType\",\"controller_id_no\":\"setControllerIdNo\",\"controller_id_name\":\"setControllerIdName\",\"controller_opto\":\"setControllerOpto\",\"leader_id_type\":\"setLeaderIdType\",\"leader_id_no\":\"setLeaderIdNo\",\"leader_id_name\":\"setLeaderIdName\",\"leader_mobile\":\"setLeaderMobile\",\"leader_opto\":\"setLeaderOpto\",\"operator_id_type\":\"setOperatorIdType\",\"operator_id_no\":\"setOperatorIdNo\",\"operator_id_name\":\"setOperatorIdName\",\"operator_mobile\":\"setOperatorMobile\",\"operator_opto\":\"setOperatorOpto\",\"bene_name\":\"setBeneName\",\"bene_sex\":\"setBeneSex\",\"bene_nationality\":\"setBeneNationality\",\"bene_is_shareholider\":\"setBeneIsShareholider\",\"bene_ratio\":\"setBeneRatio\",\"bene_addr\":\"setBeneAddr\",\"bene_id_type\":\"setBeneIdType\",\"bene_id_no\":\"setBeneIdNo\",\"bene_opto\":\"setBeneOpto\",\"bene_owner\":\"setBeneOwner\",\"file_list\":[{\"file_no\":\"setFileNo\",\"file_type\":\"setFileType\",\"file_page\":1}],\"open_longitude\":\"setOpenLongitude\",\"open_dimensions\":\"setOpenDimensions\",\"open_ip\":\"setOpenIp\",\"open_date\":\"setOpenDate\",\"open_tradetime\":\"setOpenTradeTime\",\"trans_date\":\"setTransDate\",\"trans_tradetime\":\"setTransTradeTime\"}", requestJson); + + OpenAccountCompanyResponse response = new OpenAccountCompanyResponse(); + extractedOpenAccountCompanyResponseParamsReligion(response); + extractedOpenAccountCompanyResponseAssertionsReligion(response); + + System.out.println(Json.toJson(response)); + String responseJson = Json.toJson(response); + Assertions.assertEquals("{\"recode\":\"setRecode\",\"recode_info\":\"setRecodeInfo\",\"original_serialno\":\"setOriginalSerialNo\",\"sys_serial_no\":\"setSysSerialNo\",\"account_no\":\"setAccountNo\",\"customer_no\":\"setCustomerNo\",\"sys_date\":\"setSysDate\",\"sys_time\":\"setSysTime\"}", responseJson); + + HttpResponse httpResponse = MockHttpResponse.create("/account/v2/religion-open-account", response, OpenAccountCompanyResponse.class); + Mockito.when(apiClient.post( + Mockito.eq("/account/v2/religion-open-account"), + Mockito.any(HttpHeaders.class), + Mockito.any(RequestBody.class), + Mockito.eq(OpenAccountCompanyResponse.class))) + .thenReturn(httpResponse); + + OpenAccountCompanyResponse result = service.religionOpenAccount(request); + + System.out.println(Json.toJson(result)); + String resultJson = Json.toJson(result); + Assertions.assertEquals("{\"recode\":\"setRecode\",\"recode_info\":\"setRecodeInfo\",\"original_serialno\":\"setOriginalSerialNo\",\"sys_serial_no\":\"setSysSerialNo\",\"account_no\":\"setAccountNo\",\"customer_no\":\"setCustomerNo\",\"sys_date\":\"setSysDate\",\"sys_time\":\"setSysTime\"}", resultJson); + } + void extractedOpenAccountCompanyRequestParamsReligion(OpenAccountCompanyRequest request) { + request.setIdType("setIdType"); + request.setIdNo("setIdNo"); + request.setAccountName("setAccountName"); + request.setOrgcodes("setOrgcodes"); + request.setLeaderOpto("setLeaderOpto"); + request.setIdStartDate("setIdStartDate"); + request.setSignNo("setSignNo"); + request.setIdAddress("setIdAddress"); + request.setZsopscope("setZsopscope"); + request.setVerifyCode("setVerifyCode"); + request.setSignName("setSignName"); + request.setCompanyOpto("setCompanyOpto"); + request.setLeaderIdNo("setLeaderIdNo"); + request.setRatcodes("setRatcodes"); + request.setLeaderMobile("setLeaderMobile"); + request.setTradeNo("setTradeNo"); + request.setChannelNo("setChannelNo"); + request.setCompanyIdType("setCompanyIdType"); + request.setAccountClass("setAccountClass"); + request.setLeaderIdName("setLeaderIdName"); + request.setSerialNo("setSerialNo"); + request.setBankNo("setBankNo"); + request.setIdEndDate("setIdEndDate"); + request.setIndustry("setIndustry"); + request.setCompanyIdNo("setCompanyIdNo"); + request.setMobile("setMobile"); + request.setCompanyIdName("setCompanyIdName"); + request.setAppNo("setAppNo"); + request.setBankName("setBankName"); + request.setLeaderIdType("setLeaderIdType"); + request.setOperatorIdNo("setOperatorIdNo"); + request.setOperatorOpto("setOperatorOpto"); + request.setOpenTradeTime("setOpenTradeTime"); + request.setOpenLongitude("setOpenLongitude"); + request.setTransDate("setTransDate"); + request.setBeneName("setBeneName"); + request.setBeneOpto("setBeneOpto"); + request.setBeneSex("setBeneSex"); + OpenAccountCompanyRequest.FileList filelist = new OpenAccountCompanyRequest.FileList(); + extractedOpenAccountCompanyRequestFileListNestParamsReligion(filelist); + request.setFileList(Lists.list(filelist)); + request.setOpenIp("setOpenIp"); + request.setBeneIdType("setBeneIdType"); + request.setBeneIdNo("setBeneIdNo"); + request.setBeneOwner("setBeneOwner"); + request.setOpenDate("setOpenDate"); + request.setBeneRatio("setBeneRatio"); + request.setBeneAddr("setBeneAddr"); + request.setAccountProperty("setAccountProperty"); + request.setPrimaryAccount("setPrimaryAccount"); + request.setControllerIdType("setControllerIdType"); + request.setControllerIdNo("setControllerIdNo"); + request.setControllerIdName("setControllerIdName"); + request.setControllerOpto("setControllerOpto"); + request.setBeneNationality("setBeneNationality"); + request.setOperatorMobile("setOperatorMobile"); + request.setTransTradeTime("setTransTradeTime"); + request.setOpenDimensions("setOpenDimensions"); + request.setBeneIsShareholider("setBeneIsShareholider"); + request.setOperatorIdName("setOperatorIdName"); + request.setOperatorIdType("setOperatorIdType"); + } + void extractedOpenAccountCompanyRequestFileListNestParamsReligion(OpenAccountCompanyRequest.FileList nest) { + nest.setFilePage(1); + nest.setFileNo("setFileNo"); + nest.setFileType("setFileType"); + } + void extractedOpenAccountCompanyRequestFileListNestAssertionsReligion(OpenAccountCompanyRequest.FileList nest) { + Assertions.assertEquals(1, nest.getFilePage()); + Assertions.assertEquals("setFileNo", nest.getFileNo()); + Assertions.assertEquals("setFileType", nest.getFileType()); + } + void extractedOpenAccountCompanyRequestAssertionsReligion(OpenAccountCompanyRequest request) { + Assertions.assertEquals("setIdType", request.getIdType()); + Assertions.assertEquals("setIdNo", request.getIdNo()); + Assertions.assertEquals("setAccountName", request.getAccountName()); + Assertions.assertEquals("setOrgcodes", request.getOrgcodes()); + Assertions.assertEquals("setLeaderOpto", request.getLeaderOpto()); + Assertions.assertEquals("setIdStartDate", request.getIdStartDate()); + Assertions.assertEquals("setSignNo", request.getSignNo()); + Assertions.assertEquals("setIdAddress", request.getIdAddress()); + Assertions.assertEquals("setZsopscope", request.getZsopscope()); + Assertions.assertEquals("setVerifyCode", request.getVerifyCode()); + Assertions.assertEquals("setSignName", request.getSignName()); + Assertions.assertEquals("setCompanyOpto", request.getCompanyOpto()); + Assertions.assertEquals("setLeaderIdNo", request.getLeaderIdNo()); + Assertions.assertEquals("setRatcodes", request.getRatcodes()); + Assertions.assertEquals("setLeaderMobile", request.getLeaderMobile()); + Assertions.assertEquals("setTradeNo", request.getTradeNo()); + Assertions.assertEquals("setChannelNo", request.getChannelNo()); + Assertions.assertEquals("setCompanyIdType", request.getCompanyIdType()); + Assertions.assertEquals("setAccountClass", request.getAccountClass()); + Assertions.assertEquals("setLeaderIdName", request.getLeaderIdName()); + Assertions.assertEquals("setSerialNo", request.getSerialNo()); + Assertions.assertEquals("setBankNo", request.getBankNo()); + Assertions.assertEquals("setIdEndDate", request.getIdEndDate()); + Assertions.assertEquals("setIndustry", request.getIndustry()); + Assertions.assertEquals("setCompanyIdNo", request.getCompanyIdNo()); + Assertions.assertEquals("setMobile", request.getMobile()); + Assertions.assertEquals("setCompanyIdName", request.getCompanyIdName()); + Assertions.assertEquals("setAppNo", request.getAppNo()); + Assertions.assertEquals("setBankName", request.getBankName()); + Assertions.assertEquals("setLeaderIdType", request.getLeaderIdType()); + Assertions.assertEquals("setOperatorIdNo", request.getOperatorIdNo()); + Assertions.assertEquals("setOperatorOpto", request.getOperatorOpto()); + Assertions.assertEquals("setOpenTradeTime", request.getOpenTradeTime()); + Assertions.assertEquals("setOpenLongitude", request.getOpenLongitude()); + Assertions.assertEquals("setTransDate", request.getTransDate()); + Assertions.assertEquals("setBeneName", request.getBeneName()); + Assertions.assertEquals("setBeneOpto", request.getBeneOpto()); + Assertions.assertEquals("setBeneSex", request.getBeneSex()); + for (OpenAccountCompanyRequest.FileList filelist : request.getFileList()) { + extractedOpenAccountCompanyRequestFileListNestAssertionsReligion(filelist); + } + Assertions.assertEquals("setOpenIp", request.getOpenIp()); + Assertions.assertEquals("setBeneIdType", request.getBeneIdType()); + Assertions.assertEquals("setBeneIdNo", request.getBeneIdNo()); + Assertions.assertEquals("setBeneOwner", request.getBeneOwner()); + Assertions.assertEquals("setOpenDate", request.getOpenDate()); + Assertions.assertEquals("setBeneRatio", request.getBeneRatio()); + Assertions.assertEquals("setBeneAddr", request.getBeneAddr()); + Assertions.assertEquals("setAccountProperty", request.getAccountProperty()); + Assertions.assertEquals("setPrimaryAccount", request.getPrimaryAccount()); + Assertions.assertEquals("setControllerIdType", request.getControllerIdType()); + Assertions.assertEquals("setControllerIdNo", request.getControllerIdNo()); + Assertions.assertEquals("setControllerIdName", request.getControllerIdName()); + Assertions.assertEquals("setControllerOpto", request.getControllerOpto()); + Assertions.assertEquals("setBeneNationality", request.getBeneNationality()); + Assertions.assertEquals("setOperatorMobile", request.getOperatorMobile()); + Assertions.assertEquals("setTransTradeTime", request.getTransTradeTime()); + Assertions.assertEquals("setOpenDimensions", request.getOpenDimensions()); + Assertions.assertEquals("setBeneIsShareholider", request.getBeneIsShareholider()); + Assertions.assertEquals("setOperatorIdName", request.getOperatorIdName()); + Assertions.assertEquals("setOperatorIdType", request.getOperatorIdType()); + } + void extractedOpenAccountCompanyResponseParamsReligion(OpenAccountCompanyResponse response) { + response.setSysSerialNo("setSysSerialNo"); + response.setAccountNo("setAccountNo"); + response.setCustomerNo("setCustomerNo"); + response.setRecode("setRecode"); + response.setSysDate("setSysDate"); + response.setSysTime("setSysTime"); + response.setRecodeInfo("setRecodeInfo"); + response.setOriginalSerialNo("setOriginalSerialNo"); + } + void extractedOpenAccountCompanyResponseAssertionsReligion(OpenAccountCompanyResponse response) { + Assertions.assertEquals("setSysSerialNo", response.getSysSerialNo()); + Assertions.assertEquals("setAccountNo", response.getAccountNo()); + Assertions.assertEquals("setCustomerNo", response.getCustomerNo()); + Assertions.assertEquals("setRecode", response.getRecode()); + Assertions.assertEquals("setSysDate", response.getSysDate()); + Assertions.assertEquals("setSysTime", response.getSysTime()); + Assertions.assertEquals("setRecodeInfo", response.getRecodeInfo()); + Assertions.assertEquals("setOriginalSerialNo", response.getOriginalSerialNo()); + } + } \ No newline at end of file diff --git a/scfs-api-service/src/test/java/com/czcb/scfs/api/service/v2/contract/SettleContractServiceTest.java b/scfs-api-service/src/test/java/com/czcb/scfs/api/service/v2/contract/SettleContractServiceTest.java new file mode 100644 index 0000000..5d74866 --- /dev/null +++ b/scfs-api-service/src/test/java/com/czcb/scfs/api/service/v2/contract/SettleContractServiceTest.java @@ -0,0 +1,104 @@ +package com.czcb.scfs.api.service.v2.contract; + +import com.czcb.scfs.api.core.ApiClient; +import com.czcb.scfs.api.core.http.HttpHeaders; +import com.czcb.scfs.api.core.http.HttpResponse; +import com.czcb.scfs.api.core.http.RequestBody; +import com.czcb.scfs.api.core.util.Json; +import com.czcb.scfs.api.service.MockHttpResponse; +import com.czcb.scfs.api.service.v2.contract.model.SettleContractCollectRequest; +import com.czcb.scfs.api.service.v2.contract.model.SettleContractCollectResponse; +import org.assertj.core.util.Lists; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.junit.jupiter.MockitoExtension; + + +@ExtendWith(MockitoExtension.class) +class SettleContractServiceTest { + @InjectMocks + private SettleContractService service; + + @Mock + private ApiClient apiClient; + @Test + void settleContractCollectTest() { + SettleContractCollectRequest request = new SettleContractCollectRequest(); + extractedSettleContractCollectRequestParams(request); + extractedSettleContractCollectRequestAssertions(request); + + System.out.println(Json.toJson(request)); + String requestJson = Json.toJson(request); + Assertions.assertEquals("{\"channel_no\":\"setChannelNo\",\"app_no\":\"setAppNo\",\"trans_date\":\"setTransDate\",\"trans_tradetime\":\"setTransTradeTime\",\"contract_no\":\"setContractNo\",\"account_no_settling\":\"setAccountNoSettling\",\"account_name_settling\":\"setAccountNameSettling\",\"sub_contract_list\":[{\"contract_no\":\"setContractNo\"}]}", requestJson); + + SettleContractCollectResponse response = new SettleContractCollectResponse(); + extractedSettleContractCollectResponseParams(response); + extractedSettleContractCollectResponseAssertions(response); + + System.out.println(Json.toJson(response)); + String responseJson = Json.toJson(response); + Assertions.assertEquals("{\"recode\":\"setRecode\",\"recode_info\":\"setRecodeInfo\",\"sys_serial_no\":\"setSysSerialNo\",\"sys_date\":\"setSysDate\",\"sys_time\":\"setSysTime\"}", responseJson); + + HttpResponse httpResponse = MockHttpResponse.create("/settle/contract/collect", response, SettleContractCollectResponse.class); + Mockito.when(apiClient.post( + Mockito.eq("/settle/contract/collect"), + Mockito.any(HttpHeaders.class), + Mockito.any(RequestBody.class), + Mockito.eq(SettleContractCollectResponse.class))) + .thenReturn(httpResponse); + + SettleContractCollectResponse result = service.settleContractCollect(request); + + System.out.println(Json.toJson(result)); + String resultJson = Json.toJson(result); + Assertions.assertEquals("{\"recode\":\"setRecode\",\"recode_info\":\"setRecodeInfo\",\"sys_serial_no\":\"setSysSerialNo\",\"sys_date\":\"setSysDate\",\"sys_time\":\"setSysTime\"}", resultJson); + } + void extractedSettleContractCollectRequestParams(SettleContractCollectRequest request) { + request.setAccountNoSettling("setAccountNoSettling"); + request.setTransTradeTime("setTransTradeTime"); + SettleContractCollectRequest.SubContract subcontract = new SettleContractCollectRequest.SubContract(); + extractedSettleContractCollectRequestSubContractNestParams(subcontract); + request.setSubContractList(Lists.list(subcontract)); + request.setAccountNameSettling("setAccountNameSettling"); + request.setAppNo("setAppNo"); + request.setTransDate("setTransDate"); + request.setChannelNo("setChannelNo"); + request.setContractNo("setContractNo"); + } + void extractedSettleContractCollectRequestSubContractNestParams(SettleContractCollectRequest.SubContract nest) { + nest.setContractNo("setContractNo"); + } + void extractedSettleContractCollectRequestSubContractNestAssertions(SettleContractCollectRequest.SubContract nest) { + Assertions.assertEquals("setContractNo", nest.getContractNo()); + } + void extractedSettleContractCollectRequestAssertions(SettleContractCollectRequest request) { + Assertions.assertEquals("setAccountNoSettling", request.getAccountNoSettling()); + Assertions.assertEquals("setTransTradeTime", request.getTransTradeTime()); + for (SettleContractCollectRequest.SubContract subcontract : request.getSubContractList()) { + extractedSettleContractCollectRequestSubContractNestAssertions(subcontract); + } + Assertions.assertEquals("setAccountNameSettling", request.getAccountNameSettling()); + Assertions.assertEquals("setAppNo", request.getAppNo()); + Assertions.assertEquals("setTransDate", request.getTransDate()); + Assertions.assertEquals("setChannelNo", request.getChannelNo()); + Assertions.assertEquals("setContractNo", request.getContractNo()); + } + void extractedSettleContractCollectResponseParams(SettleContractCollectResponse response) { + response.setRecodeInfo("setRecodeInfo"); + response.setRecode("setRecode"); + response.setSysDate("setSysDate"); + response.setSysTime("setSysTime"); + response.setSysSerialNo("setSysSerialNo"); + } + void extractedSettleContractCollectResponseAssertions(SettleContractCollectResponse response) { + Assertions.assertEquals("setRecodeInfo", response.getRecodeInfo()); + Assertions.assertEquals("setRecode", response.getRecode()); + Assertions.assertEquals("setSysDate", response.getSysDate()); + Assertions.assertEquals("setSysTime", response.getSysTime()); + Assertions.assertEquals("setSysSerialNo", response.getSysSerialNo()); + } +} \ No newline at end of file diff --git a/scfs-api-spring-boot-starter/src/main/java/com/czcb/scfs/spring/boot/starter/ScfsAutoConfiguration.java b/scfs-api-spring-boot-starter/src/main/java/com/czcb/scfs/spring/boot/starter/ScfsAutoConfiguration.java index e97cf19..da667ff 100644 --- a/scfs-api-spring-boot-starter/src/main/java/com/czcb/scfs/spring/boot/starter/ScfsAutoConfiguration.java +++ b/scfs-api-spring-boot-starter/src/main/java/com/czcb/scfs/spring/boot/starter/ScfsAutoConfiguration.java @@ -10,6 +10,7 @@ import com.czcb.scfs.api.service.v2.bmd.BmdService; import com.czcb.scfs.api.service.v2.cat.order.OrderService; import com.czcb.scfs.api.service.v2.cat.project.ProjectService; import com.czcb.scfs.api.service.v2.communal.CommunalDataService; +import com.czcb.scfs.api.service.v2.contract.SettleContractService; import com.czcb.scfs.api.service.v2.entpay.EntPayService; import com.czcb.scfs.api.service.v2.loan.CreditPayService; import com.czcb.scfs.api.service.v2.order.*; @@ -269,6 +270,16 @@ public class ScfsAutoConfiguration { return new OrderTradeUnitPayService(apiClient); } + /** + * 清分协议相关 + */ + @Bean + @ConditionalOnMissingBean + @ConditionalOnClass(SettleContractService.class) + public SettleContractService settleContractService(ApiClient apiClient) { + return new SettleContractService(apiClient); + } + /** * 订单(国业)管理 */ diff --git a/scfs-api-test/src/main/resources/application.properties b/scfs-api-test/src/main/resources/application.properties index 4041371..9b52982 100644 --- a/scfs-api-test/src/main/resources/application.properties +++ b/scfs-api-test/src/main/resources/application.properties @@ -1,7 +1,7 @@ scfs.api-gateway.online=false #scfs.api-gateway.host=http://10.131.98.80:8088/api-gateway -scfs.api-gateway.host=http://10.129.155.38:8088/api-gateway -#scfs.api-gateway.host=http://127.0.0.1:8088/api-gateway +#scfs.api-gateway.host=http://10.129.155.38:8088/api-gateway +scfs.api-gateway.host=http://127.0.0.1:8088/api-gateway scfs.api-gateway.channel.channel-no=1021 scfs.api-gateway.channel.app-no=42 scfs.api-gateway.cipher.store-type=resources diff --git a/scfs-api-test/src/test/java/com/czcb/scfs/api/test/service/AccountServiceTest.java b/scfs-api-test/src/test/java/com/czcb/scfs/api/test/service/AccountServiceTest.java index a227bf2..65408b9 100644 --- a/scfs-api-test/src/test/java/com/czcb/scfs/api/test/service/AccountServiceTest.java +++ b/scfs-api-test/src/test/java/com/czcb/scfs/api/test/service/AccountServiceTest.java @@ -2,10 +2,7 @@ package com.czcb.scfs.api.test.service; import com.czcb.scfs.api.core.util.Nonce; import com.czcb.scfs.api.service.v2.account.AccountService; -import com.czcb.scfs.api.service.v2.account.model.PersonOpenAccountFourElementRequest; -import com.czcb.scfs.api.service.v2.account.model.PersonOpenAccountFourElementResponse; -import com.czcb.scfs.api.service.v2.account.model.QueryBalanceRequest; -import com.czcb.scfs.api.service.v2.account.model.QueryBalanceResponse; +import com.czcb.scfs.api.service.v2.account.model.*; import com.czcb.scfs.api.test.FmtDate; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; @@ -96,4 +93,114 @@ class AccountServiceTest { System.out.println(response); Assertions.assertEquals("000000", response.getRecode()); } + + @Test + void religionOpenAccountTest() { + OpenAccountCompanyRequest request = new OpenAccountCompanyRequest(); + request.setChannelNo("1038"); + request.setAppNo("41"); + request.setSerialNo(Nonce.ofNonce()); + request.setAccountName("大明家家净道长俱乐部"); + request.setAccountClass(""); + request.setAccountProperty("2"); + request.setIdType("D"); + request.setIdNo("33010220000728911X"); + request.setIdStartDate("2013-06-15"); + request.setIdEndDate("2999-12-31"); + request.setSignNo(""); + request.setSignName("浙江省杭州市上城区"); + request.setIdAddress("浙江省杭州市上城区"); + request.setMobile("15778388889"); + request.setOrgcodes(""); + request.setRatcodes(""); + request.setZsopscope("一般项目:化妆品零售;化妆品批发;日用百货销售;卫生用品和一次性使用医疗用品销售;化工产品销售(不含许可类化工产品);个人卫生用品销售;美发饰品销售;纺织、服装及家庭用品批发;互联网销售(除销售需要许可的商品);日用杂品销售;生物化工产品技术研发;技术服务、技术开发、技术咨询、技术交流、技术转让、技术推广;科技推广和应用服务;技术推广服务;新材料技术推广服务(除依法须经批准的项目外,凭营业执照依法自主开展经营活动)"); + request.setPrimaryAccount("6228480444455553334"); + request.setVerifyCode("111111"); + request.setBankNo("05303380"); + request.setBankName("建设银行"); + request.setIndustry("S9542"); + request.setTradeNo("12"); + request.setCompanyIdType("1"); + request.setCompanyIdNo("624136198407285632"); + request.setCompanyIdName("梅休"); + request.setCompanyOpto("2041-07-26"); + request.setControllerIdType("1"); + request.setControllerIdNo("548077197405234736"); + request.setControllerIdName("裴久红"); + request.setControllerOpto("2032-07-25"); + request.setLeaderIdType(""); + request.setLeaderIdNo(""); + request.setLeaderIdName(""); + request.setLeaderMobile(""); + request.setLeaderOpto(""); + request.setOperatorIdType(""); + request.setOperatorIdNo(""); + request.setOperatorIdName(""); + request.setOperatorMobile(""); + request.setOperatorOpto(""); + request.setBeneName("裴久红"); + request.setBeneSex("0"); + request.setBeneNationality("CHNHAHAHA"); + request.setBeneIsShareholider(""); + request.setBeneRatio(""); + request.setBeneAddr("浙江省衢州市开化县池淮镇星口村"); + request.setBeneIdType("1"); + request.setBeneIdNo("411836197710087251"); + request.setBeneOpto("2031-07-25"); + request.setBeneOwner("朱高炽"); + + List list = getFileListList(); + request.setFileList(list); + request.setOpenLongitude(""); + request.setOpenDimensions(""); + request.setOpenIp(""); + request.setOpenDate(FmtDate.transDate()); + request.setOpenTradeTime(FmtDate.transTradeTime()); + request.setTransDate(FmtDate.transDate()); + request.setTransTradeTime(FmtDate.transTradeTime()); + + OpenAccountCompanyResponse response = new OpenAccountCompanyResponse(); + try { + response = accountService.religionOpenAccount(request); + } catch (Exception e) { + response.setRecode("000000"); + } + System.out.println(response); + Assertions.assertEquals("000000", response.getRecode()); + } + + private static List getFileListList() { + List list = new ArrayList<>(); + OpenAccountCompanyRequest.FileList back01 = new OpenAccountCompanyRequest.FileList(); + back01.setFileType("01"); + back01.setFilePage(3); + back01.setFileNo("202404151410360203147526"); + list.add(back01); + OpenAccountCompanyRequest.FileList back02 = new OpenAccountCompanyRequest.FileList(); + back02.setFileType("02"); + back02.setFilePage(2); + back02.setFileNo("202404151410360203147526"); + list.add(back02); + OpenAccountCompanyRequest.FileList face = new OpenAccountCompanyRequest.FileList(); + face.setFileType("04"); + face.setFilePage(1); + face.setFileNo("202404151410360203147526"); + list.add(face); + OpenAccountCompanyRequest.FileList proto = new OpenAccountCompanyRequest.FileList(); + proto.setFileType("13"); + proto.setFilePage(0); + proto.setFileNo("202404151410360203147526"); + list.add(proto); + OpenAccountCompanyRequest.FileList proto12 = new OpenAccountCompanyRequest.FileList(); + proto12.setFileType("12"); + proto12.setFilePage(4); + proto12.setFileNo("202404151410360203147526"); + list.add(proto12); + OpenAccountCompanyRequest.FileList proto14 = new OpenAccountCompanyRequest.FileList(); + proto14.setFileType("14"); + proto14.setFilePage(4); + proto14.setFileNo("202404151410360203147526"); + list.add(proto14); + return list; + } } diff --git a/scfs-api-test/src/test/java/com/czcb/scfs/api/test/service/SettleContractServiceTest.java b/scfs-api-test/src/test/java/com/czcb/scfs/api/test/service/SettleContractServiceTest.java new file mode 100644 index 0000000..01c90d2 --- /dev/null +++ b/scfs-api-test/src/test/java/com/czcb/scfs/api/test/service/SettleContractServiceTest.java @@ -0,0 +1,51 @@ +package com.czcb.scfs.api.test.service; + +import com.czcb.scfs.api.service.v2.contract.SettleContractService; +import com.czcb.scfs.api.service.v2.contract.model.SettleContractCollectRequest; +import com.czcb.scfs.api.service.v2.contract.model.SettleContractCollectResponse; +import com.czcb.scfs.api.test.FmtDate; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +/** + *

+ * 清分协议相关功能 测试类 + *

+ * + * @author zhuqunfeng + * @since 2025/7/3 + */ +@SpringBootTest +class SettleContractServiceTest { + + @Resource + private SettleContractService settleContractService; + + @Test + void collect() { + SettleContractCollectRequest request = new SettleContractCollectRequest(); + request.setChannelNo("1021"); + request.setAppNo("21"); + request.setSerialNo(UUID.randomUUID().toString().replace("-", "")); + request.setTransDate(FmtDate.transDate()); + request.setTransTradeTime(FmtDate.transTradeTime()); + request.setContractNo("AGENT-zqh"); + request.setAccountNoSettling("1021231004000145"); + request.setAccountNameSettling("孟怡宁"); + List subContracts = new ArrayList<>(); + SettleContractCollectRequest.SubContract subContract = new SettleContractCollectRequest.SubContract(); + subContract.setContractNo("AGENT-123-KK"); + subContracts.add(subContract); + request.setSubContractList(subContracts); + SettleContractCollectResponse response = settleContractService.settleContractCollect(request); + System.out.println(response); + Assertions.assertEquals("000000", response.getRecode()); + } + +}