feat(auth): 新增用户权限管理模块

- 新增权限、角色、用户角色关联等数据对象及Mapper
- 实现权限数据同步至Redis的功能
- 新增用户登录与注册接口,支持验证码登录
- 完善全局异常处理,增加对Guava参数校验异常的捕获
- 修改用户DO字段类型,使用LocalDate与LocalDateTime替代Date
- 新增删除状态枚举类DeletedEnum和状态枚举类StatusEnum
- 调整响应码结构,区分邮件相关错误码
- 新增RedisKeyConstants中关于用户角色与角色权限的KEY构建方法
- 新增RoleConstants定义普通用户角色ID常量
This commit is contained in:
Hanserwei
2025-10-01 20:50:36 +08:00
parent 32562dbb67
commit eb9f887ac3
24 changed files with 851 additions and 12 deletions

View File

@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hanserwei.hannote.auth.domain.mapper.PermissionDOMapper">
<resultMap id="BaseResultMap" type="com.hanserwei.hannote.auth.domain.dataobject.PermissionDO">
<!--@mbg.generated-->
<!--@Table t_permission-->
<id column="id" jdbcType="BIGINT" property="id" />
<result column="parent_id" jdbcType="BIGINT" property="parentId" />
<result column="name" jdbcType="VARCHAR" property="name" />
<result column="type" jdbcType="TINYINT" property="type" />
<result column="menu_url" jdbcType="VARCHAR" property="menuUrl" />
<result column="menu_icon" jdbcType="VARCHAR" property="menuIcon" />
<result column="sort" jdbcType="INTEGER" property="sort" />
<result column="permission_key" jdbcType="VARCHAR" property="permissionKey" />
<result column="status" jdbcType="TINYINT" property="status" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
<result column="is_deleted" jdbcType="BIT" property="isDeleted" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
id, parent_id, `name`, `type`, menu_url, menu_icon, sort, permission_key, `status`,
create_time, update_time, is_deleted
</sql>
<select id="selectAppEnabledList" resultMap="BaseResultMap">
select id, name, permission_key
from t_permission
where status = 0
and type = 3
and is_deleted = 0
</select>
</mapper>

View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hanserwei.hannote.auth.domain.mapper.RoleDOMapper">
<resultMap id="BaseResultMap" type="com.hanserwei.hannote.auth.domain.dataobject.RoleDO">
<!--@mbg.generated-->
<!--@Table t_role-->
<id column="id" jdbcType="BIGINT" property="id" />
<result column="role_name" jdbcType="VARCHAR" property="roleName" />
<result column="role_key" jdbcType="VARCHAR" property="roleKey" />
<result column="status" jdbcType="TINYINT" property="status" />
<result column="sort" jdbcType="INTEGER" property="sort" />
<result column="remark" jdbcType="VARCHAR" property="remark" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
<result column="is_deleted" jdbcType="BIT" property="isDeleted" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
id, role_name, role_key, `status`, sort, remark, create_time, update_time, is_deleted
</sql>
<select id="selectEnabledList" resultMap="BaseResultMap">
select id, role_key, role_name
from t_role
where status = 0
and is_deleted = 0;
</select>
</mapper>

View File

@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hanserwei.hannote.auth.domain.mapper.RolePermissionDOMapper">
<resultMap id="BaseResultMap" type="com.hanserwei.hannote.auth.domain.dataobject.RolePermissionDO">
<!--@mbg.generated-->
<!--@Table t_role_permission_rel-->
<id column="id" jdbcType="BIGINT" property="id" />
<result column="role_id" jdbcType="BIGINT" property="roleId" />
<result column="permission_id" jdbcType="BIGINT" property="permissionId" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
<result column="is_deleted" jdbcType="BIT" property="isDeleted" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
id, role_id, permission_id, create_time, update_time, is_deleted
</sql>
<select id="selectByRoleIds" resultMap="BaseResultMap">
select role_id, permission_id
from t_role_permission_rel
where role_id in
<foreach collection="roleIds" item="roleId" separator="," open="(" close=")">
#{roleId}
</foreach>
</select>
</mapper>

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hanserwei.hannote.auth.domain.mapper.UserRoleDOMapper">
<resultMap id="BaseResultMap" type="com.hanserwei.hannote.auth.domain.dataobject.UserRoleDO">
<!--@mbg.generated-->
<!--@Table t_user_role_rel-->
<id column="id" jdbcType="BIGINT" property="id" />
<result column="user_id" jdbcType="BIGINT" property="userId" />
<result column="role_id" jdbcType="BIGINT" property="roleId" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
<result column="is_deleted" jdbcType="BIT" property="isDeleted" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
id, user_id, role_id, create_time, update_time, is_deleted
</sql>
</mapper>