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

feat(service): 批量认证添加年龄限制

shc 4 жил өмнө
parent
commit
13ad81fd35

+ 19 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/SysUserServiceImpl.java

@@ -22,6 +22,7 @@ package com.qunzhixinxi.hnqz.admin.service.impl;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.lang.Validator;
 import cn.hutool.core.util.ArrayUtil;
+import cn.hutool.core.util.IdcardUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONUtil;
 import com.alibaba.nacos.common.utils.Md5Utils;
@@ -574,6 +575,24 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 	public R batchChannelCert(UserCertificationInput input) {
 		SysUser sysUser = baseMapper.selectById(input.getUserId());
 		String inputIdCardNumber = input.getIdCardNumber();
+
+		// 校验身份证上的年龄
+		if (StringUtils.isNotEmpty(inputIdCardNumber)) {
+			// 获取更新操作的用户角色
+			List<Integer> roles = sysUserRoleService.list(Wrappers.<SysUserRole>lambdaQuery()
+					.eq(SysUserRole::getUserId, input.getUserId()))
+					.stream().mapToInt(SysUserRole::getRoleId).boxed().collect(Collectors.toList());
+			// 如果角色中包含全职和兼职就需要校验身份证年龄
+			if (roles.contains(5) || roles.contains(6)) {
+				int ageByIdCard = IdcardUtil.getAgeByIdCard(inputIdCardNumber);
+				if (ageByIdCard < 18) {
+					return R.failed("年龄未满十八");
+				} else if (ageByIdCard > 65) {
+					return R.failed("年龄已超过六十五");
+				}
+			}
+		}
+
 		sysUser.setIdCardNumber(inputIdCardNumber);
 		SysDept sysDept = sysDeptService.getById(sysUser.getDeptId());