fix:新增 清分协议相关接口服务类 新增清分协议归集服务
parent
fcfe99a4fd
commit
0a15b8b5aa
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单(国业)管理
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue