新用户首次强制修改密码

This commit is contained in:
zjf committed 2026-06-09 16:00:19 +08:00
1 parent 160584d439
commit d60ce3d8ef
2 files changed
+43 -10

No files matched your search

@@ -0,0 +1,32 @@
package com.bsd.pjcloud.admin.api.constant;
import lombok.Getter;
/**
* 用户过期状态
*
* @author zjf
* @date 2023/11/14
*/
public enum UserExpireEnum {
/**
* 正常
*/
NORMAL("0", "未过期"),
/**
* 锁定
*/
EXPIRE("9", "已过期");
@Getter
private final String code;
private final String desc;
UserExpireEnum(String code, String desc) {
this.code = code;
this.desc = desc;
}
}
@@ -34,6 +34,7 @@ import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bsd.pjcloud.admin.api.constant.UserExpireEnum;
import com.bsd.pjcloud.admin.api.constant.UserStaffingTypeEnum;
import com.bsd.pjcloud.admin.api.constant.UserStateEnum;
import com.bsd.pjcloud.admin.api.dto.ForgotPasswordDTO;
@@ -191,6 +192,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
sysUser.setUpdateBy(userDto.getUsername());
sysUser.setPassword(ENCODER.encode(userDto.getPassword()));
sysUser.setPasswordModifyTime(LocalDateTime.now());
sysUser.setPasswordExpireFlag(UserExpireEnum.EXPIRE.getCode());
baseMapper.insert(sysUser);
// 保存用户岗位信息
Optional.ofNullable(userDto.getPost()).ifPresent(posts -> {
@@ -413,6 +415,8 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
if (StrUtil.isNotBlank(userDto.getPassword())) {
sysUser.setPassword(ENCODER.encode(userDto.getPassword()));
sysUser.setPasswordModifyTime(LocalDateTime.now());
sysUser.setPasswordExpireFlag(UserExpireEnum.EXPIRE.getCode());
}
// 判断用户username是否重复
@@ -811,6 +815,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
sysUser.setProcessStatus(TaskCheckStatusEnum.RESULT.getCode());
sysUser.setProcessTime(LocalDateTime.now());
sysUser.setStaffingType(UserStaffingTypeEnum.NONE_STAFFING.getType());
sysUser.setPasswordExpireFlag(UserExpireEnum.EXPIRE.getCode());
// 把用户放到默认部门
Long defaultDeptIdLong = null;
String defaultDeptId = ParamResolver.getStr("DEFAULT_DEPT");
@@ -1003,23 +1008,19 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
if (StrUtil.length(password) < 8 || StrUtil.length(password) > 20) {
return "密码长度需为8-20位";
}
boolean hasUpper = false;
boolean hasLower = false;
boolean hasLetter = false;
boolean hasDigit = false;
boolean hasSpecial = false;
for (char c : password.toCharArray()) {
if (Character.isUpperCase(c)) {
hasUpper = true;
} else if (Character.isLowerCase(c)) {
hasLower = true;
if (Character.isLetter(c)) {
hasLetter = true;
} else if (Character.isDigit(c)) {
hasDigit = true;
} else {
hasSpecial = true;
return "密码只能包含字母和数字";
}
}
if (!(hasUpper && hasLower && hasDigit && hasSpecial)) {
return "密码需包含大写字母、小写字母、数字和特殊字符";
if (!(hasLetter && hasDigit)) {
return "密码需同时包含字母和数字";
}
return null;
}