系统完善
This commit is contained in:
@@ -1,27 +1,27 @@
|
|||||||
//package com.dc.dc_project.config;
|
package com.dc.dc_project.config;
|
||||||
//
|
|
||||||
//import cn.dev33.satoken.SaManager;
|
import cn.dev33.satoken.SaManager;
|
||||||
//import cn.dev33.satoken.context.SaHolder;
|
import cn.dev33.satoken.context.SaHolder;
|
||||||
//import cn.dev33.satoken.interceptor.SaInterceptor;
|
import cn.dev33.satoken.interceptor.SaInterceptor;
|
||||||
//import cn.dev33.satoken.router.SaRouter;
|
import cn.dev33.satoken.router.SaRouter;
|
||||||
//import cn.dev33.satoken.stp.StpUtil;
|
import cn.dev33.satoken.stp.StpUtil;
|
||||||
//import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
||||||
//import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
//import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
|
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
|
||||||
//import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||||
//
|
|
||||||
//
|
|
||||||
//@Configuration
|
@Configuration
|
||||||
//@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET)
|
@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET)
|
||||||
//public class SaTokenConfigure implements WebMvcConfigurer {
|
public class SaTokenConfigure implements WebMvcConfigurer {
|
||||||
//
|
|
||||||
// @Override
|
@Override
|
||||||
// public void addInterceptors(InterceptorRegistry registry) {
|
public void addInterceptors(InterceptorRegistry registry) {
|
||||||
// registry.addInterceptor(new SaInterceptor(h -> {
|
registry.addInterceptor(new SaInterceptor(h -> {
|
||||||
//
|
|
||||||
// SaManager.getLog().debug("----- 请求path={} 提交token={}", SaHolder.getRequest().getRequestPath(), StpUtil.getTokenValue());
|
//SaManager.getLog().debug("----- 请求path={} 提交token={}", SaHolder.getRequest().getRequestPath(), StpUtil.getTokenValue());
|
||||||
// SaRouter.match("/project/**").check(StpUtil::checkLogin);
|
SaRouter.match("/project/**").check(StpUtil::checkLogin);
|
||||||
// })).addPathPatterns("/**");
|
})).addPathPatterns("/**").excludePathPatterns("/auth/**","/error","/favicon.ico");
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
//}
|
}
|
||||||
|
|||||||
@@ -1,46 +1,46 @@
|
|||||||
//package com.dc.dc_project.config;
|
package com.dc.dc_project.config;
|
||||||
//
|
|
||||||
//import cn.dev33.satoken.stp.StpInterface;
|
import cn.dev33.satoken.stp.StpInterface;
|
||||||
//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
//import com.dc.dc_project.model.pojo.Role;
|
import com.dc.dc_project.model.pojo.Role;
|
||||||
//import com.dc.dc_project.model.pojo.UserRole;
|
import com.dc.dc_project.model.pojo.UserRole;
|
||||||
//import com.dc.dc_project.service.RoleService;
|
import com.dc.dc_project.service.RoleService;
|
||||||
//import com.dc.dc_project.service.UserRoleService;
|
import com.dc.dc_project.service.UserRoleService;
|
||||||
//import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
//import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
//import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
//import java.util.List;
|
import java.util.List;
|
||||||
//
|
|
||||||
///**
|
/**
|
||||||
// * 权限加载接口实现类
|
* 权限加载接口实现类
|
||||||
// */
|
*/
|
||||||
//@Component
|
@Component
|
||||||
//@RequiredArgsConstructor(onConstructor_ = {@Autowired})
|
@RequiredArgsConstructor(onConstructor_ = {@Autowired})
|
||||||
//public class StpInterfaceImpl implements StpInterface {
|
public class StpInterfaceImpl implements StpInterface {
|
||||||
//
|
|
||||||
// @Autowired
|
@Autowired
|
||||||
// private UserRoleService userRoleService;
|
private UserRoleService userRoleService;
|
||||||
//
|
|
||||||
// @Autowired
|
@Autowired
|
||||||
// private RoleService roleService;
|
private RoleService roleService;
|
||||||
// /**
|
/**
|
||||||
// * 返回一个账号所拥有的权限码集合
|
* 返回一个账号所拥有的权限码集合
|
||||||
// */
|
*/
|
||||||
// @Override
|
@Override
|
||||||
// public List<String> getPermissionList(Object loginId, String loginType) {
|
public List<String> getPermissionList(Object loginId, String loginType) {
|
||||||
// LambdaQueryWrapper<UserRole> lambdaQueryWrapper = new LambdaQueryWrapper<UserRole>().eq(UserRole::getUserId, Long.valueOf(loginId.toString()));
|
LambdaQueryWrapper<UserRole> lambdaQueryWrapper = new LambdaQueryWrapper<UserRole>().eq(UserRole::getUserId, Long.valueOf(loginId.toString()));
|
||||||
// List<Long> roleIds = userRoleService.list(lambdaQueryWrapper).stream().map(UserRole::getRoleId).toList();
|
List<Long> roleIds = userRoleService.list(lambdaQueryWrapper).stream().map(UserRole::getRoleId).toList();
|
||||||
// return roleService.list(new LambdaQueryWrapper<Role>().in(Role::getId, roleIds)).stream().map(Role::getCode).toList();
|
return roleService.list(new LambdaQueryWrapper<Role>().in(Role::getId, roleIds)).stream().map(Role::getCode).toList();
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// /**
|
/**
|
||||||
// * 返回一个账号所拥有的角色标识集合 (权限与角色可分开校验)
|
* 返回一个账号所拥有的角色标识集合 (权限与角色可分开校验)
|
||||||
// */
|
*/
|
||||||
// @Override
|
@Override
|
||||||
// public List<String> getRoleList(Object loginId, String loginType) {
|
public List<String> getRoleList(Object loginId, String loginType) {
|
||||||
// LambdaQueryWrapper<UserRole> lambdaQueryWrapper = new LambdaQueryWrapper<UserRole>().eq(UserRole::getUserId, Long.valueOf(loginId.toString()));
|
LambdaQueryWrapper<UserRole> lambdaQueryWrapper = new LambdaQueryWrapper<UserRole>().eq(UserRole::getUserId, Long.valueOf(loginId.toString()));
|
||||||
// List<Long> roleIds = userRoleService.list(lambdaQueryWrapper).stream().map(UserRole::getRoleId).toList();
|
List<Long> roleIds = userRoleService.list(lambdaQueryWrapper).stream().map(UserRole::getRoleId).toList();
|
||||||
// return roleService.list(new LambdaQueryWrapper<Role>().in(Role::getId, roleIds)).stream().map(Role::getCode).toList();
|
return roleService.list(new LambdaQueryWrapper<Role>().in(Role::getId, roleIds)).stream().map(Role::getCode).toList();
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
//}
|
}
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ import static com.dc.dc_project.common.ResultCode.*;
|
|||||||
* @date 2022/3/11
|
* @date 2022/3/11
|
||||||
* @apiNote
|
* @apiNote
|
||||||
*/
|
*/
|
||||||
@ControllerAdvice(basePackages = "com.liy")
|
@ControllerAdvice(basePackages = "com.dc.dc_project.controller")
|
||||||
public class GlobalException {
|
public class GlobalException {
|
||||||
|
|
||||||
private static final Logger logger = LoggerFactory.getLogger(GlobalException.class);
|
private static final Logger logger = LoggerFactory.getLogger(GlobalException.class);
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.dc.dc_project.controller;
|
package com.dc.dc_project.controller.sys;
|
||||||
|
|
||||||
|
|
||||||
import cn.dev33.satoken.stp.StpUtil;
|
import cn.dev33.satoken.stp.StpUtil;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.dc.dc_project.controller;
|
package com.dc.dc_project.controller.sys;
|
||||||
|
|
||||||
|
|
||||||
import com.dc.dc_project.common.ResponseResult;
|
import com.dc.dc_project.common.ResponseResult;
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
package com.dc.dc_project.controller.sys;
|
||||||
|
|
||||||
|
|
||||||
|
import cn.dev33.satoken.stp.StpUtil;
|
||||||
|
import com.dc.dc_project.common.ResponseResult;
|
||||||
|
import com.dc.dc_project.model.dto.PermissionAddDto;
|
||||||
|
import com.dc.dc_project.model.dto.PermissionDto;
|
||||||
|
import com.dc.dc_project.model.pojo.Permission;
|
||||||
|
import com.dc.dc_project.service.PermissionService;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/permission")
|
||||||
|
@RequiredArgsConstructor(onConstructor_ = @Autowired)
|
||||||
|
@Tag(name = "权限")
|
||||||
|
public class PermissionController {
|
||||||
|
|
||||||
|
private final PermissionService permissionService;
|
||||||
|
|
||||||
|
@PostMapping("/list")
|
||||||
|
public ResponseResult list(@RequestBody PermissionDto permissionDto) {
|
||||||
|
Long userId = StpUtil.getLoginIdAsLong();
|
||||||
|
return permissionService.getList(permissionDto, userId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/add")
|
||||||
|
public ResponseResult add(@RequestBody PermissionAddDto permissionDto) {
|
||||||
|
Long userId = StpUtil.getLoginIdAsLong();
|
||||||
|
return permissionService.add(permissionDto, userId);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.dc.dc_project.controller;
|
package com.dc.dc_project.controller.sys;
|
||||||
|
|
||||||
|
|
||||||
import cn.dev33.satoken.stp.StpUtil;
|
import cn.dev33.satoken.stp.StpUtil;
|
||||||
@@ -25,4 +25,24 @@ public class RoleController {
|
|||||||
Long userId = StpUtil.getLoginIdAsLong();
|
Long userId = StpUtil.getLoginIdAsLong();
|
||||||
return roleService.getList(roleDto, userId);
|
return roleService.getList(roleDto, userId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/add")
|
||||||
|
public ResponseResult add(@RequestBody RoleDto roleDto) {
|
||||||
|
Long userId = StpUtil.getLoginIdAsLong();
|
||||||
|
return roleService.add(roleDto, userId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/update")
|
||||||
|
public ResponseResult update(@RequestBody RoleDto roleDto) {
|
||||||
|
Long userId = StpUtil.getLoginIdAsLong();
|
||||||
|
return roleService.updateRole(roleDto, userId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/delete")
|
||||||
|
public ResponseResult delete(@RequestBody RoleDto roleDto) {
|
||||||
|
Long userId = StpUtil.getLoginIdAsLong();
|
||||||
|
return roleService.delete(roleDto, userId);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.dc.dc_project.controller;
|
package com.dc.dc_project.controller.sys;
|
||||||
|
|
||||||
|
|
||||||
import cn.dev33.satoken.stp.StpUtil;
|
import cn.dev33.satoken.stp.StpUtil;
|
||||||
36
src/main/java/com/dc/dc_project/enums/Status.java
Normal file
36
src/main/java/com/dc/dc_project/enums/Status.java
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
package com.dc.dc_project.enums;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
public enum Status {
|
||||||
|
|
||||||
|
NORMAL(1, "正常"),
|
||||||
|
DISABLE(0, "禁用");
|
||||||
|
|
||||||
|
private final Integer code;
|
||||||
|
private final String message;
|
||||||
|
|
||||||
|
Status(Integer code, String message) {
|
||||||
|
this.code = code;
|
||||||
|
this.message = message;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getMessage(Integer code) {
|
||||||
|
for (Status value : Status.values()) {
|
||||||
|
if (value.getCode().equals(code)) {
|
||||||
|
return value.getMessage();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Integer getCode(String message) {
|
||||||
|
for (Status value : Status.values()) {
|
||||||
|
if (value.getMessage().equals(message)) {
|
||||||
|
return value.getCode();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,8 +1,11 @@
|
|||||||
package com.dc.dc_project.mapper;
|
package com.dc.dc_project.mapper;
|
||||||
|
|
||||||
|
import com.dc.dc_project.model.dto.PermissionDto;
|
||||||
import com.dc.dc_project.model.pojo.Permission;
|
import com.dc.dc_project.model.pojo.Permission;
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author ADMIN
|
* @author ADMIN
|
||||||
* @description 针对表【sys_permission(系统权限表(菜单/接口控制))】的数据库操作Mapper
|
* @description 针对表【sys_permission(系统权限表(菜单/接口控制))】的数据库操作Mapper
|
||||||
@@ -11,6 +14,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
|||||||
*/
|
*/
|
||||||
public interface PermissionMapper extends BaseMapper<Permission> {
|
public interface PermissionMapper extends BaseMapper<Permission> {
|
||||||
|
|
||||||
|
List<Permission> getList(PermissionDto permissionDto);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
25
src/main/java/com/dc/dc_project/model/TreeNode.java
Normal file
25
src/main/java/com/dc/dc_project/model/TreeNode.java
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
package com.dc.dc_project.model;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public interface TreeNode<T> {
|
||||||
|
/**
|
||||||
|
* 获取节点ID
|
||||||
|
*/
|
||||||
|
Object getId();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取父节点ID
|
||||||
|
*/
|
||||||
|
Object getParentId();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取子节点列表
|
||||||
|
*/
|
||||||
|
List<T> getChildren();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置子节点列表
|
||||||
|
*/
|
||||||
|
void setChildren(List<T> children);
|
||||||
|
}
|
||||||
@@ -8,4 +8,7 @@ import lombok.EqualsAndHashCode;
|
|||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
public class BasePage<T> extends Page<T> {
|
public class BasePage<T> extends Page<T> {
|
||||||
|
|
||||||
|
public Page getPage() {
|
||||||
|
return new Page<>(this.getCurrent(), this.getSize());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
package com.dc.dc_project.model.dto;
|
||||||
|
|
||||||
|
|
||||||
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class PermissionAddDto {
|
||||||
|
|
||||||
|
@NotBlank(message = "权限名称不能为空")
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
private String code;
|
||||||
|
|
||||||
|
private Long parentId;
|
||||||
|
}
|
||||||
20
src/main/java/com/dc/dc_project/model/dto/PermissionDto.java
Normal file
20
src/main/java/com/dc/dc_project/model/dto/PermissionDto.java
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
package com.dc.dc_project.model.dto;
|
||||||
|
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@Data
|
||||||
|
public class PermissionDto extends BasePage<PermissionDto>{
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
private String code;
|
||||||
|
|
||||||
|
private Long status;
|
||||||
|
|
||||||
|
private Long roleId;
|
||||||
|
|
||||||
|
//private long size = 1000;
|
||||||
|
}
|
||||||
@@ -8,6 +8,8 @@ import lombok.EqualsAndHashCode;
|
|||||||
@Data
|
@Data
|
||||||
public class RoleDto extends BasePage<RoleDto>{
|
public class RoleDto extends BasePage<RoleDto>{
|
||||||
|
|
||||||
|
private Long id;
|
||||||
|
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
private String code;
|
private String code;
|
||||||
@@ -15,4 +17,6 @@ public class RoleDto extends BasePage<RoleDto>{
|
|||||||
private Long level;
|
private Long level;
|
||||||
|
|
||||||
private Long status;
|
private Long status;
|
||||||
|
|
||||||
|
private String description;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,6 @@ package com.dc.dc_project.model.vo;
|
|||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
|
||||||
public class BasePageVo<T> extends Page<T> {
|
public class BasePageVo<T> extends Page<T>{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.annotation.IdType;
|
|||||||
import com.baomidou.mybatisplus.annotation.TableField;
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import com.dc.dc_project.model.TreeNode;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 系统权限表(菜单/接口控制)
|
* 系统权限表(菜单/接口控制)
|
||||||
@@ -14,161 +16,76 @@ import java.time.LocalDateTime;
|
|||||||
*/
|
*/
|
||||||
@TableName(value ="sys_permission")
|
@TableName(value ="sys_permission")
|
||||||
@Data
|
@Data
|
||||||
public class PermissionVo {
|
public class PermissionVo implements TreeNode<PermissionVo> {
|
||||||
/**
|
/**
|
||||||
* 主键ID
|
* 主键ID
|
||||||
*/
|
*/
|
||||||
@TableId(value = "id", type = IdType.AUTO)
|
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 上级权限ID(形成权限树)
|
* 上级权限ID(形成权限树)
|
||||||
*/
|
*/
|
||||||
@TableField(value = "parent_id")
|
|
||||||
private Long parentId;
|
private Long parentId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 权限名称
|
* 权限名称
|
||||||
*/
|
*/
|
||||||
@TableField(value = "name")
|
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 权限编码(如 system:user:view)
|
* 权限编码(如 system:user:view)
|
||||||
*/
|
*/
|
||||||
@TableField(value = "code")
|
|
||||||
private String code;
|
private String code;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 权限类型(1=目录,2=菜单,3=按钮/接口)
|
* 权限类型(1=目录,2=菜单,3=按钮/接口)
|
||||||
*/
|
*/
|
||||||
@TableField(value = "type")
|
|
||||||
private Integer type;
|
private Integer type;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 前端路径或接口地址
|
* 前端路径或接口地址
|
||||||
*/
|
*/
|
||||||
@TableField(value = "path")
|
|
||||||
private String path;
|
private String path;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* HTTP方法(GET/POST/PUT/DELETE)
|
* HTTP方法(GET/POST/PUT/DELETE)
|
||||||
*/
|
*/
|
||||||
@TableField(value = "method")
|
|
||||||
private String method;
|
private String method;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 图标(菜单类)
|
* 图标(菜单类)
|
||||||
*/
|
*/
|
||||||
@TableField(value = "icon")
|
|
||||||
private String icon;
|
private String icon;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 排序号
|
* 排序号
|
||||||
*/
|
*/
|
||||||
@TableField(value = "sort_order")
|
|
||||||
private Integer sortOrder;
|
private Integer sortOrder;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 状态(0=停用,1=启用)
|
* 状态(0=停用,1=启用)
|
||||||
*/
|
*/
|
||||||
@TableField(value = "status")
|
|
||||||
private Integer status;
|
private Integer status;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 备注
|
* 备注
|
||||||
*/
|
*/
|
||||||
@TableField(value = "remark")
|
|
||||||
private String remark;
|
private String remark;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建时间
|
* 创建时间
|
||||||
*/
|
*/
|
||||||
@TableField(value = "created_at")
|
|
||||||
private LocalDateTime createdAt;
|
private LocalDateTime createdAt;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新时间
|
* 更新时间
|
||||||
*/
|
*/
|
||||||
@TableField(value = "updated_at")
|
|
||||||
private LocalDateTime updatedAt;
|
private LocalDateTime updatedAt;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 逻辑删除标志
|
* 逻辑删除标志
|
||||||
*/
|
*/
|
||||||
@TableField(value = "is_deleted")
|
|
||||||
private Integer isDeleted;
|
private Integer isDeleted;
|
||||||
|
|
||||||
@Override
|
private List<PermissionVo> children;
|
||||||
public boolean equals(Object that) {
|
|
||||||
if (this == that) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (that == null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (getClass() != that.getClass()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
PermissionVo other = (PermissionVo) that;
|
|
||||||
return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
|
|
||||||
&& (this.getParentId() == null ? other.getParentId() == null : this.getParentId().equals(other.getParentId()))
|
|
||||||
&& (this.getName() == null ? other.getName() == null : this.getName().equals(other.getName()))
|
|
||||||
&& (this.getCode() == null ? other.getCode() == null : this.getCode().equals(other.getCode()))
|
|
||||||
&& (this.getType() == null ? other.getType() == null : this.getType().equals(other.getType()))
|
|
||||||
&& (this.getPath() == null ? other.getPath() == null : this.getPath().equals(other.getPath()))
|
|
||||||
&& (this.getMethod() == null ? other.getMethod() == null : this.getMethod().equals(other.getMethod()))
|
|
||||||
&& (this.getIcon() == null ? other.getIcon() == null : this.getIcon().equals(other.getIcon()))
|
|
||||||
&& (this.getSortOrder() == null ? other.getSortOrder() == null : this.getSortOrder().equals(other.getSortOrder()))
|
|
||||||
&& (this.getStatus() == null ? other.getStatus() == null : this.getStatus().equals(other.getStatus()))
|
|
||||||
&& (this.getRemark() == null ? other.getRemark() == null : this.getRemark().equals(other.getRemark()))
|
|
||||||
&& (this.getCreatedAt() == null ? other.getCreatedAt() == null : this.getCreatedAt().equals(other.getCreatedAt()))
|
|
||||||
&& (this.getUpdatedAt() == null ? other.getUpdatedAt() == null : this.getUpdatedAt().equals(other.getUpdatedAt()))
|
|
||||||
&& (this.getIsDeleted() == null ? other.getIsDeleted() == null : this.getIsDeleted().equals(other.getIsDeleted()));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int hashCode() {
|
|
||||||
final int prime = 31;
|
|
||||||
int result = 1;
|
|
||||||
result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
|
|
||||||
result = prime * result + ((getParentId() == null) ? 0 : getParentId().hashCode());
|
|
||||||
result = prime * result + ((getName() == null) ? 0 : getName().hashCode());
|
|
||||||
result = prime * result + ((getCode() == null) ? 0 : getCode().hashCode());
|
|
||||||
result = prime * result + ((getType() == null) ? 0 : getType().hashCode());
|
|
||||||
result = prime * result + ((getPath() == null) ? 0 : getPath().hashCode());
|
|
||||||
result = prime * result + ((getMethod() == null) ? 0 : getMethod().hashCode());
|
|
||||||
result = prime * result + ((getIcon() == null) ? 0 : getIcon().hashCode());
|
|
||||||
result = prime * result + ((getSortOrder() == null) ? 0 : getSortOrder().hashCode());
|
|
||||||
result = prime * result + ((getStatus() == null) ? 0 : getStatus().hashCode());
|
|
||||||
result = prime * result + ((getRemark() == null) ? 0 : getRemark().hashCode());
|
|
||||||
result = prime * result + ((getCreatedAt() == null) ? 0 : getCreatedAt().hashCode());
|
|
||||||
result = prime * result + ((getUpdatedAt() == null) ? 0 : getUpdatedAt().hashCode());
|
|
||||||
result = prime * result + ((getIsDeleted() == null) ? 0 : getIsDeleted().hashCode());
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
StringBuilder sb = new StringBuilder();
|
|
||||||
sb.append(getClass().getSimpleName());
|
|
||||||
sb.append(" [");
|
|
||||||
sb.append("Hash = ").append(hashCode());
|
|
||||||
sb.append(", id=").append(id);
|
|
||||||
sb.append(", parentId=").append(parentId);
|
|
||||||
sb.append(", name=").append(name);
|
|
||||||
sb.append(", code=").append(code);
|
|
||||||
sb.append(", type=").append(type);
|
|
||||||
sb.append(", path=").append(path);
|
|
||||||
sb.append(", method=").append(method);
|
|
||||||
sb.append(", icon=").append(icon);
|
|
||||||
sb.append(", sortOrder=").append(sortOrder);
|
|
||||||
sb.append(", status=").append(status);
|
|
||||||
sb.append(", remark=").append(remark);
|
|
||||||
sb.append(", createdAt=").append(createdAt);
|
|
||||||
sb.append(", updatedAt=").append(updatedAt);
|
|
||||||
sb.append(", isDeleted=").append(isDeleted);
|
|
||||||
sb.append("]");
|
|
||||||
return sb.toString();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,8 @@
|
|||||||
package com.dc.dc_project.service;
|
package com.dc.dc_project.service;
|
||||||
|
|
||||||
|
import com.dc.dc_project.common.ResponseResult;
|
||||||
|
import com.dc.dc_project.model.dto.PermissionAddDto;
|
||||||
|
import com.dc.dc_project.model.dto.PermissionDto;
|
||||||
import com.dc.dc_project.model.pojo.Permission;
|
import com.dc.dc_project.model.pojo.Permission;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
|
||||||
@@ -10,4 +13,19 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
|||||||
*/
|
*/
|
||||||
public interface PermissionService extends IService<Permission> {
|
public interface PermissionService extends IService<Permission> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取权限列表
|
||||||
|
* @param permissionDto
|
||||||
|
* @param userId
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
ResponseResult getList(PermissionDto permissionDto, Long userId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加权限
|
||||||
|
* @param permissionDto
|
||||||
|
* @param userId
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
ResponseResult add(PermissionAddDto permissionDto, Long userId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,4 +14,28 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
|||||||
public interface RoleService extends IService<Role> {
|
public interface RoleService extends IService<Role> {
|
||||||
|
|
||||||
ResponseResult getList(RoleDto roleDto, Long userId);
|
ResponseResult getList(RoleDto roleDto, Long userId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新角色
|
||||||
|
* @param roleDto
|
||||||
|
* @param userId
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
ResponseResult updateRole(RoleDto roleDto, Long userId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加角色
|
||||||
|
* @param roleDto
|
||||||
|
* @param userId
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
ResponseResult add(RoleDto roleDto, Long userId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除角色
|
||||||
|
* @param roleDto
|
||||||
|
* @param userId
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
ResponseResult delete(RoleDto roleDto, Long userId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,21 @@
|
|||||||
package com.dc.dc_project.service.impl;
|
package com.dc.dc_project.service.impl;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.dc.dc_project.common.ResponseResult;
|
||||||
|
import com.dc.dc_project.enums.IsDeleted;
|
||||||
|
import com.dc.dc_project.model.dto.PermissionAddDto;
|
||||||
|
import com.dc.dc_project.model.dto.PermissionDto;
|
||||||
import com.dc.dc_project.model.pojo.Permission;
|
import com.dc.dc_project.model.pojo.Permission;
|
||||||
|
import com.dc.dc_project.model.vo.PermissionVo;
|
||||||
import com.dc.dc_project.service.PermissionService;
|
import com.dc.dc_project.service.PermissionService;
|
||||||
import com.dc.dc_project.mapper.PermissionMapper;
|
import com.dc.dc_project.mapper.PermissionMapper;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author ADMIN
|
* @author ADMIN
|
||||||
* @description 针对表【sys_permission(系统权限表(菜单/接口控制))】的数据库操作Service实现
|
* @description 针对表【sys_permission(系统权限表(菜单/接口控制))】的数据库操作Service实现
|
||||||
@@ -17,6 +26,38 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
public class PermissionServiceImpl extends ServiceImpl<PermissionMapper, Permission>
|
public class PermissionServiceImpl extends ServiceImpl<PermissionMapper, Permission>
|
||||||
implements PermissionService{
|
implements PermissionService{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ResponseResult getList(PermissionDto permissionDto, Long userId) {
|
||||||
|
|
||||||
|
|
||||||
|
//LambdaQueryWrapper<Permission> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
//queryWrapper
|
||||||
|
// .like(permissionDto.getName() != null, Permission::getName, permissionDto.getName())
|
||||||
|
// .like(permissionDto.getCode() != null, Permission::getCode, permissionDto.getCode())
|
||||||
|
// .eq(permissionDto.getStatus() != null, Permission::getStatus, permissionDto.getStatus())
|
||||||
|
// .eq(Permission::getIsDeleted, IsDeleted.NO.getCode());
|
||||||
|
//
|
||||||
|
//Page<Permission> page = this.page(permissionDto.getPage(), queryWrapper);
|
||||||
|
|
||||||
|
List<Permission> permissionList = baseMapper.getList(permissionDto);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//return ResponseResult.success(page);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ResponseResult add(PermissionAddDto permissionDto, Long userId) {
|
||||||
|
Permission permission = new Permission();
|
||||||
|
permission.setName(permissionDto.getName());
|
||||||
|
permission.setCode(permissionDto.getCode());
|
||||||
|
permission.setParentId(permissionDto.getParentId());
|
||||||
|
|
||||||
|
return this.save(permission) ? ResponseResult.success() : ResponseResult.error();
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.dc.dc_project.common.ResponseResult;
|
import com.dc.dc_project.common.ResponseResult;
|
||||||
|
import com.dc.dc_project.common.ResultCode;
|
||||||
|
import com.dc.dc_project.enums.IsDeleted;
|
||||||
import com.dc.dc_project.model.dto.RoleDto;
|
import com.dc.dc_project.model.dto.RoleDto;
|
||||||
import com.dc.dc_project.model.pojo.RecordResult;
|
import com.dc.dc_project.model.pojo.RecordResult;
|
||||||
import com.dc.dc_project.model.pojo.Role;
|
import com.dc.dc_project.model.pojo.Role;
|
||||||
@@ -33,6 +35,41 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role>
|
|||||||
Page<Role> page = new Page<>(roleDto.getCurrent(), roleDto.getSize());
|
Page<Role> page = new Page<>(roleDto.getCurrent(), roleDto.getSize());
|
||||||
return ResponseResult.success(this.page(page, queryWrapper));
|
return ResponseResult.success(this.page(page, queryWrapper));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ResponseResult updateRole(RoleDto roleDto, Long userId) {
|
||||||
|
Role role = this.getById(roleDto.getId());
|
||||||
|
if (role != null) {
|
||||||
|
role.setName(roleDto.getName() != null? roleDto.getName() : role.getName());
|
||||||
|
role.setCode(roleDto.getCode() != null? roleDto.getCode() : role.getCode());
|
||||||
|
role.setLevel(roleDto.getLevel() != null? Math.toIntExact(roleDto.getLevel()) : role.getLevel());
|
||||||
|
role.setDescription(roleDto.getDescription() != null? roleDto.getDescription() : role.getDescription());
|
||||||
|
role.setStatus(roleDto.getStatus() != null? Math.toIntExact(roleDto.getStatus()) : role.getStatus());
|
||||||
|
return this.updateById(role) ? ResponseResult.success() : ResponseResult.error();
|
||||||
|
}
|
||||||
|
return ResponseResult.error(ResultCode.FAILURE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ResponseResult add(RoleDto roleDto, Long userId) {
|
||||||
|
Role role = new Role();
|
||||||
|
role.setName(roleDto.getName());
|
||||||
|
role.setCode(roleDto.getCode());
|
||||||
|
role.setLevel(Math.toIntExact(roleDto.getLevel()));
|
||||||
|
role.setDescription(roleDto.getDescription());
|
||||||
|
|
||||||
|
return this.save(role) ? ResponseResult.success() : ResponseResult.error();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ResponseResult delete(RoleDto roleDto, Long userId) {
|
||||||
|
Role role = this.getById(roleDto.getId());
|
||||||
|
if (role == null) {
|
||||||
|
return ResponseResult.error(ResultCode.FAILURE);
|
||||||
|
}
|
||||||
|
role.setIsDeleted(IsDeleted.YES.getCode());
|
||||||
|
return this.updateById(role) ? ResponseResult.success() : ResponseResult.error();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import org.springframework.stereotype.Service;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
import static com.dc.dc_project.model.vo.PersonnelVo.toVo;
|
import static com.dc.dc_project.model.vo.PersonnelVo.toVo;
|
||||||
|
|
||||||
@@ -57,6 +58,11 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User>
|
|||||||
.eq(Personnel::getUserId, user.getId())
|
.eq(Personnel::getUserId, user.getId())
|
||||||
.eq(Personnel::getIsDeleted, 0);
|
.eq(Personnel::getIsDeleted, 0);
|
||||||
Personnel personnel = personnelService.getOne(queryWrapper1);
|
Personnel personnel = personnelService.getOne(queryWrapper1);
|
||||||
|
if(Objects.equals(user.getUsername(), "admin")){
|
||||||
|
StpUtil.login(user.getId());
|
||||||
|
String token = StpUtil.getTokenValue();
|
||||||
|
return ResponseResult.success(token);
|
||||||
|
}
|
||||||
if(personnel == null){
|
if(personnel == null){
|
||||||
return ResponseResult.error(ResultCode.ERROR_USER_NOT_EXIST);
|
return ResponseResult.error(ResultCode.ERROR_USER_NOT_EXIST);
|
||||||
}
|
}
|
||||||
|
|||||||
67
src/main/java/com/dc/dc_project/utils/TreeUtil.java
Normal file
67
src/main/java/com/dc/dc_project/utils/TreeUtil.java
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
package com.dc.dc_project.utils;
|
||||||
|
|
||||||
|
import com.dc.dc_project.model.TreeNode;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 树结构工具类
|
||||||
|
* @author Your Name
|
||||||
|
*/
|
||||||
|
public class TreeUtil {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 构建树形结构(通用方法)
|
||||||
|
*
|
||||||
|
* @param list 原始列表数据
|
||||||
|
* @param rootId 根节点ID(通常为0或null)
|
||||||
|
* @param <T> 实现TreeNode接口的类型
|
||||||
|
* @return 树形结构列表
|
||||||
|
*/
|
||||||
|
public static <T extends TreeNode<T>> List<T> buildTree(List<T> list, Object rootId) {
|
||||||
|
if (list == null || list.isEmpty()) {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
return list.stream()
|
||||||
|
.filter(node -> Objects.equals(node.getParentId(), rootId))
|
||||||
|
.peek(node -> node.setChildren(getChildren(node, list)))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 递归获取子节点
|
||||||
|
*
|
||||||
|
* @param parent 父节点
|
||||||
|
* @param allNodes 所有节点列表
|
||||||
|
* @param <T> 实现TreeNode接口的类型
|
||||||
|
* @return 子节点列表
|
||||||
|
*/
|
||||||
|
private static <T extends TreeNode<T>> List<T> getChildren(T parent, List<T> allNodes) {
|
||||||
|
return allNodes.stream()
|
||||||
|
.filter(node -> Objects.equals(node.getParentId(), parent.getId()))
|
||||||
|
.peek(node -> node.setChildren(getChildren(node, allNodes)))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 构建树形结构(默认根节点ID为null)
|
||||||
|
*
|
||||||
|
* @param list 原始列表数据
|
||||||
|
* @param <T> 实现TreeNode接口的类型
|
||||||
|
* @return 树形结构列表
|
||||||
|
*/
|
||||||
|
public static <T extends TreeNode<T>> List<T> buildTree(List<T> list) {
|
||||||
|
return buildTree(list, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 树节点接口(所有需要构建树的实体类需要实现此接口)
|
||||||
|
*
|
||||||
|
* @param <T> 具体的实体类型
|
||||||
|
*/
|
||||||
|
|
||||||
@@ -4,26 +4,26 @@
|
|||||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
<mapper namespace="com.dc.dc_project.mapper.PermissionMapper">
|
<mapper namespace="com.dc.dc_project.mapper.PermissionMapper">
|
||||||
|
|
||||||
<resultMap id="BaseResultMap" type="com.dc.dc_project.model.pojo.Permission">
|
<select id="getList" resultType="com.dc.dc_project.model.pojo.Permission">
|
||||||
<id property="id" column="id" />
|
select sp.* from sys_permission sp
|
||||||
<result property="parent_id" column="parent_id" />
|
<if test="permissionDto.roleId != null and permissionDto.roleId != ''">
|
||||||
<result property="name" column="name" />
|
left join sys_role_permission srp on sp.id = srp.permission_id
|
||||||
<result property="code" column="code" />
|
</if>
|
||||||
<result property="type" column="type" />
|
<where>
|
||||||
<result property="path" column="path" />
|
<if test="permissionDto.name != null and permissionDto.name != ''">
|
||||||
<result property="method" column="method" />
|
and sp.name like concat('%',#{permissionDto.name},'%')
|
||||||
<result property="icon" column="icon" />
|
</if>
|
||||||
<result property="sort_order" column="sort_order" />
|
<if test="permissionDto.code != null and permissionDto.code != ''">
|
||||||
<result property="status" column="status" />
|
and sp.code like concat('%',#{permissionDto.code},'%')
|
||||||
<result property="remark" column="remark" />
|
</if>
|
||||||
<result property="created_at" column="created_at" />
|
<if test="permissionDto.status != null and permissionDto.status != ''">
|
||||||
<result property="updated_at" column="updated_at" />
|
and sp.status = #{permissionDto.status}
|
||||||
<result property="is_deleted" column="is_deleted" />
|
</if>
|
||||||
</resultMap>
|
<if test="permissionDto.roleId != null and permissionDto.roleId != ''">
|
||||||
|
and srp.role_id = #{permissionDto.roleId}
|
||||||
|
</if>
|
||||||
|
and sp.is_deleted = 0
|
||||||
|
</where>
|
||||||
|
|
||||||
<sql id="Base_Column_List">
|
</select>
|
||||||
id,parent_id,name,code,type,path,
|
|
||||||
method,icon,sort_order,status,remark,
|
|
||||||
created_at,updated_at,is_deleted
|
|
||||||
</sql>
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
Reference in New Issue
Block a user