fix:新增 清分协议相关接口服务类 新增清分协议归集服务

main
wb1496 2025-07-03 17:21:05 +08:00
parent fcfe99a4fd
commit 0a15b8b5aa
7 changed files with 330 additions and 2 deletions

View File

@ -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;
/**
* <p>
* Service
* </p>
*
* @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<SettleContractCollectResponse> httpResponse = apiClient.post(url, HttpHeaders.apiVersionV2(),
request.toJsonRequest(), SettleContractCollectResponse.class);
return httpResponse.getServiceResponse();
}
}

View File

@ -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;
/**
* <p>
* 231511-
* </p>
*
* @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<SubContract> subContractList;
@Data
public static class SubContract implements Serializable {
/**
*
*/
@SerializedName("contract_no")
private String contractNo;
}
}

View File

@ -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;
/**
* <p>
* 231511-
* </p>
*
* @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;
}

View File

@ -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<SettleContractCollectResponse> 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());
}
}

View File

@ -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);
}
/**
* ()
*/

View File

@ -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

View File

@ -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;
/**
* <p>
*
* </p>
*
* @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<SettleContractCollectRequest.SubContract> 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());
}
}