Эх сурвалжийг харах

Merge branch 'feat-20240108-precert'

lixuesong 1 жил өмнө
parent
commit
0df065e94c

+ 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);

+ 32 - 3
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;
@@ -76,7 +77,9 @@ import com.qunzhixinxi.hnqz.admin.entity.input.WmWkAlbumApiInput;
 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.DeptPermissionEnum;
 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 +98,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 +133,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 +236,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;
@@ -2236,6 +2240,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);
@@ -2256,7 +2261,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("账号出错");
@@ -2286,6 +2293,24 @@ public class ApiController {
 			return R.failed("积分包已领取");
 		}
 
+		// 校验企业是否开启了认证前置, 开启后则校验认证前置,否则不校验
+		SysDept sysDept = sysDeptService.getById(userVO.getDeptId());
+		if (ArrayUtil.contains(sysDept.getDeptPermissions(), DeptPermissionEnum.PRE_CERT.getVal())) {
+			// 校验是否已经认证
+			List<SysUserSub> userSubList = sysUserSubService.list(Wrappers.<SysUserSub>lambdaQuery()
+					.eq(SysUserSub::getDeptId, userVO.getDeptId())
+					.eq(SysUserSub::getUserId, userId));
+			if (CollUtil.isEmpty(userSubList)) {
+				return R.ok(1, "该积分包需要认证成功后才能领取,请点击“去认证”完成认证");
+			}
+			// 该企业下只要有一个渠道是 “已核身/已认证”就可以领包
+			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.ok(1, "该积分包需要认证成功后才能领取,请点击“去认证”完成认证");
+			}
+		}
+
 		// 封装结果
 		WmScorePackageStatus wmScorePackageStatus = new WmScorePackageStatus();
 		wmScorePackageStatus.setPackageId(pkgId);
@@ -2315,7 +2340,11 @@ public class ApiController {
 		updateScorePackage.setIsConduct("1");
 		wmScorePackageService.updateById(updateScorePackage);
 
-		return saved ? R.ok(true, "领取积分包成功") : R.failed(false, "领取积分包失败");
+		// code为0时, data的取值含义
+		// 0-领包成功
+		// 1-需要认证
+		// 2-其他失败
+		return saved ? R.ok(0, "领取积分包成功") : R.failed(2, "领取积分包失败");
 
 	}
 

+ 14 - 6
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/enums/DeptPermissionEnum.java

@@ -1,28 +1,36 @@
 package com.qunzhixinxi.hnqz.admin.enums;
 
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
 /**
  * 部门权限定义
  *
  * @author lixuesong
  * @date 2021年05月24日 10:24
  */
+@Getter
+@AllArgsConstructor
 public enum DeptPermissionEnum {
 
 	/**
 	 * 部门权限类型:0:导出
 	 */
-	DEPT_EXPORT("0"),
-	SMS("1"),
-	SETTLEMENT_PROOF("2");
+	DEPT_EXPORT("0", "导出"),
+	SMS("1", "短信通知"),
+	SETTLEMENT_PROOF("2", "请款单"),
+	ASSESSMENT("3", "合规测评"),
+	PRE_CERT("4", "认证前置");
 
 	/**
 	 * 权限类型
 	 */
 	private String val;
 
-	DeptPermissionEnum(String val) {
-		this.val = val;
-	}
+	/**
+	 * 描述
+	 */
+	private final String description;
 
 	public String val() {
 		return this.val;