Prechádzať zdrojové kódy

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

lixuesong 3 rokov pred
rodič
commit
b4b25180b7

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

@@ -115,4 +115,9 @@ public interface CacheConstants {
 	 */
 	String OLADING_NOTIFY_KEY = "OLADING:NOTIFY:KEY:";
 
+	/**
+	 * 自由职家同时发起两个渠道记录key
+	 */
+	String OLADING_SEND_BOTH_CHANNEL = "OLADING:SEND:BOTH:CHANNEL:";
+
 }

+ 19 - 16
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mq/GigSignCertReceiver.java

@@ -303,22 +303,25 @@ public class GigSignCertReceiver extends BaseRabbiMqHandler<String> {
 				redisTemplate.opsForValue().set(key, JSONUtil.toJsonStr(resultMap), 1, TimeUnit.MINUTES);
 			}
 
-			// 处理同时发起时另一个渠道需要的补发情况
-			if (resultMap.size() == 1) {
-				// 查询是否存在另一渠道需要发起(海南飞亿、金园数科其中之一)
-				SysUserSub secUserSub = sysUserSubService.getOne(Wrappers.<SysUserSub>lambdaQuery()
-						.eq(SysUserSub::getUserId, user.getUserId())
-						// o2Map为空,则说明是未发起认证的那个
-						.eq(SysUserSub::getGigType, o2Map == null ? GigTypeEnum.JIN_YUAN : GigTypeEnum.OLADING)
-						.eq(SysUserSub::getCertStatus, Integer.parseInt(OladingCertStatus.SIGNING.getCode())));
-				if (secUserSub != null) {
-					// 如果同一人同时存在海南飞亿、金园数科的渠道,则补发一次(由于阿拉钉同一人不同渠道的回调只有一次,所以这里需要补发)
-					log.info("=============================补发阿拉钉另一渠道MQ4==================================");
-					UserSignCertDTO reCertDTO = new UserSignCertDTO();
-					reCertDTO.setUserId(secUserSub.getUserId());
-					reCertDTO.setGigTypeList(Collections.singletonList(secUserSub.getGigType()));
-					sysUserSignCertService.batchChannelCert(reCertDTO);
-				}
+		}
+
+		// 处理同时发起时另一个渠道需要的补发情况 TODO
+		// 查询requestId
+		SysUserSub userSub = sysUserSubService.getOne(Wrappers.<SysUserSub>lambdaQuery()
+				.eq(SysUserSub::getUserId, user.getUserId())
+				.eq(SysUserSub::getGigType, GigTypeEnum.OLADING)
+				.eq(SysUserSub::getCertStatus, Integer.parseInt(OladingCertStatus.CERT.getCode())));
+		if (userSub != null) {
+			// 查询redis是否有同时发起的标记
+			String redisKey = CacheConstants.OLADING_SEND_BOTH_CHANNEL + userSub.getRequestId();
+			Object userId = redisTemplate.opsForValue().get(redisKey);
+			if (userId != null) {
+				// 如果同一人同时存在海南飞亿、金园数科的渠道,则补发一次(由于阿拉钉同一人不同渠道的回调只有一次,所以这里需要补发)
+				log.info("=============================补发阿拉钉另一渠道MQ4==================================");
+				UserSignCertDTO reCertDTO = new UserSignCertDTO();
+				reCertDTO.setUserId(userSub.getUserId());
+				reCertDTO.setGigTypeList(Collections.singletonList(GigTypeEnum.JIN_YUAN));
+				sysUserSignCertService.batchChannelCert(reCertDTO);
 			}
 		}
 	}

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

@@ -297,20 +297,20 @@ public class GigThirdApiServiceImpl implements GigThirdApiService {
 			userSignCertDTO.setGigTypeList(Collections.singletonList(userSub.getGigType()));
 			sysUserSignCertService.batchChannelCert(userSignCertDTO);
 
-			// 查询是否存在另一渠道需要发起(海南飞亿、金园数科其中之一)
-			SysUserSub secUserSub = sysUserSubService.getOne(Wrappers.<SysUserSub>lambdaQuery()
-					.eq(SysUserSub::getUserId, userSub.getUserId())
-					.in(SysUserSub::getGigType, GigTypeEnum.OLADING, GigTypeEnum.JIN_YUAN)
-					.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);
-			}
+//			// 查询是否存在另一渠道需要发起(海南飞亿、金园数科其中之一)
+//			SysUserSub secUserSub = sysUserSubService.getOne(Wrappers.<SysUserSub>lambdaQuery()
+//					.eq(SysUserSub::getUserId, userSub.getUserId())
+//					.in(SysUserSub::getGigType, GigTypeEnum.OLADING, GigTypeEnum.JIN_YUAN)
+//					.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);
+//			}
 		}
 	}
 
@@ -381,20 +381,20 @@ public class GigThirdApiServiceImpl implements GigThirdApiService {
 			userSignCertDTO.setGigTypeList(Collections.singletonList(userSub.getGigType()));
 			sysUserSignCertService.batchChannelCert(userSignCertDTO);
 
-			// 查询是否存在另一渠道需要发起(海南飞亿、金园数科其中之一)
-			SysUserSub secUserSub = sysUserSubService.getOne(Wrappers.<SysUserSub>lambdaQuery()
-					.eq(SysUserSub::getUserId, userSub.getUserId())
-					.in(SysUserSub::getGigType, GigTypeEnum.OLADING, GigTypeEnum.JIN_YUAN)
-					.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);
-			}
+//			// 查询是否存在另一渠道需要发起(海南飞亿、金园数科其中之一)
+//			SysUserSub secUserSub = sysUserSubService.getOne(Wrappers.<SysUserSub>lambdaQuery()
+//					.eq(SysUserSub::getUserId, userSub.getUserId())
+//					.in(SysUserSub::getGigType, GigTypeEnum.OLADING, GigTypeEnum.JIN_YUAN)
+//					.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);
+//			}
 		}
 	}
 
@@ -464,20 +464,20 @@ public class GigThirdApiServiceImpl implements GigThirdApiService {
 			userSignCertDTO.setUploadFaceID(true);
 			sysUserSignCertService.batchChannelCert(userSignCertDTO);
 
-			// 查询是否存在另一渠道需要发起(海南飞亿、金园数科其中之一)
-			SysUserSub secUserSub = sysUserSubService.getOne(Wrappers.<SysUserSub>lambdaQuery()
-					.eq(SysUserSub::getUserId, userSub.getUserId())
-					.in(SysUserSub::getGigType, GigTypeEnum.OLADING, GigTypeEnum.JIN_YUAN)
-					.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);
-			}
+//			// 查询是否存在另一渠道需要发起(海南飞亿、金园数科其中之一)
+//			SysUserSub secUserSub = sysUserSubService.getOne(Wrappers.<SysUserSub>lambdaQuery()
+//					.eq(SysUserSub::getUserId, userSub.getUserId())
+//					.in(SysUserSub::getGigType, GigTypeEnum.OLADING, GigTypeEnum.JIN_YUAN)
+//					.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);
+//			}
 		}
 	}
 }

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

@@ -321,13 +321,15 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 				}
 				return false;
 			}).forEach(userSub -> {
+				// 请求流水号
+				String requestId = RandomStringUtils.randomAlphabetic(16);
+
 				// 发起前置判断
-				if (!this.preSignCert(sysUser, userSub, userSignCertDTO)) {
+				if (!this.preSignCert(sysUser, userSub, userSignCertDTO, requestId)) {
 					// false直接返回,不发送mq
 					return;
 				}
-				// 请求流水号
-				String requestId = RandomStringUtils.randomAlphabetic(16);
+
 				// 是否需要传核身视频,阿拉丁、易联默认都要传
 				boolean uploadFaceID = userSignCertDTO.getUploadFaceID() != null && userSignCertDTO.getUploadFaceID();
 				// 封装请求参数
@@ -355,8 +357,9 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 	 * @param sysUser
 	 * @param userSub
 	 * @param userSignCertDTO
+	 * @param requestId
 	 */
-	private boolean preSignCert(SysUser sysUser, SysUserSub userSub, UserSignCertDTO userSignCertDTO) {
+	private boolean preSignCert(SysUser sysUser, SysUserSub userSub, UserSignCertDTO userSignCertDTO, String requestId) {
 		// 校验是否有进行中的
 		if (GigCallBackStatus.IN_PROGRESS.equals(userSub.getCallbackStatus())) {
 			return false;
@@ -365,6 +368,10 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 		switch (userSub.getGigType()) {
 			case JIN_YUAN:
 				// 阿拉钉-金园数科
+				// 发起认证前,金园数科,转换对应关系为 阿拉钉-金园数科
+				userSub.setGigType(GigTypeEnum.OLADING);
+				userSub.setGigChannel(GigChannelEnum.JIN_YUAN);
+
 				// 如果需要传核身视频,则返回true
 				if (userSignCertDTO.getUploadFaceID() != null && userSignCertDTO.getUploadFaceID()) {
 					return true;
@@ -378,17 +385,13 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 
 				// 如果同时包含阿拉钉金园数科、海南飞亿,则只选海南飞亿发起
 				if (userSignCertDTO.getGigTypeList().containsAll(CollUtil.toList(GigTypeEnum.OLADING, GigTypeEnum.JIN_YUAN))) {
-					// 更新金园数科为签约中
-					SysUserSub jyUserSub = new SysUserSub();
-					jyUserSub.setId(userSub.getId());
-					jyUserSub.setCertStatus(Integer.valueOf(OladingCertStatus.SIGNING.getCode()));
-					sysUserSubService.updateById(jyUserSub);
+					// 记录同时选择了阿拉钉金园数科、海南飞亿渠道,用来标记其在海南飞亿认证完后需要被发起
+					// 即,同时选择了阿拉钉金园数科、海南飞亿渠道,则先发起海南飞亿认证,完成之后再发起金园数科认证
+					String redisKey = CacheConstants.OLADING_SEND_BOTH_CHANNEL + requestId;
+					redisTemplate.opsForValue().set(redisKey, sysUser.getUserId());
 					return false;
 				}
 
-				// 发起认证前,金园数科,转换对应关系为 阿拉钉-金园数科
-				userSub.setGigType(GigTypeEnum.OLADING);
-				userSub.setGigChannel(GigChannelEnum.JIN_YUAN);
 				return true;
 			case OLADING:
 				// 阿拉钉-海南飞亿