Эх сурвалжийг харах

feat: 1.众蚁云签约联调gig完成;2.众蚁云回调业务处理

李学松 2 жил өмнө
parent
commit
85e5b797b1

+ 5 - 0
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/constant/CacheConstants.java

@@ -125,6 +125,11 @@ public interface CacheConstants {
 	 */
 	String HUI_QI_YUN_NOTIFY_KEY = "HUI:QI:YUN:NOTIFY:KEY:";
 
+	/**
+	 * 众蚁云异步结果回调key
+	 */
+	String ZHONG_YI_YUN_NOTIFY_KEY = "ZHONG:YI:YUN:NOTIFY:KEY:";
+
 
 	/**
 	 * 发起阿拉丁认证渠道记录key

+ 70 - 19
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/GigThirdApiController.java

@@ -1,23 +1,29 @@
 package com.qunzhixinxi.hnqz.admin.controller;
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ArrayUtil;
 import cn.hutool.core.util.NumberUtil;
 import cn.hutool.core.util.StrUtil;
-import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.qunzhixinxi.hnqz.admin.api.constant.CacheConstants;
 import com.qunzhixinxi.hnqz.admin.api.dto.OladingCommonRequest;
 import com.qunzhixinxi.hnqz.admin.entity.HuiqiyunInputRecord;
 import com.qunzhixinxi.hnqz.admin.entity.LingcaiaiInputRecord;
 import com.qunzhixinxi.hnqz.admin.entity.OladingInputRecord;
+import com.qunzhixinxi.hnqz.admin.entity.SysDeptSub;
 import com.qunzhixinxi.hnqz.admin.entity.XinbadaInputRecord;
+import com.qunzhixinxi.hnqz.admin.entity.ZhongyiyunInputRecord;
+import com.qunzhixinxi.hnqz.admin.enums.SubjectLocation;
 import com.qunzhixinxi.hnqz.admin.service.HuiqiyunInputRecordService;
 import com.qunzhixinxi.hnqz.admin.service.LingcaiaiInputRecordService;
+import com.qunzhixinxi.hnqz.admin.service.SysDeptSubService;
 import com.qunzhixinxi.hnqz.admin.service.XinbadaInputRecordService;
+import com.qunzhixinxi.hnqz.admin.service.ZhongyiyunInputRecordService;
 import com.qunzhixinxi.hnqz.admin.service.gig.GigThirdApiService;
 import com.qunzhixinxi.hnqz.admin.service.gig.OladingInputRecordService;
-import com.qunzhixinxi.hnqz.admin.util.HMACSignProvider;
+import com.qunzhixinxi.hnqz.admin.util.ZhongyiyunUtil;
 import com.qunzhixinxi.hnqz.common.log.annotation.SysLog;
 import com.qunzhixinxi.hnqz.common.security.annotation.Inner;
 import lombok.AllArgsConstructor;
@@ -34,9 +40,7 @@ import org.springframework.web.bind.annotation.RestController;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.time.LocalDateTime;
-import java.util.Enumeration;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 import java.util.concurrent.TimeUnit;
@@ -63,20 +67,12 @@ public class GigThirdApiController {
 
 	private final HuiqiyunInputRecordService huiqiyunInputRecordService;
 
+	private final ZhongyiyunInputRecordService zhongyiyunInputRecordService;
+
+	private final SysDeptSubService sysDeptSubService;
+
 	private final RedisTemplate redisTemplate;
 
-// 阿拉钉签名验签
-//	private static final HMACSignProvider hMACSignProvide = new HMACSignProvider();
-//
-//	/**
-//	 * 公钥
-//	 */
-//	private static final String PUBLIC_KEY = "123123123";
-//
-//	/**
-//	 * 算法类型
-//	 */
-//	private static final String ALGORITHM_TYPE = "HmacSHA256";
 
 	/**
 	 * 众蚁云异步通知回调
@@ -86,12 +82,67 @@ public class GigThirdApiController {
 	 * @return
 	 */
 	@Inner(value = false)
-	@SysLog("众蚁云异步通知回调")
+	@SysLog("众蚁云签约异步通知回调")
 	@PostMapping("/zhongyiyun/sign-notify")
-	public String zhongYiYunRequest(@RequestBody String body, @RequestHeader HttpHeaders headers) {
+	public String zhongYiYunSignNotifyRequest(@RequestBody String body, @RequestHeader HttpHeaders headers) {
 		log.info("众蚁云请求方法参数:body={}, headers={}", body, headers);
 
-//		return "fail";
+		// 请求body json
+		JSONObject bodyJson = JSONUtil.parseObj(body);
+
+		// 请求序号
+		String reqId = bodyJson.getStr("reqId");
+
+		String redisKey = String.format("%s_%s", CacheConstants.ZHONG_YI_YUN_NOTIFY_KEY, reqId);
+		Boolean absent = redisTemplate.opsForValue().setIfAbsent(redisKey, reqId, 30, TimeUnit.MINUTES);
+		if (Boolean.FALSE.equals(absent)) {
+			log.warn("存在在途操作reqId={}", reqId);
+			return "fail";
+		}
+
+		JSONObject newBodyJson = null;
+		try {
+			String merId = bodyJson.getStr("merId");
+			String bankCard = bodyJson.getStr("bankCard");
+			String idCard = bodyJson.getStr("idCard");
+			String mobile = bodyJson.getStr("mobile");
+			String name = bodyJson.getStr("name");
+			String remark3 = bodyJson.getStr("remark3");
+
+			// 查询deptSub获取desKey
+			SysDeptSub deptSub = sysDeptSubService.getOne(Wrappers.<SysDeptSub>lambdaQuery()
+					.likeRight(SysDeptSub::getAppId, merId)
+					.eq(SysDeptSub::getEnableFlag, "1")
+					.eq(SysDeptSub::getSubjectLocation, SubjectLocation.ZHONG_YI_YUN));
+			if (deptSub == null || StrUtil.isBlank(deptSub.getAppId())) {
+				log.warn("未配置众蚁云deptSub merId={}", merId);
+				return "fail";
+			}
+
+			String desKey = StrUtil.split(deptSub.getAppId(), "|").get(2);
+
+			newBodyJson = BeanUtil.copyProperties(bodyJson, JSONObject.class);
+			newBodyJson.set("bankCard", ZhongyiyunUtil.decrypt(bankCard, desKey));
+			newBodyJson.set("idCard", ZhongyiyunUtil.decrypt(idCard, desKey));
+			newBodyJson.set("mobile", ZhongyiyunUtil.decrypt(mobile, desKey));
+			newBodyJson.set("name", ZhongyiyunUtil.decrypt(name, desKey));
+			newBodyJson.set("remark3", ZhongyiyunUtil.decrypt(remark3, desKey));
+		} catch (Exception e) {
+			log.error("众蚁云签约回调参数异常", e);
+			return "fail";
+		} finally {
+			// 请求记录到数据库
+			ZhongyiyunInputRecord inputRecord = new ZhongyiyunInputRecord();
+			inputRecord.setReqId(reqId);
+			inputRecord.setReqType(ZhongyiyunInputRecord.ReqType.SIGN_NOTIFY.getType());
+			inputRecord.setReqBody(body);
+			inputRecord.setDecryptBody(JSONUtil.toJsonStr(newBodyJson));
+			zhongyiyunInputRecordService.save(inputRecord);
+		}
+
+		// 业务处理
+		gigThirdApiService.zhongYiYunSignNotify(newBodyJson);
+
 		return "success";
 	}
 

+ 8 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/gig/GigThirdApiService.java

@@ -2,7 +2,7 @@ package com.qunzhixinxi.hnqz.admin.service.gig;
 
 import cn.hutool.json.JSONObject;
 import com.qunzhixinxi.hnqz.admin.api.dto.OladingCommonRequest;
-import com.qunzhixinxi.hnqz.admin.entity.WmScorePackage;
+import com.qunzhixinxi.hnqz.admin.api.entity.SysUser;
 import com.qunzhixinxi.hnqz.admin.entity.WmScorePackageSettleNote;
 
 import java.util.List;
@@ -15,6 +15,13 @@ import java.util.List;
  */
 public interface GigThirdApiService {
 
+	/**
+	 * 众蚁云签约回调业务处理
+	 *
+	 * @param newBodyJson
+	 */
+	void zhongYiYunSignNotify(JSONObject newBodyJson);
+
 	/**
 	 * 汇企云回调业务处理
 	 *

+ 66 - 4
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/gig/impl/GigThirdApiServiceImpl.java

@@ -14,17 +14,31 @@ import com.qunzhixinxi.hnqz.admin.api.entity.SysDept;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysUser;
 import com.qunzhixinxi.hnqz.admin.config.TaxNotifyConfig;
 import com.qunzhixinxi.hnqz.admin.config.UpmsConfig;
-import com.qunzhixinxi.hnqz.admin.entity.*;
+import com.qunzhixinxi.hnqz.admin.entity.HuiqiyunInputRecord;
+import com.qunzhixinxi.hnqz.admin.entity.SysDeptSub;
+import com.qunzhixinxi.hnqz.admin.entity.SysUserSub;
+import com.qunzhixinxi.hnqz.admin.entity.WmScorePackage;
+import com.qunzhixinxi.hnqz.admin.entity.WmScorePackageSettleNote;
 import com.qunzhixinxi.hnqz.admin.entity.dto.UserSignCertDTO;
-import com.qunzhixinxi.hnqz.admin.enums.*;
+import com.qunzhixinxi.hnqz.admin.enums.DelEnum;
+import com.qunzhixinxi.hnqz.admin.enums.GigCallBackStatus;
+import com.qunzhixinxi.hnqz.admin.enums.OladingCertStatus;
+import com.qunzhixinxi.hnqz.admin.enums.SubjectLocation;
+import com.qunzhixinxi.hnqz.admin.enums.SubjectTypeEnum;
+import com.qunzhixinxi.hnqz.admin.enums.ZhongYiYunCertStatus;
 import com.qunzhixinxi.hnqz.admin.event.OladingFinishTaskEvent;
-import com.qunzhixinxi.hnqz.admin.service.*;
+import com.qunzhixinxi.hnqz.admin.service.HuiqiyunInputRecordService;
+import com.qunzhixinxi.hnqz.admin.service.SysDeptService;
+import com.qunzhixinxi.hnqz.admin.service.SysDeptSubService;
+import com.qunzhixinxi.hnqz.admin.service.SysUserService;
+import com.qunzhixinxi.hnqz.admin.service.SysUserSubService;
+import com.qunzhixinxi.hnqz.admin.service.WmScorePackageService;
+import com.qunzhixinxi.hnqz.admin.service.WmScorePackageSettleNoteService;
 import com.qunzhixinxi.hnqz.admin.service.gig.GigThirdApiService;
 import com.qunzhixinxi.hnqz.admin.service.gig.SysUserSignCertService;
 import com.qunzhixinxi.hnqz.admin.util.AESUtil;
 import com.qunzhixinxi.hnqz.common.core.constant.CommonConstants;
 import com.qunzhixinxi.hnqz.common.core.exception.ValidateCodeException;
-import com.qunzhixinxi.hnqz.common.core.util.R;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
@@ -73,6 +87,54 @@ public class GigThirdApiServiceImpl implements GigThirdApiService {
 
 	private final HuiqiyunInputRecordService huiqiyunInputRecordService;
 
+	/**
+	 * 众蚁云签约回调业务处理
+	 *
+	 * @param newBodyJson
+	 */
+	@Override
+	public void zhongYiYunSignNotify(JSONObject newBodyJson) {
+
+		String idCard = newBodyJson.getStr("idCard");
+		String mobile = newBodyJson.getStr("mobile");
+		String name = newBodyJson.getStr("name");
+		String state = newBodyJson.getStr("state");
+		String resMsg = newBodyJson.getStr("resMsg");
+
+		// 查询当前用户
+		SysUser sysUser = sysUserService.getOne(Wrappers.<SysUser>lambdaQuery()
+				.eq(SysUser::getRealname, name)
+				.eq(SysUser::getIdCardNumber, idCard)
+				.eq(SysUser::getUsername, mobile)
+				.eq(SysUser::getDelFlag, DelEnum.NOT_DEL.val()));
+		if (sysUser == null) {
+			log.warn("用户不存在name={},idCard={},mobile={}", name, idCard, mobile);
+			return;
+		}
+
+		// 查询对应userSub数据
+		SysUserSub userSub = sysUserSubService.getOne(Wrappers.<SysUserSub>lambdaQuery()
+				.eq(SysUserSub::getUserId, sysUser.getUserId())
+				.eq(SysUserSub::getSubjectLocation, SubjectLocation.ZHONG_YI_YUN));
+		if (userSub == null) {
+			log.warn("没有查到对应userSub数据 userId={}", sysUser.getUserId());
+			return;
+		}
+
+		// 更新userSub
+		SysUserSub updateUserSub = new SysUserSub();
+		updateUserSub.setId(userSub.getId());
+		if ("SIGN".equals(state)) {
+			// 已签约对应要易已认证
+			updateUserSub.setCertStatus(ZhongYiYunCertStatus.CERT.getCode());
+		}
+		updateUserSub.setCertRemark(String.format("%s;%s", userSub.getCertRemark(), resMsg));
+		updateUserSub.setFailReason(resMsg);
+		updateUserSub.setUpdateTime(LocalDateTime.now());
+		updateUserSub.setUpdateUser(0);
+		sysUserSubService.updateById(updateUserSub);
+	}
+
 	/**
 	 * 汇企云回调业务处理
 	 *

+ 8 - 5
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/gig/impl/SysUserSignCertServiceImpl.java

@@ -519,17 +519,20 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 		// 根据用户id查询用户信息、认证信息
 		SysUser sysUser = sysUserService.getById(userId);
 		if (sysUser == null) {
+			log.warn("{}用户id为空", userId);
 			return false;
 		}
 		// 查询认证数据
 		SysUserExtRecord userExtRecord = sysUserExtRecordService.getOne(Wrappers.<SysUserExtRecord>lambdaQuery()
 				.eq(SysUserExtRecord::getUserId, userId)
 				.eq(SysUserExtRecord::getDelFlag, DelEnum.NOT_DEL.val()));
-		if (userExtRecord == null
-				&& !SubjectLocation.REN_LI_JIA.equals(userSignCertDTO.getSubjectLocation())
-				&& !SubjectLocation.JIANG_XI.equals(userSignCertDTO.getSubjectLocation())) {
-			// 人力家、正启之星-江西 不校验userExtRecord
-			return false;
+		if (userExtRecord == null) {
+			if (!SubjectLocation.REN_LI_JIA.equals(userSignCertDTO.getSubjectLocation())
+					&& !SubjectLocation.JIANG_XI.equals(userSignCertDTO.getSubjectLocation())) {
+				// 人力家、正启之星-江西 不校验userExtRecord
+				return false;
+			}
+			log.warn("{}用户的userExtRecord为空", userId);
 		}
 		// 查询dept
 		SysDept dept = sysDeptService.getById(sysUser.getDeptId());