Bläddra i källkod

feat: 自由职家发起认证修改

lixuesong 3 år sedan
förälder
incheckning
497c9cf90e

+ 7 - 5
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/enums/GigTypeEnum.java

@@ -1,7 +1,6 @@
 package com.qunzhixinxi.hnqz.admin.enums;
 
 import com.baomidou.mybatisplus.annotation.EnumValue;
-import com.fasterxml.jackson.annotation.JsonValue;
 import lombok.AllArgsConstructor;
 import lombok.Getter;
 
@@ -16,16 +15,19 @@ import lombok.Getter;
 public enum GigTypeEnum {
 
 	// 零工平台类型
-	REN_LI_JIA(0, "人力家"),
-	TAX_HELPOR(1, "税邦云"),
-	OLADING(2, "自由职家"),
-	YEE(3, "易联数科");
+	REN_LI_JIA(0, "人力家", "人力家"),
+	TAX_HELPOR(1, "税邦云", "税邦云"),
+	OLADING(2, "钉灵工", "海南飞亿"),
+	YEE(3, "易联数科", "易联数科"),
+	JIN_YUAN(4, "钉灵工", "金园数科");
 
 	@EnumValue
 	private int code;
 
 	private String desc;
 
+	private String desc2;
+
 	public static GigTypeEnum resolve(int code) {
 		for (GigTypeEnum gigTypeEnum : GigTypeEnum.values()) {
 			if (code == gigTypeEnum.getCode()) {

+ 14 - 4
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mq/GigSignCertReceiver.java

@@ -124,7 +124,7 @@ public class GigSignCertReceiver extends BaseRabbiMqHandler<String> {
 								oladingHandler(user, dept, subjectResult);
 								break;
 							case YEE:
-								yeeHandler(user, dept, subjectResult);
+//								yeeHandler(user, dept, subjectResult);
 								break;
 							default:
 						}
@@ -267,6 +267,15 @@ public class GigSignCertReceiver extends BaseRabbiMqHandler<String> {
 	 * @param subjectResult
 	 */
 	private void oladingHandler(SysUser user, SysDept dept, JSONObject subjectResult) {
+
+		// 处理阿拉钉-海南飞亿
+		oladingChannelHandler(user, dept, subjectResult, GigTypeEnum.OLADING);
+
+		// 处理阿拉钉-金园数科
+		oladingChannelHandler(user, dept, subjectResult, GigTypeEnum.JIN_YUAN);
+	}
+
+	private void oladingChannelHandler(SysUser user, SysDept dept, JSONObject subjectResult, GigTypeEnum gigType) {
 		String certStatus = subjectResult.getStr("certStatus");
 		String uploadTaxPayerAgreementStatus = subjectResult.getStr("uploadTaxPayerAgreementStatus");
 		LocalDateTime now = LocalDateTime.now();
@@ -275,12 +284,13 @@ public class GigSignCertReceiver extends BaseRabbiMqHandler<String> {
 		SysUserSub userSub = sysUserSubService.getOne(Wrappers.<SysUserSub>lambdaQuery()
 				.eq(SysUserSub::getDeptId, dept.getDeptId())
 				.eq(SysUserSub::getUserId, user.getUserId())
-				.eq(SysUserSub::getGigType, GigTypeEnum.OLADING));
+				.eq(SysUserSub::getGigType, gigType));
+
 		// 拼接更新条件
 		LambdaUpdateWrapper<SysUserSub> updateWrapper = Wrappers.<SysUserSub>lambdaUpdate()
 				.eq(SysUserSub::getUserId, user.getUserId())
 				.eq(SysUserSub::getDeptId, dept.getDeptId())
-				.eq(SysUserSub::getGigType, GigTypeEnum.OLADING)
+				.eq(SysUserSub::getGigType, gigType)
 				.set(SysUserSub::getUpdateTime, now)
 				.set(SysUserSub::getUpdateUser, 0)
 				.set(SysUserSub::getCertRemark, JSONUtil.toJsonStr(subjectResult));
@@ -305,7 +315,7 @@ public class GigSignCertReceiver extends BaseRabbiMqHandler<String> {
 			// 结果放到redis
 			String key = CacheConstants.USER_SIGN_CERT_RESPONSE_KEY + userSub.getUserId();
 			Map<String, Object> result = MapUtil.newHashMap(1);
-			result.put("OLADING", subMap);
+			result.put(gigType.name(), subMap);
 			redisTemplate.opsForValue().set(key, JSONUtil.toJsonStr(result), 1, TimeUnit.MINUTES);
 		}
 		// 已认证,则设置回调状态

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

@@ -135,16 +135,15 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 						userSubVO.setCertStatus(TaxHelperCertStatus.resolve(sysUserSub.getCertStatus()).name());
 						break;
 					case YEE:
-						if (GigChannelEnum.JIN_YUAN.equals(sysUserSub.getGigChannel())) {
-							// 渠道是金园,则展示阿拉钉的状态
-							userSubVO.setCertStatus(OladingCertStatus.resolve(String.valueOf(sysUserSub.getCertStatus())).name());
-						} else {
-							userSubVO.setCertStatus(YeeCertStatus.resolve(String.valueOf(sysUserSub.getCertStatus())).name());
-						}
+						userSubVO.setCertStatus(YeeCertStatus.resolve(String.valueOf(sysUserSub.getCertStatus())).name());
 						break;
 					case OLADING:
 						userSubVO.setCertStatus(OladingCertStatus.resolve(String.valueOf(sysUserSub.getCertStatus())).name());
 						break;
+					case JIN_YUAN:
+						// 渠道是金园,则展示阿拉钉的状态
+						userSubVO.setCertStatus(OladingCertStatus.resolve(String.valueOf(sysUserSub.getCertStatus())).name());
+						break;
 					default:
 				}
 
@@ -193,17 +192,6 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 				} else {
 					gigChannel = GigChannelEnum.DEFAULT;
 				}
-			} else if (GigTypeEnum.YEE.equals(gigType)) {
-				// 读取用户所认证的企业的结算渠道
-				SysDeptSub deptSub = sysDeptSubService.getOne(Wrappers.<SysDeptSub>lambdaQuery()
-						.eq(SysDeptSub::getDeptId, queryUser.getDeptId())
-						.eq(SysDeptSub::getSubjectType, GigTypeEnum.TAX_HELPOR.getCode())
-						.eq(SysDeptSub::getEnableFlag, SubjectTypeEnum.ENABLE_FLAG_TRUE.getCode()));
-				if (deptSub != null && "1".equals(deptSub.getSubjectType())) {
-					gigChannel = GigChannelEnum.JIN_YUAN;
-				} else {
-					gigChannel = GigChannelEnum.DEFAULT;
-				}
 			} else {
 				gigChannel = GigChannelEnum.DEFAULT;
 			}
@@ -315,17 +303,15 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 						&& TaxHelperCertStatus.CERT.getCode() != sysUserSub.getCertStatus()) {
 					return true;
 				} else if (GigTypeEnum.YEE.equals(sysUserSub.getGigType())
-						&& GigChannelEnum.JIN_YUAN.equals(sysUserSub.getGigChannel())) {
-					// 易联并且渠道是金园数科(自由职家)
-					return true;
-				} else if (GigTypeEnum.YEE.equals(sysUserSub.getGigType())
-						&& GigChannelEnum.DEFAULT.equals(sysUserSub.getGigChannel())
 						&& !YeeCertStatus.SIGNED.getCode().equals(String.valueOf(sysUserSub.getCertStatus()))) {
 					// 易联并且渠道是默认
 					return true;
 				} else if (GigTypeEnum.OLADING.equals(sysUserSub.getGigType())
 						&& !OladingCertStatus.CERT.getCode().equals(String.valueOf(sysUserSub.getCertStatus()))) {
 					return true;
+				} else if (GigTypeEnum.JIN_YUAN.equals(sysUserSub.getGigType())) {
+					// 易联并且渠道是金园数科(自由职家)
+					return true;
 				} else if (GigTypeEnum.REN_LI_JIA.equals(sysUserSub.getGigType())
 						&& RenlijiaCertStatus.CER_STATUS_1.getCode() != sysUserSub.getCertStatus()) {
 					return true;
@@ -368,19 +354,14 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 	 * @param userSignCertDTO
 	 */
 	private boolean preSignCert(SysUser sysUser, SysUserSub userSub, UserSignCertDTO userSignCertDTO) {
-		boolean flag = true;
 		// 校验是否有进行中的
 		if (GigCallBackStatus.IN_PROGRESS.equals(userSub.getCallbackStatus())) {
 			return false;
 		}
 
 		switch (userSub.getGigType()) {
-			case YEE:
-				// 如果不是金园数科,则返回true
-				// 否则继续执行case为OLADING下的代码(判断是否该用户对应姓名身份证已认证,是则直接同步)
-				if (!GigChannelEnum.JIN_YUAN.equals(userSub.getGigChannel())) {
-					return true;
-				}
+			case JIN_YUAN:
+				// 阿拉丁-金园数科
 				// 如果需要传核身视频,则返回true
 				if (userSignCertDTO.getUploadFaceID() != null && userSignCertDTO.getUploadFaceID()) {
 					return true;
@@ -389,48 +370,24 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 				if (OladingCertStatus.CERT.getCode().equals(String.valueOf(userSub.getCertStatus()))) {
 					return false;
 				}
+
+				// 如果存在相同手机号、身份证、姓名信息的用户,并且是认证过,则不发起,直接返回签约认证状态
+				if (checkExistCerted(sysUser, userSub)) {
+					// 直接返回,不发起
+					return false;
+				}
+
+				// 发起认证前,金园数科,转换对应关系为 阿拉钉-金园数科
+				userSub.setGigType(GigTypeEnum.OLADING);
+				userSub.setGigChannel(GigChannelEnum.JIN_YUAN);
+				return true;
 			case OLADING:
 				// 如果存在相同手机号、身份证、姓名信息的用户,并且是认证过,则不发起,直接返回签约认证状态
-				List<SysUser> existUserList = sysUserService.list(Wrappers.<SysUser>lambdaQuery()
-						.eq(SysUser::getUsername, sysUser.getUsername())
-						.eq(SysUser::getRealname, sysUser.getRealname())
-						.eq(SysUser::getIdCardNumber, sysUser.getIdCardNumber())
-						.eq(SysUser::getLockFlag, LockEnum.UN_LOCK.val())
-						.ne(SysUser::getUserId, sysUser.getUserId()));
-				if (CollUtil.isNotEmpty(existUserList)) {
-					List<Integer> existUserIdList = existUserList.stream()
-							.map(SysUser::getUserId)
-							.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::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));
-							}));
-					if (CollUtil.isNotEmpty(existUserSubList)) {
-						flag = false;
-						SysUserSub existUserSub = existUserSubList.get(0);
-						// 更新状态
-						SysUserSub updateUserSub = new SysUserSub();
-						updateUserSub.setId(userSub.getId());
-						updateUserSub.setCertStatus(existUserSub.getCertStatus());
-						updateUserSub.setCallbackStatus(GigCallBackStatus.RETURNED);
-						updateUserSub.setUpdateTime(LocalDateTime.now());
-						updateUserSub.setUpdateUser(0);
-						sysUserSubService.updateById(updateUserSub);
-						// 结果放到redis
-						String key = CacheConstants.USER_SIGN_CERT_RESPONSE_KEY + userSub.getUserId();
-						Map<String, String> subMap = new HashMap<>();
-						subMap.put("certStatus", OladingCertStatus.resolve(String.valueOf(existUserSub.getCertStatus())).name());
-						Map<String, Object> result = MapUtil.newHashMap(1);
-						result.put(userSub.getGigType().name(), subMap);
-						redisTemplate.opsForValue().set(key, JSONUtil.toJsonStr(result), 1, TimeUnit.MINUTES);
-					}
+				if (checkExistCerted(sysUser, userSub)) {
+					// 直接返回,不发起
+					return false;
 				}
-				break;
+				return true;
 			case REN_LI_JIA:
 				// 人力家直接调用原有发短信接口
 				SysDept dept = new SysDept();
@@ -462,11 +419,63 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 				result.put("REN_LI_JIA", subMap);
 				redisTemplate.opsForValue().set(key, JSONUtil.toJsonStr(result), 1, TimeUnit.MINUTES);
 				// 默认返回false,不触发发送mq
-				flag = false;
+				return false;
 			default:
 		}
 
-		return flag;
+		// 默认发起认证
+		return true;
+	}
+
+	/**
+	 * 是否存在已认证的,存在则同步更新状态
+	 *
+	 * @param sysUser
+	 * @param userSub
+	 * @return
+	 */
+	private boolean checkExistCerted(SysUser sysUser, SysUserSub userSub) {
+		List<SysUser> existUserList = sysUserService.list(Wrappers.<SysUser>lambdaQuery()
+				.eq(SysUser::getUsername, sysUser.getUsername())
+				.eq(SysUser::getRealname, sysUser.getRealname())
+				.eq(SysUser::getIdCardNumber, sysUser.getIdCardNumber())
+				.eq(SysUser::getLockFlag, LockEnum.UN_LOCK.val())
+				.ne(SysUser::getUserId, sysUser.getUserId()));
+		if (CollUtil.isNotEmpty(existUserList)) {
+			List<Integer> existUserIdList = existUserList.stream()
+					.map(SysUser::getUserId)
+					.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::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));
+					}));
+			if (CollUtil.isNotEmpty(existUserSubList)) {
+				SysUserSub existUserSub = existUserSubList.get(0);
+				// 更新状态
+				SysUserSub updateUserSub = new SysUserSub();
+				updateUserSub.setId(userSub.getId());
+				updateUserSub.setCertStatus(existUserSub.getCertStatus());
+				updateUserSub.setCallbackStatus(GigCallBackStatus.RETURNED);
+				updateUserSub.setUpdateTime(LocalDateTime.now());
+				updateUserSub.setUpdateUser(0);
+				sysUserSubService.updateById(updateUserSub);
+				// 结果放到redis
+				String key = CacheConstants.USER_SIGN_CERT_RESPONSE_KEY + userSub.getUserId();
+				Map<String, String> subMap = new HashMap<>();
+				subMap.put("certStatus", OladingCertStatus.resolve(String.valueOf(existUserSub.getCertStatus())).name());
+				Map<String, Object> result = MapUtil.newHashMap(1);
+				result.put(userSub.getGigType().name(), subMap);
+				redisTemplate.opsForValue().set(key, JSONUtil.toJsonStr(result), 1, TimeUnit.MINUTES);
+
+				return true;
+			}
+		}
+		return false;
 	}
 
 	/**