From a89b71fe80c67dd731dd021edf9c24bbd659a2d4 Mon Sep 17 00:00:00 2001 From: xiang Date: Sun, 22 Mar 2026 00:31:27 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E8=B0=83=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 4 -- .../com/xiang/xs/api/client/TokenApi.java | 15 ---- .../xiang/xs/api/client/TokenApiFallback.java | 20 ------ .../request/PermissionRegisterRequest.java | 34 +++++++++ .../java/com/xiang/xs/server/Application.java | 2 +- .../server/controller/SysDeptController.java | 10 +-- .../server/controller/SysMenuController.java | 14 ++-- .../server/controller/SysRoleController.java | 24 +++---- .../server/controller/SysUserController.java | 71 +++++++++++++++++++ .../xiang/xs/service/biz/ISysDeptService.java | 2 +- .../xiang/xs/service/biz/ISysRoleService.java | 4 +- .../service/biz/impl/SysDeptServiceImpl.java | 9 +-- .../service/biz/impl/SysRoleServiceImpl.java | 13 ++-- 13 files changed, 140 insertions(+), 82 deletions(-) delete mode 100644 xs-api/src/main/java/com/xiang/xs/api/client/TokenApi.java delete mode 100644 xs-api/src/main/java/com/xiang/xs/api/client/TokenApiFallback.java create mode 100644 xs-api/src/main/java/com/xiang/xs/api/pojo/request/PermissionRegisterRequest.java create mode 100644 xs-server/src/main/java/com/xiang/xs/server/controller/SysUserController.java diff --git a/pom.xml b/pom.xml index 8a8d661..d2fd319 100644 --- a/pom.xml +++ b/pom.xml @@ -27,10 +27,6 @@ 2.7.18 - - org.springframework.cloud - spring-cloud-starter-openfeign - diff --git a/xs-api/src/main/java/com/xiang/xs/api/client/TokenApi.java b/xs-api/src/main/java/com/xiang/xs/api/client/TokenApi.java deleted file mode 100644 index 3a7b5ea..0000000 --- a/xs-api/src/main/java/com/xiang/xs/api/client/TokenApi.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.xiang.xs.api.client; - -import org.springframework.cloud.openfeign.FeignClient; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; - -@FeignClient(name = "xservice-auth-center", fallback = TokenApiFallback.class) -public interface TokenApi { - - @GetMapping("/private/user/getUserId/{token}") - Long getUserId(@PathVariable("token") String token); - - @GetMapping("/private/user/getTenantId/{token}") - Long getTenantId(@PathVariable("token") String token); -} diff --git a/xs-api/src/main/java/com/xiang/xs/api/client/TokenApiFallback.java b/xs-api/src/main/java/com/xiang/xs/api/client/TokenApiFallback.java deleted file mode 100644 index 9ea91b6..0000000 --- a/xs-api/src/main/java/com/xiang/xs/api/client/TokenApiFallback.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.xiang.xs.api.client; - -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -@Component -@Slf4j -public class TokenApiFallback implements TokenApi { - @Override - public Long getUserId(String token) { - log.warn("[rpc] 请求auth center 获取userId 异常, time:{}", System.currentTimeMillis()); - return null; - } - - @Override - public Long getTenantId(String token) { - log.warn("[rpc] 请求auth center tenantId 异常, time:{}", System.currentTimeMillis()); - return null; - } -} diff --git a/xs-api/src/main/java/com/xiang/xs/api/pojo/request/PermissionRegisterRequest.java b/xs-api/src/main/java/com/xiang/xs/api/pojo/request/PermissionRegisterRequest.java new file mode 100644 index 0000000..cd7ae0c --- /dev/null +++ b/xs-api/src/main/java/com/xiang/xs/api/pojo/request/PermissionRegisterRequest.java @@ -0,0 +1,34 @@ +package com.xiang.xs.api.pojo.request; + + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class PermissionRegisterRequest { + + private String serviceName; + /** + * 类名+方法名 + */ + private String name; + /** + * 服务名称+方法+接口地址 + */ + private String code; + /** + * 接口地址 + */ + private String apiPath; + /** + * 请求方式 + */ + private String method; + /** + * 类型 接口为3 + */ + private Integer type = 3; // 接口 +} diff --git a/xs-server/src/main/java/com/xiang/xs/server/Application.java b/xs-server/src/main/java/com/xiang/xs/server/Application.java index cb8e1a8..e2b79c1 100644 --- a/xs-server/src/main/java/com/xiang/xs/server/Application.java +++ b/xs-server/src/main/java/com/xiang/xs/server/Application.java @@ -8,7 +8,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.openfeign.EnableFeignClients; @SpringBootApplication(scanBasePackages = "com.xiang.xs") -@EnableFeignClients +@EnableFeignClients(basePackages = "com.xiang.xs.api") @MapperScan("com.xiang.xs.service.repository.mapper") public class Application { diff --git a/xs-server/src/main/java/com/xiang/xs/server/controller/SysDeptController.java b/xs-server/src/main/java/com/xiang/xs/server/controller/SysDeptController.java index 6d163ee..e89dd13 100644 --- a/xs-server/src/main/java/com/xiang/xs/server/controller/SysDeptController.java +++ b/xs-server/src/main/java/com/xiang/xs/server/controller/SysDeptController.java @@ -55,8 +55,8 @@ public class SysDeptController { */ @GetMapping(value = "/{deptId}") public Result getInfo(@PathVariable Long deptId, HttpServletRequest request) { - String token = request.getHeader("Authorization"); - deptService.checkDeptDataScope(deptId, token); + String userId = request.getHeader("X-User-Id"); + deptService.checkDeptDataScope(deptId, Long.parseLong(userId)); return Result.data(deptService.selectDeptById(deptId)); } @@ -77,7 +77,8 @@ public class SysDeptController { @PutMapping public Result edit(@Validated @RequestBody SysDept dept, HttpServletRequest request) { Long deptId = dept.getDeptId(); - deptService.checkDeptDataScope(deptId, getToken(request)); + String userId = request.getHeader("X-User-Id"); + deptService.checkDeptDataScope(deptId, Long.parseLong(userId)); if (!deptService.checkDeptNameUnique(dept)) { return Result.error("修改部门'" + dept.getDeptName() + "'失败,部门名称已存在"); } else if (dept.getParentId().equals(deptId)) { @@ -100,7 +101,8 @@ public class SysDeptController { if (deptService.checkDeptExistUser(deptId)) { return Result.error("部门存在用户,不允许删除"); } - deptService.checkDeptDataScope(deptId, token); + String userId = request.getHeader("X-User-Id"); + deptService.checkDeptDataScope(deptId, Long.parseLong(userId)); return Result.data(deptService.deleteDeptById(deptId) > 0); } diff --git a/xs-server/src/main/java/com/xiang/xs/server/controller/SysMenuController.java b/xs-server/src/main/java/com/xiang/xs/server/controller/SysMenuController.java index 0ca37b9..38689a2 100644 --- a/xs-server/src/main/java/com/xiang/xs/server/controller/SysMenuController.java +++ b/xs-server/src/main/java/com/xiang/xs/server/controller/SysMenuController.java @@ -1,6 +1,5 @@ package com.xiang.xs.server.controller; -import com.xiang.xs.api.client.TokenApi; import com.xiang.xs.service.biz.ISysMenuService; import com.xiang.xs.service.contants.UserConstants; import com.xiang.xs.service.entity.SysMenu; @@ -8,7 +7,6 @@ import com.xiang.xs.service.entity.TreeSelect; import com.xiang.xs.service.entity.vo.RoleTreeVo; import com.xiang.xservice.basic.common.resp.Result; import com.xiang.xservice.basic.utils.MyStringUtils; -import lombok.extern.java.Log; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.DeleteMapping; @@ -33,16 +31,14 @@ import java.util.List; public class SysMenuController { @Autowired private ISysMenuService menuService; - @Autowired - private TokenApi tokenApi; /** * 获取菜单列表 */ @GetMapping("/list") public Result> list(SysMenu menu, HttpServletRequest request) { - Long userId = tokenApi.getUserId(request.getHeader("Authorization")); - List menus = menuService.selectMenuList(menu, userId); + String userId = request.getHeader("X-User_id"); + List menus = menuService.selectMenuList(menu, Long.parseLong(userId)); return Result.data(menus); } @@ -59,7 +55,8 @@ public class SysMenuController { */ @GetMapping("/treeselect") public Result> treeselect(SysMenu menu, HttpServletRequest request) { - List menus = menuService.selectMenuList(menu, tokenApi.getUserId(request.getHeader("Authorization"))); + String userId = request.getHeader("X-User_id"); + List menus = menuService.selectMenuList(menu, Long.parseLong(userId)); return Result.data(menuService.buildMenuTreeSelect(menus)); } @@ -68,7 +65,8 @@ public class SysMenuController { */ @GetMapping(value = "/roleMenuTreeselect/{roleId}") public Result roleMenuTreeselect(@PathVariable("roleId") Long roleId, HttpServletRequest request) { - List menus = menuService.selectMenuList(tokenApi.getUserId(request.getHeader("Authorization"))); + String userId = request.getHeader("X-User_id"); + List menus = menuService.selectMenuList(Long.parseLong(userId)); return Result.data(new RoleTreeVo(menuService.selectMenuListByRoleId(roleId), menuService.buildMenuTreeSelect(menus))); } diff --git a/xs-server/src/main/java/com/xiang/xs/server/controller/SysRoleController.java b/xs-server/src/main/java/com/xiang/xs/server/controller/SysRoleController.java index 301af10..87cf37c 100644 --- a/xs-server/src/main/java/com/xiang/xs/server/controller/SysRoleController.java +++ b/xs-server/src/main/java/com/xiang/xs/server/controller/SysRoleController.java @@ -51,8 +51,8 @@ public class SysRoleController { */ @GetMapping(value = "/{roleId}") public Result getInfo(@PathVariable Long roleId, HttpServletRequest request) { - String token = request.getHeader("Authorization"); - roleService.checkRoleDataScope(token, roleId); + String userId = request.getHeader("X-User-Id"); + roleService.checkRoleDataScope(Long.parseLong(userId), roleId); return Result.data(roleService.selectRoleById(roleId)); } @@ -75,9 +75,9 @@ public class SysRoleController { */ @PutMapping public Result edit(@Validated @RequestBody SysRole role, HttpServletRequest request) { - String token = request.getHeader("Authorization"); + String userId = request.getHeader("X-User-Id"); roleService.checkRoleAllowed(role); - roleService.checkRoleDataScope(token, role.getRoleId()); + roleService.checkRoleDataScope(Long.parseLong(userId), role.getRoleId()); if (!roleService.checkRoleNameUnique(role)) { return Result.error("修改角色'" + role.getRoleName() + "'失败,角色名称已存在"); } else if (!roleService.checkRoleKeyUnique(role)) { @@ -92,9 +92,9 @@ public class SysRoleController { */ @PutMapping("/dataScope") public Result dataScope(@RequestBody SysRole role, HttpServletRequest request) { - String token = request.getHeader("Authorization"); + String userId = request.getHeader("X-User-Id"); roleService.checkRoleAllowed(role); - roleService.checkRoleDataScope(token, role.getRoleId()); + roleService.checkRoleDataScope(Long.parseLong(userId), role.getRoleId()); return Result.data(roleService.authDataScope(role) > 0); } @@ -103,9 +103,9 @@ public class SysRoleController { */ @PutMapping("/changeStatus") public Result changeStatus(@RequestBody SysRole role, HttpServletRequest request) { - String token = request.getHeader("Authorization"); + String userId = request.getHeader("X-User-Id"); roleService.checkRoleAllowed(role); - roleService.checkRoleDataScope(token, role.getRoleId()); + roleService.checkRoleDataScope(Long.parseLong(userId), role.getRoleId()); return Result.data(roleService.updateRoleStatus(role) > 0); } @@ -114,8 +114,8 @@ public class SysRoleController { */ @DeleteMapping("/{roleIds}") public Result remove(@PathVariable Long[] roleIds, HttpServletRequest request) { - String token = request.getHeader("Authorization"); - return Result.data(roleService.deleteRoleByIds(token, roleIds) > 0); + String userId = request.getHeader("X-User-Id"); + return Result.data(roleService.deleteRoleByIds(Long.parseLong(userId), roleIds) > 0); } /** @@ -165,8 +165,8 @@ public class SysRoleController { */ @PutMapping("/authUser/selectAll") public Result selectAuthUserAll(Long roleId, Long[] userIds, HttpServletRequest request) { - String token = request.getHeader("Authorization"); - roleService.checkRoleDataScope(token, roleId); + String userId = request.getHeader("X-User-Id"); + roleService.checkRoleDataScope(Long.parseLong(userId), roleId); return Result.data(roleService.insertAuthUsers(roleId, userIds) > 0); } diff --git a/xs-server/src/main/java/com/xiang/xs/server/controller/SysUserController.java b/xs-server/src/main/java/com/xiang/xs/server/controller/SysUserController.java new file mode 100644 index 0000000..27e3f02 --- /dev/null +++ b/xs-server/src/main/java/com/xiang/xs/server/controller/SysUserController.java @@ -0,0 +1,71 @@ +package com.xiang.xs.server.controller; + +import com.alibaba.fastjson.JSONObject; +import com.xiang.xs.service.biz.ISysDeptService; +import com.xiang.xs.service.biz.ISysRoleService; +import com.xiang.xs.service.biz.ISysUserService; +import com.xiang.xs.service.entity.SysDept; +import com.xiang.xs.service.entity.SysRole; +import com.xiang.xs.service.entity.SysUser; +import com.xiang.xs.service.entity.TreeSelect; +import com.xiang.xservice.basic.common.resp.Result; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 用户信息 + * + * @author ruoyi + */ +@RestController +@RequestMapping("/system/user") +public class SysUserController { + @Autowired + private ISysUserService userService; + + @Autowired + private ISysRoleService roleService; + + @Autowired + private ISysDeptService deptService; + + /** + * 根据用户编号获取授权角色 + */ + @GetMapping("/authRole/{userId}") + public Result authRole(@PathVariable("userId") Long userId) { + JSONObject ajax = new JSONObject(); + SysUser user = userService.selectUserById(userId); + List roles = roleService.selectRolesByUserId(userId); + ajax.put("user", user); + ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList())); + return Result.data(ajax); + } + + /** + * 用户授权角色 + */ + @PutMapping("/authRole") + public Result insertAuthRole(Long userId, Long[] roleIds) { + userService.checkUserDataScope(userId); + roleService.checkRoleDataScope(userId, roleIds); + userService.insertUserAuth(userId, roleIds); + return Result.success(); + } + + /** + * 获取部门树列表 + */ + @GetMapping("/deptTree") + public Result> deptTree(SysDept dept) { + return Result.data(deptService.selectDeptTreeList(dept)); + } +} diff --git a/xs-service/src/main/java/com/xiang/xs/service/biz/ISysDeptService.java b/xs-service/src/main/java/com/xiang/xs/service/biz/ISysDeptService.java index 59458a0..85c63a7 100644 --- a/xs-service/src/main/java/com/xiang/xs/service/biz/ISysDeptService.java +++ b/xs-service/src/main/java/com/xiang/xs/service/biz/ISysDeptService.java @@ -107,7 +107,7 @@ public interface ISysDeptService { * * @param deptId 部门id */ - void checkDeptDataScope(Long deptId, String token); + void checkDeptDataScope(Long deptId, Long userId); /** * 新增保存部门信息 diff --git a/xs-service/src/main/java/com/xiang/xs/service/biz/ISysRoleService.java b/xs-service/src/main/java/com/xiang/xs/service/biz/ISysRoleService.java index 676374a..2d3b81a 100644 --- a/xs-service/src/main/java/com/xiang/xs/service/biz/ISysRoleService.java +++ b/xs-service/src/main/java/com/xiang/xs/service/biz/ISysRoleService.java @@ -95,7 +95,7 @@ public interface ISysRoleService { * * @param roleIds 角色id */ - void checkRoleDataScope(String token, Long... roleIds); + void checkRoleDataScope(Long userId, Long... roleIds); /** * 通过角色ID查询角色使用数量 @@ -158,7 +158,7 @@ public interface ISysRoleService { * * @return 结果 */ - int deleteRoleByIds(String token, Long[] roleIds); + int deleteRoleByIds(Long userId, Long[] roleIds); /** * 取消授权用户角色 diff --git a/xs-service/src/main/java/com/xiang/xs/service/biz/impl/SysDeptServiceImpl.java b/xs-service/src/main/java/com/xiang/xs/service/biz/impl/SysDeptServiceImpl.java index 85f0344..69dded8 100644 --- a/xs-service/src/main/java/com/xiang/xs/service/biz/impl/SysDeptServiceImpl.java +++ b/xs-service/src/main/java/com/xiang/xs/service/biz/impl/SysDeptServiceImpl.java @@ -1,6 +1,5 @@ package com.xiang.xs.service.biz.impl; -import com.xiang.xs.api.client.TokenApi; import com.xiang.xs.service.biz.ISysDeptService; import com.xiang.xs.service.contants.UserConstants; import com.xiang.xs.service.entity.SysDept; @@ -35,9 +34,6 @@ public class SysDeptServiceImpl implements ISysDeptService { @Autowired private SysRoleMapper roleMapper; - @Autowired - private TokenApi tokenApi; - /** * 查询部门管理数据 * @@ -186,8 +182,9 @@ public class SysDeptServiceImpl implements ISysDeptService { * @param deptId 部门id */ @Override - public void checkDeptDataScope(Long deptId, String token) { - if (!SysUser.isAdmin(tokenApi.getUserId(token)) && Objects.nonNull(deptId)) { + public void checkDeptDataScope(Long deptId, Long userId) { + + if (!SysUser.isAdmin(userId) && Objects.nonNull(deptId)) { SysDept dept = new SysDept(); dept.setDeptId(deptId); List depts = selectDeptList(dept); diff --git a/xs-service/src/main/java/com/xiang/xs/service/biz/impl/SysRoleServiceImpl.java b/xs-service/src/main/java/com/xiang/xs/service/biz/impl/SysRoleServiceImpl.java index 00442ed..ca9ce3a 100644 --- a/xs-service/src/main/java/com/xiang/xs/service/biz/impl/SysRoleServiceImpl.java +++ b/xs-service/src/main/java/com/xiang/xs/service/biz/impl/SysRoleServiceImpl.java @@ -1,6 +1,5 @@ package com.xiang.xs.service.biz.impl; -import com.xiang.xs.api.client.TokenApi; import com.xiang.xs.service.biz.ISysRoleService; import com.xiang.xs.service.contants.UserConstants; import com.xiang.xs.service.entity.SysRole; @@ -12,7 +11,6 @@ import com.xiang.xs.service.repository.mapper.SysRoleDeptMapper; import com.xiang.xs.service.repository.mapper.SysRoleMapper; import com.xiang.xs.service.repository.mapper.SysRoleMenuMapper; import com.xiang.xs.service.repository.mapper.SysUserRoleMapper; -import com.xiang.xservice.basic.exception.BusinessException; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -44,9 +42,6 @@ public class SysRoleServiceImpl implements ISysRoleService { @Autowired private SysRoleDeptMapper roleDeptMapper; - @Autowired - private TokenApi tokenApi; - /** * 根据条件分页查询角色数据 * @@ -186,9 +181,9 @@ public class SysRoleServiceImpl implements ISysRoleService { * @param roleIds 角色id */ @Override - public void checkRoleDataScope(String token, Long... roleIds) { + public void checkRoleDataScope(Long userId, Long... roleIds) { - if (!SysUser.isAdmin(tokenApi.getUserId(token))) { + if (!SysUser.isAdmin(userId)) { for (Long roleId : roleIds) { SysRole role = new SysRole(); role.setRoleId(roleId); @@ -342,10 +337,10 @@ public class SysRoleServiceImpl implements ISysRoleService { */ @Override @Transactional - public int deleteRoleByIds(String token, Long[] roleIds) { + public int deleteRoleByIds(Long userId, Long[] roleIds) { for (Long roleId : roleIds) { checkRoleAllowed(new SysRole(roleId)); - checkRoleDataScope(token, roleId); + checkRoleDataScope(userId, roleId); SysRole role = selectRoleById(roleId); if (countUserRoleByRoleId(roleId) > 0) { throw new com.xiang.xservice.basic.exception.BusinessException(String.format("%1$s已分配,不能删除", role.getRoleName()));