Pārlūkot izejas kodu

feat: 对接ding 结算单查询接口

shc 3 gadi atpakaļ
vecāks
revīzija
74b7b27d7c

+ 41 - 0
hnqz-common/hnqz-common-ding/src/main/java/com/qunzhixinxi/hnqz/common/ding/entity/EmployFreelancesQueryRequest.java

@@ -0,0 +1,41 @@
+package com.qunzhixinxi.hnqz.common.ding.entity;
+
+
+import com.qunzhixinxi.hnqz.common.ding.config.DingConfig;
+import com.qunzhixinxi.hnqz.common.ding.sign.AccessSign;
+import com.qunzhixinxi.hnqz.common.ding.utils.JsonUtils;
+import com.qunzhixinxi.hnqz.common.ding.utils.SignUtils;
+import lombok.Data;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@Data
+public class EmployFreelancesQueryRequest extends CommonRequest{
+
+	private static final String PATH = "/oapi/v1/employ/freelances/payResult";
+
+	public EmployFreelancesQueryRequest(DingConfig config, String statementNo) {
+
+
+		Map<String, Object> map = new HashMap<>();
+		map.put("statementNo", statementNo);
+		String bodyStr = JsonUtils.serializer(map);
+
+		this.body = bodyStr;
+		String serviceSign = null;
+		try {
+			//签名
+			serviceSign = SignUtils.serviceSign(PATH, config.getAppSecret(),
+					"POST", new HashMap<>(), new byte[0]);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+
+		this.body = bodyStr;
+		this.sign = new AccessSign(config.getAppId(),serviceSign);
+		this.queryUrl = String.format("%s%s", config.getQueryUrl(), PATH);
+	}
+
+
+}

+ 10 - 0
hnqz-common/hnqz-common-ding/src/main/java/com/qunzhixinxi/hnqz/common/ding/entity/EmployFreelancesQueryResponse.java

@@ -0,0 +1,10 @@
+package com.qunzhixinxi.hnqz.common.ding.entity;
+
+import lombok.Data;
+
+@Data
+public class EmployFreelancesQueryResponse extends CommonResponse {
+
+	private EmployFreelancesQueryResult data;
+
+}

+ 13 - 0
hnqz-common/hnqz-common-ding/src/main/java/com/qunzhixinxi/hnqz/common/ding/entity/EmployFreelancesQueryResult.java

@@ -0,0 +1,13 @@
+package com.qunzhixinxi.hnqz.common.ding.entity;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class EmployFreelancesQueryResult {
+
+	private List<EmployFreelancesQueryResultItem> payResult;
+
+
+}

+ 16 - 0
hnqz-common/hnqz-common-ding/src/main/java/com/qunzhixinxi/hnqz/common/ding/entity/EmployFreelancesQueryResultItem.java

@@ -0,0 +1,16 @@
+package com.qunzhixinxi.hnqz.common.ding.entity;
+
+import lombok.Data;
+
+@Data
+public class EmployFreelancesQueryResultItem {
+
+
+	private String name;
+	private String mobile;
+	private String idCard;
+	private Integer payStatus;
+	private String failReason;
+
+
+}

+ 28 - 9
hnqz-common/hnqz-common-ding/src/main/java/com/qunzhixinxi/hnqz/common/ding/service/DingService.java

@@ -31,10 +31,10 @@ public class DingService {
 	 * "idCard": "350198765623418765"
 	 * }
 	 */
-	public EmployCheckResponse check(DingConfig config ,List list) {
+	public EmployCheckResponse check(DingConfig config, List list) {
 
 		EmployCheckRequest request = new EmployCheckRequest(config, list);
-		log.info("人力家请求报文: {}",request.getBody());
+		log.info("人力家请求报文: {}", request.getBody());
 		String json = HttpClientUtils.doPost(request);
 		log.info("人力家返回数据: {}", json);
 		EmployCheckResponse response = JsonUtils.deserializer(json, EmployCheckResponse.class);
@@ -55,7 +55,7 @@ public class DingService {
 	public EmployAccountQueryResponse query(DingConfig config) {
 
 		EmployAccountQueryRequest request = new EmployAccountQueryRequest(config);
-		log.info("人力家请求报文: {}",request.getBody());
+		log.info("人力家请求报文: {}", request.getBody());
 		String json = HttpClientUtils.doPost(request);
 		log.info("人力家返回数据: {}", json);
 		EmployAccountQueryResponse response = JsonUtils.deserializer(json, EmployAccountQueryResponse.class);
@@ -120,18 +120,18 @@ public class DingService {
 	 * "amount": "0.22"
 	 * }
 	 */
-	public EmployPayResponse payV2(DingConfig config,String subjectName,
-								 String statementNo,
-								 String statementName,
-								 Integer bizType,
-								 List list) {
+	public EmployPayResponse payV2(DingConfig config, String subjectName,
+								   String statementNo,
+								   String statementName,
+								   Integer bizType,
+								   List list) {
 
 		EmployPayRequestV2 request = new EmployPayRequestV2(config, subjectName,
 				statementNo,
 				statementName,
 				bizType,
 				list);
-		log.info("人力家请求报文: {}",request.getBody());
+		log.info("人力家请求报文: {}", request.getBody());
 		String json = HttpClientUtils.doPost(request);
 		log.info("人力家返回数据: {}", json);
 		EmployPayResponse response = JsonUtils.deserializer(json, EmployPayResponse.class);
@@ -142,4 +142,23 @@ public class DingService {
 	}
 
 
+	/**
+	 * 结算单查询
+	 *
+	 * @param statementNo 结算单id
+	 * @return 查询结果
+	 */
+	public EmployFreelancesQueryResponse freelancesQuery(DingConfig config, String statementNo) {
+		EmployFreelancesQueryRequest request = new EmployFreelancesQueryRequest(config, statementNo);
+
+		log.info("人力家请求报文: {}", request.getBody());
+		String json = HttpClientUtils.doPost(request);
+		log.info("人力家返回数据: {}", json);
+		EmployFreelancesQueryResponse response = JsonUtils.deserializer(json, EmployFreelancesQueryResponse.class);
+		if (!response.isSuccess()) {
+			log.error("结算单查询失败, code: {}, message: {}", response.getCode(), response.getMsg());
+		}
+		return response;
+	}
+
 }

+ 28 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmSettlementController.java

@@ -1,6 +1,7 @@
 package com.qunzhixinxi.hnqz.admin.controller;
 
 
+import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -218,5 +219,32 @@ public class WmSettlementController {
 		return R.ok();
 	}
 
+	/**
+	 * 结算单查询
+	 * @return 查询结果
+	 */
+	@Inner(value = false)
+	@PostMapping("/freelances/payResult")
+	public R<?> freelancesQuery(@RequestBody String params){
+
+		cn.hutool.json.JSONObject jsonObject = JSONUtil.parseObj(params);
+
+		SysDeptSub one = sysDeptSubService.getOne(Wrappers.<SysDeptSub>lambdaQuery().eq(SysDeptSub::getDeptId, jsonObject.getInt("deptId")).eq(SysDeptSub::getSubjectType, "0"));
+
+		if (one == null){
+			return R.failed("配置信息不全");
+		}
+
+		DingConfig config = new DingConfig();
+		config.setAppId(one.getAppId());
+		config.setAppSecret(one.getAppSecret());
+		config.setQueryUrl(one.getQueryUrl());
+
+		EmployFreelancesQueryResponse response = dingService.freelancesQuery(config, jsonObject.getStr("statementNo"));
+		return R.ok(response);
+
+
+	}
+
 
 }