# Conflicts:
#	tashow-module/pom.xml
This commit is contained in:
2025-05-26 17:33:07 +08:00
parent 6bcdc812d2
commit f12339296a
148 changed files with 6276 additions and 0 deletions

View File

@@ -0,0 +1,10 @@
# Getting Started
### Reference Documentation
For further reference, please consider the following sections:
* [Official Apache Maven documentation](https://maven.apache.org/guides/index.html)
* [Spring Boot Maven Plugin Reference Guide](https://docs.spring.io/spring-boot/docs/2.6.13/maven-plugin/reference/html/)
* [Create an OCI image](https://docs.spring.io/spring-boot/docs/2.6.13/maven-plugin/reference/html/#build-image)

View File

@@ -0,0 +1,54 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>com.tashow.cloud</groupId>
<artifactId>tashow-module-user</artifactId>
<version>${revision}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>tashow-module-user-api</artifactId>
<packaging>jar</packaging>
<name>${project.artifactId}</name>
<description>
system 模块 API暴露给其它模块调用
</description>
<dependencies>
<dependency>
<groupId>com.tashow.cloud</groupId>
<artifactId>tashow-common</artifactId>
</dependency>
<!-- Web 相关 -->
<dependency>
<groupId>org.springdoc</groupId> <!-- 接口文档:使用最新版本的 Swagger 模型 -->
<artifactId>springdoc-openapi-starter-webmvc-api</artifactId>
<scope>provided</scope>
</dependency>
<!-- 参数校验 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
<optional>true</optional>
</dependency>
<!-- RPC 远程调用相关 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-annotation</artifactId>
<version>3.5.9</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>

View File

@@ -0,0 +1,63 @@
package com.tashow.cloud.convert;
import com.tashow.cloud.model.SystemRole;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
/**
* 系统角色对象转换器
*/
@Mapper
public interface SystemRoleConvert {
SystemRoleConvert INSTANCE = Mappers.getMapper(SystemRoleConvert.class);
/**
* 将角色列表转换为角色ID列表
*
* @param roles 角色列表
* @return 角色ID列表
*/
default List<Long> convertToRoleIds(List<SystemRole> roles) {
if (roles == null || roles.isEmpty()) {
return Collections.emptyList();
}
return roles.stream()
.map(SystemRole::getId)
.collect(Collectors.toList());
}
/**
* 将角色列表转换为角色名称列表
*
* @param roles 角色列表
* @return 角色名称列表
*/
default List<String> convertToRoleNames(List<SystemRole> roles) {
if (roles == null || roles.isEmpty()) {
return Collections.emptyList();
}
return roles.stream()
.map(SystemRole::getName)
.collect(Collectors.toList());
}
/**
* 将角色列表转换为角色编码列表
*
* @param roles 角色列表
* @return 角色编码列表
*/
default List<String> convertToRoleCodes(List<SystemRole> roles) {
if (roles == null || roles.isEmpty()) {
return Collections.emptyList();
}
return roles.stream()
.map(SystemRole::getCode)
.collect(Collectors.toList());
}
}

View File

@@ -0,0 +1,92 @@
package com.tashow.cloud.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 系统角色实体类
*/
@Data
@TableName("system_role")
public class SystemRole {
/**
* 角色ID
*/
@TableId(type = IdType.AUTO)
private Long id;
/**
* 角色名称
*/
private String name;
/**
* 角色权限字符串
*/
private String code;
/**
* 显示顺序
*/
private Integer sort;
/**
* 数据范围1全部数据权限 2自定数据权限 3本部门数据权限 4本部门及以下数据权限
*/
private Integer dataScope;
/**
* 数据范围(指定部门数组)
*/
private String dataScopeDeptIds;
/**
* 角色状态0正常 1停用
*/
private Integer status;
/**
* 角色类型
*/
private Integer type;
/**
* 备注
*/
private String remark;
/**
* 创建者
*/
private String creator;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新者
*/
private String updater;
/**
* 更新时间
*/
private LocalDateTime updateTime;
/**
* 是否删除
*/
@TableLogic
private Boolean deleted;
/**
* 租户编号
*/
private Long tenantId;
}

View File

@@ -0,0 +1,62 @@
package com.tashow.cloud.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 角色菜单关联实体类
*/
@Data
@TableName("system_role_menu")
public class SystemRoleMenu {
/**
* 自增编号
*/
@TableId(type = IdType.AUTO)
private Long id;
/**
* 角色ID
*/
private Long roleId;
/**
* 菜单ID
*/
private Long menuId;
/**
* 创建者
*/
private String creator;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新者
*/
private String updater;
/**
* 更新时间
*/
private LocalDateTime updateTime;
/**
* 是否删除
*/
@TableLogic
private Boolean deleted;
/**
* 租户编号
*/
private Long tenantId;
}

View File

@@ -0,0 +1,118 @@
package com.tashow.cloud.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 系统用户实体类
*/
@Data
@TableName("system_users")
public class SystemUser {
/**
* 用户ID
*/
@TableId(type = IdType.AUTO)
private Long id;
/**
* 用户账号
*/
private String username;
/**
* 密码
*/
private String password;
/**
* 用户昵称
*/
private String nickname;
/**
* 备注
*/
private String remark;
/**
* 部门ID
*/
private Long deptId;
/**
* 岗位编号数组
*/
private String postIds;
/**
* 用户邮箱
*/
private String email;
/**
* 手机号码
*/
private String mobile;
/**
* 用户性别
*/
private Integer sex;
/**
* 头像地址
*/
private String avatar;
/**
* 帐号状态0正常 1停用
*/
private Integer status;
/**
* 最后登录IP
*/
private String loginIp;
/**
* 最后登录时间
*/
private LocalDateTime loginDate;
/**
* 创建者
*/
private String creator;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新者
*/
private String updater;
/**
* 更新时间
*/
private LocalDateTime updateTime;
/**
* 是否删除
*/
@TableLogic
private Boolean deleted;
/**
* 租户编号
*/
private Long tenantId;
}

View File

@@ -0,0 +1,62 @@
package com.tashow.cloud.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 用户岗位关联实体类
*/
@Data
@TableName("system_user_post")
public class SystemUserPost {
/**
* 自增编号
*/
@TableId(type = IdType.AUTO)
private Long id;
/**
* 用户ID
*/
private Long userId;
/**
* 岗位ID
*/
private Long postId;
/**
* 创建者
*/
private String creator;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新者
*/
private String updater;
/**
* 更新时间
*/
private LocalDateTime updateTime;
/**
* 是否删除
*/
@TableLogic
private Boolean deleted;
/**
* 租户编号
*/
private Long tenantId;
}

View File

@@ -0,0 +1,62 @@
package com.tashow.cloud.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 用户角色关联实体类
*/
@Data
@TableName("system_user_role")
public class SystemUserRole {
/**
* 自增编号
*/
@TableId(type = IdType.AUTO)
private Long id;
/**
* 用户ID
*/
private Long userId;
/**
* 角色ID
*/
private Long roleId;
/**
* 创建者
*/
private String creator;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新者
*/
private String updater;
/**
* 更新时间
*/
private LocalDateTime updateTime;
/**
* 是否删除
*/
@TableLogic
private Boolean deleted;
/**
* 租户编号
*/
private Long tenantId;
}

View File

@@ -0,0 +1,59 @@
package com.tashow.cloud.model.dto;
import lombok.Data;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.constraints.Size;
import java.io.Serializable;
/**
* 用户注册请求DTO
*/
@Data
public class UserRegisterReqDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 用户账号
*/
@NotEmpty(message = "用户账号不能为空")
@Size(min = 4, max = 16, message = "账号长度为 4-16 位")
private String username;
/**
* 密码
*/
@NotEmpty(message = "密码不能为空")
@Size(min = 4, max = 16, message = "密码长度为 4-16 位")
private String password;
/**
* 用户昵称
*/
@Size(max = 30, message = "用户昵称长度不能超过30个字符")
private String nickname;
/**
* 用户邮箱
*/
@Email(message = "邮箱格式不正确")
@Size(max = 50, message = "邮箱长度不能超过50个字符")
private String email;
/**
* 手机号码
*/
@Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号码格式不正确")
private String mobile;
/**
* 用户性别
*/
private Integer sex;
/**
* 登录IP
*/
private String loginIp;
}

View File

@@ -0,0 +1,92 @@
package com.tashow.cloud.service;
import com.tashow.cloud.model.SystemRole;
import java.util.List;
/**
* 系统角色服务接口
*/
public interface SystemRoleService {
/**
* 创建角色
*
* @param role 角色信息
* @param menuIds 菜单ID列表
* @return 是否创建成功
*/
boolean createRole(SystemRole role, List<Long> menuIds);
/**
* 更新角色
*
* @param role 角色信息
* @param menuIds 菜单ID列表
* @return 是否更新成功
*/
boolean updateRole(SystemRole role, List<Long> menuIds);
/**
* 删除角色
*
* @param roleId 角色ID
* @return 是否删除成功
*/
boolean deleteRole(Long roleId);
/**
* 获取角色信息
*
* @param roleId 角色ID
* @return 角色信息
*/
SystemRole getRoleById(Long roleId);
/**
* 根据角色编码获取角色
*
* @param code 角色编码
* @return 角色信息
*/
SystemRole getRoleByCode(String code);
/**
* 获取所有角色列表
*
* @return 角色列表
*/
List<SystemRole> getAllRoles();
/**
* 获取指定状态的角色列表
*
* @param status 状态
* @return 角色列表
*/
List<SystemRole> getRolesByStatus(Integer status);
/**
* 获取角色的菜单ID列表
*
* @param roleId 角色ID
* @return 菜单ID列表
*/
List<Long> getRoleMenuIds(Long roleId);
/**
* 根据用户ID获取角色列表
*
* @param userId 用户ID
* @return 角色列表
*/
List<SystemRole> getRolesByUserId(Long userId);
/**
* 更新角色状态
*
* @param roleId 角色ID
* @param status 新状态
* @return 是否更新成功
*/
boolean updateRoleStatus(Long roleId, Integer status);
}

View File

@@ -0,0 +1,137 @@
package com.tashow.cloud.service;
import com.tashow.cloud.model.SystemUser;
import java.util.List;
/**
* 系统用户服务接口
*/
public interface SystemUserService {
/**
* 根据用户名查询用户
*
* @param username 用户名
* @return 用户信息
*/
SystemUser getUserByUsername(String username);
/**
* 验证用户密码
*
* @param rawPassword 原始密码
* @param encodedPassword 编码后的密码
* @return 是否匹配
*/
boolean validatePassword(String rawPassword, String encodedPassword);
/**
* 根据用户ID获取用户信息
*
* @param userId 用户ID
* @return 用户信息
*/
SystemUser getUserById(Long userId);
/**
* 更新用户登录信息
*
* @param userId 用户ID
* @param ip 登录IP
*/
void updateLoginInfo(Long userId, String ip);
/**
* 注册新用户
*
* @param user 用户信息
* @return 是否注册成功
*/
boolean registerUser(SystemUser user);
/**
* 加密密码
*
* @param rawPassword 原始密码
* @return 加密后的密码
*/
String encodePassword(String rawPassword);
/**
* 创建用户
*
* @param user 用户信息
* @param roleIds 角色ID列表
* @param postIds 岗位ID列表
* @return 是否创建成功
*/
boolean createUser(SystemUser user, List<Long> roleIds, List<Long> postIds);
/**
* 更新用户
*
* @param user 用户信息
* @param roleIds 角色ID列表
* @param postIds 岗位ID列表
* @return 是否更新成功
*/
boolean updateUser(SystemUser user, List<Long> roleIds, List<Long> postIds);
/**
* 删除用户
*
* @param userId 用户ID
* @return 是否删除成功
*/
boolean deleteUser(Long userId);
/**
* 重置用户密码
*
* @param userId 用户ID
* @param newPassword 新密码
* @return 是否重置成功
*/
boolean resetUserPassword(Long userId, String newPassword);
/**
* 更新用户状态
*
* @param userId 用户ID
* @param status 新状态
* @return 是否更新成功
*/
boolean updateUserStatus(Long userId, Integer status);
/**
* 获取用户角色ID列表
*
* @param userId 用户ID
* @return 角色ID列表
*/
List<Long> getUserRoleIds(Long userId);
/**
* 获取用户角色名称列表
*
* @param userId 用户ID
* @return 角色名称列表
*/
List<String> getUserRoleNames(Long userId);
/**
* 获取用户角色编码列表
*
* @param userId 用户ID
* @return 角色编码列表
*/
List<String> getUserRoleCodes(Long userId);
/**
* 获取用户岗位ID列表
*
* @param userId 用户ID
* @return 岗位ID列表
*/
List<Long> getUserPostIds(Long userId);
}

View File

@@ -0,0 +1,66 @@
package com.tashow.cloud.user.dto;
import lombok.Data;
import java.util.List;
/**
* 用户创建请求DTO
*/
@Data
public class UserCreateReqDTO {
/**
* 用户账号
*/
private String username;
/**
* 用户密码
*/
private String password;
/**
* 用户昵称
*/
private String nickname;
/**
* 备注
*/
private String remark;
/**
* 部门ID
*/
private Long deptId;
/**
* 用户邮箱
*/
private String email;
/**
* 手机号码
*/
private String mobile;
/**
* 用户性别
*/
private Integer sex;
/**
* 头像地址
*/
private String avatar;
/**
* 角色ID列表
*/
private List<Long> roleIds;
/**
* 岗位ID列表
*/
private List<Long> postIds;
}

View File

@@ -0,0 +1,55 @@
package com.tashow.cloud.user.dto;
import lombok.Data;
/**
* 用户分页查询请求DTO
*/
@Data
public class UserPageReqDTO {
/**
* 当前页码
*/
private Integer pageNum = 1;
/**
* 每页条数
*/
private Integer pageSize = 10;
/**
* 用户账号
*/
private String username;
/**
* 用户昵称
*/
private String nickname;
/**
* 手机号码
*/
private String mobile;
/**
* 帐号状态0正常 1停用
*/
private Integer status;
/**
* 部门ID
*/
private Long deptId;
/**
* 开始创建时间
*/
private String beginCreateTime;
/**
* 结束创建时间
*/
private String endCreateTime;
}

View File

@@ -0,0 +1,35 @@
package com.tashow.cloud.user.dto;
import lombok.Data;
/**
* 用户注册请求DTO
*/
@Data
public class UserRegisterReqDTO {
/**
* 用户账号
*/
private String username;
/**
* 用户密码
*/
private String password;
/**
* 用户昵称
*/
private String nickname;
/**
* 用户邮箱
*/
private String email;
/**
* 手机号码
*/
private String mobile;
}

View File

@@ -0,0 +1,117 @@
package com.tashow.cloud.user.dto;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.List;
/**
* 用户响应DTO
*/
@Data
public class UserRespDTO {
/**
* 用户ID
*/
private Long id;
/**
* 用户账号
*/
private String username;
/**
* 用户昵称
*/
private String nickname;
/**
* 备注
*/
private String remark;
/**
* 部门ID
*/
private Long deptId;
/**
* 部门名称
*/
private String deptName;
/**
* 用户邮箱
*/
private String email;
/**
* 手机号码
*/
private String mobile;
/**
* 用户性别
*/
private Integer sex;
/**
* 性别名称
*/
private String sexName;
/**
* 头像地址
*/
private String avatar;
/**
* 帐号状态0正常 1停用
*/
private Integer status;
/**
* 状态名称
*/
private String statusName;
/**
* 最后登录IP
*/
private String loginIp;
/**
* 最后登录时间
*/
private LocalDateTime loginDate;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 角色ID列表
*/
private List<Long> roleIds;
/**
* 角色名称列表
*/
private List<String> roleNames;
/**
* 角色编码列表
*/
private List<String> roleCodes;
/**
* 岗位ID列表
*/
private List<Long> postIds;
/**
* 岗位名称列表
*/
private List<String> postNames;
}

View File

@@ -0,0 +1,66 @@
package com.tashow.cloud.user.dto;
import lombok.Data;
import java.util.List;
/**
* 用户更新请求DTO
*/
@Data
public class UserUpdateReqDTO {
/**
* 用户ID
*/
private Long id;
/**
* 用户昵称
*/
private String nickname;
/**
* 备注
*/
private String remark;
/**
* 部门ID
*/
private Long deptId;
/**
* 用户邮箱
*/
private String email;
/**
* 手机号码
*/
private String mobile;
/**
* 用户性别
*/
private Integer sex;
/**
* 头像地址
*/
private String avatar;
/**
* 帐号状态0正常 1停用
*/
private Integer status;
/**
* 角色ID列表
*/
private List<Long> roleIds;
/**
* 岗位ID列表
*/
private List<Long> postIds;
}

View File

@@ -0,0 +1,34 @@
package com.tashow.cloud.user.model;
import java.io.Serializable;
import java.time.LocalDateTime;
import lombok.Data;
/**
* 基础实体类,包含所有实体共有的字段
*/
@Data
public class BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 创建者
*/
private String creator;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新者
*/
private String updater;
/**
* 更新时间
*/
private LocalDateTime updateTime;
}

View File

@@ -0,0 +1,78 @@
package com.tashow.cloud.user.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import lombok.experimental.Accessors;
/**
* 角色信息实体
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Accessors(chain = true)
@TableName("system_role")
public class Role extends BaseEntity {
/**
* 角色ID
*/
@TableId(type = IdType.AUTO)
private Long id;
/**
* 角色名称
*/
private String name;
/**
* 角色权限字符串
*/
private String code;
/**
* 显示顺序
*/
private Integer sort;
/**
* 数据范围1全部数据权限 2自定数据权限 3本部门数据权限 4本部门及以下数据权限
*/
private Integer dataScope;
/**
* 数据范围(指定部门数组)
*/
private String dataScopeDeptIds;
/**
* 角色状态0正常 1停用
*/
private Integer status;
/**
* 角色类型
*/
private Integer type;
/**
* 备注
*/
private String remark;
/**
* 是否删除
*/
@TableLogic
private Boolean deleted;
/**
* 租户编号
*/
private Long tenantId;
}

View File

@@ -0,0 +1,48 @@
package com.tashow.cloud.user.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import lombok.experimental.Accessors;
/**
* 角色菜单关联实体
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Accessors(chain = true)
@TableName("system_role_menu")
public class RoleMenu extends BaseEntity {
/**
* 自增编号
*/
@TableId(type = IdType.AUTO)
private Long id;
/**
* 角色ID
*/
private Long roleId;
/**
* 菜单ID
*/
private Long menuId;
/**
* 是否删除
*/
@TableLogic
private Boolean deleted;
/**
* 租户编号
*/
private Long tenantId;
}

View File

@@ -0,0 +1,115 @@
package com.tashow.cloud.user.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import lombok.experimental.Accessors;
import java.util.List;
/**
* 用户信息实体
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Accessors(chain = true)
@TableName("system_users")
public class User extends BaseEntity {
/**
* 用户ID
*/
@TableId(type = IdType.AUTO)
private Long id;
/**
* 用户账号
*/
private String username;
/**
* 密码
*/
private String password;
/**
* 用户昵称
*/
private String nickname;
/**
* 备注
*/
private String remark;
/**
* 部门ID
*/
private Long deptId;
/**
* 岗位编号数组
*/
private String postIds;
/**
* 用户邮箱
*/
private String email;
/**
* 手机号码
*/
private String mobile;
/**
* 用户性别
* 0: 未知
* 1: 男
* 2: 女
*/
private Integer sex;
/**
* 头像地址
*/
private String avatar;
/**
* 帐号状态
* 0: 正常
* 1: 停用
*/
private Integer status;
/**
* 最后登录IP
*/
private String loginIp;
/**
* 最后登录时间
*/
private java.time.LocalDateTime loginDate;
/**
* 是否删除
*/
@TableLogic
private Boolean deleted;
/**
* 租户编号
*/
private Long tenantId;
/**
* 角色列表 - 非数据库字段
*/
@TableField(exist = false)
private List<Role> roles;
}

View File

@@ -0,0 +1,48 @@
package com.tashow.cloud.user.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import lombok.experimental.Accessors;
/**
* 用户岗位关联实体
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Accessors(chain = true)
@TableName("system_user_post")
public class UserPost extends BaseEntity {
/**
* 自增编号
*/
@TableId(type = IdType.AUTO)
private Long id;
/**
* 用户ID
*/
private Long userId;
/**
* 岗位ID
*/
private Long postId;
/**
* 是否删除
*/
@TableLogic
private Boolean deleted;
/**
* 租户编号
*/
private Long tenantId;
}

View File

@@ -0,0 +1,48 @@
package com.tashow.cloud.user.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import lombok.experimental.Accessors;
/**
* 用户角色关联实体
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Accessors(chain = true)
@TableName("system_user_role")
public class UserRole extends BaseEntity {
/**
* 自增编号
*/
@TableId(type = IdType.AUTO)
private Long id;
/**
* 用户ID
*/
private Long userId;
/**
* 角色ID
*/
private Long roleId;
/**
* 是否删除
*/
@TableLogic
private Boolean deleted;
/**
* 租户编号
*/
private Long tenantId;
}

View File

@@ -0,0 +1,89 @@
package com.tashow.cloud.user.service;
import com.tashow.cloud.user.model.Role;
import java.util.List;
/**
* 角色服务接口
*/
public interface RoleService {
/**
* 创建角色
*
* @param role 角色信息
* @param menuIds 菜单ID列表
* @return 角色ID
*/
Long createRole(Role role, List<Long> menuIds);
/**
* 更新角色
*
* @param role 角色信息
* @param menuIds 菜单ID列表
*/
void updateRole(Role role, List<Long> menuIds);
/**
* 删除角色
*
* @param roleId 角色ID
*/
void deleteRole(Long roleId);
/**
* 获取角色信息
*
* @param roleId 角色ID
* @return 角色信息
*/
Role getRoleById(Long roleId);
/**
* 根据角色编码获取角色
*
* @param code 角色编码
* @return 角色信息
*/
Role getRoleByCode(String code);
/**
* 获取所有角色列表
*
* @return 角色列表
*/
List<Role> getAllRoles();
/**
* 获取指定状态的角色列表
*
* @param status 状态
* @return 角色列表
*/
List<Role> getRolesByStatus(Integer status);
/**
* 获取角色的菜单ID列表
*
* @param roleId 角色ID
* @return 菜单ID列表
*/
List<Long> getRoleMenuIds(Long roleId);
/**
* 根据用户ID获取角色列表
*
* @param userId 用户ID
* @return 角色列表
*/
List<Role> getRolesByUserId(Long userId);
/**
* 更新角色状态
*
* @param roleId 角色ID
* @param status 新状态
*/
void updateRoleStatus(Long roleId, Integer status);
}

View File

@@ -0,0 +1,142 @@
package com.tashow.cloud.user.service;
import com.tashow.cloud.user.dto.UserCreateReqDTO;
import com.tashow.cloud.user.dto.UserPageReqDTO;
import com.tashow.cloud.user.dto.UserRegisterReqDTO;
import com.tashow.cloud.user.dto.UserRespDTO;
import com.tashow.cloud.user.dto.UserUpdateReqDTO;
import com.tashow.cloud.user.model.User;
import java.util.List;
/**
* 用户服务接口
*/
public interface UserService {
/**
* 创建用户
*
* @param reqDTO 用户创建信息
* @return 用户ID
*/
Long createUser(UserCreateReqDTO reqDTO);
/**
* 更新用户
*
* @param reqDTO 用户更新信息
*/
void updateUser(UserUpdateReqDTO reqDTO);
/**
* 删除用户
*
* @param id 用户ID
*/
void deleteUser(Long id);
/**
* 获取用户详情
*
* @param id 用户ID
* @return 用户详情
*/
UserRespDTO getUser(Long id);
/**
* 获取用户详情
*
* @param username 用户名
* @return 用户详情
*/
UserRespDTO getUserByUsername(String username);
/**
* 获取用户分页列表
*
* @param reqDTO 查询条件
* @return 用户分页列表
*/
List<UserRespDTO> getUserPage(UserPageReqDTO reqDTO);
/**
* 重置用户密码
*
* @param id 用户ID
* @param password 新密码
*/
void resetUserPassword(Long id, String password);
/**
* 更新用户状态
*
* @param id 用户ID
* @param status 新状态
*/
void updateUserStatus(Long id, Integer status);
/**
* 获取用户的角色ID列表
*
* @param userId 用户ID
* @return 角色ID列表
*/
List<Long> getUserRoleIds(Long userId);
/**
* 获取用户的角色名称列表
*
* @param userId 用户ID
* @return 角色名称列表
*/
List<String> getUserRoleNames(Long userId);
/**
* 获取用户的角色编码列表
*
* @param userId 用户ID
* @return 角色编码列表
*/
List<String> getUserRoleCodes(Long userId);
/**
* 注册用户
*
* @param reqDTO 注册信息
* @return 用户ID
*/
Long registerUser(UserRegisterReqDTO reqDTO);
/**
* 获取当前登录用户信息
*
* @return 用户详情
*/
UserRespDTO getCurrentUser();
/**
* 验证用户密码
*
* @param rawPassword 原始密码
* @param encodedPassword 编码后的密码
* @return 是否匹配
*/
boolean validatePassword(String rawPassword, String encodedPassword);
/**
* 加密密码
*
* @param rawPassword 原始密码
* @return 加密后的密码
*/
String encodePassword(String rawPassword);
/**
* 更新用户登录信息
*
* @param userId 用户ID
* @param ip 登录IP
*/
void updateLoginInfo(Long userId, String ip);
}