|
@@ -4,17 +4,21 @@ import cn.hutool.core.lang.Validator;
|
|
|
import cn.hutool.core.util.IdcardUtil;
|
|
|
import cn.hutool.core.util.NumberUtil;
|
|
|
import cn.hutool.crypto.SmUtil;
|
|
|
+import cn.hutool.json.JSONUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.jiayue.ssi.annotation.AgainVerify;
|
|
|
import com.jiayue.ssi.annotation.OperateLog;
|
|
|
import com.jiayue.ssi.annotation.PreventReplay;
|
|
|
+import com.jiayue.ssi.backenum.ApproveOperaterEnum;
|
|
|
import com.jiayue.ssi.backenum.ApproveStatusEnum;
|
|
|
import com.jiayue.ssi.backenum.AuditType;
|
|
|
import com.jiayue.ssi.backenum.BusinessType;
|
|
|
import com.jiayue.ssi.config.SendMailUtil;
|
|
|
+import com.jiayue.ssi.constant.ApproveConstants;
|
|
|
import com.jiayue.ssi.constant.CacheConstants;
|
|
|
import com.jiayue.ssi.constant.CustomException;
|
|
|
+import com.jiayue.ssi.constant.SecretKeyConstants;
|
|
|
import com.jiayue.ssi.entity.*;
|
|
|
import com.jiayue.ssi.service.*;
|
|
|
import com.jiayue.ssi.service.impl.SysPermissionService;
|
|
@@ -26,6 +30,7 @@ import org.springframework.security.access.prepost.PreAuthorize;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* 用户信息接口
|
|
@@ -60,31 +65,9 @@ public class SysUserController {
|
|
|
@GetMapping(value = "/getAll")
|
|
|
@PreAuthorize("@ss.hasPermi('system:user:list')")
|
|
|
@PreventReplay
|
|
|
- public ResponseVO getAll(String currentPage, String pageSize, String username, String phonenumber,
|
|
|
+ public ResponseVO getAll(String username, String phonenumber,
|
|
|
String status) throws CustomException {
|
|
|
try {
|
|
|
- Integer cp;
|
|
|
- if (StringUtils.isNotEmpty(currentPage)) {
|
|
|
- if (NumberUtil.isInteger(currentPage)) {
|
|
|
- cp = Integer.parseInt(currentPage);
|
|
|
- } else {
|
|
|
- return ResponseVO.fail("currentPage不是整数!");
|
|
|
- }
|
|
|
- } else {
|
|
|
- return ResponseVO.fail("currentPage不能是空!");
|
|
|
- }
|
|
|
-
|
|
|
- Integer ps;
|
|
|
- if (StringUtils.isNotEmpty(pageSize)) {
|
|
|
- if (NumberUtil.isInteger(pageSize)) {
|
|
|
- ps = Integer.parseInt(pageSize);
|
|
|
- } else {
|
|
|
- return ResponseVO.fail("pageSize不是整数!");
|
|
|
- }
|
|
|
- } else {
|
|
|
- return ResponseVO.fail("pageSize不能是空!");
|
|
|
- }
|
|
|
-
|
|
|
if (StringUtils.isNotEmpty(username)) {
|
|
|
if (username.length() > 20) {
|
|
|
return ResponseVO.fail("用户账号长度不能超过20个字符!");
|
|
@@ -95,90 +78,30 @@ public class SysUserController {
|
|
|
return ResponseVO.fail("手机号码长度不能超过11个字符!");
|
|
|
}
|
|
|
}
|
|
|
- QueryWrapper<SysUser> wrapper = new QueryWrapper<>();
|
|
|
+
|
|
|
+ // 查询全部
|
|
|
+ List<SysUser> sysUserList = sysUserService.queryAllUserByDecrypt();
|
|
|
+
|
|
|
+ // 根据查询条件过滤结果
|
|
|
if (StringUtils.isNotEmpty(username)) {
|
|
|
- wrapper.eq("username", username);
|
|
|
+ sysUserList = sysUserList.stream().filter(user -> username.equals(user.getUsername())).collect(Collectors.toList());
|
|
|
}
|
|
|
if (StringUtils.isNotEmpty(phonenumber)) {
|
|
|
- wrapper.eq("AES_DECRYPT(UNHEX(phonenumber), '" + new String(AesUtils.key) + "')", phonenumber);
|
|
|
+ sysUserList = sysUserList.stream().filter(user -> phonenumber.equals(user.getPhonenumber())).collect(Collectors.toList());
|
|
|
}
|
|
|
if (StringUtils.isNotEmpty(status)) {
|
|
|
- wrapper.eq("status", status);
|
|
|
+ sysUserList = sysUserList.stream().filter(user -> status.equals(user.getStatus())).collect(Collectors.toList());
|
|
|
}
|
|
|
|
|
|
SysRole sysRole = sysRoleService.selectRoleListByUserId();
|
|
|
- if ("YWGL".equals(sysRole.getRoleKey())) {
|
|
|
+ if ("YWGL".equals(sysRole.getRoleKey())){
|
|
|
// 业务管理员员
|
|
|
- wrapper.eq("usertype", "1");
|
|
|
- }
|
|
|
-
|
|
|
- Page<SysUser> result = sysUserService.page(new Page<>(cp, ps), wrapper);
|
|
|
- List<SysUser> records = result.getRecords();
|
|
|
- //遍历对象数组的方法
|
|
|
- records.forEach(
|
|
|
- record -> {
|
|
|
- record.setMailbox(AesUtils.decryptStr(record.getMailbox()));
|
|
|
- record.setPhonenumber(AesUtils.decryptStr(record.getPhonenumber()));
|
|
|
- record.setNickname(AesUtils.decryptStr(record.getNickname()));
|
|
|
- record.setIdcard(AesUtils.decryptStr(record.getIdcard()));
|
|
|
- }
|
|
|
- );
|
|
|
- return ResponseVO.success(result);
|
|
|
- } catch (Exception e) {
|
|
|
- throw new CustomException("获取所有用户异常", e);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 获取用户分页信息(查询在线用户使用 其中屏蔽了状态为注销的用户)
|
|
|
- *
|
|
|
- * @return 用户信息
|
|
|
- */
|
|
|
- @GetMapping(value = "/getUserByHealthy")
|
|
|
- @PreAuthorize("@ss.hasPermi('monitor:onLine:list')")
|
|
|
- @PreventReplay
|
|
|
- public ResponseVO getUserByHealthy(String currentPage, String pageSize, String onLineStatus) throws CustomException {
|
|
|
- try {
|
|
|
- Integer cp;
|
|
|
- if (StringUtils.isNotEmpty(currentPage)) {
|
|
|
- if (NumberUtil.isInteger(currentPage)) {
|
|
|
- cp = Integer.parseInt(currentPage);
|
|
|
- } else {
|
|
|
- return ResponseVO.fail("currentPage不是整数!");
|
|
|
- }
|
|
|
- } else {
|
|
|
- return ResponseVO.fail("currentPage不能是空!");
|
|
|
+ sysUserList = sysUserList.stream().filter(user -> "1".equals(user.getUsertype())).collect(Collectors.toList());
|
|
|
}
|
|
|
|
|
|
- Integer ps;
|
|
|
- if (StringUtils.isNotEmpty(pageSize)) {
|
|
|
- if (NumberUtil.isInteger(pageSize)) {
|
|
|
- ps = Integer.parseInt(pageSize);
|
|
|
- } else {
|
|
|
- return ResponseVO.fail("pageSize不是整数!");
|
|
|
- }
|
|
|
- } else {
|
|
|
- return ResponseVO.fail("pageSize不能是空!");
|
|
|
- }
|
|
|
- QueryWrapper<SysUser> wrapper = new QueryWrapper<>();
|
|
|
- wrapper.ne("status", "2");
|
|
|
- if (StringUtils.isNotEmpty(onLineStatus)) {
|
|
|
- wrapper.eq("online_status", onLineStatus);
|
|
|
- }
|
|
|
- Page<SysUser> result = sysUserService.page(new Page<>(cp, ps), wrapper);
|
|
|
- List<SysUser> records = result.getRecords();
|
|
|
- //遍历对象数组的方法
|
|
|
- records.forEach(
|
|
|
- record -> {
|
|
|
- record.setMailbox(AesUtils.decryptStr(record.getMailbox()));
|
|
|
- record.setPhonenumber(AesUtils.decryptStr(record.getPhonenumber()));
|
|
|
- record.setNickname(AesUtils.decryptStr(record.getNickname()));
|
|
|
- record.setIdcard(AesUtils.decryptStr(record.getIdcard()));
|
|
|
- }
|
|
|
- );
|
|
|
- return ResponseVO.success(result);
|
|
|
+ return ResponseVO.success(sysUserList);
|
|
|
} catch (Exception e) {
|
|
|
- throw new CustomException("获取用户异常", e);
|
|
|
+ throw new CustomException("获取所有用户异常", e);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -194,9 +117,9 @@ public class SysUserController {
|
|
|
// 权限集合
|
|
|
Set<String> permissions = sysPermissionService.getMenuPermission(sysUser.getId());
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
- sysUser.setMailbox(AesUtils.decryptStr(sysUser.getMailbox()));
|
|
|
- sysUser.setPhonenumber(AesUtils.decryptStr(sysUser.getPhonenumber()));
|
|
|
- sysUser.setNickname(AesUtils.decryptStr(sysUser.getNickname()));
|
|
|
+ sysUser.setMailbox(SM2CryptUtils.decrypt(sysUser.getMailbox(), SecretKeyConstants.SERVER_PRIVATE_KEY));
|
|
|
+ sysUser.setPhonenumber(SM2CryptUtils.decrypt(sysUser.getPhonenumber(), SecretKeyConstants.SERVER_PRIVATE_KEY));
|
|
|
+ sysUser.setNickname(SM2CryptUtils.decrypt(sysUser.getNickname(), SecretKeyConstants.SERVER_PRIVATE_KEY));
|
|
|
map.put("sysUser", sysUser);
|
|
|
map.put("permissions", permissions);
|
|
|
return ResponseVO.success(map);
|
|
@@ -214,28 +137,29 @@ public class SysUserController {
|
|
|
@PreventReplay
|
|
|
public ResponseVO addUser(@RequestBody SysUser user) throws CustomException {
|
|
|
try {
|
|
|
+ String username="";
|
|
|
+ SysApprove sysApprove = new SysApprove();
|
|
|
if (StringUtils.isEmpty(user.getUsername()) || StringUtils.isEmpty(user.getUsername().trim())) {
|
|
|
return ResponseVO.fail("用户账号不能为空!");
|
|
|
- } else {
|
|
|
- String username = user.getUsername().trim();
|
|
|
- if (username.contains(" ")) {
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ username = user.getUsername().trim();
|
|
|
+ if (username.contains(" ")){
|
|
|
return ResponseVO.fail("账号中不能含有空格!");
|
|
|
}
|
|
|
- if (sysUserService.queryUserName(username) != null) {
|
|
|
- return ResponseVO.fail(username + "账号已存在!");
|
|
|
- } else {
|
|
|
- String regExp = "^[^0-9][\\w_]{4,19}$";
|
|
|
- if (!username.matches(regExp)) {
|
|
|
- return ResponseVO.fail("用户账号长度必须是5-20位,只能包含字母、数字和下划线,不能数字开头!");
|
|
|
- }
|
|
|
+
|
|
|
+ String regExp = "^[^0-9][\\w_]{4,19}$";
|
|
|
+ if (!username.matches(regExp)) {
|
|
|
+ return ResponseVO.fail("用户账号长度必须是5-20位,只能包含字母、数字和下划线,不能数字开头!");
|
|
|
}
|
|
|
+ sysApprove.setUsername(username);
|
|
|
}
|
|
|
|
|
|
if (!IdcardUtil.isValidCard(user.getIdcard())) {
|
|
|
return ResponseVO.fail("身份证无效!");
|
|
|
}
|
|
|
- // 加密邮箱
|
|
|
- user.setIdcard(AesUtils.encryptHex(user.getIdcard()).toUpperCase());
|
|
|
+ // sm2加密身份证
|
|
|
+ sysApprove.setIdcard(SM2CryptUtils.encrypt(user.getIdcard(), SecretKeyConstants.SERVER_PUBLIC_KEY));
|
|
|
|
|
|
if (StringUtils.isEmpty(user.getPhonenumber())) {
|
|
|
return ResponseVO.fail("手机号码不能为空!");
|
|
@@ -243,7 +167,7 @@ public class SysUserController {
|
|
|
return ResponseVO.fail("请输入正确的手机号码!");
|
|
|
}
|
|
|
// 加密手机号
|
|
|
- user.setPhonenumber(AesUtils.encryptHex(user.getPhonenumber()).toUpperCase());
|
|
|
+ sysApprove.setPhonenumber(SM2CryptUtils.encrypt(user.getPhonenumber(), SecretKeyConstants.SERVER_PUBLIC_KEY));
|
|
|
|
|
|
if (StringUtils.isEmpty(user.getNickname()) || StringUtils.isEmpty(user.getNickname().trim())) {
|
|
|
return ResponseVO.fail("姓名不能为空!");
|
|
@@ -253,7 +177,7 @@ public class SysUserController {
|
|
|
return ResponseVO.fail("姓名长度不能超过30个字符!");
|
|
|
}
|
|
|
// 加密姓名
|
|
|
- user.setNickname(AesUtils.encryptHex(nickName).toUpperCase());
|
|
|
+ sysApprove.setNickname(SM2CryptUtils.encrypt(nickName, SecretKeyConstants.SERVER_PUBLIC_KEY));
|
|
|
}
|
|
|
|
|
|
if (StringUtils.isEmpty(user.getMailbox())) {
|
|
@@ -264,23 +188,61 @@ public class SysUserController {
|
|
|
return ResponseVO.fail("邮箱长度不能超过50个字符!");
|
|
|
}
|
|
|
// 加密邮箱
|
|
|
- user.setMailbox(AesUtils.encryptHex(user.getMailbox()).toUpperCase());
|
|
|
+ sysApprove.setMailbox(SM2CryptUtils.encrypt(user.getMailbox(), SecretKeyConstants.SERVER_PUBLIC_KEY));
|
|
|
|
|
|
- if (user.getExpDate() != null) {
|
|
|
+ if (user.getExpDate()!=null){
|
|
|
// 判断临时账号有效期不能超过30天
|
|
|
Calendar calendar = Calendar.getInstance();
|
|
|
// 将当前日期增加30天
|
|
|
calendar.add(Calendar.DAY_OF_MONTH, 29);
|
|
|
// 获取增加30天后的日期
|
|
|
Date endDate = calendar.getTime();
|
|
|
- if (!user.getExpDate().before(endDate)) {
|
|
|
+ if (!user.getExpDate().before(endDate)){
|
|
|
return ResponseVO.fail("账号有效期不能超过30天!");
|
|
|
}
|
|
|
+ sysApprove.setExpDate(user.getExpDate());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 新增时先判断审批表里待审批-新增中是否存在相同账号、身份证
|
|
|
+ QueryWrapper<SysApprove> wrapper = new QueryWrapper<>();
|
|
|
+ // 新增操作类型
|
|
|
+ wrapper.eq("operation", "0");
|
|
|
+ // 待审批
|
|
|
+ wrapper.eq("approve_status", "0");
|
|
|
+ List<SysApprove> sysApproveList = sysApproveService.list(wrapper);
|
|
|
+ for (SysApprove sysApprove1:sysApproveList){
|
|
|
+ String approveUsername = sysApprove1.getUsername();
|
|
|
+ String approveIdcard = SM2CryptUtils.decrypt(sysApprove1.getIdcard(), SecretKeyConstants.SERVER_PRIVATE_KEY);
|
|
|
+ if (username.equals(approveUsername)){
|
|
|
+ return ResponseVO.fail("账号"+username + "在待审批,不能再次新增!");
|
|
|
+ }
|
|
|
+ if (user.getIdcard().equals(approveIdcard)){
|
|
|
+ return ResponseVO.fail("身份证"+user.getIdcard() + "在待审批中,不能再次新增!");
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- boolean bo = sysUserService.save(user);
|
|
|
+ List<SysUser> sysUserList = sysUserService.queryAllUserByDecrypt();
|
|
|
+ for (SysUser sysUser:sysUserList){
|
|
|
+ if (username.equals(sysUser.getUsername())){
|
|
|
+ return ResponseVO.fail("账号"+username + "存在,不能再次新增!");
|
|
|
+ }
|
|
|
+ if (user.getIdcard().equals(sysUser.getIdcard())){
|
|
|
+ return ResponseVO.fail("身份证"+user.getIdcard() + "存在,不能再次新增!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ sysApprove.setUsertype(user.getUsertype());
|
|
|
+ sysApprove.setStatus("0");
|
|
|
+
|
|
|
+ // 用户新增插入审批表
|
|
|
+ sysApprove.setModuleName(ApproveConstants.MODULE_NAME_USER);
|
|
|
+ sysApprove.setOperation(String.valueOf(ApproveOperaterEnum.INSERT.getCode()));
|
|
|
+ sysApprove.setApproveStatus(String.valueOf(ApproveStatusEnum.DSP.getCode()));
|
|
|
+ sysApprove.setEntityName("SysUser");
|
|
|
+
|
|
|
+ boolean bo = sysApproveService.save(sysApprove);
|
|
|
if (bo) {
|
|
|
- return ResponseVO.success("添加用户信息成功");
|
|
|
+ return ResponseVO.success("添加用户信息成功,请联系审核管理员进行审核!");
|
|
|
} else {
|
|
|
log.error("添加用户信息失败");
|
|
|
return ResponseVO.fail("添加用户信息失败");
|
|
@@ -297,6 +259,7 @@ public class SysUserController {
|
|
|
* @return 执行结果
|
|
|
*/
|
|
|
@PostMapping(value = "/updateUser")
|
|
|
+ @AgainVerify
|
|
|
@OperateLog(title = "用户管理", businessType = BusinessType.UPDATE, auditType = AuditType.SYS)
|
|
|
@PreAuthorize("@ss.hasPermi('system:user:edit')")
|
|
|
@PreventReplay
|
|
@@ -319,29 +282,27 @@ public class SysUserController {
|
|
|
if (list.size() > 0) {
|
|
|
return ResponseVO.fail("此记录存在未审批的操作,不能进行修改!");
|
|
|
}
|
|
|
-
|
|
|
+ String username = "";
|
|
|
+ SysApprove sysApprove = new SysApprove();
|
|
|
if (StringUtils.isEmpty(user.getUsername()) || StringUtils.isEmpty(user.getUsername().trim())) {
|
|
|
return ResponseVO.fail("用户账号不能为空!");
|
|
|
- } else {
|
|
|
- String username = user.getUsername().trim();
|
|
|
- if (username.contains(" ")) {
|
|
|
+ } else{
|
|
|
+ username = user.getUsername().trim();
|
|
|
+ if (username.contains(" ")){
|
|
|
return ResponseVO.fail("账号中不能含有空格!");
|
|
|
}
|
|
|
String regExp = "^[^0-9][\\w_]{4,19}$";
|
|
|
- if (!username.matches(regExp)) {
|
|
|
+ if (!username.matches(regExp)){
|
|
|
return ResponseVO.fail("用户账号长度必须是5-20位,只能包含字母、数字和下划线,不能数字开头!");
|
|
|
- } else if (!existUser.getUsername().equals(username)) {
|
|
|
- if (sysUserService.queryUserName(username) != null) {
|
|
|
- return ResponseVO.fail(username + "账号已存在!");
|
|
|
- }
|
|
|
}
|
|
|
+ sysApprove.setUsername(username);
|
|
|
}
|
|
|
|
|
|
if (!IdcardUtil.isValidCard(user.getIdcard())) {
|
|
|
return ResponseVO.fail("身份证无效!");
|
|
|
}
|
|
|
- // 加密邮箱
|
|
|
- user.setIdcard(AesUtils.encryptHex(user.getIdcard()).toUpperCase());
|
|
|
+ // sm2加密身份证
|
|
|
+ sysApprove.setIdcard(SM2CryptUtils.encrypt(user.getIdcard(), SecretKeyConstants.SERVER_PUBLIC_KEY));
|
|
|
|
|
|
if (StringUtils.isEmpty(user.getMailbox())) {
|
|
|
return ResponseVO.fail("邮箱不能为空!");
|
|
@@ -351,7 +312,7 @@ public class SysUserController {
|
|
|
return ResponseVO.fail("邮箱长度不能超过50个字符!");
|
|
|
}
|
|
|
// 加密邮箱
|
|
|
- user.setMailbox(AesUtils.encryptHex(user.getMailbox()).toUpperCase());
|
|
|
+ sysApprove.setMailbox(SM2CryptUtils.encrypt(user.getMailbox(), SecretKeyConstants.SERVER_PUBLIC_KEY));
|
|
|
|
|
|
if (StringUtils.isEmpty(user.getPhonenumber())) {
|
|
|
return ResponseVO.fail("手机号码不能为空!");
|
|
@@ -359,7 +320,7 @@ public class SysUserController {
|
|
|
return ResponseVO.fail("请输入正确的手机号码!");
|
|
|
}
|
|
|
// 加密手机号
|
|
|
- user.setPhonenumber(AesUtils.encryptHex(user.getPhonenumber()).toUpperCase());
|
|
|
+ sysApprove.setPhonenumber(SM2CryptUtils.encrypt(user.getPhonenumber(), SecretKeyConstants.SERVER_PUBLIC_KEY));
|
|
|
|
|
|
if (StringUtils.isEmpty(user.getNickname()) || StringUtils.isEmpty(user.getNickname().trim())) {
|
|
|
return ResponseVO.fail("姓名不能为空!");
|
|
@@ -369,31 +330,40 @@ public class SysUserController {
|
|
|
return ResponseVO.fail("姓名长度不能超过30个字符!");
|
|
|
}
|
|
|
// 加密姓名
|
|
|
- user.setNickname(AesUtils.encryptHex(nickName).toUpperCase());
|
|
|
- }
|
|
|
-
|
|
|
- if ("0".equals(user.getStatus())) {
|
|
|
- user.setErrNum(0);
|
|
|
- user.setLockTime(0L);
|
|
|
+ sysApprove.setNickname(SM2CryptUtils.encrypt(nickName, SecretKeyConstants.SERVER_PUBLIC_KEY));
|
|
|
}
|
|
|
|
|
|
- if (user.getExpDate() == null) {
|
|
|
+ if (user.getExpDate()==null) {
|
|
|
user.setExpDate(null);
|
|
|
- } else {
|
|
|
+ }
|
|
|
+ else{
|
|
|
// 判断临时账号有效期不能超过30天
|
|
|
Calendar calendar = Calendar.getInstance();
|
|
|
// 将当前日期增加30天
|
|
|
calendar.add(Calendar.DAY_OF_MONTH, 29);
|
|
|
// 获取增加30天后的日期
|
|
|
Date endDate = calendar.getTime();
|
|
|
- if (!user.getExpDate().before(endDate)) {
|
|
|
+ if (!user.getExpDate().before(endDate)){
|
|
|
return ResponseVO.fail("账号有效期不能超过30天!");
|
|
|
}
|
|
|
- }
|
|
|
-
|
|
|
- boolean bo = sysUserService.updateUser(user);
|
|
|
+ sysApprove.setExpDate(user.getExpDate());
|
|
|
+ }
|
|
|
+
|
|
|
+ sysApprove.setUsertype(user.getUsertype());
|
|
|
+ sysApprove.setStatus(user.getStatus());
|
|
|
+ sysApprove.setMasterId(String.valueOf(user.getId()));
|
|
|
+ // 将修改前信息存入
|
|
|
+ sysApprove.setParameterContent(JSONUtil.parse(existUser).toString());
|
|
|
+ // 用户新增插入审批表
|
|
|
+ sysApprove.setModuleName(ApproveConstants.MODULE_NAME_USER);
|
|
|
+ sysApprove.setOperation(String.valueOf(ApproveOperaterEnum.UPDATE.getCode()));
|
|
|
+ sysApprove.setApproveStatus(String.valueOf(ApproveStatusEnum.DSP.getCode()));
|
|
|
+ sysApprove.setEntityName("SysUser");
|
|
|
+
|
|
|
+ // 更改用户表signstr为1
|
|
|
+ boolean bo = sysUserService.addUserByApprove(user.getId(),sysApprove);
|
|
|
if (bo) {
|
|
|
- return ResponseVO.success("修改用户信息成功");
|
|
|
+ return ResponseVO.success("修改用户信息成功,等待审核管理员进行审核!");
|
|
|
} else {
|
|
|
log.error("修改用户信息失败");
|
|
|
return ResponseVO.fail("修改用户信息失败");
|
|
@@ -424,7 +394,7 @@ public class SysUserController {
|
|
|
wrapper.eq("entity_name", "SysUser");
|
|
|
List<SysApprove> list = sysApproveService.list(wrapper);
|
|
|
if (list.size() > 0) {
|
|
|
- return ResponseVO.fail("此记录存在未审批的操作,不能进行修改!");
|
|
|
+ return ResponseVO.fail("此记录存在未审批的操作,不能初始/重置密码!");
|
|
|
}
|
|
|
// id获取用户
|
|
|
SysUser sysUser = sysUserService.getById(id);
|
|
@@ -434,19 +404,20 @@ public class SysUserController {
|
|
|
|
|
|
SysPolicy sysPolicy = sysPolicyService.getOne(new QueryWrapper<>());
|
|
|
// 生成8位初始密码
|
|
|
- String randomPwd = RandomRulePwd.createPwd(sysPolicy.getPasswordRule(), 8);
|
|
|
- log.info("用户名:" + sysUser.getUsername() + " 初始/重置密码:" + randomPwd);
|
|
|
- // 加密密码
|
|
|
+ String randomPwd = RandomRulePwd.createPwd(sysPolicy.getPasswordRule(),8);
|
|
|
+ log.info("发送邮箱重置密码后台输出======> 用户名:"+sysUser.getUsername()+" 初始/重置密码:"+randomPwd);
|
|
|
+ // SM3加密密码
|
|
|
String sm3password = SmUtil.sm3(randomPwd).toUpperCase();
|
|
|
- // 签名
|
|
|
- String signstr = SmUtil.sm3(sm3password).toUpperCase();
|
|
|
- boolean bo = sysUserService.resetPassword(Integer.parseInt(id), sm3password, signstr);
|
|
|
+ // 再对密码sm2
|
|
|
+ String sm2password = SM2CryptUtils.encrypt(sm3password,SecretKeyConstants.SERVER_PUBLIC_KEY);
|
|
|
+
|
|
|
+ boolean bo = sysUserService.resetPassword(Integer.parseInt(id), sm2password);
|
|
|
if (!bo) {
|
|
|
return ResponseVO.fail("密码生成失败!");
|
|
|
}
|
|
|
try {
|
|
|
- String[] mailArray = {AesUtils.decryptStr(sysUser.getMailbox())};
|
|
|
- sendMailUtil.executeSendMail(mailArray, "系统登录密码", "密码:" + randomPwd);
|
|
|
+// String[] mailArray = {AesUtils.decryptStr(sysUser.getMailbox())};
|
|
|
+// sendMailUtil.executeSendMail(mailArray, "系统登录密码", "密码:" + randomPwd);
|
|
|
} catch (Exception e) {
|
|
|
// log.error("用户名:"+sysUser.getUsername()+",邮箱验证码发送失败!",e);
|
|
|
return ResponseVO.fail("发送邮箱失败");
|
|
@@ -531,15 +502,13 @@ public class SysUserController {
|
|
|
return ResponseVO.fail("找不到用户,修改密码失败!");
|
|
|
}
|
|
|
|
|
|
- if (newPassword == null || newPassword.length() < 8 || newPassword.length() > 20) {
|
|
|
+ if (newPassword == null) {
|
|
|
// 返回密码长度问题
|
|
|
return ResponseVO.fail("密码长度需要8~20位之间!");
|
|
|
}
|
|
|
|
|
|
if (StringUtils.isEmpty(oldPassword)) {
|
|
|
return ResponseVO.fail("旧密码不能为空!");
|
|
|
- } else if (!(sysUser.getPassword().equals(SmUtil.sm3(oldPassword).toUpperCase()) && sysUser.getSignstr().equals(SmUtil.sm3(sysUser.getPassword()).toUpperCase()))) {
|
|
|
- return ResponseVO.fail("旧密码不正确或验签失败!");
|
|
|
}
|
|
|
|
|
|
if (StringUtils.isEmpty(newPassword)) {
|
|
@@ -550,7 +519,7 @@ public class SysUserController {
|
|
|
return ResponseVO.fail("新密码两次输入的密码不一致!");
|
|
|
}
|
|
|
|
|
|
- if (newPassword.contains(" ")) {
|
|
|
+ if (newPassword.contains(" ")){
|
|
|
return ResponseVO.fail("新密码中不能含有空格!");
|
|
|
}
|
|
|
|
|
@@ -563,15 +532,16 @@ public class SysUserController {
|
|
|
}
|
|
|
|
|
|
SysPolicy sysPolicy = sysPolicyService.getOne(new QueryWrapper<>());
|
|
|
- String ruleInfo = PasswordRuleUtil.ruleRegx(sysPolicy.getPasswordRule(), newPassword);
|
|
|
- if (!"true".equals(ruleInfo)) {
|
|
|
+ String ruleInfo = PasswordRuleUtil.ruleRegx(sysPolicy.getPasswordRule(),newPassword);
|
|
|
+ if (!"true".equals(ruleInfo)){
|
|
|
return ResponseVO.fail(ruleInfo);
|
|
|
}
|
|
|
|
|
|
// 新密码加密
|
|
|
String sm3newpwd = SmUtil.sm3(newPassword).toUpperCase();
|
|
|
- sysUser.setPassword(sm3newpwd);
|
|
|
- sysUser.setSignstr(SmUtil.sm3(sm3newpwd).toUpperCase());
|
|
|
+ // 再次sm2加密
|
|
|
+ String sm2password = SM2CryptUtils.encrypt(sm3newpwd,SecretKeyConstants.SERVER_PUBLIC_KEY);
|
|
|
+ sysUser.setPassword(sm2password);
|
|
|
sysUser.setLastUpdatePwdTime(new Date());
|
|
|
boolean bo = sysUserService.updateById(sysUser);
|
|
|
if (!bo) {
|
|
@@ -637,26 +607,19 @@ public class SysUserController {
|
|
|
@PreventReplay
|
|
|
public ResponseVO authRole(String userId, String roleId) throws CustomException {
|
|
|
try {
|
|
|
- Long userid;
|
|
|
- if (StringUtils.isNotEmpty(userId)) {
|
|
|
- if (NumberUtil.isLong(userId)) {
|
|
|
- userid = Long.parseLong(userId);
|
|
|
- } else {
|
|
|
- return ResponseVO.fail("用户id不是类型不对!");
|
|
|
- }
|
|
|
- } else {
|
|
|
- return ResponseVO.fail("用户id不能为空!");
|
|
|
+ if (StringUtils.isEmpty(userId)) {
|
|
|
+ return ResponseVO.fail("id不能为空!");
|
|
|
+ }
|
|
|
+ // id获取用户
|
|
|
+ SysUser sysUser = sysUserService.getById(userId);
|
|
|
+ if (sysUser == null) {
|
|
|
+ return ResponseVO.fail("id为空不能授权用户!");
|
|
|
}
|
|
|
|
|
|
- Long roleid;
|
|
|
- if (StringUtils.isNotEmpty(roleId)) {
|
|
|
- if (NumberUtil.isLong(roleId)) {
|
|
|
- roleid = Long.parseLong(roleId);
|
|
|
- } else {
|
|
|
- return ResponseVO.fail("角色id不是类型不对!");
|
|
|
- }
|
|
|
- } else {
|
|
|
- return ResponseVO.fail("角色id不能为空!");
|
|
|
+ // id获取用户
|
|
|
+ SysRole sysRole = sysRoleService.getById(roleId);
|
|
|
+ if (sysRole == null) {
|
|
|
+ return ResponseVO.fail("角色id为空不能授权用户!");
|
|
|
}
|
|
|
|
|
|
// 获取审批表是否存在此操作
|
|
@@ -671,11 +634,30 @@ public class SysUserController {
|
|
|
if (list.size() > 0) {
|
|
|
return ResponseVO.fail("此记录存在未审批的操作,不能进行修改!");
|
|
|
}
|
|
|
- sysUserService.insertUserAuth(userid, roleid);
|
|
|
- return ResponseVO.success("分配角色成功");
|
|
|
+
|
|
|
+ SysApprove sysApprove = new SysApprove();
|
|
|
+ sysApprove.setMasterId(userId);
|
|
|
+ sysApprove.setUsername(sysUser.getUsername());
|
|
|
+ sysApprove.setRoleId(roleId);
|
|
|
+ sysApprove.setParameterContent("授权用户账号:"+sysUser.getUsername()+",分配角色:"+sysRole.getRoleName());
|
|
|
+ // 用户新增插入审批表
|
|
|
+ sysApprove.setModuleName(ApproveConstants.MODULE_NAME_USER);
|
|
|
+ sysApprove.setOperation(String.valueOf(ApproveOperaterEnum.APPROVE.getCode()));
|
|
|
+ sysApprove.setApproveStatus(String.valueOf(ApproveStatusEnum.DSP.getCode()));
|
|
|
+ sysApprove.setEntityName("SysUser");
|
|
|
+
|
|
|
+ // 更改用户表signstr为1
|
|
|
+ boolean bo = sysUserService.addUserByApprove(Long.parseLong(userId),sysApprove);
|
|
|
+ if (bo) {
|
|
|
+ return ResponseVO.success("授权用户信息成功,等待审核管理员进行审核!");
|
|
|
+ } else {
|
|
|
+ log.error("授权用户信息失败");
|
|
|
+ return ResponseVO.fail("授权用户信息失败");
|
|
|
+ }
|
|
|
} catch (Exception e) {
|
|
|
throw new CustomException("分配角色异常", e);
|
|
|
}
|
|
|
+// return ResponseVO.success("分配角色成功");
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -712,11 +694,69 @@ public class SysUserController {
|
|
|
SysUser sysUser = SecurityContextUtil.getSysUser();
|
|
|
String upwd = CacheConstants.usernamePasswordMap.get(sysUser.getUsername());
|
|
|
SysPolicy sysPolicy = sysPolicyService.getOne(new QueryWrapper<>());
|
|
|
- String ruleInfo = PasswordRuleUtil.ruleRegx(sysPolicy.getPasswordRule(), upwd);
|
|
|
+ String ruleInfo = PasswordRuleUtil.ruleRegx(sysPolicy.getPasswordRule(),upwd);
|
|
|
return ResponseVO.success(ruleInfo);
|
|
|
} catch (Exception e) {
|
|
|
throw new CustomException("检测用户密码是否符合规则异常", e);
|
|
|
}
|
|
|
}
|
|
|
+ /**
|
|
|
+ * 注销用户信息
|
|
|
+ */
|
|
|
+ @PostMapping(value = "/logOffUser")
|
|
|
+ @AgainVerify
|
|
|
+ @OperateLog(title = "用户管理", businessType = BusinessType.DELETE, auditType = AuditType.SYS)
|
|
|
+ @PreAuthorize("@ss.hasPermi('system:user:logoff')")
|
|
|
+ @PreventReplay
|
|
|
+ public ResponseVO logOffUser(String id) throws CustomException {
|
|
|
+ try {
|
|
|
+ if (StringUtils.isEmpty(id)) {
|
|
|
+ return ResponseVO.fail("id不能为空!");
|
|
|
+ }
|
|
|
+ // id获取用户
|
|
|
+ SysUser sysUser = sysUserService.getById(id);
|
|
|
+ if (sysUser == null) {
|
|
|
+ return ResponseVO.fail("id为空不能删除用户!");
|
|
|
+ }
|
|
|
|
|
|
+ // 获取审批表是否存在此操作
|
|
|
+ QueryWrapper<SysApprove> wrapper = new QueryWrapper<>();
|
|
|
+ // 条件:待审批
|
|
|
+ wrapper.eq("approve_status", ApproveStatusEnum.DSP.getCode());
|
|
|
+ // 条件:删除操作
|
|
|
+ wrapper.eq("master_id", id);
|
|
|
+ // 条件:实体名
|
|
|
+ wrapper.eq("entity_name", "SysUser");
|
|
|
+ List<SysApprove> list = sysApproveService.list(wrapper);
|
|
|
+ if (list.size() > 0) {
|
|
|
+ return ResponseVO.fail("此记录存在未审批的操作,不能注销!");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 根据id改变状态为注销,提交到审核
|
|
|
+ SysApprove sysApprove = new SysApprove();
|
|
|
+ sysApprove.setUsername(sysUser.getUsername());
|
|
|
+ sysApprove.setNickname(sysUser.getNickname());
|
|
|
+ sysApprove.setIdcard(sysUser.getIdcard());
|
|
|
+ sysApprove.setMailbox(sysUser.getMailbox());
|
|
|
+ sysApprove.setPhonenumber(sysUser.getPhonenumber());
|
|
|
+ sysApprove.setUsertype(sysUser.getUsertype());
|
|
|
+ sysApprove.setStatus(sysUser.getStatus());
|
|
|
+ sysApprove.setMasterId(String.valueOf(sysUser.getId()));
|
|
|
+ sysApprove.setParameterContent(JSONUtil.parse(sysUser).toString());
|
|
|
+ // 用户新增插入审批表
|
|
|
+ sysApprove.setModuleName(ApproveConstants.MODULE_NAME_USER);
|
|
|
+ sysApprove.setOperation(String.valueOf(ApproveOperaterEnum.DELETE.getCode()));
|
|
|
+ sysApprove.setApproveStatus(String.valueOf(ApproveStatusEnum.DSP.getCode()));
|
|
|
+ sysApprove.setEntityName("SysUser");
|
|
|
+ boolean bo = sysUserService.addUserByApprove(Long.parseLong(id),sysApprove);
|
|
|
+ if (bo) {
|
|
|
+ return ResponseVO.success("注销用户成功,等待审核管理员进行审核!");
|
|
|
+ } else {
|
|
|
+ log.error("注销用户失败");
|
|
|
+ return ResponseVO.fail("注销用户失败");
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ throw new CustomException("注销用户异常", e);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|