系统完善

This commit is contained in:
lhx
2025-11-21 18:24:52 +08:00
parent ab31a72062
commit a04ecd8c67
24 changed files with 462 additions and 187 deletions

View File

@@ -1,27 +1,27 @@
//package com.dc.dc_project.config;
//
//import cn.dev33.satoken.SaManager;
//import cn.dev33.satoken.context.SaHolder;
//import cn.dev33.satoken.interceptor.SaInterceptor;
//import cn.dev33.satoken.router.SaRouter;
//import cn.dev33.satoken.stp.StpUtil;
//import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
//import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
//
//
//@Configuration
//@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET)
//public class SaTokenConfigure implements WebMvcConfigurer {
//
// @Override
// public void addInterceptors(InterceptorRegistry registry) {
// registry.addInterceptor(new SaInterceptor(h -> {
//
// SaManager.getLog().debug("----- 请求path={} 提交token={}", SaHolder.getRequest().getRequestPath(), StpUtil.getTokenValue());
// SaRouter.match("/project/**").check(StpUtil::checkLogin);
// })).addPathPatterns("/**");
// }
//
//}
package com.dc.dc_project.config;
import cn.dev33.satoken.SaManager;
import cn.dev33.satoken.context.SaHolder;
import cn.dev33.satoken.interceptor.SaInterceptor;
import cn.dev33.satoken.router.SaRouter;
import cn.dev33.satoken.stp.StpUtil;
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET)
public class SaTokenConfigure implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new SaInterceptor(h -> {
//SaManager.getLog().debug("----- 请求path={} 提交token={}", SaHolder.getRequest().getRequestPath(), StpUtil.getTokenValue());
SaRouter.match("/project/**").check(StpUtil::checkLogin);
})).addPathPatterns("/**").excludePathPatterns("/auth/**","/error","/favicon.ico");
}
}

View File

@@ -1,46 +1,46 @@
//package com.dc.dc_project.config;
//
//import cn.dev33.satoken.stp.StpInterface;
//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
//import com.dc.dc_project.model.pojo.Role;
//import com.dc.dc_project.model.pojo.UserRole;
//import com.dc.dc_project.service.RoleService;
//import com.dc.dc_project.service.UserRoleService;
//import lombok.RequiredArgsConstructor;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Component;
//import java.util.List;
//
///**
// * 权限加载接口实现类
// */
//@Component
//@RequiredArgsConstructor(onConstructor_ = {@Autowired})
//public class StpInterfaceImpl implements StpInterface {
//
// @Autowired
// private UserRoleService userRoleService;
//
// @Autowired
// private RoleService roleService;
// /**
// * 返回一个账号所拥有的权限码集合
// */
// @Override
// public List<String> getPermissionList(Object loginId, String loginType) {
// LambdaQueryWrapper<UserRole> lambdaQueryWrapper = new LambdaQueryWrapper<UserRole>().eq(UserRole::getUserId, Long.valueOf(loginId.toString()));
// 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();
// }
//
// /**
// * 返回一个账号所拥有的角色标识集合 (权限与角色可分开校验)
// */
// @Override
// public List<String> getRoleList(Object loginId, String loginType) {
// LambdaQueryWrapper<UserRole> lambdaQueryWrapper = new LambdaQueryWrapper<UserRole>().eq(UserRole::getUserId, Long.valueOf(loginId.toString()));
// 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();
// }
//
//}
package com.dc.dc_project.config;
import cn.dev33.satoken.stp.StpInterface;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.dc.dc_project.model.pojo.Role;
import com.dc.dc_project.model.pojo.UserRole;
import com.dc.dc_project.service.RoleService;
import com.dc.dc_project.service.UserRoleService;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* 权限加载接口实现类
*/
@Component
@RequiredArgsConstructor(onConstructor_ = {@Autowired})
public class StpInterfaceImpl implements StpInterface {
@Autowired
private UserRoleService userRoleService;
@Autowired
private RoleService roleService;
/**
* 返回一个账号所拥有的权限码集合
*/
@Override
public List<String> getPermissionList(Object loginId, String loginType) {
LambdaQueryWrapper<UserRole> lambdaQueryWrapper = new LambdaQueryWrapper<UserRole>().eq(UserRole::getUserId, Long.valueOf(loginId.toString()));
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();
}
/**
* 返回一个账号所拥有的角色标识集合 (权限与角色可分开校验)
*/
@Override
public List<String> getRoleList(Object loginId, String loginType) {
LambdaQueryWrapper<UserRole> lambdaQueryWrapper = new LambdaQueryWrapper<UserRole>().eq(UserRole::getUserId, Long.valueOf(loginId.toString()));
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();
}
}

View File

@@ -17,7 +17,7 @@ import static com.dc.dc_project.common.ResultCode.*;
* @date 2022/3/11
* @apiNote
*/
@ControllerAdvice(basePackages = "com.liy")
@ControllerAdvice(basePackages = "com.dc.dc_project.controller")
public class GlobalException {
private static final Logger logger = LoggerFactory.getLogger(GlobalException.class);

View File

@@ -1,4 +1,4 @@
package com.dc.dc_project.controller;
package com.dc.dc_project.controller.sys;
import cn.dev33.satoken.stp.StpUtil;

View File

@@ -1,4 +1,4 @@
package com.dc.dc_project.controller;
package com.dc.dc_project.controller.sys;
import com.dc.dc_project.common.ResponseResult;

View File

@@ -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);
}
}

View File

@@ -1,4 +1,4 @@
package com.dc.dc_project.controller;
package com.dc.dc_project.controller.sys;
import cn.dev33.satoken.stp.StpUtil;
@@ -25,4 +25,24 @@ public class RoleController {
Long userId = StpUtil.getLoginIdAsLong();
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);
}
}

View File

@@ -1,4 +1,4 @@
package com.dc.dc_project.controller;
package com.dc.dc_project.controller.sys;
import cn.dev33.satoken.stp.StpUtil;

View 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;
}
}

View File

@@ -1,8 +1,11 @@
package com.dc.dc_project.mapper;
import com.dc.dc_project.model.dto.PermissionDto;
import com.dc.dc_project.model.pojo.Permission;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
/**
* @author ADMIN
* @description 针对表【sys_permission(系统权限表(菜单/接口控制))】的数据库操作Mapper
@@ -11,6 +14,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/
public interface PermissionMapper extends BaseMapper<Permission> {
List<Permission> getList(PermissionDto permissionDto);
}

View 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);
}

View File

@@ -8,4 +8,7 @@ import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
public class BasePage<T> extends Page<T> {
public Page getPage() {
return new Page<>(this.getCurrent(), this.getSize());
}
}

View File

@@ -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;
}

View 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;
}

View File

@@ -8,6 +8,8 @@ import lombok.EqualsAndHashCode;
@Data
public class RoleDto extends BasePage<RoleDto>{
private Long id;
private String name;
private String code;
@@ -15,4 +17,6 @@ public class RoleDto extends BasePage<RoleDto>{
private Long level;
private Long status;
private String description;
}

View File

@@ -2,6 +2,6 @@ package com.dc.dc_project.model.vo;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
public class BasePageVo<T> extends Page<T> {
public class BasePageVo<T> extends Page<T>{
}

View File

@@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.dc.dc_project.model.TreeNode;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.List;
/**
* 系统权限表(菜单/接口控制)
@@ -14,161 +16,76 @@ import java.time.LocalDateTime;
*/
@TableName(value ="sys_permission")
@Data
public class PermissionVo {
public class PermissionVo implements TreeNode<PermissionVo> {
/**
* 主键ID
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 上级权限ID形成权限树
*/
@TableField(value = "parent_id")
private Long parentId;
/**
* 权限名称
*/
@TableField(value = "name")
private String name;
/**
* 权限编码(如 system:user:view
*/
@TableField(value = "code")
private String code;
/**
* 权限类型1=目录2=菜单3=按钮/接口)
*/
@TableField(value = "type")
private Integer type;
/**
* 前端路径或接口地址
*/
@TableField(value = "path")
private String path;
/**
* HTTP方法GET/POST/PUT/DELETE
*/
@TableField(value = "method")
private String method;
/**
* 图标(菜单类)
*/
@TableField(value = "icon")
private String icon;
/**
* 排序号
*/
@TableField(value = "sort_order")
private Integer sortOrder;
/**
* 状态0=停用1=启用)
*/
@TableField(value = "status")
private Integer status;
/**
* 备注
*/
@TableField(value = "remark")
private String remark;
/**
* 创建时间
*/
@TableField(value = "created_at")
private LocalDateTime createdAt;
/**
* 更新时间
*/
@TableField(value = "updated_at")
private LocalDateTime updatedAt;
/**
* 逻辑删除标志
*/
@TableField(value = "is_deleted")
private Integer isDeleted;
@Override
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();
}
private List<PermissionVo> children;
}

View File

@@ -1,5 +1,8 @@
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.baomidou.mybatisplus.extension.service.IService;
@@ -10,4 +13,19 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
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);
}

View File

@@ -14,4 +14,28 @@ import com.baomidou.mybatisplus.extension.service.IService;
public interface RoleService extends IService<Role> {
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);
}

View File

@@ -1,12 +1,21 @@
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.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.vo.PermissionVo;
import com.dc.dc_project.service.PermissionService;
import com.dc.dc_project.mapper.PermissionMapper;
import org.springframework.stereotype.Service;
import lombok.extern.slf4j.Slf4j;
import java.util.List;
/**
* @author ADMIN
* @description 针对表【sys_permission(系统权限表(菜单/接口控制))】的数据库操作Service实现
@@ -17,6 +26,38 @@ import lombok.extern.slf4j.Slf4j;
public class PermissionServiceImpl extends ServiceImpl<PermissionMapper, Permission>
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();
}
}

View File

@@ -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.service.impl.ServiceImpl;
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.pojo.RecordResult;
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());
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();
}
}

View File

@@ -20,6 +20,7 @@ import org.springframework.stereotype.Service;
import lombok.extern.slf4j.Slf4j;
import java.util.List;
import java.util.Objects;
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::getIsDeleted, 0);
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){
return ResponseResult.error(ResultCode.ERROR_USER_NOT_EXIST);
}

View 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> 具体的实体类型
*/

View File

@@ -4,26 +4,26 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dc.dc_project.mapper.PermissionMapper">
<resultMap id="BaseResultMap" type="com.dc.dc_project.model.pojo.Permission">
<id property="id" column="id" />
<result property="parent_id" column="parent_id" />
<result property="name" column="name" />
<result property="code" column="code" />
<result property="type" column="type" />
<result property="path" column="path" />
<result property="method" column="method" />
<result property="icon" column="icon" />
<result property="sort_order" column="sort_order" />
<result property="status" column="status" />
<result property="remark" column="remark" />
<result property="created_at" column="created_at" />
<result property="updated_at" column="updated_at" />
<result property="is_deleted" column="is_deleted" />
</resultMap>
<select id="getList" resultType="com.dc.dc_project.model.pojo.Permission">
select sp.* from sys_permission sp
<if test="permissionDto.roleId != null and permissionDto.roleId != ''">
left join sys_role_permission srp on sp.id = srp.permission_id
</if>
<where>
<if test="permissionDto.name != null and permissionDto.name != ''">
and sp.name like concat('%',#{permissionDto.name},'%')
</if>
<if test="permissionDto.code != null and permissionDto.code != ''">
and sp.code like concat('%',#{permissionDto.code},'%')
</if>
<if test="permissionDto.status != null and permissionDto.status != ''">
and sp.status = #{permissionDto.status}
</if>
<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">
id,parent_id,name,code,type,path,
method,icon,sort_order,status,remark,
created_at,updated_at,is_deleted
</sql>
</select>
</mapper>