mirror of
https://github.com/RemainderTime/spring-boot-base-demo.git
synced 2026-02-06 15:10:56 +08:00
Merge branch 'feature/admin-auth-satoken' into future/admin-auth-springsecurity
# Conflicts: # pom.xml
This commit is contained in:
@@ -21,7 +21,7 @@ import java.util.Map;
|
||||
/**
|
||||
* @Author: xiongfeng
|
||||
* @CreateTime: 2023-11-08 11:48
|
||||
* @Description: TODO 全局异常捕获类
|
||||
* @Description: TODO 全局异常捕获类(仅 Controller 层异常)
|
||||
* @Version: 1.0
|
||||
*/
|
||||
@Slf4j
|
||||
@@ -59,7 +59,7 @@ public class GlobalExceptionHandler extends ResponseEntityExceptionHandler{
|
||||
* @return
|
||||
*/
|
||||
@ExceptionHandler(LoginException.class)
|
||||
public GenericResponse tokenExceptionHandler(HttpServletRequest request, final Exception e, HttpServletResponse response) {
|
||||
public GenericResponse tokenExceptionHandler(HttpServletRequest request, final LoginException e, HttpServletResponse response) {
|
||||
log.error("token exception", e);
|
||||
LoginException exception = (LoginException) e;
|
||||
response.setStatus(HttpStatus.FORBIDDEN.value());
|
||||
@@ -95,6 +95,7 @@ public class GlobalExceptionHandler extends ResponseEntityExceptionHandler{
|
||||
public ResponseEntity exceptionHandler(jakarta.servlet.http.HttpServletRequest request, final Exception e, jakarta.servlet.http.HttpServletResponse response) {
|
||||
Map<String, String> errors = new HashMap<>();
|
||||
errors.put("message", e.getMessage());
|
||||
log.error("error------{}", e);
|
||||
return ResponseEntity.status(SystemStatus.ERROR.getCode()).body(errors);
|
||||
}
|
||||
|
||||
|
||||
@@ -15,22 +15,18 @@ import org.springframework.stereotype.Component;
|
||||
@Component
|
||||
public class ApplicationContextUtils implements ApplicationContextAware {
|
||||
//放置在获取bean的时候提示空指针,将其定义为静态变量
|
||||
private static ApplicationContext context;
|
||||
private static ApplicationContext applicationContext;
|
||||
|
||||
//类初始化完成之后调用setApplicationContext()方法进行操作
|
||||
@Override
|
||||
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
|
||||
ApplicationContextUtils.context = applicationContext;
|
||||
ApplicationContextUtils.applicationContext = applicationContext;
|
||||
}
|
||||
|
||||
public static ApplicationContext geteContext(){
|
||||
return context;
|
||||
public static <T> T getBean(Class<T> clazz) {
|
||||
return applicationContext.getBean(clazz);
|
||||
}
|
||||
|
||||
public static Object getBean(String beanName){
|
||||
//在这一步的时候一定要注意,此时可调用这个方法的时候
|
||||
//context可能为空,会提示空指针异常,需要将其定义成静态的,这样类加载的时候
|
||||
//context就已经存在了
|
||||
return context.getBean(beanName);
|
||||
public static Object getBean(String name) {
|
||||
return applicationContext.getBean(name);
|
||||
}
|
||||
}
|
||||
|
||||
23
src/main/java/cn/xf/basedemo/config/SaTokenConfigure.java
Normal file
23
src/main/java/cn/xf/basedemo/config/SaTokenConfigure.java
Normal file
@@ -0,0 +1,23 @@
|
||||
package cn.xf.basedemo.config;
|
||||
|
||||
import cn.dev33.satoken.interceptor.SaInterceptor;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
|
||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||
|
||||
/**
|
||||
* @Description: sa token拦截器注册类
|
||||
* @ClassName: SaTokenConfigure
|
||||
* @Author: xiongfeng
|
||||
* @Date: 2025/8/24 20:30
|
||||
* @Version: 1.0
|
||||
*/
|
||||
@Configuration
|
||||
public class SaTokenConfigure implements WebMvcConfigurer {
|
||||
// 注册 Sa-Token 拦截器,打开注解式鉴权功能
|
||||
@Override
|
||||
public void addInterceptors(InterceptorRegistry registry) {
|
||||
// 注册 Sa-Token 拦截器,打开注解式鉴权功能
|
||||
registry.addInterceptor(new SaInterceptor()).addPathPatterns("/**");
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,8 @@
|
||||
package cn.xf.basedemo.controller.business;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.dev33.satoken.annotation.SaCheckRole;
|
||||
import cn.dev33.satoken.stp.StpUtil;
|
||||
import cn.xf.basedemo.common.model.LoginUser;
|
||||
import cn.xf.basedemo.common.model.RetObj;
|
||||
import cn.xf.basedemo.interceptor.SessionContext;
|
||||
@@ -34,12 +37,14 @@ public class UserController {
|
||||
|
||||
@Operation(summary = "用户信息", description = "用户信息")
|
||||
@PostMapping("/info")
|
||||
@SaCheckPermission("user:info") //权限校验
|
||||
public RetObj info(){
|
||||
LoginUser loginUser = SessionContext.getInstance().get();
|
||||
return RetObj.success(loginUser);
|
||||
}
|
||||
|
||||
@Operation(summary = "es同步用户信息", description = "用户信息")
|
||||
@SaCheckRole("admin") //角色校验
|
||||
@GetMapping("/syncEs")
|
||||
public RetObj syncEs(Long userId){
|
||||
return userService.syncEs(userId);
|
||||
@@ -51,4 +56,10 @@ public class UserController {
|
||||
return userService.getEsId(userId);
|
||||
}
|
||||
|
||||
@Operation(summary = "获取用户权限数据", description = "用户信息")
|
||||
@GetMapping("/getPermission")
|
||||
public RetObj getPermission(){
|
||||
return RetObj.success(StpUtil.getPermissionList());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package cn.xf.basedemo.interceptor;
|
||||
|
||||
import cn.dev33.satoken.interceptor.SaInterceptor;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
package cn.xf.basedemo.interceptor;
|
||||
|
||||
import cn.dev33.satoken.stp.StpInterface;
|
||||
import cn.xf.basedemo.common.utils.ApplicationContextUtils;
|
||||
import cn.xf.basedemo.mappers.SysPermissionMapper;
|
||||
import cn.xf.basedemo.mappers.SysRoleMapper;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Description: 权限加载组件类
|
||||
* @ClassName: StpInterfaceImpl
|
||||
* @Author: xiongfeng
|
||||
* @Date: 2025/8/18 22:51
|
||||
* @Version: 1.0
|
||||
*/
|
||||
@Component
|
||||
public class StpInterfaceImpl implements StpInterface {
|
||||
|
||||
private SysPermissionMapper sysPermissionMapper = ApplicationContextUtils.getBean(SysPermissionMapper.class);
|
||||
private SysRoleMapper sysRoleMapper = ApplicationContextUtils.getBean(SysRoleMapper.class);
|
||||
@Override
|
||||
public List<String> getPermissionList(Object userId, String s) {
|
||||
//获取登录用户权限数据
|
||||
Long aLong = Long.valueOf(userId.toString());
|
||||
List<String> permissionList = sysPermissionMapper.getPermissionListByRoleId(aLong);
|
||||
return permissionList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getRoleList(Object userId, String s) {
|
||||
//获取用户角色数据
|
||||
return sysRoleMapper.getRoleListByUserId((Long) userId);
|
||||
}
|
||||
}
|
||||
15
src/main/java/cn/xf/basedemo/mappers/SysMenuMapper.java
Normal file
15
src/main/java/cn/xf/basedemo/mappers/SysMenuMapper.java
Normal file
@@ -0,0 +1,15 @@
|
||||
package cn.xf.basedemo.mappers;
|
||||
|
||||
import cn.xf.basedemo.model.domain.SysMenu;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
/**
|
||||
* @author xiongfeng
|
||||
* @description 针对表【sys_menu(系统菜单表 sys_menu)】的数据库操作Mapper
|
||||
* @createDate 2025-08-19 21:22:03
|
||||
* @Entity cn.xf.basedemo.model.domain.SysMenu
|
||||
*/
|
||||
public interface SysMenuMapper extends BaseMapper<SysMenu> {
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package cn.xf.basedemo.mappers;
|
||||
|
||||
import cn.xf.basedemo.model.domain.SysPermission;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author xiongfeng
|
||||
* @description 针对表【sys_permission(系统权限表 sys_permission)】的数据库操作Mapper
|
||||
* @createDate 2025-08-19 21:22:03
|
||||
* @Entity cn.xf.basedemo.model.domain.SysPermission
|
||||
*/
|
||||
@Mapper
|
||||
public interface SysPermissionMapper extends BaseMapper<SysPermission> {
|
||||
|
||||
List<String> getPermissionListByRoleId(Long useId);
|
||||
|
||||
}
|
||||
21
src/main/java/cn/xf/basedemo/mappers/SysRoleMapper.java
Normal file
21
src/main/java/cn/xf/basedemo/mappers/SysRoleMapper.java
Normal file
@@ -0,0 +1,21 @@
|
||||
package cn.xf.basedemo.mappers;
|
||||
|
||||
import cn.xf.basedemo.model.domain.SysRole;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author xiongfeng
|
||||
* @description 针对表【sys_role(系统角色表 sys_role)】的数据库操作Mapper
|
||||
* @createDate 2025-08-19 21:22:03
|
||||
* @Entity cn.xf.basedemo.model.domain.SysRole
|
||||
*/
|
||||
@Mapper
|
||||
public interface SysRoleMapper extends BaseMapper<SysRole> {
|
||||
|
||||
List<String> getRoleListByUserId(Long userId);
|
||||
|
||||
|
||||
}
|
||||
15
src/main/java/cn/xf/basedemo/mappers/SysRoleMenuMapper.java
Normal file
15
src/main/java/cn/xf/basedemo/mappers/SysRoleMenuMapper.java
Normal file
@@ -0,0 +1,15 @@
|
||||
package cn.xf.basedemo.mappers;
|
||||
|
||||
import cn.xf.basedemo.model.domain.SysRoleMenu;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
/**
|
||||
* @author xiongfeng
|
||||
* @description 针对表【sys_role_menu(角色菜单关联表 sys_role_menu)】的数据库操作Mapper
|
||||
* @createDate 2025-08-19 21:22:03
|
||||
* @Entity cn.xf.basedemo.model.domain.SysRoleMenu
|
||||
*/
|
||||
public interface SysRoleMenuMapper extends BaseMapper<SysRoleMenu> {
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package cn.xf.basedemo.mappers;
|
||||
|
||||
import cn.xf.basedemo.model.domain.SysRolePermission;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
/**
|
||||
* @author xiongfeng
|
||||
* @description 针对表【sys_role_permission(角色权限关联表 sys_role_permission)】的数据库操作Mapper
|
||||
* @createDate 2025-08-19 21:22:03
|
||||
* @Entity cn.xf.basedemo.model.domain.SysRolePermission
|
||||
*/
|
||||
public interface SysRolePermissionMapper extends BaseMapper<SysRolePermission> {
|
||||
|
||||
|
||||
}
|
||||
15
src/main/java/cn/xf/basedemo/mappers/SysUserRoleMapper.java
Normal file
15
src/main/java/cn/xf/basedemo/mappers/SysUserRoleMapper.java
Normal file
@@ -0,0 +1,15 @@
|
||||
package cn.xf.basedemo.mappers;
|
||||
|
||||
import cn.xf.basedemo.model.domain.SysUserRole;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
/**
|
||||
* @author xiongfeng
|
||||
* @description 针对表【sys_user_role(用户角色关联表 sys_user_role)】的数据库操作Mapper
|
||||
* @createDate 2025-08-19 21:22:03
|
||||
* @Entity cn.xf.basedemo.model.domain.SysUserRole
|
||||
*/
|
||||
public interface SysUserRoleMapper extends BaseMapper<SysUserRole> {
|
||||
|
||||
|
||||
}
|
||||
67
src/main/java/cn/xf/basedemo/model/domain/SysMenu.java
Normal file
67
src/main/java/cn/xf/basedemo/model/domain/SysMenu.java
Normal file
@@ -0,0 +1,67 @@
|
||||
package cn.xf.basedemo.model.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 系统菜单表 sys_menu
|
||||
* @TableName sys_menu
|
||||
*/
|
||||
@TableName(value ="sys_menu")
|
||||
@Data
|
||||
public class SysMenu implements Serializable {
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 菜单名称(sys_menu.name)
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 前端路由路径(sys_menu.path)
|
||||
*/
|
||||
private String path;
|
||||
|
||||
/**
|
||||
* 父菜单ID(sys_menu.parent_id,树结构)
|
||||
*/
|
||||
private Long parent_id;
|
||||
|
||||
/**
|
||||
* 菜单类型(sys_menu.type),0=目录,1=菜单,2=按钮
|
||||
*/
|
||||
private Integer type;
|
||||
|
||||
/**
|
||||
* 菜单图标(sys_menu.icon)
|
||||
*/
|
||||
private String icon;
|
||||
|
||||
/**
|
||||
* 创建时间(sys_menu.create_time)
|
||||
*/
|
||||
private Date create_time;
|
||||
|
||||
/**
|
||||
* 创建人(sys_menu.create_by)
|
||||
*/
|
||||
private String create_by;
|
||||
|
||||
/**
|
||||
* 更新时间(sys_menu.update_time)
|
||||
*/
|
||||
private Date update_time;
|
||||
|
||||
/**
|
||||
* 更新人(sys_menu.update_by)
|
||||
*/
|
||||
private String update_by;
|
||||
}
|
||||
57
src/main/java/cn/xf/basedemo/model/domain/SysPermission.java
Normal file
57
src/main/java/cn/xf/basedemo/model/domain/SysPermission.java
Normal file
@@ -0,0 +1,57 @@
|
||||
package cn.xf.basedemo.model.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 系统权限表 sys_permission
|
||||
* @TableName sys_permission
|
||||
*/
|
||||
@TableName(value ="sys_permission")
|
||||
@Data
|
||||
public class SysPermission implements Serializable {
|
||||
/**
|
||||
* 主键ID(sys_permission)
|
||||
*/
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 权限标识(sys_permission.code),如 user:add、order:delete
|
||||
*/
|
||||
private String code;
|
||||
|
||||
/**
|
||||
* 权限名称(sys_permission.name)
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 所属菜单ID(sys_permission.menu_id)
|
||||
*/
|
||||
private Long menu_id;
|
||||
|
||||
/**
|
||||
* 创建时间(sys_permission.create_time)
|
||||
*/
|
||||
private Date create_time;
|
||||
|
||||
/**
|
||||
* 创建人(sys_permission.create_by)
|
||||
*/
|
||||
private String create_by;
|
||||
|
||||
/**
|
||||
* 更新时间(sys_permission.update_time)
|
||||
*/
|
||||
private Date update_time;
|
||||
|
||||
/**
|
||||
* 更新人(sys_permission.update_by)
|
||||
*/
|
||||
private String update_by;
|
||||
}
|
||||
58
src/main/java/cn/xf/basedemo/model/domain/SysRole.java
Normal file
58
src/main/java/cn/xf/basedemo/model/domain/SysRole.java
Normal file
@@ -0,0 +1,58 @@
|
||||
package cn.xf.basedemo.model.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 系统角色表 sys_role
|
||||
* @TableName sys_role
|
||||
*/
|
||||
@TableName(value ="sys_role")
|
||||
@Data
|
||||
public class SysRole implements Serializable {
|
||||
/**
|
||||
* 主键ID(sys_role)
|
||||
*/
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 角色名称(sys_role.name)
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 角色标识(sys_role.code),如 ADMIN、OPERATOR
|
||||
*/
|
||||
private String code;
|
||||
|
||||
/**
|
||||
* 角色状态(sys_role.status),1=启用,0=禁用
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 创建时间(sys_role.create_time)
|
||||
*/
|
||||
private Date create_time;
|
||||
|
||||
/**
|
||||
* 创建人(sys_role.create_by)
|
||||
*/
|
||||
private String create_by;
|
||||
|
||||
/**
|
||||
* 更新时间(sys_role.update_time)
|
||||
*/
|
||||
private Date update_time;
|
||||
|
||||
/**
|
||||
* 更新人(sys_role.update_by)
|
||||
*/
|
||||
private String update_by;
|
||||
|
||||
}
|
||||
53
src/main/java/cn/xf/basedemo/model/domain/SysRoleMenu.java
Normal file
53
src/main/java/cn/xf/basedemo/model/domain/SysRoleMenu.java
Normal file
@@ -0,0 +1,53 @@
|
||||
package cn.xf.basedemo.model.domain;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 角色菜单关联表 sys_role_menu
|
||||
* @TableName sys_role_menu
|
||||
*/
|
||||
@TableName(value ="sys_role_menu")
|
||||
@Data
|
||||
public class SysRoleMenu implements Serializable {
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 角色ID(sys_role_menu.role_id)
|
||||
*/
|
||||
private Long role_id;
|
||||
|
||||
/**
|
||||
* 菜单ID(sys_role_menu.menu_id)
|
||||
*/
|
||||
private Long menu_id;
|
||||
|
||||
/**
|
||||
* 创建时间(sys_role_menu.create_time)
|
||||
*/
|
||||
private Date create_time;
|
||||
|
||||
/**
|
||||
* 创建人(sys_role_menu.create_by)
|
||||
*/
|
||||
private String create_by;
|
||||
|
||||
/**
|
||||
* 更新时间(sys_role_menu.update_time)
|
||||
*/
|
||||
private Date update_time;
|
||||
|
||||
/**
|
||||
* 更新人(sys_role_menu.update_by)
|
||||
*/
|
||||
private String update_by;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
package cn.xf.basedemo.model.domain;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 角色权限关联表 sys_role_permission
|
||||
* @TableName sys_role_permission
|
||||
*/
|
||||
@TableName(value ="sys_role_permission")
|
||||
@Data
|
||||
public class SysRolePermission implements Serializable {
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 角色ID(sys_role_permission.role_id)
|
||||
*/
|
||||
private Long role_id;
|
||||
|
||||
/**
|
||||
* 权限ID(sys_role_permission.permission_id)
|
||||
*/
|
||||
private Long permission_id;
|
||||
|
||||
/**
|
||||
* 创建时间(sys_role_permission.create_time)
|
||||
*/
|
||||
private Date create_time;
|
||||
|
||||
/**
|
||||
* 创建人(sys_role_permission.create_by)
|
||||
*/
|
||||
private String create_by;
|
||||
|
||||
/**
|
||||
* 更新时间(sys_role_permission.update_time)
|
||||
*/
|
||||
private Date update_time;
|
||||
|
||||
/**
|
||||
* 更新人(sys_role_permission.update_by)
|
||||
*/
|
||||
private String update_by;
|
||||
|
||||
}
|
||||
54
src/main/java/cn/xf/basedemo/model/domain/SysUserRole.java
Normal file
54
src/main/java/cn/xf/basedemo/model/domain/SysUserRole.java
Normal file
@@ -0,0 +1,54 @@
|
||||
package cn.xf.basedemo.model.domain;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 用户角色关联表 sys_user_role
|
||||
* @TableName sys_user_role
|
||||
*/
|
||||
@TableName(value ="sys_user_role")
|
||||
@Data
|
||||
public class SysUserRole implements Serializable {
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 用户ID(sys_user_role.user_id)
|
||||
*/
|
||||
private Long user_id;
|
||||
|
||||
/**
|
||||
* 角色ID(sys_user_role.role_id)
|
||||
*/
|
||||
private Long role_id;
|
||||
|
||||
/**
|
||||
* 创建时间(sys_user_role.create_time)
|
||||
*/
|
||||
private Date create_time;
|
||||
|
||||
/**
|
||||
* 创建人(sys_user_role.create_by)
|
||||
*/
|
||||
private String create_by;
|
||||
|
||||
/**
|
||||
* 更新时间(sys_user_role.update_time)
|
||||
*/
|
||||
private Date update_time;
|
||||
|
||||
/**
|
||||
* 更新人(sys_user_role.update_by)
|
||||
*/
|
||||
private String update_by;
|
||||
|
||||
}
|
||||
13
src/main/java/cn/xf/basedemo/service/SysMenuService.java
Normal file
13
src/main/java/cn/xf/basedemo/service/SysMenuService.java
Normal file
@@ -0,0 +1,13 @@
|
||||
package cn.xf.basedemo.service;
|
||||
|
||||
import cn.xf.basedemo.model.domain.SysMenu;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
/**
|
||||
* @author xiongfeng
|
||||
* @description 针对表【sys_menu(系统菜单表 sys_menu)】的数据库操作Service
|
||||
* @createDate 2025-08-19 21:22:03
|
||||
*/
|
||||
public interface SysMenuService extends IService<SysMenu> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package cn.xf.basedemo.service;
|
||||
|
||||
import cn.xf.basedemo.model.domain.SysPermission;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
|
||||
/**
|
||||
* @author xiongfeng
|
||||
* @description 针对表【sys_permission(系统权限表 sys_permission)】的数据库操作Service
|
||||
* @createDate 2025-08-19 21:22:03
|
||||
*/
|
||||
public interface SysPermissionService extends IService<SysPermission> {
|
||||
|
||||
}
|
||||
13
src/main/java/cn/xf/basedemo/service/SysRoleMenuService.java
Normal file
13
src/main/java/cn/xf/basedemo/service/SysRoleMenuService.java
Normal file
@@ -0,0 +1,13 @@
|
||||
package cn.xf.basedemo.service;
|
||||
|
||||
import cn.xf.basedemo.model.domain.SysRoleMenu;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
/**
|
||||
* @author xiongfeng
|
||||
* @description 针对表【sys_role_menu(角色菜单关联表 sys_role_menu)】的数据库操作Service
|
||||
* @createDate 2025-08-19 21:22:03
|
||||
*/
|
||||
public interface SysRoleMenuService extends IService<SysRoleMenu> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package cn.xf.basedemo.service;
|
||||
|
||||
import cn.xf.basedemo.model.domain.SysRolePermission;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
/**
|
||||
* @author xiongfeng
|
||||
* @description 针对表【sys_role_permission(角色权限关联表 sys_role_permission)】的数据库操作Service
|
||||
* @createDate 2025-08-19 21:22:03
|
||||
*/
|
||||
public interface SysRolePermissionService extends IService<SysRolePermission> {
|
||||
|
||||
}
|
||||
13
src/main/java/cn/xf/basedemo/service/SysRoleService.java
Normal file
13
src/main/java/cn/xf/basedemo/service/SysRoleService.java
Normal file
@@ -0,0 +1,13 @@
|
||||
package cn.xf.basedemo.service;
|
||||
|
||||
import cn.xf.basedemo.model.domain.SysRole;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
/**
|
||||
* @author xiongfeng
|
||||
* @description 针对表【sys_role(系统角色表 sys_role)】的数据库操作Service
|
||||
* @createDate 2025-08-19 21:22:03
|
||||
*/
|
||||
public interface SysRoleService extends IService<SysRole> {
|
||||
|
||||
}
|
||||
13
src/main/java/cn/xf/basedemo/service/SysUserRoleService.java
Normal file
13
src/main/java/cn/xf/basedemo/service/SysUserRoleService.java
Normal file
@@ -0,0 +1,13 @@
|
||||
package cn.xf.basedemo.service;
|
||||
|
||||
import cn.xf.basedemo.model.domain.SysUserRole;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
/**
|
||||
* @author xiongfeng
|
||||
* @description 针对表【sys_user_role(用户角色关联表 sys_user_role)】的数据库操作Service
|
||||
* @createDate 2025-08-19 21:22:03
|
||||
*/
|
||||
public interface SysUserRoleService extends IService<SysUserRole> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package cn.xf.basedemo.service.impl;
|
||||
|
||||
import cn.xf.basedemo.model.domain.SysMenu;
|
||||
import cn.xf.basedemo.service.SysMenuService;
|
||||
import cn.xf.basedemo.mappers.SysMenuMapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @author xiongfeng
|
||||
* @description 针对表【sys_menu(系统菜单表 sys_menu)】的数据库操作Service实现
|
||||
* @createDate 2025-08-19 21:22:03
|
||||
*/
|
||||
@Service
|
||||
public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu>
|
||||
implements SysMenuService{
|
||||
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package cn.xf.basedemo.service.impl;
|
||||
|
||||
import cn.xf.basedemo.model.domain.SysPermission;
|
||||
import cn.xf.basedemo.service.SysPermissionService;
|
||||
import cn.xf.basedemo.mappers.SysPermissionMapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @author xiongfeng
|
||||
* @description 针对表【sys_permission(系统权限表 sys_permission)】的数据库操作Service实现
|
||||
* @createDate 2025-08-19 21:22:03
|
||||
*/
|
||||
@Service
|
||||
public class SysPermissionServiceImpl extends ServiceImpl<SysPermissionMapper, SysPermission>
|
||||
implements SysPermissionService{
|
||||
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package cn.xf.basedemo.service.impl;
|
||||
|
||||
import cn.xf.basedemo.model.domain.SysRoleMenu;
|
||||
import cn.xf.basedemo.service.SysRoleMenuService;
|
||||
import cn.xf.basedemo.mappers.SysRoleMenuMapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @author xiongfeng
|
||||
* @description 针对表【sys_role_menu(角色菜单关联表 sys_role_menu)】的数据库操作Service实现
|
||||
* @createDate 2025-08-19 21:22:03
|
||||
*/
|
||||
@Service
|
||||
public class SysRoleMenuServiceImpl extends ServiceImpl<SysRoleMenuMapper, SysRoleMenu> implements SysRoleMenuService {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package cn.xf.basedemo.service.impl;
|
||||
|
||||
import cn.xf.basedemo.model.domain.SysRolePermission;
|
||||
import cn.xf.basedemo.service.SysRolePermissionService;
|
||||
import cn.xf.basedemo.mappers.SysRolePermissionMapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @author xiongfeng
|
||||
* @description 针对表【sys_role_permission(角色权限关联表 sys_role_permission)】的数据库操作Service实现
|
||||
* @createDate 2025-08-19 21:22:03
|
||||
*/
|
||||
@Service
|
||||
public class SysRolePermissionServiceImpl extends ServiceImpl<SysRolePermissionMapper, SysRolePermission>
|
||||
implements SysRolePermissionService{
|
||||
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package cn.xf.basedemo.service.impl;
|
||||
|
||||
import cn.xf.basedemo.model.domain.SysRole;
|
||||
import cn.xf.basedemo.service.SysRoleService;
|
||||
import cn.xf.basedemo.mappers.SysRoleMapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @author xiongfeng
|
||||
* @description 针对表【sys_role(系统角色表 sys_role)】的数据库操作Service实现
|
||||
* @createDate 2025-08-19 21:22:03
|
||||
*/
|
||||
@Service
|
||||
public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole>
|
||||
implements SysRoleService{
|
||||
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package cn.xf.basedemo.service.impl;
|
||||
|
||||
import cn.xf.basedemo.model.domain.SysUserRole;
|
||||
import cn.xf.basedemo.service.SysUserRoleService;
|
||||
import cn.xf.basedemo.mappers.SysUserRoleMapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @author xiongfeng
|
||||
* @description 针对表【sys_user_role(用户角色关联表 sys_user_role)】的数据库操作Service实现
|
||||
* @createDate 2025-08-19 21:22:03
|
||||
*/
|
||||
@Service
|
||||
public class SysUserRoleServiceImpl extends ServiceImpl<SysUserRoleMapper, SysUserRole>
|
||||
implements SysUserRoleService{
|
||||
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package cn.xf.basedemo.service.impl;
|
||||
|
||||
import cn.dev33.satoken.stp.StpUtil;
|
||||
import cn.xf.basedemo.common.model.EsBaseModel;
|
||||
import cn.xf.basedemo.common.model.LoginInfo;
|
||||
import cn.xf.basedemo.common.model.LoginUser;
|
||||
@@ -90,7 +91,8 @@ public class UserServiceImpl implements UserService {
|
||||
|
||||
redisTemplate.opsForValue().set("token:" + token, JSONObject.toJSONString(loginUser), 3600, TimeUnit.SECONDS);
|
||||
redisTemplate.opsForValue().set("user_login_token:" + user.getId(), token, 3600, TimeUnit.SECONDS);
|
||||
|
||||
//登录成功 写入sa-token中
|
||||
StpUtil.login(user.getId());
|
||||
return RetObj.success(loginUser);
|
||||
}
|
||||
|
||||
|
||||
26
src/main/resources/mapper/SysMenuMapper.xml
Normal file
26
src/main/resources/mapper/SysMenuMapper.xml
Normal file
@@ -0,0 +1,26 @@
|
||||
<?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="cn.xf.basedemo.mappers.SysMenuMapper">
|
||||
|
||||
<resultMap id="BaseResultMap" type="cn.xf.basedemo.model.domain.SysMenu">
|
||||
<id property="id" column="id" jdbcType="BIGINT"/>
|
||||
<result property="name" column="name" jdbcType="VARCHAR"/>
|
||||
<result property="path" column="path" jdbcType="VARCHAR"/>
|
||||
<result property="parent_id" column="parent_id" jdbcType="BIGINT"/>
|
||||
<result property="type" column="type" jdbcType="TINYINT"/>
|
||||
<result property="icon" column="icon" jdbcType="VARCHAR"/>
|
||||
<result property="create_time" column="create_time" jdbcType="TIMESTAMP"/>
|
||||
<result property="create_by" column="create_by" jdbcType="VARCHAR"/>
|
||||
<result property="update_time" column="update_time" jdbcType="TIMESTAMP"/>
|
||||
<result property="update_by" column="update_by" jdbcType="VARCHAR"/>
|
||||
</resultMap>
|
||||
|
||||
<sql id="Base_Column_List">
|
||||
id,name,path,
|
||||
parent_id,type,icon,
|
||||
create_time,create_by,update_time,
|
||||
update_by
|
||||
</sql>
|
||||
</mapper>
|
||||
31
src/main/resources/mapper/SysPermissionMapper.xml
Normal file
31
src/main/resources/mapper/SysPermissionMapper.xml
Normal file
@@ -0,0 +1,31 @@
|
||||
<?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="cn.xf.basedemo.mappers.SysPermissionMapper">
|
||||
|
||||
<resultMap id="BaseResultMap" type="cn.xf.basedemo.model.domain.SysPermission">
|
||||
<id property="id" column="id" jdbcType="BIGINT"/>
|
||||
<result property="code" column="code" jdbcType="VARCHAR"/>
|
||||
<result property="name" column="name" jdbcType="VARCHAR"/>
|
||||
<result property="menu_id" column="menu_id" jdbcType="BIGINT"/>
|
||||
<result property="create_time" column="create_time" jdbcType="TIMESTAMP"/>
|
||||
<result property="create_by" column="create_by" jdbcType="VARCHAR"/>
|
||||
<result property="update_time" column="update_time" jdbcType="TIMESTAMP"/>
|
||||
<result property="update_by" column="update_by" jdbcType="VARCHAR"/>
|
||||
</resultMap>
|
||||
|
||||
<sql id="Base_Column_List">
|
||||
id,code,name,
|
||||
menu_id,create_time,create_by,
|
||||
update_time,update_by
|
||||
</sql>
|
||||
|
||||
<select id="getPermissionListByRoleId" resultType="java.lang.String">
|
||||
select code
|
||||
from sys_permission p
|
||||
left join sys_role_permission rp on p.id = rp.permission_id
|
||||
left join sys_user_role ur on rp.role_id = ur.role_id
|
||||
where ur.user_id = #{userId}
|
||||
</select>
|
||||
</mapper>
|
||||
30
src/main/resources/mapper/SysRoleMapper.xml
Normal file
30
src/main/resources/mapper/SysRoleMapper.xml
Normal file
@@ -0,0 +1,30 @@
|
||||
<?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="cn.xf.basedemo.mappers.SysRoleMapper">
|
||||
|
||||
<resultMap id="BaseResultMap" type="cn.xf.basedemo.model.domain.SysRole">
|
||||
<id property="id" column="id" jdbcType="BIGINT"/>
|
||||
<result property="name" column="name" jdbcType="VARCHAR"/>
|
||||
<result property="code" column="code" jdbcType="VARCHAR"/>
|
||||
<result property="status" column="status" jdbcType="TINYINT"/>
|
||||
<result property="create_time" column="create_time" jdbcType="TIMESTAMP"/>
|
||||
<result property="create_by" column="create_by" jdbcType="VARCHAR"/>
|
||||
<result property="update_time" column="update_time" jdbcType="TIMESTAMP"/>
|
||||
<result property="update_by" column="update_by" jdbcType="VARCHAR"/>
|
||||
</resultMap>
|
||||
|
||||
<sql id="Base_Column_List">
|
||||
id,name,code,
|
||||
status,create_time,create_by,
|
||||
update_time,update_by
|
||||
</sql>
|
||||
|
||||
<select id="getRoleListByUserId" resultType="java.lang.String">
|
||||
select r.code
|
||||
from sys_user_role ur
|
||||
left join sys_role r on ur.role_id = r.id
|
||||
where ur.user_id = #{userId}
|
||||
</select>
|
||||
</mapper>
|
||||
20
src/main/resources/mapper/SysRoleMenuMapper.xml
Normal file
20
src/main/resources/mapper/SysRoleMenuMapper.xml
Normal file
@@ -0,0 +1,20 @@
|
||||
<?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="cn.xf.basedemo.mappers.SysRoleMenuMapper">
|
||||
|
||||
<resultMap id="BaseResultMap" type="cn.xf.basedemo.model.domain.SysRoleMenu">
|
||||
<id property="role_id" column="role_id" jdbcType="BIGINT"/>
|
||||
<id property="menu_id" column="menu_id" jdbcType="BIGINT"/>
|
||||
<result property="create_time" column="create_time" jdbcType="TIMESTAMP"/>
|
||||
<result property="create_by" column="create_by" jdbcType="VARCHAR"/>
|
||||
<result property="update_time" column="update_time" jdbcType="TIMESTAMP"/>
|
||||
<result property="update_by" column="update_by" jdbcType="VARCHAR"/>
|
||||
</resultMap>
|
||||
|
||||
<sql id="Base_Column_List">
|
||||
role_id,menu_id,create_time,
|
||||
create_by,update_time,update_by
|
||||
</sql>
|
||||
</mapper>
|
||||
20
src/main/resources/mapper/SysRolePermissionMapper.xml
Normal file
20
src/main/resources/mapper/SysRolePermissionMapper.xml
Normal file
@@ -0,0 +1,20 @@
|
||||
<?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="cn.xf.basedemo.mappers.SysRolePermissionMapper">
|
||||
|
||||
<resultMap id="BaseResultMap" type="cn.xf.basedemo.model.domain.SysRolePermission">
|
||||
<id property="role_id" column="role_id" jdbcType="BIGINT"/>
|
||||
<id property="permission_id" column="permission_id" jdbcType="BIGINT"/>
|
||||
<result property="create_time" column="create_time" jdbcType="TIMESTAMP"/>
|
||||
<result property="create_by" column="create_by" jdbcType="VARCHAR"/>
|
||||
<result property="update_time" column="update_time" jdbcType="TIMESTAMP"/>
|
||||
<result property="update_by" column="update_by" jdbcType="VARCHAR"/>
|
||||
</resultMap>
|
||||
|
||||
<sql id="Base_Column_List">
|
||||
role_id,permission_id,create_time,
|
||||
create_by,update_time,update_by
|
||||
</sql>
|
||||
</mapper>
|
||||
20
src/main/resources/mapper/SysUserRoleMapper.xml
Normal file
20
src/main/resources/mapper/SysUserRoleMapper.xml
Normal file
@@ -0,0 +1,20 @@
|
||||
<?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="cn.xf.basedemo.mappers.SysUserRoleMapper">
|
||||
|
||||
<resultMap id="BaseResultMap" type="cn.xf.basedemo.model.domain.SysUserRole">
|
||||
<id property="user_id" column="user_id" jdbcType="BIGINT"/>
|
||||
<id property="role_id" column="role_id" jdbcType="BIGINT"/>
|
||||
<result property="create_time" column="create_time" jdbcType="TIMESTAMP"/>
|
||||
<result property="create_by" column="create_by" jdbcType="VARCHAR"/>
|
||||
<result property="update_time" column="update_time" jdbcType="TIMESTAMP"/>
|
||||
<result property="update_by" column="update_by" jdbcType="VARCHAR"/>
|
||||
</resultMap>
|
||||
|
||||
<sql id="Base_Column_List">
|
||||
user_id,role_id,create_time,
|
||||
create_by,update_time,update_by
|
||||
</sql>
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user