diff --git a/src/main/java/com/dc/dc_project/config/SaTokenConfigure.java b/src/main/java/com/dc/dc_project/config/SaTokenConfigure.java index 7de40bf..367c23d 100644 --- a/src/main/java/com/dc/dc_project/config/SaTokenConfigure.java +++ b/src/main/java/com/dc/dc_project/config/SaTokenConfigure.java @@ -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"); + } + +} diff --git a/src/main/java/com/dc/dc_project/config/StpInterfaceImpl.java b/src/main/java/com/dc/dc_project/config/StpInterfaceImpl.java index 8c16deb..eb2e00a 100644 --- a/src/main/java/com/dc/dc_project/config/StpInterfaceImpl.java +++ b/src/main/java/com/dc/dc_project/config/StpInterfaceImpl.java @@ -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 getPermissionList(Object loginId, String loginType) { -// LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper().eq(UserRole::getUserId, Long.valueOf(loginId.toString())); -// List roleIds = userRoleService.list(lambdaQueryWrapper).stream().map(UserRole::getRoleId).toList(); -// return roleService.list(new LambdaQueryWrapper().in(Role::getId, roleIds)).stream().map(Role::getCode).toList(); -// } -// -// /** -// * 返回一个账号所拥有的角色标识集合 (权限与角色可分开校验) -// */ -// @Override -// public List getRoleList(Object loginId, String loginType) { -// LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper().eq(UserRole::getUserId, Long.valueOf(loginId.toString())); -// List roleIds = userRoleService.list(lambdaQueryWrapper).stream().map(UserRole::getRoleId).toList(); -// return roleService.list(new LambdaQueryWrapper().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 getPermissionList(Object loginId, String loginType) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper().eq(UserRole::getUserId, Long.valueOf(loginId.toString())); + List roleIds = userRoleService.list(lambdaQueryWrapper).stream().map(UserRole::getRoleId).toList(); + return roleService.list(new LambdaQueryWrapper().in(Role::getId, roleIds)).stream().map(Role::getCode).toList(); + } + + /** + * 返回一个账号所拥有的角色标识集合 (权限与角色可分开校验) + */ + @Override + public List getRoleList(Object loginId, String loginType) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper().eq(UserRole::getUserId, Long.valueOf(loginId.toString())); + List roleIds = userRoleService.list(lambdaQueryWrapper).stream().map(UserRole::getRoleId).toList(); + return roleService.list(new LambdaQueryWrapper().in(Role::getId, roleIds)).stream().map(Role::getCode).toList(); + } + +} diff --git a/src/main/java/com/dc/dc_project/config/exception/GlobalException.java b/src/main/java/com/dc/dc_project/config/exception/GlobalException.java index d066155..2c9af94 100644 --- a/src/main/java/com/dc/dc_project/config/exception/GlobalException.java +++ b/src/main/java/com/dc/dc_project/config/exception/GlobalException.java @@ -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); diff --git a/src/main/java/com/dc/dc_project/controller/AuthController.java b/src/main/java/com/dc/dc_project/controller/sys/AuthController.java similarity index 95% rename from src/main/java/com/dc/dc_project/controller/AuthController.java rename to src/main/java/com/dc/dc_project/controller/sys/AuthController.java index 00db376..dabb0ca 100644 --- a/src/main/java/com/dc/dc_project/controller/AuthController.java +++ b/src/main/java/com/dc/dc_project/controller/sys/AuthController.java @@ -1,4 +1,4 @@ -package com.dc.dc_project.controller; +package com.dc.dc_project.controller.sys; import cn.dev33.satoken.stp.StpUtil; diff --git a/src/main/java/com/dc/dc_project/controller/OrgController.java b/src/main/java/com/dc/dc_project/controller/sys/OrgController.java similarity index 95% rename from src/main/java/com/dc/dc_project/controller/OrgController.java rename to src/main/java/com/dc/dc_project/controller/sys/OrgController.java index 64c905d..eb5e86a 100644 --- a/src/main/java/com/dc/dc_project/controller/OrgController.java +++ b/src/main/java/com/dc/dc_project/controller/sys/OrgController.java @@ -1,4 +1,4 @@ -package com.dc.dc_project.controller; +package com.dc.dc_project.controller.sys; import com.dc.dc_project.common.ResponseResult; diff --git a/src/main/java/com/dc/dc_project/controller/sys/PermissionController.java b/src/main/java/com/dc/dc_project/controller/sys/PermissionController.java new file mode 100644 index 0000000..e9e3f96 --- /dev/null +++ b/src/main/java/com/dc/dc_project/controller/sys/PermissionController.java @@ -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); + } +} diff --git a/src/main/java/com/dc/dc_project/controller/RoleController.java b/src/main/java/com/dc/dc_project/controller/sys/RoleController.java similarity index 59% rename from src/main/java/com/dc/dc_project/controller/RoleController.java rename to src/main/java/com/dc/dc_project/controller/sys/RoleController.java index ac4165e..c18bf73 100644 --- a/src/main/java/com/dc/dc_project/controller/RoleController.java +++ b/src/main/java/com/dc/dc_project/controller/sys/RoleController.java @@ -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); + } + + } diff --git a/src/main/java/com/dc/dc_project/controller/UserController.java b/src/main/java/com/dc/dc_project/controller/sys/UserController.java similarity index 97% rename from src/main/java/com/dc/dc_project/controller/UserController.java rename to src/main/java/com/dc/dc_project/controller/sys/UserController.java index 03a1d00..791b168 100644 --- a/src/main/java/com/dc/dc_project/controller/UserController.java +++ b/src/main/java/com/dc/dc_project/controller/sys/UserController.java @@ -1,4 +1,4 @@ -package com.dc.dc_project.controller; +package com.dc.dc_project.controller.sys; import cn.dev33.satoken.stp.StpUtil; diff --git a/src/main/java/com/dc/dc_project/enums/Status.java b/src/main/java/com/dc/dc_project/enums/Status.java new file mode 100644 index 0000000..101c261 --- /dev/null +++ b/src/main/java/com/dc/dc_project/enums/Status.java @@ -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; + } +} diff --git a/src/main/java/com/dc/dc_project/mapper/PermissionMapper.java b/src/main/java/com/dc/dc_project/mapper/PermissionMapper.java index 3b86925..ccd464f 100644 --- a/src/main/java/com/dc/dc_project/mapper/PermissionMapper.java +++ b/src/main/java/com/dc/dc_project/mapper/PermissionMapper.java @@ -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 { + List getList(PermissionDto permissionDto); } diff --git a/src/main/java/com/dc/dc_project/model/TreeNode.java b/src/main/java/com/dc/dc_project/model/TreeNode.java new file mode 100644 index 0000000..8de9d0c --- /dev/null +++ b/src/main/java/com/dc/dc_project/model/TreeNode.java @@ -0,0 +1,25 @@ +package com.dc.dc_project.model; + +import java.util.List; + +public interface TreeNode { + /** + * 获取节点ID + */ + Object getId(); + + /** + * 获取父节点ID + */ + Object getParentId(); + + /** + * 获取子节点列表 + */ + List getChildren(); + + /** + * 设置子节点列表 + */ + void setChildren(List children); +} \ No newline at end of file diff --git a/src/main/java/com/dc/dc_project/model/dto/BasePage.java b/src/main/java/com/dc/dc_project/model/dto/BasePage.java index c67cacf..238168b 100644 --- a/src/main/java/com/dc/dc_project/model/dto/BasePage.java +++ b/src/main/java/com/dc/dc_project/model/dto/BasePage.java @@ -8,4 +8,7 @@ import lombok.EqualsAndHashCode; @EqualsAndHashCode(callSuper = true) public class BasePage extends Page { + public Page getPage() { + return new Page<>(this.getCurrent(), this.getSize()); + } } diff --git a/src/main/java/com/dc/dc_project/model/dto/PermissionAddDto.java b/src/main/java/com/dc/dc_project/model/dto/PermissionAddDto.java new file mode 100644 index 0000000..0007af6 --- /dev/null +++ b/src/main/java/com/dc/dc_project/model/dto/PermissionAddDto.java @@ -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; +} diff --git a/src/main/java/com/dc/dc_project/model/dto/PermissionDto.java b/src/main/java/com/dc/dc_project/model/dto/PermissionDto.java new file mode 100644 index 0000000..f9237a2 --- /dev/null +++ b/src/main/java/com/dc/dc_project/model/dto/PermissionDto.java @@ -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{ + + private String name; + + private String code; + + private Long status; + + private Long roleId; + + //private long size = 1000; +} diff --git a/src/main/java/com/dc/dc_project/model/dto/RoleDto.java b/src/main/java/com/dc/dc_project/model/dto/RoleDto.java index afde724..bcb29e5 100644 --- a/src/main/java/com/dc/dc_project/model/dto/RoleDto.java +++ b/src/main/java/com/dc/dc_project/model/dto/RoleDto.java @@ -8,6 +8,8 @@ import lombok.EqualsAndHashCode; @Data public class RoleDto extends BasePage{ + private Long id; + private String name; private String code; @@ -15,4 +17,6 @@ public class RoleDto extends BasePage{ private Long level; private Long status; + + private String description; } diff --git a/src/main/java/com/dc/dc_project/model/vo/BasePageVo.java b/src/main/java/com/dc/dc_project/model/vo/BasePageVo.java index a01ee16..4d4f830 100644 --- a/src/main/java/com/dc/dc_project/model/vo/BasePageVo.java +++ b/src/main/java/com/dc/dc_project/model/vo/BasePageVo.java @@ -2,6 +2,6 @@ package com.dc.dc_project.model.vo; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -public class BasePageVo extends Page { +public class BasePageVo extends Page{ } diff --git a/src/main/java/com/dc/dc_project/model/vo/PermissionVo.java b/src/main/java/com/dc/dc_project/model/vo/PermissionVo.java index ddc4ec0..2d5fac5 100644 --- a/src/main/java/com/dc/dc_project/model/vo/PermissionVo.java +++ b/src/main/java/com/dc/dc_project/model/vo/PermissionVo.java @@ -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 { /** * 主键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 children; } \ No newline at end of file diff --git a/src/main/java/com/dc/dc_project/service/PermissionService.java b/src/main/java/com/dc/dc_project/service/PermissionService.java index 01abf38..3d86ac6 100644 --- a/src/main/java/com/dc/dc_project/service/PermissionService.java +++ b/src/main/java/com/dc/dc_project/service/PermissionService.java @@ -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 { + /** + * 获取权限列表 + * @param permissionDto + * @param userId + * @return + */ + ResponseResult getList(PermissionDto permissionDto, Long userId); + + /** + * 添加权限 + * @param permissionDto + * @param userId + * @return + */ + ResponseResult add(PermissionAddDto permissionDto, Long userId); } diff --git a/src/main/java/com/dc/dc_project/service/RoleService.java b/src/main/java/com/dc/dc_project/service/RoleService.java index 8c7e7a8..4ecb0cd 100644 --- a/src/main/java/com/dc/dc_project/service/RoleService.java +++ b/src/main/java/com/dc/dc_project/service/RoleService.java @@ -14,4 +14,28 @@ import com.baomidou.mybatisplus.extension.service.IService; public interface RoleService extends IService { 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); } diff --git a/src/main/java/com/dc/dc_project/service/impl/PermissionServiceImpl.java b/src/main/java/com/dc/dc_project/service/impl/PermissionServiceImpl.java index 4b757ca..f9e49fd 100644 --- a/src/main/java/com/dc/dc_project/service/impl/PermissionServiceImpl.java +++ b/src/main/java/com/dc/dc_project/service/impl/PermissionServiceImpl.java @@ -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 implements PermissionService{ + @Override + public ResponseResult getList(PermissionDto permissionDto, Long userId) { + + + //LambdaQueryWrapper 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 page = this.page(permissionDto.getPage(), queryWrapper); + + List 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(); + + } } diff --git a/src/main/java/com/dc/dc_project/service/impl/RoleServiceImpl.java b/src/main/java/com/dc/dc_project/service/impl/RoleServiceImpl.java index e09c0a1..12003c7 100644 --- a/src/main/java/com/dc/dc_project/service/impl/RoleServiceImpl.java +++ b/src/main/java/com/dc/dc_project/service/impl/RoleServiceImpl.java @@ -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 Page 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(); + } } diff --git a/src/main/java/com/dc/dc_project/service/impl/UserServiceImpl.java b/src/main/java/com/dc/dc_project/service/impl/UserServiceImpl.java index e925238..34f160c 100644 --- a/src/main/java/com/dc/dc_project/service/impl/UserServiceImpl.java +++ b/src/main/java/com/dc/dc_project/service/impl/UserServiceImpl.java @@ -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 .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); } diff --git a/src/main/java/com/dc/dc_project/utils/TreeUtil.java b/src/main/java/com/dc/dc_project/utils/TreeUtil.java new file mode 100644 index 0000000..3e36fc4 --- /dev/null +++ b/src/main/java/com/dc/dc_project/utils/TreeUtil.java @@ -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 实现TreeNode接口的类型 + * @return 树形结构列表 + */ + public static > List buildTree(List 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 实现TreeNode接口的类型 + * @return 子节点列表 + */ + private static > List getChildren(T parent, List 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 实现TreeNode接口的类型 + * @return 树形结构列表 + */ + public static > List buildTree(List list) { + return buildTree(list, null); + } +} + +/** + * 树节点接口(所有需要构建树的实体类需要实现此接口) + * + * @param 具体的实体类型 + */ + diff --git a/src/main/resources/mapper/PermissionMapper.xml b/src/main/resources/mapper/PermissionMapper.xml index 34c8d44..efea127 100644 --- a/src/main/resources/mapper/PermissionMapper.xml +++ b/src/main/resources/mapper/PermissionMapper.xml @@ -4,26 +4,26 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - - - - - - - - - - - - - - - - +