|
@@ -3,6 +3,7 @@ package com.qunzhixinxi.hnqz.admin.controller;
|
|
import cn.hutool.core.collection.CollUtil;
|
|
import cn.hutool.core.collection.CollUtil;
|
|
import cn.hutool.core.collection.ListUtil;
|
|
import cn.hutool.core.collection.ListUtil;
|
|
import cn.hutool.core.lang.tree.Tree;
|
|
import cn.hutool.core.lang.tree.Tree;
|
|
|
|
+import cn.hutool.core.text.CharSequenceUtil;
|
|
import cn.hutool.core.util.ArrayUtil;
|
|
import cn.hutool.core.util.ArrayUtil;
|
|
import cn.hutool.core.util.IdcardUtil;
|
|
import cn.hutool.core.util.IdcardUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
@@ -72,6 +73,7 @@ import java.util.Collections;
|
|
import java.util.HashMap;
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
|
|
+import java.util.Optional;
|
|
import java.util.Set;
|
|
import java.util.Set;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Stream;
|
|
import java.util.stream.Stream;
|
|
@@ -99,6 +101,8 @@ public class SysUserController {
|
|
private final SysAreaEntityService areaEntityService;
|
|
private final SysAreaEntityService areaEntityService;
|
|
private final SysUserManager userManager;
|
|
private final SysUserManager userManager;
|
|
|
|
|
|
|
|
+ private static final List<Integer> SALESMAN_ROLE_ID = ListUtil.of(5, 6);
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 判断可以登陆的角色
|
|
* 判断可以登陆的角色
|
|
* 只有单纯是5 和 6的角色才不能登陆
|
|
* 只有单纯是5 和 6的角色才不能登陆
|
|
@@ -112,15 +116,14 @@ public class SysUserController {
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
|
|
|
|
- List<Integer> ignoreRoles = ListUtil.of(5, 6);
|
|
|
|
Set<Integer> roleIds = Arrays.stream(roles).collect(Collectors.toSet());
|
|
Set<Integer> roleIds = Arrays.stream(roles).collect(Collectors.toSet());
|
|
|
|
|
|
if (roleIds.size() == 1) {
|
|
if (roleIds.size() == 1) {
|
|
- return !CollUtil.containsAny(roleIds, ignoreRoles);
|
|
|
|
|
|
+ return !CollUtil.containsAny(roleIds, SALESMAN_ROLE_ID);
|
|
}
|
|
}
|
|
|
|
|
|
if (roleIds.size() == 2) {
|
|
if (roleIds.size() == 2) {
|
|
- return !CollUtil.containsAll(roleIds, ignoreRoles);
|
|
|
|
|
|
+ return !CollUtil.containsAll(roleIds, SALESMAN_ROLE_ID);
|
|
}
|
|
}
|
|
|
|
|
|
return true;
|
|
return true;
|
|
@@ -370,15 +373,19 @@ public class SysUserController {
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
- * 添加用户
|
|
|
|
|
|
+ * 添加管理员
|
|
*
|
|
*
|
|
- * @param userDto 用户信息
|
|
|
|
|
|
+ * @param userDto 管理员信息
|
|
* @return success/false
|
|
* @return success/false
|
|
*/
|
|
*/
|
|
- @SysLog("添加用户")
|
|
|
|
|
|
+ @SysLog("添加管理员信息")
|
|
@PostMapping
|
|
@PostMapping
|
|
@PreAuthorize("@pms.hasPermission('sys_user_add')")
|
|
@PreAuthorize("@pms.hasPermission('sys_user_add')")
|
|
- public R<Boolean> user(@Validated(value = BaseEntity.Create.class) @RequestBody UserDTO userDto) {
|
|
|
|
|
|
+ public R<Boolean> createAdministrator(@Validated(value = BaseEntity.Create.class) @RequestBody UserDTO userDto) {
|
|
|
|
+
|
|
|
|
+ if (CollUtil.containsAny(userDto.getRole(), SALESMAN_ROLE_ID)) {
|
|
|
|
+ return R.failed("当前功能仅支持添加非业务员角色");
|
|
|
|
+ }
|
|
|
|
|
|
// 姓名去除空格(包括字符之间的所有空格都会去除)
|
|
// 姓名去除空格(包括字符之间的所有空格都会去除)
|
|
userDto.setRealname(StrUtil.cleanBlank(userDto.getRealname()));
|
|
userDto.setRealname(StrUtil.cleanBlank(userDto.getRealname()));
|
|
@@ -529,63 +536,6 @@ public class SysUserController {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- } else if (userDto.getRole().contains(5)) {
|
|
|
|
- UserDTO userDTO = new UserDTO();
|
|
|
|
- userDTO.setUsername(userDto.getUsername());
|
|
|
|
- userDTO.setDelFlag(CommonConstants.STATUS_NORMAL);
|
|
|
|
- List<UserVO> userDTOList = sysUserMapper.selectByPhone(userDTO);
|
|
|
|
- if (CollUtil.isNotEmpty(userDTOList)) {
|
|
|
|
- for (UserVO userVO : userDTOList) {
|
|
|
|
- if (null != userVO.getRoleList()) {
|
|
|
|
- for (SysRole sysRole : userVO.getRoleList()) {
|
|
|
|
- if (sysRole.getRoleId() == 2) {
|
|
|
|
- return R.failed("用户已存在平台管理员,不能同时为全职学术推广员");
|
|
|
|
- }
|
|
|
|
- if (sysRole.getRoleId() == 3) {
|
|
|
|
- if (sysDept.getLevel() == 3 || sysDept.getLevel() == 4) {
|
|
|
|
- return R.failed("用户已存在药企管理员,不能为CSO的全职学术推广员");
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- if (sysRole.getRoleId() == 4) {
|
|
|
|
- if (sysDept.getLevel() == 3 || sysDept.getLevel() == 4) {
|
|
|
|
- return R.failed("用户已存在CSO管理员,不能为其他CSO的全职学术推广员");
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- } else if (userDto.getRole().contains(6)) {
|
|
|
|
-
|
|
|
|
- UserDTO userDTO = new UserDTO();
|
|
|
|
- userDTO.setUsername(userDto.getUsername());
|
|
|
|
- userDTO.setDelFlag(CommonConstants.STATUS_NORMAL);
|
|
|
|
- List<UserVO> userDTOList = sysUserMapper.selectByPhone(userDTO);
|
|
|
|
- if (CollUtil.isNotEmpty(userDTOList)) {
|
|
|
|
- for (UserVO userVO : userDTOList) {
|
|
|
|
- if (null != userVO.getRoleList()) {
|
|
|
|
- for (SysRole sysRole : userVO.getRoleList()) {
|
|
|
|
- if (sysRole.getRoleId() == 2) {
|
|
|
|
- return R.failed("用户已存在平台管理员,不能同时为兼职学术推广员");
|
|
|
|
- }
|
|
|
|
- SysUserRole sysUserRole = new SysUserRole();
|
|
|
|
- sysUserRole.setUserId(userVO.getUserId());
|
|
|
|
- List<SysUserRole> sysUserRoleList = sysUserRoleMapper.selectById(sysUserRole);
|
|
|
|
- for (SysUserRole userRole : sysUserRoleList) {
|
|
|
|
- if (userRole.getRoleId().equals(7)) {
|
|
|
|
- SysUser sysUser = userService.getById(userRole.getUserId());
|
|
|
|
- if (sysUser.getDeptId().equals(userDto.getDeptId())) {
|
|
|
|
- return R.failed("用户已存在财务管理员角色,不能同时为兼职学术推广员");
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
} else if (userDto.getRole().contains(9)) {
|
|
} else if (userDto.getRole().contains(9)) {
|
|
UserDTO userDTO = new UserDTO();
|
|
UserDTO userDTO = new UserDTO();
|
|
userDTO.setUsername(userDto.getUsername());
|
|
userDTO.setUsername(userDto.getUsername());
|
|
@@ -657,28 +607,97 @@ public class SysUserController {
|
|
query.setUsername(userDto.getUsername());
|
|
query.setUsername(userDto.getUsername());
|
|
query.setDeptId(userDto.getDeptId());
|
|
query.setDeptId(userDto.getDeptId());
|
|
Integer count = sysUserMapper.selectCount(Wrappers.query(query));
|
|
Integer count = sysUserMapper.selectCount(Wrappers.query(query));
|
|
- // TODO 用户是否存在
|
|
|
|
|
|
+
|
|
if (count != 0) {
|
|
if (count != 0) {
|
|
return R.failed("当前机构已存在该账号");
|
|
return R.failed("当前机构已存在该账号");
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
+ // // 校验身份证上的年龄
|
|
|
|
+ // if (StringUtils.isNotEmpty(userDto.getIdCardNumber())) {
|
|
|
|
+ // // 获取更新操作的用户角色
|
|
|
|
+ // List<Integer> roles = userDto.getRole();
|
|
|
|
+ // // 如果角色中包含全职和兼职就需要校验身份证年龄
|
|
|
|
+ // if (roles.contains(5) || roles.contains(6)) {
|
|
|
|
+ // int ageByIdCard = IdcardUtil.getAgeByIdCard(userDto.getIdCardNumber());
|
|
|
|
+ // if (ageByIdCard < 18) {
|
|
|
|
+ // return R.failed("年龄未满十八");
|
|
|
|
+ // } else if (ageByIdCard > 65) {
|
|
|
|
+ // return R.failed("年龄已超过六十五");
|
|
|
|
+ // }
|
|
|
|
+ // }
|
|
|
|
+ // }
|
|
|
|
+
|
|
|
|
+ userService.saveUser(userDto);
|
|
|
|
+ return R.ok(Boolean.TRUE);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 添加业务员
|
|
|
|
+ *
|
|
|
|
+ * @param resource 业务员信息
|
|
|
|
+ * @return success/false
|
|
|
|
+ */
|
|
|
|
+ @SysLog("添加业务员")
|
|
|
|
+ @PostMapping(value = "/salesman/create")
|
|
|
|
+ @PreAuthorize("@pms.hasPermission('sys_user_add')")
|
|
|
|
+ public R<Boolean> createSalesman(@Validated @RequestBody SysUserDTO.OnSalesmanCreate resource) {
|
|
|
|
+
|
|
|
|
+ List<Integer> role = resource.getRole();
|
|
|
|
+
|
|
|
|
+ if (role.size() != 1 || !CollUtil.containsAny(role, SALESMAN_ROLE_ID)) {
|
|
|
|
+ return R.failed("当前功能仅支持添加单一(全职/兼职)业务员角色");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 校验服务商
|
|
|
|
+ HnqzUser operator = SecurityUtils.getUser();
|
|
|
|
+ Integer deptId = resource.getDeptId();
|
|
|
|
+ if (!deptId.equals(operator.getDeptId())) {
|
|
|
|
+
|
|
|
|
+ return R.failed("不能跨机构维护学术推广员");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ // 校验用户名
|
|
|
|
+ String username = resource.getUsername().trim();
|
|
|
|
+ boolean availUsername = userService.count(Wrappers.<SysUser>lambdaQuery().eq(SysUser::getUsername, username)) == 0;
|
|
|
|
+ if (!availUsername) {
|
|
|
|
+ return R.failed("用户名已存在");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
// 校验身份证上的年龄
|
|
// 校验身份证上的年龄
|
|
- if (StringUtils.isNotEmpty(userDto.getIdCardNumber())) {
|
|
|
|
- // 获取更新操作的用户角色
|
|
|
|
- List<Integer> roles = userDto.getRole();
|
|
|
|
- // 如果角色中包含全职和兼职就需要校验身份证年龄
|
|
|
|
- if (roles.contains(5) || roles.contains(6)) {
|
|
|
|
- int ageByIdCard = IdcardUtil.getAgeByIdCard(userDto.getIdCardNumber());
|
|
|
|
- if (ageByIdCard < 18) {
|
|
|
|
- return R.failed("年龄未满十八");
|
|
|
|
- } else if (ageByIdCard > 65) {
|
|
|
|
- return R.failed("年龄已超过六十五");
|
|
|
|
- }
|
|
|
|
|
|
+ String idCardNumber = resource.getIdCardNumber().trim();
|
|
|
|
+ if (CharSequenceUtil.isNotEmpty(idCardNumber)) {
|
|
|
|
+ int ageByIdCard = IdcardUtil.getAgeByIdCard(idCardNumber);
|
|
|
|
+ if (ageByIdCard < 18 || ageByIdCard > 65) {
|
|
|
|
+ return R.failed("业务员年龄应在18~65周岁之间");
|
|
}
|
|
}
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
- return R.ok(userService.saveUser(userDto));
|
|
|
|
|
|
+ UserDTO userDto = new UserDTO();
|
|
|
|
+ userDto.setRole(role);
|
|
|
|
+ userDto.setDeptId(deptId);
|
|
|
|
+ userDto.setAreaCodes(userDto.getAreaCodes());
|
|
|
|
+ userDto.setUsername(username);
|
|
|
|
+ userDto.setIdCardNumber(idCardNumber);
|
|
|
|
+ userDto.setLockFlag(resource.getLockFlag());
|
|
|
|
+ userDto.setPhone(resource.getPhone().trim());
|
|
|
|
+ userDto.setRealname(resource.getRealName());
|
|
|
|
+
|
|
|
|
+ Integer userId = userService.saveUser(userDto);
|
|
|
|
+
|
|
|
|
+ // 创建备案记录
|
|
|
|
+ SysUserDTO.OnCertificateCreate certResource = new SysUserDTO.OnCertificateCreate();
|
|
|
|
+ certResource.setUserId(userId);
|
|
|
|
+ certResource.setType("REG");
|
|
|
|
+ certResource.setFileIds(resource.getCertFileIds());
|
|
|
|
+
|
|
|
|
+ userManager.createUserCertificate(certResource, operator);
|
|
|
|
+
|
|
|
|
+ return R.ok(Boolean.TRUE);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -1252,4 +1271,11 @@ public class SysUserController {
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @SysLog("备案管理员绑定备案产品")
|
|
|
|
+ @PostMapping(value = "/cert/prod/bind")
|
|
|
|
+ public R<Boolean> bindProdToUserCert(@Validated @RequestBody SysUserDTO.OnProdBind resource){
|
|
|
|
+
|
|
|
|
+ return R.ok(userManager.bindProdToUserCert(resource, SecurityUtils.getUser()));
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|