Ver código fonte

fix: 同时发起时,返回redis认证结果

lixuesong 3 anos atrás
pai
commit
9938170092

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

@@ -285,8 +285,8 @@ public class GigSignCertReceiver extends BaseRabbiMqHandler<String> {
 
 		// 结果放到redis
 		Map<String, Object> resultMap = new HashMap<>();
-		if (userId != null && CollUtil.isNotEmpty(o2Map)) {
-			// 同时发起的情况,且是第二个的状态已返回,则返回两个渠道状态
+		if (userId != null && CollUtil.isNotEmpty(o2Map) && subjectResult.containsKey("uploadTaxPayerAgreementStatus")) {
+			// 同时发起的情况,且是金园数科的状态已返回,则返回两个渠道状态
 			List<SysUserSub> subList = sysUserSubService.list(Wrappers.<SysUserSub>lambdaQuery()
 					.eq(SysUserSub::getUserId, user.getUserId())
 					.eq(SysUserSub::getDeptId, dept.getDeptId())
@@ -311,7 +311,7 @@ public class GigSignCertReceiver extends BaseRabbiMqHandler<String> {
 
 		// 处理同时发起时另一个渠道需要的补发情况
 		Object userId2 = redisTemplate.opsForValue().get(redisKey);
-		if (userId2 != null && CollUtil.isNotEmpty(o1Map)) {
+		if (userId2 != null && CollUtil.isNotEmpty(o1Map) && OladingCertStatus.CERT.name().equals(o1Map.get("certStatus"))) {
 			// 如果同一人同时存在海南飞亿、金园数科的渠道,则补发一次(由于阿拉钉同一人不同渠道的回调只有一次,所以这里需要补发)
 			log.info("=============================补发阿拉钉另一渠道MQ4==================================");
 			UserSignCertDTO reCertDTO = new UserSignCertDTO();

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

@@ -276,6 +276,19 @@ public class GigThirdApiServiceImpl implements GigThirdApiService {
 		String key = CacheConstants.USER_SIGN_CERT_RESPONSE_KEY + userSub.getUserId();
 		Map<String, Object> result = MapUtil.newHashMap(2);
 		result.put(userSub.getGigType().name(), new HashMap<>(subMap));
+		// 查询redis是否有同时发起的标记
+		String redisKey = CacheConstants.OLADING_SEND_BOTH_CHANNEL + userSub.getUserId();
+		Object userId = redisTemplate.opsForValue().get(redisKey);
+		if (userId != null && GigTypeEnum.JIN_YUAN.equals(userSub.getGigType())) {
+			// 将海南飞亿的状态,补充进来
+			SysUserSub feiyiSub = sysUserSubService.getOne(Wrappers.<SysUserSub>lambdaQuery()
+					.eq(SysUserSub::getUserId, userSub.getUserId())
+					.eq(SysUserSub::getDeptId, userSub.getDeptId())
+					.eq(SysUserSub::getGigType, GigTypeEnum.OLADING));
+			result.put(GigTypeEnum.OLADING.name(),
+					MapUtil.builder("certStatus", OladingCertStatus.resolve(String.valueOf(feiyiSub.getCertStatus())).name()).build());
+		}
+
 		redisTemplate.opsForValue().set(key, JSONUtil.toJsonStr(result), 1, TimeUnit.MINUTES);
 
 		// 如果成功,则发送证照上传MQ
@@ -331,6 +344,19 @@ public class GigThirdApiServiceImpl implements GigThirdApiService {
 		String key = CacheConstants.USER_SIGN_CERT_RESPONSE_KEY + userSub.getUserId();
 		Map<String, Object> result = MapUtil.newHashMap(2);
 		result.put(userSub.getGigType().name(), new HashMap<>(subMap));
+		// 查询redis是否有同时发起的标记
+		String redisKey = CacheConstants.OLADING_SEND_BOTH_CHANNEL + userSub.getUserId();
+		Object userId = redisTemplate.opsForValue().get(redisKey);
+		if (userId != null && GigTypeEnum.JIN_YUAN.equals(userSub.getGigType())) {
+			// 将海南飞亿的状态,补充进来
+			SysUserSub feiyiSub = sysUserSubService.getOne(Wrappers.<SysUserSub>lambdaQuery()
+					.eq(SysUserSub::getUserId, userSub.getUserId())
+					.eq(SysUserSub::getDeptId, userSub.getDeptId())
+					.eq(SysUserSub::getGigType, GigTypeEnum.OLADING));
+			result.put(GigTypeEnum.OLADING.name(),
+					MapUtil.builder("certStatus", OladingCertStatus.resolve(String.valueOf(feiyiSub.getCertStatus())).name()).build());
+		}
+
 		redisTemplate.opsForValue().set(key, JSONUtil.toJsonStr(result), 1, TimeUnit.MINUTES);
 
 		// 如果成功,则发送协议上传MQ