Ver Fonte

feat: 认证前置功能开关

lixuesong há 1 ano atrás
pai
commit
f685c79e4a

+ 4 - 0
hnqz-common/hnqz-common-core/src/main/java/com/qunzhixinxi/hnqz/common/core/util/R.java

@@ -61,6 +61,10 @@ public class R<T> implements Serializable {
 		return restResult(data, CommonConstants.FAIL, msg);
 	}
 
+	public static <T> R<T> failed(T data, int code, String msg) {
+		return restResult(data, code, msg);
+	}
+
 	private static <T> R<T> restResult(T data, int code, String msg) {
 		R<T> apiResult = new R<>();
 		apiResult.setCode(code);

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

@@ -47,6 +47,7 @@ import com.qunzhixinxi.hnqz.admin.config.UpmsConfig;
 import com.qunzhixinxi.hnqz.admin.entity.MedicalEquipment;
 import com.qunzhixinxi.hnqz.admin.entity.SysDeptSub;
 import com.qunzhixinxi.hnqz.admin.entity.SysUserExtRecord;
+import com.qunzhixinxi.hnqz.admin.entity.SysUserSub;
 import com.qunzhixinxi.hnqz.admin.entity.WmDaAgent;
 import com.qunzhixinxi.hnqz.admin.entity.WmDaDistribution;
 import com.qunzhixinxi.hnqz.admin.entity.WmDaDrugEnt;
@@ -77,6 +78,7 @@ import com.qunzhixinxi.hnqz.admin.entity.vo.SysUserSubVO;
 import com.qunzhixinxi.hnqz.admin.entity.vo.WmTaskTypeVO;
 import com.qunzhixinxi.hnqz.admin.enums.DelEnum;
 import com.qunzhixinxi.hnqz.admin.enums.EnableEnum;
+import com.qunzhixinxi.hnqz.admin.enums.GigCallBackStatus;
 import com.qunzhixinxi.hnqz.admin.enums.PackageStatusEnum;
 import com.qunzhixinxi.hnqz.admin.enums.PackageTypeEnum;
 import com.qunzhixinxi.hnqz.admin.enums.ScorePackageStatusEnum;
@@ -95,6 +97,7 @@ import com.qunzhixinxi.hnqz.admin.service.SysFileService;
 import com.qunzhixinxi.hnqz.admin.service.SysPublicParamService;
 import com.qunzhixinxi.hnqz.admin.service.SysUserExtRecordService;
 import com.qunzhixinxi.hnqz.admin.service.SysUserService;
+import com.qunzhixinxi.hnqz.admin.service.SysUserSubService;
 import com.qunzhixinxi.hnqz.admin.service.WmAdRecordService;
 import com.qunzhixinxi.hnqz.admin.service.WmDaAgentService;
 import com.qunzhixinxi.hnqz.admin.service.WmDaDistributionService;
@@ -129,7 +132,6 @@ import com.qunzhixinxi.hnqz.admin.util.OsEnvUtils;
 import com.qunzhixinxi.hnqz.admin.util.QRCodeGenerator;
 import com.qunzhixinxi.hnqz.admin.view.user.UserUpdateInput;
 import com.qunzhixinxi.hnqz.common.core.constant.CommonConstants;
-import com.qunzhixinxi.hnqz.common.core.constant.enums.CommonFlag;
 import com.qunzhixinxi.hnqz.common.core.constant.enums.LoginTypeEnum;
 import com.qunzhixinxi.hnqz.common.core.constant.enums.UpmsState;
 import com.qunzhixinxi.hnqz.common.core.exception.BizException;
@@ -233,6 +235,7 @@ public class ApiController {
 	private final WmAdRecordService adRecordService;
 	private final SysUserSignCertService sysUserSignCertService;
 	private final SysUserExtRecordService sysUserExtRecordService;
+	private final SysUserSubService sysUserSubService;
 	private final WmTaskSubmissionRuleService taskSubmissionRuleService;
 	private final WmTaskSubmissionPercentRuleService wmTaskSubmissionPercentRuleService;
 	private final SysDeptCsmService deptCsmService;
@@ -2234,6 +2237,7 @@ public class ApiController {
 	@PostMapping("/pkg/pickup")
 	@Transactional(rollbackFor = Exception.class)
 	public R<?> receivePackage(@Valid @RequestBody WmPkgDTO.OnPkgPickup resource) {
+		log.info("小程序领取积分包参数:{}", resource);
 
 		String pkgId = resource.getPkgId();
 		WmScorePackage wmScorePackage = wmScorePackageService.getById(pkgId);
@@ -2254,7 +2258,9 @@ public class ApiController {
 			return R.failed("积分包不能领取");
 		}
 
-		UserVO userVO = sysUserService.selectUserVoById(SecurityUtils.getUser().getId());
+		Integer userId = SecurityUtils.getUser().getId();
+		log.info("当前领包人userId={}", userId);
+		UserVO userVO = sysUserService.selectUserVoById(userId);
 
 		if (null == userVO) {
 			return R.failed("账号出错");
@@ -2284,6 +2290,20 @@ public class ApiController {
 			return R.failed("积分包已领取");
 		}
 
+		// 校验是否已经认证
+		List<SysUserSub> userSubList = sysUserSubService.list(Wrappers.<SysUserSub>lambdaQuery()
+				.eq(SysUserSub::getDeptId, userVO.getDeptId())
+				.eq(SysUserSub::getUserId, userId));
+		if (CollUtil.isEmpty(userSubList)) {
+			return R.failed(null, 4001, "该积分包需要认证成功后才能领取,请点击“去认证”完成认证");
+		}
+		// 该企业下只要有一个渠道是 “已核身/已认证”就可以领包
+		boolean certNoMatch = userSubList.stream().noneMatch(userSub -> Arrays.asList(1, 15).contains(userSub.getCertStatus())
+				|| (userSub.getCertStatus().equals(2) && GigCallBackStatus.IN_PROGRESS.equals(userSub.getCallbackStatus())));
+		if (certNoMatch) {
+			return R.failed(null, 4001, "该积分包需要认证成功后才能领取,请点击“去认证”完成认证");
+		}
+
 		// 封装结果
 		WmScorePackageStatus wmScorePackageStatus = new WmScorePackageStatus();
 		wmScorePackageStatus.setPackageId(pkgId);