Bladeren bron

Merge branch 'feat-20220615-yeejinyuan' into temp-pre

lixuesong 3 jaren geleden
bovenliggende
commit
f822588192

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

@@ -2,6 +2,7 @@ package com.qunzhixinxi.hnqz.admin.service.gig.impl;
 
 import cn.hutool.core.map.MapUtil;
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -253,12 +254,15 @@ public class GigThirdApiServiceImpl implements GigThirdApiService {
 
 		Map<String, String> subMap = new HashMap<>();
 		SysUserSub updateUserSub = new SysUserSub();
+		OladingCertStatus currentCertStatus;
 		if (OladingCommonRequest.SignUpStatus.SIGN.equals(signUpCertStatus)) {
 			subMap.put("certStatus", OladingCertStatus.SIGNED.name());
 			updateUserSub.setCertStatus(Integer.valueOf(OladingCertStatus.SIGNED.getCode()));
+			currentCertStatus = OladingCertStatus.SIGNED;
 		} else {
 			subMap.put("certStatus", OladingCertStatus.UN_SIGNED.name());
 			updateUserSub.setCertStatus(Integer.valueOf(OladingCertStatus.UN_SIGNED.getCode()));
+			currentCertStatus = OladingCertStatus.UN_SIGNED;
 		}
 		updateUserSub.setId(userSub.getId());
 		updateUserSub.setUpdateTime(LocalDateTime.now());
@@ -274,10 +278,16 @@ public class GigThirdApiServiceImpl implements GigThirdApiService {
 
 		// 结果放到redis
 		String key = CacheConstants.USER_SIGN_CERT_RESPONSE_KEY + userSub.getUserId();
-		Map<String, Object> result = MapUtil.newHashMap(2);
-		result.put(GigTypeEnum.OLADING.name(), new HashMap<>(subMap));
-		result.put(GigTypeEnum.JIN_YUAN.name(), new HashMap<>(subMap));
-		redisTemplate.opsForValue().set(key, JSONUtil.toJsonStr(result), 1, TimeUnit.MINUTES);
+		if (redisTemplate.hasKey(key)) {
+			String qResult = (String) redisTemplate.opsForValue().get(key);
+			JSONObject qResultObj = JSONUtil.parseObj(qResult);
+			qResultObj.append(userSub.getGigType().name(), currentCertStatus.name());
+			redisTemplate.opsForValue().set(key, JSONUtil.toJsonStr(qResultObj), 1, TimeUnit.MINUTES);
+		} else {
+			Map<String, Object> result = MapUtil.newHashMap(2);
+			result.put(currentCertStatus.name(), new HashMap<>(subMap));
+			redisTemplate.opsForValue().set(key, JSONUtil.toJsonStr(result), 1, TimeUnit.MINUTES);
+		}
 
 		// 如果成功,则发送证照上传MQ
 		if (OladingCommonRequest.SignUpStatus.SIGN.equals(signUpCertStatus)) {
@@ -286,6 +296,21 @@ public class GigThirdApiServiceImpl implements GigThirdApiService {
 			userSignCertDTO.setUserId(userSub.getUserId());
 			userSignCertDTO.setGigTypeList(Collections.singletonList(userSub.getGigType()));
 			sysUserSignCertService.batchChannelCert(userSignCertDTO);
+
+			// 查询是否存在另一渠道需要发起(海南飞亿、金园数科其中之一)
+			SysUserSub secUserSub = sysUserSubService.getOne(Wrappers.<SysUserSub>lambdaQuery()
+					.eq(SysUserSub::getUserId, userSub.getUserId())
+					.eq(SysUserSub::getGigType, GigTypeEnum.OLADING)
+					.eq(SysUserSub::getCertStatus, Integer.parseInt(OladingCertStatus.SIGNING.getCode()))
+					.ne(SysUserSub::getId, userSub.getId()));
+			if (secUserSub != null) {
+				// 如果同一人同时存在海南飞亿、金园数科的渠道,则补发一次(由于阿拉钉同一人不同渠道的回调只有一次,所以这里需要补发)
+				log.info("=============================补发阿拉钉另一渠道MQ1==================================");
+				UserSignCertDTO reCertDTO = new UserSignCertDTO();
+				reCertDTO.setUserId(secUserSub.getUserId());
+				reCertDTO.setGigTypeList(Collections.singletonList(secUserSub.getGigType()));
+				sysUserSignCertService.batchChannelCert(reCertDTO);
+			}
 		}
 	}
 
@@ -307,14 +332,17 @@ public class GigThirdApiServiceImpl implements GigThirdApiService {
 
 		Map<String, String> subMap = new HashMap<>();
 		LambdaUpdateWrapper<SysUserSub> updateUserSubWrapper = Wrappers.lambdaUpdate();
+		OladingCertStatus currentCertStatus;
 		if (OladingCommonRequest.UploadIdCardImageStatus.IDENTIFY_SUCCESS.equals(uploadIdCertStatus)) {
 			subMap.put("certStatus", OladingCertStatus.SIGNED.name());
 			updateUserSubWrapper.set(SysUserSub::getCertStatus, Integer.valueOf(OladingCertStatus.SIGNED.getCode()));
+			currentCertStatus = OladingCertStatus.SIGNED;
 		} else {
 			subMap.put("certStatus", OladingCertStatus.SIGNED.name());
 			updateUserSubWrapper.set(SysUserSub::getCertStatus, Integer.valueOf(OladingCertStatus.SIGNED.getCode()));
 			updateUserSubWrapper.set(SysUserSub::getIdCardFrontUrl, null);
 			updateUserSubWrapper.set(SysUserSub::getIdCardBackUrl, null);
+			currentCertStatus = OladingCertStatus.SIGNED;
 		}
 		updateUserSubWrapper.eq(SysUserSub::getUserId, userSub.getUserId());
 		updateUserSubWrapper.eq(SysUserSub::getDeptId, userSub.getDeptId());
@@ -334,10 +362,16 @@ public class GigThirdApiServiceImpl implements GigThirdApiService {
 
 		// 结果放到redis
 		String key = CacheConstants.USER_SIGN_CERT_RESPONSE_KEY + userSub.getUserId();
-		Map<String, Object> result = MapUtil.newHashMap(2);
-		result.put(GigTypeEnum.OLADING.name(), new HashMap<>(subMap));
-		result.put(GigTypeEnum.JIN_YUAN.name(), new HashMap<>(subMap));
-		redisTemplate.opsForValue().set(key, JSONUtil.toJsonStr(result), 1, TimeUnit.MINUTES);
+		if (redisTemplate.hasKey(key)) {
+			String qResult = (String) redisTemplate.opsForValue().get(key);
+			JSONObject qResultObj = JSONUtil.parseObj(qResult);
+			qResultObj.append(userSub.getGigType().name(), currentCertStatus.name());
+			redisTemplate.opsForValue().set(key, JSONUtil.toJsonStr(qResultObj), 1, TimeUnit.MINUTES);
+		} else {
+			Map<String, Object> result = MapUtil.newHashMap(2);
+			result.put(currentCertStatus.name(), new HashMap<>(subMap));
+			redisTemplate.opsForValue().set(key, JSONUtil.toJsonStr(result), 1, TimeUnit.MINUTES);
+		}
 
 		// 如果成功,则发送协议上传MQ
 		if (OladingCommonRequest.UploadIdCardImageStatus.IDENTIFY_SUCCESS.equals(uploadIdCertStatus)) {
@@ -346,6 +380,21 @@ public class GigThirdApiServiceImpl implements GigThirdApiService {
 			userSignCertDTO.setUserId(userSub.getUserId());
 			userSignCertDTO.setGigTypeList(Collections.singletonList(userSub.getGigType()));
 			sysUserSignCertService.batchChannelCert(userSignCertDTO);
+
+			// 查询是否存在另一渠道需要发起(海南飞亿、金园数科其中之一)
+			SysUserSub secUserSub = sysUserSubService.getOne(Wrappers.<SysUserSub>lambdaQuery()
+					.eq(SysUserSub::getUserId, userSub.getUserId())
+					.eq(SysUserSub::getGigType, GigTypeEnum.OLADING)
+					.eq(SysUserSub::getCertStatus, Integer.parseInt(OladingCertStatus.SIGNING.getCode()))
+					.ne(SysUserSub::getId, userSub.getId()));
+			if (secUserSub != null) {
+				// 如果同一人同时存在海南飞亿、金园数科的渠道,则补发一次(由于阿拉钉同一人不同渠道的回调只有一次,所以这里需要补发)
+				log.info("=============================补发阿拉钉另一渠道MQ2==================================");
+				UserSignCertDTO reCertDTO = new UserSignCertDTO();
+				reCertDTO.setUserId(secUserSub.getUserId());
+				reCertDTO.setGigTypeList(Collections.singletonList(secUserSub.getGigType()));
+				sysUserSignCertService.batchChannelCert(reCertDTO);
+			}
 		}
 	}
 
@@ -366,28 +415,17 @@ public class GigThirdApiServiceImpl implements GigThirdApiService {
 		}
 
 		Map<String, String> subMap = new HashMap<>();
-//		SysUserSub updateUserSub = new SysUserSub();
+		OladingCertStatus currentCertStatus;
 		LambdaUpdateWrapper<SysUserSub> updateUserSubWrapper = Wrappers.lambdaUpdate();
 		if (OladingCommonRequest.UploadTaxpayerAgreementStatus.SUCCESS.equals(agreementStatus)) {
 			subMap.put("certStatus", OladingCertStatus.CERT.name());
-//			updateUserSub.setCertStatus(Integer.valueOf(OladingCertStatus.CERT.getCode()));
 			updateUserSubWrapper.set(SysUserSub::getCertStatus, Integer.valueOf(OladingCertStatus.CERT.getCode()));
+			currentCertStatus = OladingCertStatus.CERT;
 		} else {
 			subMap.put("certStatus", OladingCertStatus.SIGNED.name());
-//			updateUserSub.setCertStatus(Integer.valueOf(OladingCertStatus.SIGNED.getCode()));
 			updateUserSubWrapper.set(SysUserSub::getCertStatus, Integer.valueOf(OladingCertStatus.SIGNED.getCode()));
+			currentCertStatus = OladingCertStatus.SIGNED;
 		}
-//		updateUserSub.setId(userSub.getId());
-//		updateUserSub.setCallbackStatus(GigCallBackStatus.RETURNED);
-//		updateUserSub.setUpdateTime(LocalDateTime.now());
-//		updateUserSub.setUpdateUser(0);
-//		if ("0".equals(req.getCode())) {
-//			updateUserSub.setFailReason(String.valueOf(req.getData().get("failReason")));
-//		} else {
-//			updateUserSub.setFailReason(req.getMessage());
-//		}
-		// 更新状态
-//		sysUserSubService.updateById(updateUserSub);
 		updateUserSubWrapper.eq(SysUserSub::getUserId, userSub.getUserId());
 		updateUserSubWrapper.eq(SysUserSub::getDeptId, userSub.getDeptId());
 		// 同时修改自由职家、金园数科的状态和数据
@@ -406,19 +444,40 @@ public class GigThirdApiServiceImpl implements GigThirdApiService {
 
 		// 结果放到redis
 		String key = CacheConstants.USER_SIGN_CERT_RESPONSE_KEY + userSub.getUserId();
-		Map<String, Object> result = MapUtil.newHashMap(2);
-		result.put(GigTypeEnum.OLADING.name(), new HashMap<>(subMap));
-		result.put(GigTypeEnum.JIN_YUAN.name(), new HashMap<>(subMap));
-		redisTemplate.opsForValue().set(key, JSONUtil.toJsonStr(result), 1, TimeUnit.MINUTES);
+		if (redisTemplate.hasKey(key)) {
+			String qResult = (String) redisTemplate.opsForValue().get(key);
+			JSONObject qResultObj = JSONUtil.parseObj(qResult);
+			qResultObj.append(userSub.getGigType().name(), currentCertStatus.name());
+			redisTemplate.opsForValue().set(key, JSONUtil.toJsonStr(qResultObj), 1, TimeUnit.MINUTES);
+		} else {
+			Map<String, Object> result = MapUtil.newHashMap(2);
+			result.put(currentCertStatus.name(), new HashMap<>(subMap));
+			redisTemplate.opsForValue().set(key, JSONUtil.toJsonStr(result), 1, TimeUnit.MINUTES);
+		}
 
-		// 如果成功,则发送核身视频上传MQ
 		if (OladingCommonRequest.UploadTaxpayerAgreementStatus.SUCCESS.equals(agreementStatus)) {
+			// 如果成功,则发送核身视频上传MQ
 			log.info("=============================发送核身视频上传MQ==================================");
 			UserSignCertDTO userSignCertDTO = new UserSignCertDTO();
 			userSignCertDTO.setUserId(userSub.getUserId());
 			userSignCertDTO.setGigTypeList(Collections.singletonList(userSub.getGigType()));
 			userSignCertDTO.setUploadFaceID(true);
 			sysUserSignCertService.batchChannelCert(userSignCertDTO);
+
+			// 查询是否存在另一渠道需要发起(海南飞亿、金园数科其中之一)
+			SysUserSub secUserSub = sysUserSubService.getOne(Wrappers.<SysUserSub>lambdaQuery()
+					.eq(SysUserSub::getUserId, userSub.getUserId())
+					.eq(SysUserSub::getGigType, GigTypeEnum.OLADING)
+					.eq(SysUserSub::getCertStatus, Integer.parseInt(OladingCertStatus.SIGNING.getCode()))
+					.ne(SysUserSub::getId, userSub.getId()));
+			if (secUserSub != null) {
+				// 如果同一人同时存在海南飞亿、金园数科的渠道,则补发一次(由于阿拉钉同一人不同渠道的回调只有一次,所以这里需要补发)
+				log.info("=============================补发阿拉钉另一渠道MQ3==================================");
+				UserSignCertDTO reCertDTO = new UserSignCertDTO();
+				reCertDTO.setUserId(secUserSub.getUserId());
+				reCertDTO.setGigTypeList(Collections.singletonList(secUserSub.getGigType()));
+				sysUserSignCertService.batchChannelCert(reCertDTO);
+			}
 		}
 	}
 }

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

@@ -51,6 +51,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDateTime;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -232,15 +233,6 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 	@Transactional(rollbackFor = Exception.class)
 	public void signAgreement(UserSignCertDTO userSignCertDTO) {
 
-		if (CollUtil.containsAny(userSignCertDTO.getGigTypeList(), CollUtil.toList(GigTypeEnum.OLADING, GigTypeEnum.JIN_YUAN))) {
-			// 阿拉钉、金园数科同步更新数据(存在任意一个,则将两个都加入进来进行更新)
-			List<GigTypeEnum> distinctList = new ArrayList<>();
-			distinctList.add(GigTypeEnum.OLADING);
-			distinctList.add(GigTypeEnum.JIN_YUAN);
-			distinctList.addAll(userSignCertDTO.getGigTypeList());
-			userSignCertDTO.setGigTypeList(CollUtil.distinct(distinctList));
-		}
-
 		LambdaUpdateWrapper<SysUserSub> updateWrapper = Wrappers.lambdaUpdate();
 		updateWrapper.eq(SysUserSub::getUserId, userSignCertDTO.getUserId());
 		if (CollUtil.isNotEmpty(userSignCertDTO.getGigTypeList())) {
@@ -262,15 +254,6 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 	@Transactional(rollbackFor = Exception.class)
 	public void personalIdentityVerification(UserSignCertDTO userSignCertDTO) {
 
-		if (CollUtil.containsAny(userSignCertDTO.getGigTypeList(), CollUtil.toList(GigTypeEnum.OLADING, GigTypeEnum.JIN_YUAN))) {
-			// 阿拉钉、金园数科同步更新数据(存在任意一个,则将两个都加入进来进行更新)
-			List<GigTypeEnum> distinctList = new ArrayList<>();
-			distinctList.add(GigTypeEnum.OLADING);
-			distinctList.add(GigTypeEnum.JIN_YUAN);
-			distinctList.addAll(userSignCertDTO.getGigTypeList());
-			userSignCertDTO.setGigTypeList(CollUtil.distinct(distinctList));
-		}
-
 		LambdaUpdateWrapper<SysUserSub> updateWrapper = Wrappers.lambdaUpdate();
 		updateWrapper.eq(SysUserSub::getUserId, userSignCertDTO.getUserId());
 		if (CollUtil.isNotEmpty(userSignCertDTO.getGigTypeList())) {
@@ -379,34 +362,40 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 			return false;
 		}
 
+		// 如果同时包含阿拉钉金园数科、海南飞亿,则只选一个发起
+		if (userSignCertDTO.getGigTypeList().containsAll(CollUtil.toList(GigTypeEnum.OLADING, GigTypeEnum.JIN_YUAN))) {
+			userSignCertDTO.setGigTypeList(Collections.singletonList(GigTypeEnum.OLADING));
+		}
+
 		switch (userSub.getGigType()) {
 			case JIN_YUAN:
-				// 阿拉丁-金园数科
+				// 阿拉-金园数科
 				// 如果需要传核身视频,则返回true
 				if (userSignCertDTO.getUploadFaceID() != null && userSignCertDTO.getUploadFaceID()) {
 					return true;
 				}
-				// 如果已认证,则直接返回false
-				if (OladingCertStatus.CERT.getCode().equals(String.valueOf(userSub.getCertStatus()))) {
-					return false;
-				}
 
 				// 如果存在相同手机号、身份证、姓名信息的用户,并且是认证过,则不发起,直接返回签约认证状态
-				if (this.checkExistCerted(sysUser, userSub)) {
-					// 直接返回,不发起
-					return false;
-				}
+//				if (this.checkExistCerted(sysUser, userSub)) {
+//					// 直接返回,不发起
+//					return false;
+//				}
 
 				// 发起认证前,金园数科,转换对应关系为 阿拉钉-金园数科
 				userSub.setGigType(GigTypeEnum.OLADING);
 				userSub.setGigChannel(GigChannelEnum.JIN_YUAN);
 				return true;
 			case OLADING:
-				// 如果存在相同手机号、身份证、姓名信息的用户,并且是认证过,则不发起,直接返回签约认证状态
-				if (this.checkExistCerted(sysUser, userSub)) {
-					// 直接返回,不发起
-					return false;
+				// 阿拉钉-海南飞亿
+				// 如果需要传核身视频,则返回true
+				if (userSignCertDTO.getUploadFaceID() != null && userSignCertDTO.getUploadFaceID()) {
+					return true;
 				}
+				// 如果存在相同手机号、身份证、姓名信息的用户,并且是认证过,则不发起,直接返回签约认证状态
+//				if (this.checkExistCerted(sysUser, userSub)) {
+//					// 直接返回,不发起
+//					return false;
+//				}
 				return true;
 			case REN_LI_JIA:
 				// 人力家直接调用原有发短信接口
@@ -467,13 +456,9 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 					.collect(Collectors.toList());
 			List<SysUserSub> existUserSubList = sysUserSubService.list(Wrappers.<SysUserSub>lambdaQuery()
 					.in(SysUserSub::getUserId, existUserIdList)
-					.in(SysUserSub::getCertStatus, Integer.valueOf(OladingCertStatus.CERT.getCode()))
+					.eq(SysUserSub::getCertStatus, Integer.valueOf(OladingCertStatus.CERT.getCode()))
 					.eq(SysUserSub::getCallbackStatus, GigCallBackStatus.RETURNED)
-					.and(wrapper -> {
-						wrapper.eq(SysUserSub::getGigType, GigTypeEnum.OLADING);
-						wrapper.or(wrapper1 -> wrapper1.eq(SysUserSub::getGigType, GigTypeEnum.YEE)
-								.eq(SysUserSub::getGigChannel, GigChannelEnum.JIN_YUAN));
-					}));
+					.eq(SysUserSub::getGigType, userSub.getGigType()));
 			if (CollUtil.isNotEmpty(existUserSubList)) {
 				SysUserSub existUserSub = existUserSubList.get(0);
 				// 更新状态