Jelajahi Sumber

feat: 小程序认证,两家都失败了要终止,只有一家成功的时候要返回错误信息

shc 3 tahun lalu
induk
melakukan
8aec1d00ca

+ 22 - 8
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/ApiController.java

@@ -1,9 +1,11 @@
 package com.qunzhixinxi.hnqz.admin.controller;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.lang.Assert;
+import cn.hutool.core.map.MapUtil;
 import cn.hutool.core.util.IdcardUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -2318,6 +2320,8 @@ public class ApiController {
 
 		SysDept sysDept = sysDeptService.getById(sysUser.getDeptId());
 
+		Map<SubjectTypeEnum,String> errorMap = new HashMap<>(2);
+
 		// 开启认证
 		if (CollectionUtils.isNotEmpty(userUpdateInput.getSubList())) {
 			for (String subType : userUpdateInput.getSubList()) {
@@ -2330,7 +2334,8 @@ public class ApiController {
 					subCondition.setSubjectType(SubjectTypeEnum.TYPE_RENLIJIA.getCode());
 					SysDeptSub deptSub = sysDeptSubService.getOne(Wrappers.query(subCondition));
 					if (null == deptSub || StringUtils.isBlank(deptSub.getAppId())) {
-						return R.failed("人员所在机构未配置结算信息");
+						errorMap.put(SubjectTypeEnum.TYPE_RENLIJIA, "人员所在机构未配置结算信息");
+						continue;
 					}
 
 					DingConfig config = new DingConfig();
@@ -2348,7 +2353,8 @@ public class ApiController {
 
 					EmployCheckResponse response = dingService.check(config, certList);
 					if (!response.isSuccess()) {
-						return R.failed("人力家接口调用失败");
+						errorMap.put(SubjectTypeEnum.TYPE_RENLIJIA, "人力家接口调用异常");
+						continue;
 					}
 					//接口请求成功,但是接口返回的状态还需区分checkStatus,1:验证通过,状态改成已提交,2:验证不通过,状态改成认证失败
 					List<EmployCheckResultItem> freelancesResult = response.getData().getFreelancesResult();
@@ -2380,12 +2386,12 @@ public class ApiController {
 										continue;
 									}
 									log.info("认证失败:" + employCheckResultItem.getCheckRemark());
-									return R.failed("认证失败:人力家认证失败");
+									errorMap.put(SubjectTypeEnum.TYPE_RENLIJIA, "认证失败:人力家认证失败");
 								}
 							}
 						}
 					} else {
-						return R.failed("人力家接口调用异常");
+						errorMap.put(SubjectTypeEnum.TYPE_RENLIJIA, "人力家接口调用异常");
 					}
 
 				} else if (SubjectTypeEnum.TYPE_SHUIBANGYUN.getCode().equals(subType)) {
@@ -2396,7 +2402,8 @@ public class ApiController {
 					subCondition.setSubjectType(SubjectTypeEnum.TYPE_SHUIBANGYUN.getCode());
 					SysDeptSub deptSub = sysDeptSubService.getOne(Wrappers.query(subCondition));
 					if (null == deptSub || StringUtils.isBlank(deptSub.getAppId())) {
-						return R.failed("人员所在机构未配置结算信息");
+						errorMap.put(SubjectTypeEnum.TYPE_SHUIBANGYUN, "人员所在机构未配置结算信息");
+						continue;
 					}
 
 					TaxHelperConfig config = new TaxHelperConfig();
@@ -2413,7 +2420,8 @@ public class ApiController {
 
 					model.setEnterpriseCode(sysDept.getTaxCode());
 					if (StringUtils.isEmpty(model.getEnterpriseCode())) {
-						return R.failed("未配置企业的统一社会信用代码");
+						errorMap.put(SubjectTypeEnum.TYPE_SHUIBANGYUN, "未配置企业的统一社会信用代码");
+						continue;
 					}
 					TaxHelperAddMemberRequest request = new TaxHelperAddMemberRequest(model);
 					TaxHelperResponse response = taxHelperService.addMembers(request);
@@ -2435,12 +2443,18 @@ public class ApiController {
 					} else {
 						log.info("税邦云增员失败:{},{},原因是:{}", sysUser.getRealname(), sysUser.getUsername(), response.getMessage());
 						userUpdateInput.setIdCardNumber(null);
-						return R.failed("税邦云增员失败");
+						errorMap.put(SubjectTypeEnum.TYPE_SHUIBANGYUN, "税邦云增员失败");
 					}
 				}
 			}
 		}
 
+		// 两家都失败了,就中止
+		if (errorMap.size() == 2){
+			return R.failed(errorMap);
+		}
+
+
 		sysUser.setAvatar(userUpdateInput.getAvatar());
 		if (StringUtils.isNotEmpty(userUpdateInput.getIdCardNumber())) {
 			sysUser.setIdCardNumber(userUpdateInput.getIdCardNumber());
@@ -2454,7 +2468,7 @@ public class ApiController {
 		}
 		sysUserService.updateById(sysUser);
 
-		return R.ok();
+		return R.ok(errorMap);
 	}