Browse Source

feat: 联调完小程序E证通和认证

lixuesong 3 years ago
parent
commit
59aa31f4df

+ 5 - 6
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/ApiController.java

@@ -761,12 +761,11 @@ public class ApiController {
 				// 查询配置了任务类型模板的任务类型
 				mapOne.put("hasTaskTypeTemplate", wmDeptTaskTypeTemplateService.listTaskTypeByDeptId(sysU.getDeptId()));
 
-				// 结算通道 TODO
-
-//				Map<String, Integer> collect = sysDeptSubService.list(Wrappers.<SysDeptSub>lambdaQuery().eq(SysDeptSub::getDeptId, sysU.getDeptId()))
-//						.stream()
-//						.collect(Collectors.toMap(SysDeptSub::getSubjectType, SysDeptSub::getSubjectChannel));
-//				mapOne.put("subjectTypeAndChannel", collect);
+				// 税源地和channel对应关系
+				Map<String, Integer> collect = sysDeptSubService.list(Wrappers.<SysDeptSub>lambdaQuery().eq(SysDeptSub::getDeptId, sysU.getDeptId()))
+						.stream()
+						.collect(Collectors.toMap(sysDeptSub -> sysDeptSub.getSubjectLocation().name(), SysDeptSub::getSubjectChannel));
+				mapOne.put("subjectTypeAndChannel", collect);
 
 
 				// 认证服务信息回显

+ 48 - 48
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/SysUserController.java

@@ -1506,54 +1506,54 @@ public class SysUserController {
 					});
 					userVO.setCertList(certList);
 
-					// 不同渠道认证名称,封装成中文名称数组格式 TODO
-//					Map<SubjectLocation, String> certStatusMap = userSubList.stream()
-//							.collect(Collectors.toMap(SysUserSub::getSubjectLocation,
-//									sysUserSub -> {
-//										String certStatuName = "";
-//										switch (sysUserSub.getGigType()) {
-//											case TAX_HELPOR:
-//												certStatuName = TaxHelperCertStatus.resolve(sysUserSub.getCertStatus()).getDesc();
-//												break;
-//											case YEE:
-//												certStatuName = YeeCertStatus.resolve(String.valueOf(sysUserSub.getCertStatus())).getMessage();
-//												break;
-//											case REN_LI_JIA:
-//												certStatuName = RenlijiaCertStatus.resolve(sysUserSub.getCertStatus()).getMessage();
-//												break;
-//											case OLADING:
-//												certStatuName = OladingCertStatus.resolve(String.valueOf(sysUserSub.getCertStatus())).getMessage();
-//												break;
-//											default:
-//												certStatuName = "";
-//										}
-//										return certStatuName;
-//									}));
-//					// 该企业配置的所有税源地
-//					List<SubjectLocation> subjectLocationList = subList.stream().map(SysDeptSub::getSubjectLocation).collect(Collectors.toList());
-//
-//					List<String> certStatusNameList = new ArrayList<>();
-//					if (subjectLocationList.contains(SubjectLocation.REN_LI_JIA)) {
-//						certStatusNameList.add(StrUtil.isBlank(certStatusMap.get(SubjectLocation.REN_LI_JIA)) ?
-//								RenlijiaCertStatus.CER_STATUS_4.getMessage() : certStatusMap.get(SubjectLocation.REN_LI_JIA));
-//					}
-//					if (subjectLocationList.contains(SubjectLocation.LUO_SHU_YUN)) {
-//						certStatusNameList.add(StrUtil.isBlank(certStatusMap.get(SubjectLocation.LUO_SHU_YUN)) ?
-//								TaxHelperCertStatus.UN_CERT.getDesc() : certStatusMap.get(SubjectLocation.LUO_SHU_YUN));
-//					}
-//					if (subjectLocationList.contains(SubjectLocation.FEI_YI)) {
-//						certStatusNameList.add(StrUtil.isBlank(certStatusMap.get(SubjectLocation.FEI_YI)) ?
-//								OladingCertStatus.UN_SIGNED.getMessage() : certStatusMap.get(SubjectLocation.FEI_YI));
-//					}
-//					if (subjectLocationList.contains(SubjectLocation.JIN_YUAN)) {
-//						certStatusNameList.add(StrUtil.isBlank(certStatusMap.get(SubjectLocation.JIN_YUAN)) ?
-//								OladingCertStatus.UN_SIGNED.getMessage() : certStatusMap.get(SubjectLocation.JIN_YUAN));
-//					}
-//					if (subjectLocationList.contains(SubjectLocation.XIN_TAI_ZI)) {
-//						certStatusNameList.add(StrUtil.isBlank(certStatusMap.get(SubjectLocation.XIN_TAI_ZI)) ?
-//								OladingCertStatus.UN_SIGNED.getMessage() : certStatusMap.get(SubjectLocation.XIN_TAI_ZI));
-//					}
-//					userVO.setCertStatusArr(certStatusNameList.toArray(new String[0]));
+					// 不同渠道认证名称,封装成中文名称数组格式
+					Map<SubjectLocation, String> certStatusMap = userSubList.stream()
+							.collect(Collectors.toMap(SysUserSub::getSubjectLocation,
+									sysUserSub -> {
+										String certStatuName = "";
+										switch (sysUserSub.getGigType()) {
+											case TAX_HELPOR:
+												certStatuName = TaxHelperCertStatus.resolve(sysUserSub.getCertStatus()).getDesc();
+												break;
+											case YEE:
+												certStatuName = YeeCertStatus.resolve(String.valueOf(sysUserSub.getCertStatus())).getMessage();
+												break;
+											case REN_LI_JIA:
+												certStatuName = RenlijiaCertStatus.resolve(sysUserSub.getCertStatus()).getMessage();
+												break;
+											case OLADING:
+												certStatuName = OladingCertStatus.resolve(String.valueOf(sysUserSub.getCertStatus())).getMessage();
+												break;
+											default:
+												certStatuName = "";
+										}
+										return certStatuName;
+									}));
+					// 该企业配置的所有税源地
+					List<SubjectLocation> subjectLocationList = subList.stream().map(SysDeptSub::getSubjectLocation).collect(Collectors.toList());
+
+					List<String> certStatusNameList = new ArrayList<>();
+					if (subjectLocationList.contains(SubjectLocation.REN_LI_JIA)) {
+						certStatusNameList.add(StrUtil.isBlank(certStatusMap.get(SubjectLocation.REN_LI_JIA)) ?
+								RenlijiaCertStatus.CER_STATUS_4.getMessage() : certStatusMap.get(SubjectLocation.REN_LI_JIA));
+					}
+					if (subjectLocationList.contains(SubjectLocation.LUO_SHU_YUN)) {
+						certStatusNameList.add(StrUtil.isBlank(certStatusMap.get(SubjectLocation.LUO_SHU_YUN)) ?
+								TaxHelperCertStatus.UN_CERT.getDesc() : certStatusMap.get(SubjectLocation.LUO_SHU_YUN));
+					}
+					if (subjectLocationList.contains(SubjectLocation.FEI_YI)) {
+						certStatusNameList.add(StrUtil.isBlank(certStatusMap.get(SubjectLocation.FEI_YI)) ?
+								OladingCertStatus.UN_SIGNED.getMessage() : certStatusMap.get(SubjectLocation.FEI_YI));
+					}
+					if (subjectLocationList.contains(SubjectLocation.JIN_YUAN)) {
+						certStatusNameList.add(StrUtil.isBlank(certStatusMap.get(SubjectLocation.JIN_YUAN)) ?
+								OladingCertStatus.UN_SIGNED.getMessage() : certStatusMap.get(SubjectLocation.JIN_YUAN));
+					}
+					if (subjectLocationList.contains(SubjectLocation.XIN_TAI_ZI)) {
+						certStatusNameList.add(StrUtil.isBlank(certStatusMap.get(SubjectLocation.XIN_TAI_ZI)) ?
+								OladingCertStatus.UN_SIGNED.getMessage() : certStatusMap.get(SubjectLocation.XIN_TAI_ZI));
+					}
+					userVO.setCertStatusArr(certStatusNameList.toArray(new String[0]));
 				}
 			}
 

+ 3 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/SysUserSignCertController.java

@@ -126,6 +126,9 @@ public class SysUserSignCertController {
 	@SysLog("签约/增员")
 	@PostMapping("/sign")
 	public R<?> toSign(@RequestBody UserSignCertDTO userSignCertDTO) {
+		if (userSignCertDTO.getUserId() == null) {
+			return R.failed("userId不能为空");
+		}
 		return sysUserSignCertService.toSign(userSignCertDTO);
 	}
 

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

@@ -119,10 +119,10 @@ public class GigSignCertReceiver extends BaseRabbiMqHandler<String> {
 						switch (gigTypeEnum) {
 							case TAX_HELPOR:
 								this.taxHelperHandler(user, dept, subjectResult);
-								// 本次结果存入redis
-								log.info("缓存认证结果到redis:{}", JSONUtil.toJsonStr(subjectTypes));
-								redisTemplate.opsForValue().set(CacheConstants.USER_SIGN_CERT_RESPONSE_KEY + user.getUserId(),
-										JSONUtil.toJsonStr(subjectTypes), 1, TimeUnit.MINUTES);
+//								// 本次结果存入redis
+//								log.info("缓存认证结果到redis:{}", JSONUtil.toJsonStr(subjectTypes));
+//								redisTemplate.opsForValue().set(CacheConstants.USER_SIGN_CERT_RESPONSE_KEY + user.getUserId(),
+//										JSONUtil.toJsonStr(subjectTypes), 1, TimeUnit.MINUTES);
 								break;
 							case REN_LI_JIA:
 								// TODO
@@ -165,12 +165,13 @@ public class GigSignCertReceiver extends BaseRabbiMqHandler<String> {
 		LambdaUpdateWrapper<SysUserSub> updateWrapper = Wrappers.<SysUserSub>lambdaUpdate()
 				.eq(SysUserSub::getUserId, user.getUserId())
 				.eq(SysUserSub::getDeptId, dept.getDeptId())
+				.eq(SysUserSub::getSubjectLocation, SubjectLocation.LUO_SHU_YUN)
+				.eq(SysUserSub::getGigType, GigTypeEnum.TAX_HELPOR)
 				.set(SysUserSub::getCallbackStatus, GigCallBackStatus.RETURNED)
 				.set(SysUserSub::getUpdateTime, now)
 				.set(SysUserSub::getUpdateUser, 0)
-				.set(SysUserSub::getCertRemark, JSONUtil.toJsonStr(subjectResult));
-		updateWrapper.eq(SysUserSub::getGigType, GigTypeEnum.TAX_HELPOR);
-		updateWrapper.set(SysUserSub::getCertStatus, taxHelperCertStatus.getCode());
+				.set(SysUserSub::getCertRemark, JSONUtil.toJsonStr(subjectResult))
+				.set(SysUserSub::getCertStatus, taxHelperCertStatus.getCode());
 
 		// 如果认证失败了, 置空身份证和合身视频
 		if (TaxHelperCertStatus.UNCHECKED_BIND.equals(taxHelperCertStatus)){
@@ -181,27 +182,36 @@ public class GigSignCertReceiver extends BaseRabbiMqHandler<String> {
 		}
 
 
-		if (TAXHELPER_SUCCESS_CODE.equals(code)) {
-			// 成功并且是换绑卡的情况,则更新银行卡号
-			String cacheKeyPrefix = String.format("%s_%s_%s", CacheConstants.BIND_CARD_CONFIRM_NEW_BANK_CARD,
-					user.getUserId(), GigTypeEnum.TAX_HELPOR.name());
-			UserSignCertDTO userSignCertDTO = (UserSignCertDTO) redisTemplate.opsForValue().get(cacheKeyPrefix);
-			if (userSignCertDTO != null) {
-				if (StrUtil.isNotBlank(userSignCertDTO.getBankCardNumber())) {
-					updateWrapper.set(SysUserSub::getBankCardNumber, userSignCertDTO.getBankCardNumber());
-					updateWrapper.set(SysUserSub::getBankPhone, userSignCertDTO.getBankPhone());
-					// 更新user表银行卡
-					SysUser sysUser = new SysUser();
-					sysUser.setUserId(user.getUserId());
-					sysUser.setBankCardNumber(userSignCertDTO.getBankCardNumber());
-					sysUser.setBankPhone(userSignCertDTO.getBankPhone());
-					sysUserService.updateById(sysUser);
-				}
-				// redis删除银行卡号
-				redisTemplate.delete(cacheKeyPrefix);
-			}
-		}
+//		if (TAXHELPER_SUCCESS_CODE.equals(code)) {
+//			// 成功并且是换绑卡的情况,则更新银行卡号
+//			String cacheKeyPrefix = String.format("%s_%s_%s", CacheConstants.BIND_CARD_CONFIRM_NEW_BANK_CARD,
+//					user.getUserId(), GigTypeEnum.TAX_HELPOR.name());
+//			UserSignCertDTO userSignCertDTO = (UserSignCertDTO) redisTemplate.opsForValue().get(cacheKeyPrefix);
+//			if (userSignCertDTO != null) {
+//				if (StrUtil.isNotBlank(userSignCertDTO.getBankCardNumber())) {
+//					updateWrapper.set(SysUserSub::getBankCardNumber, userSignCertDTO.getBankCardNumber());
+//					updateWrapper.set(SysUserSub::getBankPhone, userSignCertDTO.getBankPhone());
+//					// 更新user表银行卡
+//					SysUser sysUser = new SysUser();
+//					sysUser.setUserId(user.getUserId());
+//					sysUser.setBankCardNumber(userSignCertDTO.getBankCardNumber());
+//					sysUser.setBankPhone(userSignCertDTO.getBankPhone());
+//					sysUserService.updateById(sysUser);
+//				}
+//				// redis删除银行卡号
+//				redisTemplate.delete(cacheKeyPrefix);
+//			}
+//		}
 		sysUserSubService.update(updateWrapper);
+
+		// 结果放到redis
+		Map<String, Map<String, String>> resultMap = new HashMap<>(1);
+		Map<String, String> subMap = new HashMap<>(1);
+		subMap.put("certStatus", certStatus);
+		resultMap.put("LUO_SHU_YUN", subMap);
+		String key = CacheConstants.USER_SIGN_CERT_RESPONSE_KEY + user.getUserId();
+		log.info("缓存认证结果到redis:{}", JSONUtil.toJsonStr(resultMap));
+		redisTemplate.opsForValue().set(key, JSONUtil.toJsonStr(resultMap), 1, TimeUnit.MINUTES);
 	}
 
 	/**
@@ -220,12 +230,14 @@ 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::getSubjectLocation, SubjectLocation.YI_LIAN)
 				.eq(SysUserSub::getGigType, GigTypeEnum.YEE));
 		// 拼接更新条件
 		LambdaUpdateWrapper<SysUserSub> updateWrapper = Wrappers.<SysUserSub>lambdaUpdate()
 				.eq(SysUserSub::getUserId, user.getUserId())
 				.eq(SysUserSub::getDeptId, dept.getDeptId())
 				.eq(SysUserSub::getGigType, GigTypeEnum.YEE)
+				.eq(SysUserSub::getSubjectLocation, SubjectLocation.YI_LIAN)
 				.set(SysUserSub::getUpdateTime, now)
 				.set(SysUserSub::getUpdateUser, 0)
 				.set(SysUserSub::getCertRemark, JSONUtil.toJsonStr(subjectResult));
@@ -250,7 +262,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("YEE", subMap);
+			result.put("YI_LIAN", subMap);
 			redisTemplate.opsForValue().set(key, JSONUtil.toJsonStr(result), 1, TimeUnit.MINUTES);
 		}
 		// 已认证,则设置回调状态
@@ -288,15 +300,15 @@ public class GigSignCertReceiver extends BaseRabbiMqHandler<String> {
 		Map<String, Map<String, String>> resultMap = new HashMap<>(3);
 		if (gigTypeArray.size() > 1) {
 			// 同时发起的情况,且是前一个渠道(按照redis存的渠道顺序发送)的状态已返回,则刷新状态到redis
-			List<GigTypeEnum> gigTypeEnumList = gigTypeArray.stream()
-					.map(o -> Enum.valueOf(GigTypeEnum.class, String.valueOf(o)))
+			List<SubjectLocation> subjectLocationList = gigTypeArray.stream()
+					.map(o -> Enum.valueOf(SubjectLocation.class, String.valueOf(o)))
 					.collect(Collectors.toList());
 			List<SysUserSub> subList = sysUserSubService.list(Wrappers.<SysUserSub>lambdaQuery()
 					.eq(SysUserSub::getUserId, user.getUserId())
 					.eq(SysUserSub::getDeptId, dept.getDeptId())
-					.in(SysUserSub::getGigType, gigTypeEnumList));
+					.in(SysUserSub::getSubjectLocation, subjectLocationList));
 			Map<String, Map<String, String>> dbResultMap = subList.stream()
-					.collect(Collectors.toMap(sysUserSub -> sysUserSub.getGigType().name(),
+					.collect(Collectors.toMap(sysUserSub -> sysUserSub.getSubjectLocation().name(),
 							sysUserSub -> MapUtil.builder("certStatus",
 									OladingCertStatus.resolve(String.valueOf(sysUserSub.getCertStatus())).name()).build()));
 			resultMap.putAll(dbResultMap);
@@ -309,30 +321,30 @@ public class GigSignCertReceiver extends BaseRabbiMqHandler<String> {
 		redisTemplate.opsForValue().set(key, JSONUtil.toJsonStr(resultMap), 1, TimeUnit.MINUTES);
 
 		// 处理同时发起时阿拉丁多个渠道的情况(补发)
-		if (gigTypeArray.size() > 1) {
-			String firstChannel = String.valueOf(gigTypeArray.get(0));
-			// 查询阿拉丁第一个渠道的认证状态
-			Map<String, String> certStatusMap = resultMap.get(firstChannel);
-			// 查询阿拉钉第一个未签约的渠道
-			String toSendChannel = "";
-			for (Map.Entry<String, Map<String, String>> entry : resultMap.entrySet()) {
-				if (OladingCertStatus.UN_SIGNED.name().equals(entry.getValue().get("certStatus"))) {
-					toSendChannel = entry.getKey();
-					break;
-				}
-			}
-			// 校验需要补发的渠道,是否为第一个
-			if (StrUtil.isNotBlank(toSendChannel) && !StrUtil.equals(firstChannel, toSendChannel)) {
-				// 如果阿拉丁第一个渠道是已认证的,则补发下一个阿拉丁的渠道(由于阿拉钉同一人不同渠道的回调只有一次,所以这里出现多个渠道需要依次补发)
-				if (CollUtil.isNotEmpty(certStatusMap) && OladingCertStatus.CERT.name().equals(certStatusMap.get("certStatus"))) {
-					log.info("=============================补发阿拉钉另一渠道MQ:{}==================================", toSendChannel);
-					UserSignCertDTO reCertDTO = new UserSignCertDTO();
-					reCertDTO.setUserId(user.getUserId());
-					reCertDTO.setGigTypeList(Collections.singletonList(Enum.valueOf(GigTypeEnum.class, toSendChannel)));
-					sysUserSignCertService.batchChannelCert(reCertDTO);
-				}
-			}
-		}
+//		if (gigTypeArray.size() > 1) {
+//			String firstChannel = String.valueOf(gigTypeArray.get(0));
+//			// 查询阿拉丁第一个渠道的认证状态
+//			Map<String, String> certStatusMap = resultMap.get(firstChannel);
+//			// 查询阿拉钉第一个未签约的渠道
+//			String toSendChannel = "";
+//			for (Map.Entry<String, Map<String, String>> entry : resultMap.entrySet()) {
+//				if (OladingCertStatus.UN_SIGNED.name().equals(entry.getValue().get("certStatus"))) {
+//					toSendChannel = entry.getKey();
+//					break;
+//				}
+//			}
+//			// 校验需要补发的渠道,是否为第一个
+//			if (StrUtil.isNotBlank(toSendChannel) && !StrUtil.equals(firstChannel, toSendChannel)) {
+//				// 如果阿拉丁第一个渠道是已认证的,则补发下一个阿拉丁的渠道(由于阿拉钉同一人不同渠道的回调只有一次,所以这里出现多个渠道需要依次补发)
+//				if (CollUtil.isNotEmpty(certStatusMap) && OladingCertStatus.CERT.name().equals(certStatusMap.get("certStatus"))) {
+//					log.info("=============================补发阿拉钉另一渠道MQ:{}==================================", toSendChannel);
+//					UserSignCertDTO reCertDTO = new UserSignCertDTO();
+//					reCertDTO.setUserId(user.getUserId());
+//					reCertDTO.setGigTypeList(Collections.singletonList(Enum.valueOf(GigTypeEnum.class, toSendChannel)));
+//					sysUserSignCertService.batchChannelCert(reCertDTO);
+//				}
+//			}
+//		}
 	}
 
 	/**

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

@@ -288,38 +288,30 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 	public R<?> toSign(UserSignCertDTO userSignCertDTO) {
 		Integer userId = userSignCertDTO.getUserId();
 
-		// 根据用户id查询用户信息、认证信息
+		// 根据用户id查询用户信息
 		SysUser sysUser = sysUserService.getById(userId);
 		if (sysUser == null) {
 			return R.failed("用户不存在");
 		}
 		// 查询dept
 		SysDept dept = sysDeptService.getById(sysUser.getDeptId());
-		// 查询deptSub
-//		List<SysDeptSub> deptSubList = sysDeptSubService.list(Wrappers.<SysDeptSub>lambdaQuery()
-//				.eq(SysDeptSub::getDeptId, dept.getDeptId())
-//				.eq(SysDeptSub::getEnableFlag, SubjectTypeEnum.ENABLE_FLAG_TRUE.getCode())
-//				.in(SysDeptSub::getSubjectLocation, userSignCertDTO.getSubjectLocationList()));
-//		if (CollUtil.isEmpty(deptSubList)) {
-//			return R.failed("用户所在企业税源地不存在");
-//		}
 		// 查询userSub
 		SysUserSub userSub = sysUserSubService.getOne(Wrappers.<SysUserSub>lambdaQuery()
-				.eq(SysUserSub::getDeptId, dept.getDeptId())
+				.eq(SysUserSub::getDeptId, sysUser.getDeptId())
 				.eq(SysUserSub::getUserId, userId)
 				.eq(SysUserSub::getSubjectLocation, userSignCertDTO.getSubjectLocation()));
 		if (userSub == null) {
 			return R.failed("用户sub数据不存在");
 		}
 		// 判断是否已签约/增员
-		if (SubjectLocation.LUO_SHU_YUN.equals(userSub.getSubjectLocation())) {
+		if (userSignCertDTO.getSubjectLocation().getGigType().equals(GigTypeEnum.TAX_HELPOR)) {
 			if (userSub.getCertStatus() > TaxHelperCertStatus.UN_CERT.getCode()) {
 				return R.ok();
 			}
-		} else {
+		} else if (userSignCertDTO.getSubjectLocation().getGigType().equals(GigTypeEnum.OLADING)) {
 			if (OladingCertStatus.SIGNED.getCode().equals(String.valueOf(userSub.getCertStatus()))
 					|| OladingCertStatus.CERT.getCode().equals(String.valueOf(userSub.getCertStatus()))) {
-				return R.ok();
+				return R.ok(MapUtil.builder("certStatus", OladingCertStatus.resolve(String.valueOf(userSub.getCertStatus()))).build());
 			}
 		}
 
@@ -342,18 +334,23 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 
 		String message = "增员/签约失败";
 		int certStatus = 0;
+		boolean successFlag = false;
+		String requestId = null;
 		if (JSONUtil.isJsonObj(postResult)) {
 			JSONObject jsonResult = JSONUtil.parseObj(postResult);
 			if (jsonResult.getInt("code") == 0) {
 				JSONObject data = jsonResult.getJSONObject("data");
-				if (SubjectLocation.LUO_SHU_YUN.equals(userSignCertDTO.getSubjectLocation())) {
+				if (userSignCertDTO.getSubjectLocation().getGigType().equals(GigTypeEnum.TAX_HELPOR)) {
 					if ("2000".equals(data.getStr("code"))) {
+						successFlag = true;
 						certStatus = TaxHelperCertStatus.ADD_MEMBER.getCode();
 					}
 					message = data.getStr("message");
-				} else {
+				} else if (userSignCertDTO.getSubjectLocation().getGigType().equals(GigTypeEnum.OLADING)) {
 					if ("0".equals(data.getStr("code"))) {
-						certStatus = Integer.parseInt(OladingCertStatus.SIGNED.getCode());
+						successFlag = true;
+						certStatus = Integer.parseInt(OladingCertStatus.SIGNING.getCode());
+						requestId = data.getStr("requestId");
 					}
 					message = data.getStr("message");
 				}
@@ -365,11 +362,18 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 		updateUserSub.setId(userSub.getId());
 		updateUserSub.setCertStatus(certStatus);
 		updateUserSub.setCertRemark("签约/增员:" + message);
+		updateUserSub.setRequestId(requestId);
 		updateUserSub.setUpdateUser(SecurityUtils.getUser().getId());
 		updateUserSub.setUpdateTime(LocalDateTime.now());
 		sysUserSubService.updateById(updateUserSub);
 
-		return certStatus > 0 ? R.ok() : R.failed(message);
+		if (successFlag) {
+			if (userSignCertDTO.getSubjectLocation().getGigType().equals(GigTypeEnum.OLADING)) {
+				return R.ok(MapUtil.builder("certStatus", OladingCertStatus.resolve(String.valueOf(certStatus))).build());
+			}
+			return R.ok();
+		}
+		return R.failed(message);
 	}
 
 	/**
@@ -380,11 +384,13 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public void signAgreement(UserSignCertDTO userSignCertDTO) {
+		SysUser sysUser = sysUserService.getById(userSignCertDTO.getUserId());
 
 		LambdaUpdateWrapper<SysUserSub> updateWrapper = Wrappers.lambdaUpdate();
 		updateWrapper.eq(SysUserSub::getUserId, userSignCertDTO.getUserId());
-		if (CollUtil.isNotEmpty(userSignCertDTO.getGigTypeList())) {
-			updateWrapper.in(SysUserSub::getGigType, userSignCertDTO.getGigTypeList());
+		updateWrapper.eq(SysUserSub::getDeptId, sysUser.getDeptId());
+		if (userSignCertDTO.getSubjectLocation() != null) {
+			updateWrapper.in(SysUserSub::getSubjectLocation, userSignCertDTO.getSubjectLocation());
 		}
 		updateWrapper.set(SysUserSub::getAgreementUrl, userSignCertDTO.getAgreementUrl());
 		updateWrapper.set(SysUserSub::getUpdateUser, SecurityUtils.getUser().getId());
@@ -404,8 +410,8 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 
 		LambdaUpdateWrapper<SysUserSub> updateWrapper = Wrappers.lambdaUpdate();
 		updateWrapper.eq(SysUserSub::getUserId, userSignCertDTO.getUserId());
-		if (CollUtil.isNotEmpty(userSignCertDTO.getGigTypeList())) {
-			updateWrapper.in(SysUserSub::getGigType, userSignCertDTO.getGigTypeList());
+		if (userSignCertDTO.getSubjectLocation() != null) {
+			updateWrapper.in(SysUserSub::getSubjectLocation, userSignCertDTO.getSubjectLocation());
 		}
 		if (StrUtil.isNotBlank(userSignCertDTO.getAgreementUrl())) {
 			updateWrapper.set(SysUserSub::getAgreementUrl, userSignCertDTO.getAgreementUrl());
@@ -448,9 +454,7 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 		LambdaQueryWrapper<SysUserSub> userSubWrapper = Wrappers.lambdaQuery();
 		userSubWrapper.eq(SysUserSub::getUserId, userId);
 		userSubWrapper.eq(SysUserSub::getDeptId, dept.getDeptId());
-		if (CollUtil.isNotEmpty(userSignCertDTO.getGigTypeList())) {
-			userSubWrapper.in(SysUserSub::getGigType, userSignCertDTO.getGigTypeList());
-		}
+		userSubWrapper.eq(SysUserSub::getSubjectLocation, userSignCertDTO.getSubjectLocation());
 		List<SysUserSub> userSubList = sysUserSubService.list(userSubWrapper);
 
 		if (CollUtil.isNotEmpty(userSubList)) {
@@ -501,6 +505,8 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 				updateUserSub.setId(userSub.getId());
 				updateUserSub.setRequestId(requestId);
 				updateUserSub.setCallbackStatus(GigCallBackStatus.IN_PROGRESS);
+				updateUserSub.setUpdateTime(LocalDateTime.now());
+				updateUserSub.setUpdateUser(SecurityUtils.getUser().getId());
 				sysUserSubService.updateById(updateUserSub);
 				// 发送mq
 				BaseMap gigInfo = new BaseMap();
@@ -519,9 +525,9 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 	 * @param sysUser 用户信息
 	 * @param userSub userSub信息
 	 * @param userSignCertDTO 发起参数
-	 * @param localtionList 阿拉钉税源地list
+	 * @param locationList 阿拉钉税源地list
 	 */
-	private boolean preSignCert(SysUser sysUser, SysUserSub userSub, UserSignCertDTO userSignCertDTO, Collection<SubjectLocation> localtionList) {
+	private boolean preSignCert(SysUser sysUser, SysUserSub userSub, UserSignCertDTO userSignCertDTO, Collection<SubjectLocation> locationList) {
 		// 校验是否有进行中的
 		if (GigCallBackStatus.IN_PROGRESS.equals(userSub.getCallbackStatus())) {
 			return false;
@@ -541,7 +547,7 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 				}
 
 				// 如果同时包含阿拉钉多个渠道,则只选第一个发起,其余不发起
-				if (localtionList.size() > 1 && !localtionList.stream().findFirst().get().equals(userSub.getSubjectLocation())) {
+				if (locationList.size() > 1 && !locationList.stream().findFirst().get().equals(userSub.getSubjectLocation())) {
 					// 同时选择了阿拉钉金园数科、海南飞亿、河南薪泰梓渠道的两个及以上,则先发起第一个,完成之后再依次发起其他的
 					return false;
 				}

+ 4 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmSettlementServiceImpl.java

@@ -13,6 +13,7 @@ import com.qunzhixinxi.hnqz.admin.enums.GigCallBackStatus;
 import com.qunzhixinxi.hnqz.admin.enums.GigChannelEnum;
 import com.qunzhixinxi.hnqz.admin.enums.GigTypeEnum;
 import com.qunzhixinxi.hnqz.admin.enums.RenlijiaCertStatus;
+import com.qunzhixinxi.hnqz.admin.enums.SubjectLocation;
 import com.qunzhixinxi.hnqz.admin.mapper.WmSettleAccountReceiveMapper;
 import com.qunzhixinxi.hnqz.admin.service.*;
 import com.qunzhixinxi.hnqz.common.ding.entity.*;
@@ -200,7 +201,8 @@ public class WmSettlementServiceImpl implements WmSettlementService {
 	private void updateUserSub(EmployCheckNotifyDataItem item, SysUser updateUser) {
 		SysUserSub userSub = sysUserSubService.getOne(Wrappers.<SysUserSub>lambdaQuery()
 				.eq(SysUserSub::getUserId, updateUser.getUserId())
-				.eq(SysUserSub::getGigType, GigTypeEnum.REN_LI_JIA));
+				.eq(SysUserSub::getGigType, GigTypeEnum.REN_LI_JIA)
+				.eq(SysUserSub::getSubjectLocation, SubjectLocation.REN_LI_JIA));
 		LocalDateTime now = LocalDateTime.now();
 
 		if (userSub != null) {
@@ -220,6 +222,7 @@ public class WmSettlementServiceImpl implements WmSettlementService {
 			saveUserSub.setUserId(updateUser.getUserId());
 			saveUserSub.setGigType(GigTypeEnum.REN_LI_JIA);
 			saveUserSub.setGigChannel(GigChannelEnum.DEFAULT);
+			saveUserSub.setSubjectLocation(SubjectLocation.REN_LI_JIA);
 			saveUserSub.setCertRemark(item.getRemark());
 			saveUserSub.setCertStatus(item.getStatus());
 			saveUserSub.setCallbackStatus(GigCallBackStatus.RETURNED);