From 69b62b18f2b2fbd9c7747fa64c0985a92f30e918 Mon Sep 17 00:00:00 2001 From: dimengzhe Date: Wed, 24 May 2023 15:35:08 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9D=83=E9=99=90=E5=B1=82=E7=BA=A7=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/bussalesorder/BusSalesOrderFeign.java | 2 +- .../bussalesorder/app/order/OrderQuery.java | 8 ++ .../bussalesorder/BusSalesOrderService.java | 44 ++++++++- .../portal/api/sysuser/PrivilegeQuery.java | 22 +++++ .../portal/api/sysuser/SysMenuRoleVoList.java | 2 + .../portal/api/sysuser/SysUserFeign.java | 4 + .../api/sysuser/SysUserFeignFallback.java | 5 + .../portal/biz/sysrole/SysRoleMapper.java | 2 + .../portal/biz/sysrole/SysRoleMapper.xml | 10 +- .../portal/biz/sysrole/SysRoleService.java | 4 + .../anrui/portal/biz/sysuser/SysUserRest.java | 11 ++- .../portal/biz/sysuser/SysUserService.java | 96 +++++++++++++++---- 12 files changed, 183 insertions(+), 27 deletions(-) create mode 100644 anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/PrivilegeQuery.java diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorder/BusSalesOrderFeign.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorder/BusSalesOrderFeign.java index 5aac5ec349..7958b99bee 100644 --- a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorder/BusSalesOrderFeign.java +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorder/BusSalesOrderFeign.java @@ -280,7 +280,7 @@ public interface BusSalesOrderFeign { @ResponseBody public ResultBean> getSaleOrdersByOrgPath(@RequestBody PagerQuery pq); - @ApiOperation("App销售订单根据组织机构查询") + @ApiOperation("销售订单查询") @GetMapping("/selectBySid") @ResponseBody ResultBean selectBySid(@RequestParam("businessSid") String businessSid); diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorder/app/order/OrderQuery.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorder/app/order/OrderQuery.java index 3f9f6bed87..0642957268 100644 --- a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorder/app/order/OrderQuery.java +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorder/app/order/OrderQuery.java @@ -1,7 +1,9 @@ package com.yxt.anrui.buscenter.api.bussalesorder.app.order; import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import org.springframework.beans.factory.annotation.Autowired; /** * @Author dimengzhe @@ -15,4 +17,10 @@ public class OrderQuery implements Query { private String orgPath; private String name; + @ApiModelProperty("菜单sid") + private String menuSid; + @ApiModelProperty("菜单url") + private String menuUrl; + @ApiModelProperty("用户sid") + private String userSid; } diff --git a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorder/BusSalesOrderService.java b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorder/BusSalesOrderService.java index 83b8610563..456415fe9c 100644 --- a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorder/BusSalesOrderService.java +++ b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorder/BusSalesOrderService.java @@ -147,6 +147,7 @@ import com.yxt.anrui.portal.api.sysstaffinfo.SysStaffinfoFeign; import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrg; import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign; import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgVo; +import com.yxt.anrui.portal.api.sysuser.PrivilegeQuery; import com.yxt.anrui.portal.api.sysuser.SysUserFeign; import com.yxt.anrui.portal.api.sysuser.SysUserVo; import com.yxt.anrui.portal.api.sysuser.app.AppUserOrgInfoVo; @@ -5593,9 +5594,48 @@ public class BusSalesOrderService extends MybatisBaseService page = PagerUtil.queryToPage(pq); OrderQuery pagerQuery = pq.getParams(); QueryWrapper qw = new QueryWrapper<>(); - String orgSidPath = pagerQuery.getOrgPath(); + //======================= + PrivilegeQuery privilegeQuery = new PrivilegeQuery(); + privilegeQuery.setOrgPath(pagerQuery.getOrgPath()); + privilegeQuery.setMenuSid(pagerQuery.getMenuSid()); + privilegeQuery.setMenuUrl(pagerQuery.getMenuUrl()); + privilegeQuery.setUserSid(pagerQuery.getUserSid()); + ResultBean defaultIdReltBean = sysUserFeign.selectPrivilegeLevel(privilegeQuery); + if(StringUtils.isNotBlank(defaultIdReltBean.getData())){ + //数据权限ID(1集团、2事业部、3分公司、4部门、5个人) + String orgSidPath = pagerQuery.getOrgPath(); + orgSidPath = orgSidPath + "/"; + int i1 = orgSidPath.indexOf("/"); + int i2 = orgSidPath.indexOf("/", i1 + 1); + int i3 = orgSidPath.indexOf("/", i2 + 1); + int i4 = orgSidPath.indexOf("/", i3 + 1); + String orgLevelKey = defaultIdReltBean.getData(); + if ("1".equals(orgLevelKey)) { + orgSidPath = orgSidPath.substring(0, i1); + qw.like("bo.orgSidPath", orgSidPath); + } else if ("2".equals(orgLevelKey)) { + orgSidPath = orgSidPath.substring(0, i2); + qw.like("bo.orgSidPath", orgSidPath); + } else if ("3".equals(orgLevelKey)) { + orgSidPath = orgSidPath.substring(0, i3); + qw.like("bo.orgSidPath", orgSidPath); + } else if ("4".equals(orgLevelKey)) { + orgSidPath = orgSidPath.substring(0, i4); + qw.like("bo.orgSidPath", orgSidPath); + } else if("5".equals(orgLevelKey)){ + qw.eq("bo.createBySid",pagerQuery.getUserSid()); + }else{ + PagerVo p = new PagerVo<>(); + return p; + } + }else{ + PagerVo p = new PagerVo<>(); + return p; + } + //======================= + /* String orgSidPath = pagerQuery.getOrgPath(); orgSidPath = sysOrganizationFeign.selectByCJOrgPath(orgSidPath).getData(); - qw.like("bo.orgSidPath", orgSidPath); + qw.like("bo.orgSidPath", orgSidPath);*/ String typeState = "getSaleOrdersByOrgPath";//查询接口的标识 IPage pagging = baseMapper.getSaleOrders(page, qw, pq.getParams().getName(), typeState); for (AppBusSalesOrderVo record : pagging.getRecords()) { diff --git a/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/PrivilegeQuery.java b/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/PrivilegeQuery.java new file mode 100644 index 0000000000..716afa8aa0 --- /dev/null +++ b/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/PrivilegeQuery.java @@ -0,0 +1,22 @@ +package com.yxt.anrui.portal.api.sysuser; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: 权限角色层级 + * @author: dimengzhe + * @date: 2023/5/23 + **/ +@Data +public class PrivilegeQuery { + + @ApiModelProperty("菜单路由") + private String menuUrl; + @ApiModelProperty("组织全路径sid") + private String orgPath; + @ApiModelProperty("菜单sid") + private String menuSid; + @ApiModelProperty("销售订单sid") + private String userSid; +} diff --git a/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/SysMenuRoleVoList.java b/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/SysMenuRoleVoList.java index 0f9484e77d..67cc1ff1e6 100644 --- a/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/SysMenuRoleVoList.java +++ b/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/SysMenuRoleVoList.java @@ -21,4 +21,6 @@ public class SysMenuRoleVoList implements Vo { private String roleType; @ApiModelProperty("角色层级value") private String roleTypeValue; + @ApiModelProperty("权限id") + private int dataRuleId; } diff --git a/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/SysUserFeign.java b/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/SysUserFeign.java index 9302425dce..18746ee6e6 100644 --- a/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/SysUserFeign.java +++ b/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/SysUserFeign.java @@ -256,4 +256,8 @@ public interface SysUserFeign { @PostMapping(value = "/shareSelectUser") ResultBean> shareSelectUser(@RequestBody ShareUserQuery shareUserQuery); + @ApiOperation(value = "查询角色权限的层级获取权限id") + @PostMapping(value = "/selectPrivilegeLevel") + ResultBean selectPrivilegeLevel(@RequestBody PrivilegeQuery query); + } \ No newline at end of file diff --git a/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/SysUserFeignFallback.java b/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/SysUserFeignFallback.java index 3291124a80..d641593826 100644 --- a/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/SysUserFeignFallback.java +++ b/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/SysUserFeignFallback.java @@ -235,4 +235,9 @@ public class SysUserFeignFallback implements SysUserFeign { public ResultBean> shareSelectUser(ShareUserQuery shareUserQuery) { return null; } + + @Override + public ResultBean selectPrivilegeLevel(PrivilegeQuery query) { + return null; + } } \ No newline at end of file diff --git a/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysrole/SysRoleMapper.java b/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysrole/SysRoleMapper.java index e8a3db9f68..91e5b4a73b 100644 --- a/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysrole/SysRoleMapper.java +++ b/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysrole/SysRoleMapper.java @@ -64,4 +64,6 @@ public interface SysRoleMapper extends BaseMapper { List selectRoleList(String menuSid); List selectMobileRoleList(String menuSid); + + List selectByRole(@Param("orgLevelKey") String orgLevelKey, @Param("menuSid") String menuSid,@Param("userSid") String userSid); } \ No newline at end of file diff --git a/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysrole/SysRoleMapper.xml b/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysrole/SysRoleMapper.xml index e6fae65012..dc46f85105 100644 --- a/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysrole/SysRoleMapper.xml +++ b/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysrole/SysRoleMapper.xml @@ -92,7 +92,7 @@ + + \ No newline at end of file diff --git a/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysrole/SysRoleService.java b/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysrole/SysRoleService.java index 0544336367..14820273b4 100644 --- a/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysrole/SysRoleService.java +++ b/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysrole/SysRoleService.java @@ -177,4 +177,8 @@ public class SysRoleService extends MybatisBaseService { public List selectMobileRoleList(String menuSid) { return baseMapper.selectMobileRoleList(menuSid); } + + public List selectByRole(String orgLevelKey, String menuSid,String userSid) { + return baseMapper.selectByRole(orgLevelKey,menuSid,userSid); + } } \ No newline at end of file diff --git a/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuser/SysUserRest.java b/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuser/SysUserRest.java index 7f1e234d77..ec5f9e2aa7 100644 --- a/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuser/SysUserRest.java +++ b/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuser/SysUserRest.java @@ -575,7 +575,7 @@ public class SysUserRest implements SysUserFeign { @Override public ResultBean selectUserInfoByUserSid(String userSid, String orgSid) { ResultBean rb = ResultBean.fireFail(); - SysUserInfoVo sysUserInfoVo = sysUserService.selectUserInfoByUserSid(userSid,orgSid); + SysUserInfoVo sysUserInfoVo = sysUserService.selectUserInfoByUserSid(userSid, orgSid); if (sysUserInfoVo == null) { return rb.setData(new SysUserInfoVo()).setMsg("该用户未设置所属部门"); } @@ -626,8 +626,8 @@ public class SysUserRest implements SysUserFeign { } @Override - public ResultBean> selectSysUserList(String userSid,String orgPath) { - return sysUserService.selectSysUserList(userSid,orgPath); + public ResultBean> selectSysUserList(String userSid, String orgPath) { + return sysUserService.selectSysUserList(userSid, orgPath); } @Override @@ -654,4 +654,9 @@ public class SysUserRest implements SysUserFeign { public ResultBean> shareSelectUser(ShareUserQuery shareUserQuery) { return sysUserService.shareSelectUser(shareUserQuery); } + + @Override + public ResultBean selectPrivilegeLevel(PrivilegeQuery query) { + return sysUserService.selectPrivilegeLevel(query); + } } diff --git a/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuser/SysUserService.java b/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuser/SysUserService.java index 82dca93e63..8a845b8f86 100644 --- a/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuser/SysUserService.java +++ b/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuser/SysUserService.java @@ -463,14 +463,14 @@ public class SysUserService extends MybatisBaseService { String deptSid = ""; if (StringUtils.isNotBlank(vv.getOrgSidPath())) { List split = Arrays.asList(vv.getOrgSidPath().split("/")); - if(split.size()>1){ + if (split.size() > 1) { //获取本级sid获取本级部门信息 - SysOrganization sysOrganization = sysOrganizationService.fetchBySid(split.get(split.size()-2)); - SysOrganization sysOrganization1 = sysOrganizationService.fetchBySid(split.get(split.size()-1)); - orgName = sysOrganization.getName()+"/"+sysOrganization1.getName(); + SysOrganization sysOrganization = sysOrganizationService.fetchBySid(split.get(split.size() - 2)); + SysOrganization sysOrganization1 = sysOrganizationService.fetchBySid(split.get(split.size() - 1)); + orgName = sysOrganization.getName() + "/" + sysOrganization1.getName(); deptName = sysOrganization1.getName(); deptSid = sysOrganization1.getSid(); - }else{ + } else { SysOrganization sysOrganization = sysOrganizationService.fetchBySid(split.get(0)); orgName = sysOrganization.getName(); deptName = sysOrganization.getName(); @@ -1300,12 +1300,12 @@ public class SysUserService extends MybatisBaseService { String orgName = ""; if (StringUtils.isNotBlank(vv.getOrgSidPath())) { List split = Arrays.asList(vv.getOrgSidPath().split("/")); - if(split.size()>1){ + if (split.size() > 1) { //获取本级sid获取本级部门信息 - SysOrganization sysOrganization = sysOrganizationService.fetchBySid(split.get(split.size()-2)); - SysOrganization sysOrganization1 = sysOrganizationService.fetchBySid(split.get(split.size()-1)); - orgName = sysOrganization.getName()+"/"+sysOrganization1.getName(); - }else{ + SysOrganization sysOrganization = sysOrganizationService.fetchBySid(split.get(split.size() - 2)); + SysOrganization sysOrganization1 = sysOrganizationService.fetchBySid(split.get(split.size() - 1)); + orgName = sysOrganization.getName() + "/" + sysOrganization1.getName(); + } else { SysOrganization sysOrganization = sysOrganizationService.fetchBySid(split.get(0)); orgName = sysOrganization.getName(); } @@ -1352,19 +1352,19 @@ public class SysUserService extends MybatisBaseService { ResultBean> rb = ResultBean.fireFail(); List roleSids = userQuery.getRoleSids(); String orgSidPath = userQuery.getOrgSidPath(); - List list=new ArrayList<>(); - for(String s:roleSids){ - UserQuery uq=new UserQuery(); + List list = new ArrayList<>(); + for (String s : roleSids) { + UserQuery uq = new UserQuery(); uq.setRoleSid(s); uq.setOrgSidPath(orgSidPath); ResultBean> userByRole = getUserByRole(uq); - if(userByRole.getSuccess()){ + if (userByRole.getSuccess()) { List data = userByRole.getData(); - data.forEach( f->{ + data.forEach(f -> { list.add(f); }); - }else{ - log.error("角色获取人员--s:"+userByRole.getMsg()); + } else { + log.error("角色获取人员--s:" + userByRole.getMsg()); } } return rb.success().setData(list); @@ -1378,7 +1378,7 @@ public class SysUserService extends MybatisBaseService { //部门list List orgList = shareUserQuery.getOrgSids(); //查询该部门下子集部门的人员以及该部门下的人员 - if(orgList != null && orgList.size()>0){ + if (orgList != null && orgList.size() > 0) { for (int i = 0; i < orgList.size(); i++) { String orgSid = orgList.get(i); //查询该部门下的所有人员以及查询该部门的子集下的所有人员 @@ -1386,12 +1386,68 @@ public class SysUserService extends MybatisBaseService { staffList.addAll(staffSidList); } } - if(memberList != null && memberList.size()>0){ + if (memberList != null && memberList.size() > 0) { staffList.addAll(memberList); } //去重 - staffList=staffList.stream().distinct().collect(Collectors.toList()); + staffList = staffList.stream().distinct().collect(Collectors.toList()); List userSidList = baseMapper.selectUserByStaffSid(staffList); return rb.success().setData(userSidList); } + + public ResultBean selectPrivilegeLevel(PrivilegeQuery query) { + ResultBean rb = ResultBean.fireFail(); + String defalutId = ""; + if (StringUtils.isBlank(query.getMenuSid())) { + //根据菜单路由查询菜单的sid + List sysMenuList = sysMenuService.selectByMenuUrl(query.getMenuUrl()); + if (sysMenuList.size() > 1) { + return rb.setMsg("当前菜单的路由存在多个,请联系管理员"); + } else if (sysMenuList.size() == 0) { + return rb.setMsg("当前菜单不存在"); + } else { + String menuSid = sysMenuList.get(0).getSid(); + //根据层级查找角色 + List stringList = Arrays.asList(query.getOrgPath().split("/")); + //最后一级的sid所属层级 + SysOrganization sysOrganization = sysOrganizationService.fetchBySid(stringList.get(stringList.size() - 1)); + //查询层级对应的角色权限id + List roleSid = sysRoleService.selectByRole(sysOrganization.getOrgLevelKey(), menuSid,query.getUserSid()); + roleSid.removeAll(Collections.singleton(null)); + if (!roleSid.isEmpty()) { + for (int i = 0; i < roleSid.size(); i++) { + if (StringUtils.isNotBlank(roleSid.get(i))) { + defalutId = roleSid.get(i); + break; + } else { + continue; + } + } + } + } + } else { + String menuSid = query.getMenuSid(); + //根据层级查找角色 + List stringList = Arrays.asList(query.getOrgPath().split("/")); + //最后一级的sid所属层级 + SysOrganization sysOrganization = sysOrganizationService.fetchBySid(stringList.get(stringList.size() - 1)); + //查询层级对应的角色权限id + List roleSid = sysRoleService.selectByRole(sysOrganization.getOrgLevelKey(), menuSid,query.getUserSid()); + roleSid.removeAll(Collections.singleton(null)); + if (!roleSid.isEmpty()) { + for (int i = 0; i < roleSid.size(); i++) { + if (StringUtils.isNotBlank(roleSid.get(i))) { + defalutId = roleSid.get(i); + break; + } else { + continue; + } + } + } + } + if(StringUtils.isBlank(defalutId)) { + defalutId = "0"; + } + return rb.success().setData(defalutId); + } } \ No newline at end of file