一、功能概述

用户管理模块基于auth_user表实现全生命周期管理,涵盖新增、修改、删除、注销(离职)、解锁、重置密码等操作,结合登录失败次数限制及账号锁定机制,保障系统账号安全。系统通过statususer_status字段区分账号状态与用户在职状态,实现精细化管理。

二、核心功能说明

(一)新增用户

  1. 操作路径:用户管理页面点击「新增」按钮,填写表单后提交。

  2. 系统自动填充字段

    • user_id:自动生成36位UUID
    • create_date:当前时间戳
    • create_user_id/create_user_name:当前操作用户信息
    • delete_flag:默认0(未删除)
  3. 唯一性校验规则

    • 新增时系统会校验工号、用户名、身份证号的唯一性
    • 若工号已存在,提示“工号已存在,请勿重复添加”
    • 若用户名已存在,提示“用户名已存在,请勿重复添加”
    • 若身份证号对应的用户已存在且不是离职人员,提示“该身份证号对应的用户已存在,并且不是离职人员,请勿重复添加”
    • 二次入职且工号不同时,可添加为新用户
  4. 密码处理

    • 初始密码使用BCryptPasswordEncoder加密存储
    • 默认密码由配置文件中配置 默认密码配置
  5. 状态关联处理

    • 若用户状态设为离职(UserStatusEnum.QUIT.code()),则账号状态自动设为注销(LoginUserStatusEnum.LOGOUT.code()
    • 若未填写离职日期,系统自动填充当前日期为离职日期
    • 非离职状态下,账号状态默认为正常(LoginUserStatusEnum.NORMAL.code()

(二)修改用户

  1. 操作路径:用户列表点击目标用户「修改」按钮,更新表单后保存。

  2. 可修改字段范围

    • 基本信息:real_namenick_nameemailphone_numbersexavatarremark
    • 关联信息:所属部门、所属岗位、绑定角色
    • 状态信息:status(1正常/2禁用)、user_status(1实习/2转正)
  3. 不可修改字段user_iduser_namejob_number(如需变更需删除重建)

  4. 唯一性校验:与新增用户规则相同,但排除当前用户自身记录

  5. 角色分配限制

    • 管理员角色(角色ID为2d0fb4174e9a106140a5793d2598ac00)仅允许adminadmin1用户分配
    • 非超管账号无法为其他用户添加管理员角色,除非该用户已拥有管理员角色
  6. 状态关联处理:与新增用户的状态关联规则一致

(三)删除用户

  1. 操作路径:用户列表点击「删除」按钮,二次确认后执行。
  2. 批量删除:支持选择多个用户进行批量删除操作
  3. 删除反馈:返回删除成功的用户数量

(四)注销-离职处理

  1. 操作路径
    • 单个注销:用户列表点击「注销」按钮
    • 批量注销:选择多个用户后执行批量注销操作
  2. 字段更新规则
    表字段更新值说明
    status4(注销,LoginUserStatusEnum.LOGOUT.code()账号不可登录
    user_status3(离职,UserStatusEnum.QUIT.code()标记离职状态
    dimission_date当前日期自动记录离职时间
  3. 操作反馈:返回注销成功的用户数量

(五)解锁用户

  1. 触发场景:用户连续登录失败次数达阈值后,status自动更新为3(锁定,LoginUserStatusEnum.LOCK.code()),lock_date记录锁定时间。
  2. 操作路径:用户列表筛选status=3的用户,点击「解锁」按钮。
  3. 操作限制
    • 仅对状态为锁定的用户可执行解锁操作
  4. 字段更新
    • status恢复为1(正常,LoginUserStatusEnum.NORMAL.code()
    • 清除Redis中该用户的登录失败次数记录(RedisSecurityConstant.LOGIN_ERROR_NUMBER + ":" + 用户名
  5. 缓存处理:执行解锁操作后会清除UserMapper相关的Ehcache缓存

(六)重置密码

  1. 操作路径:用户列表点击「重置密码」按钮,系统自动生成新密码。
  2. 操作权限:仅管理员可执行此操作
  3. 密码处理
    • 新密码使用BCryptPasswordEncoder加密存储
    • 重置后密码为系统默认密码 默认密码配置
  4. 数据校验:会验证用户ID是否存在,不存在则抛出异常

(七)密码修改(用户自主操作)

  1. 操作路径:用户个人中心或专门的密码修改页面
  2. 输入要求
    • 必须输入原密码、新密码、确认密码
    • 新密码长度须在6-18个字符之间
    • 新密码不能与原密码相同
    • 新密码须与确认密码一致
  3. 验证机制
    • 原密码会与数据库中加密存储的密码进行比对
    • 原密码不正确会抛出异常提示

(八)个人信息修改

  1. 可修改信息:昵称、手机号码、性别、邮箱、头像
  2. 输入限制
    • 用户昵称须1-30个字符
    • 手机号码不能超过11个字符
    • 用户性别为必选项
    • 用户邮箱不能超过50个字符
  3. 头像处理
    • 头像文件会存储到MinIO的AUTH_BUCKET_NAME桶中
    • 存储路径为userHead/工号

(九)禁用/启用用户

  1. 操作路径:用户列表点击「禁用」或「启用」按钮
  2. 状态转换规则
    • 对正常状态(LoginUserStatusEnum.NORMAL.code())的用户执行操作,会将状态改为禁用(LoginUserStatusEnum.FORBIDDEN.code()
    • 对禁用状态的用户执行操作,会将状态改回正常
  3. 操作限制
    • 对锁定、注销状态的用户执行此操作会抛出异常
  4. 数据校验:会验证用户是否存在,不存在则抛出异常

三、状态字段说明

状态类型字段取值对应枚举说明
账号状态status1LoginUserStatusEnum.NORMAL可正常登录及操作
2LoginUserStatusEnum.FORBIDDEN管理员手动设置,不可登录
3LoginUserStatusEnum.LOCK登录失败次数超限,临时不可登录
4LoginUserStatusEnum.LOGOUT离职后账号状态,不可登录
用户状态user_status1UserStatusEnum.INTERNSHIP(实习)标识实习期间
2UserStatusEnum.REGULAR(转正)标识正式员工
3UserStatusEnum.QUIT(离职)标识已离职

四、登录失败锁定机制

  1. 触发规则:用户连续登录失败次数达配置阈值后,系统自动将status更新为3(锁定),并记录lock_date
  2. 解锁方式
    • 自动解锁:锁定时间超过配置时长后,status恢复为1(正常)
    • 手动解锁:管理员执行解锁操作(见本章第五节)
  3. 配置说明:登录失败允许次数及锁定时长的具体设置,参见系统安全配置说明