Browse Source

权限层级查询

master
dimengzhe 2 years ago
parent
commit
69b62b18f2
  1. 2
      anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorder/BusSalesOrderFeign.java
  2. 8
      anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorder/app/order/OrderQuery.java
  3. 44
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorder/BusSalesOrderService.java
  4. 22
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/PrivilegeQuery.java
  5. 2
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/SysMenuRoleVoList.java
  6. 4
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/SysUserFeign.java
  7. 5
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/SysUserFeignFallback.java
  8. 2
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysrole/SysRoleMapper.java
  9. 10
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysrole/SysRoleMapper.xml
  10. 4
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysrole/SysRoleService.java
  11. 11
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuser/SysUserRest.java
  12. 96
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuser/SysUserService.java

2
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<PagerVo<AppBusSalesOrderVo>> getSaleOrdersByOrgPath(@RequestBody PagerQuery<OrderQuery> pq);
@ApiOperation("App销售订单根据组织机构查询")
@ApiOperation("销售订单查询")
@GetMapping("/selectBySid")
@ResponseBody
ResultBean<BusSalesOrder> selectBySid(@RequestParam("businessSid") String businessSid);

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

44
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<BusSalesOrderMapper
IPage<BusSalesOrder> page = PagerUtil.queryToPage(pq);
OrderQuery pagerQuery = pq.getParams();
QueryWrapper<BusSalesOrder> 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<String> 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<AppBusSalesOrderVo> p = new PagerVo<>();
return p;
}
}else{
PagerVo<AppBusSalesOrderVo> 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<AppBusSalesOrderVo> pagging = baseMapper.getSaleOrders(page, qw, pq.getParams().getName(), typeState);
for (AppBusSalesOrderVo record : pagging.getRecords()) {

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

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

4
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<List<String>> shareSelectUser(@RequestBody ShareUserQuery shareUserQuery);
@ApiOperation(value = "查询角色权限的层级获取权限id")
@PostMapping(value = "/selectPrivilegeLevel")
ResultBean<String> selectPrivilegeLevel(@RequestBody PrivilegeQuery query);
}

5
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<List<String>> shareSelectUser(ShareUserQuery shareUserQuery) {
return null;
}
@Override
public ResultBean<String> selectPrivilegeLevel(PrivilegeQuery query) {
return null;
}
}

2
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<SysRole> {
List<SysMenuRoleVoList> selectRoleList(String menuSid);
List<SysMenuRoleVoList> selectMobileRoleList(String menuSid);
List<String> selectByRole(@Param("orgLevelKey") String orgLevelKey, @Param("menuSid") String menuSid,@Param("userSid") String userSid);
}

10
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysrole/SysRoleMapper.xml

@ -92,7 +92,7 @@
</select>
<select id="selectRoleList" resultType="com.yxt.anrui.portal.api.sysuser.SysMenuRoleVoList">
select sr.sid roleSid, sr.name roleName, sr.roleType, sr.roleTypeValue
select sr.sid roleSid, sr.name roleName, sr.roleType, sr.roleTypeValue,smr.dataRuleId
from sys_role sr
left join sys_menu_role smr on sr.sid = smr.roleSid
where smr.menuSid = #{menuSid}
@ -104,4 +104,12 @@
left join sys_mobile_menu_role smr on sr.sid = smr.roleSid
where smr.menuSid = #{menuSid}
</select>
<select id="selectByRole" resultType="java.lang.String">
select dataRuleId from sys_menu_role smr
left join sys_menu sm on sm.sid = smr.menuSid
left join sys_role sr on sr.sid = smr.roleSid
left join sys_user_role sur on sur.roleSid = smr.roleSid
where smr.menuSid = #{menuSid} and sur.userSid = #{userSid} and sr.roleType = #{orgLevelKey} order by dataRuleId asc
</select>
</mapper>

4
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<SysRoleMapper, SysRole> {
public List<SysMenuRoleVoList> selectMobileRoleList(String menuSid) {
return baseMapper.selectMobileRoleList(menuSid);
}
public List<String> selectByRole(String orgLevelKey, String menuSid,String userSid) {
return baseMapper.selectByRole(orgLevelKey,menuSid,userSid);
}
}

11
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<SysUserInfoVo> selectUserInfoByUserSid(String userSid, String orgSid) {
ResultBean<SysUserInfoVo> 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<List<SysUserListVo>> selectSysUserList(String userSid,String orgPath) {
return sysUserService.selectSysUserList(userSid,orgPath);
public ResultBean<List<SysUserListVo>> selectSysUserList(String userSid, String orgPath) {
return sysUserService.selectSysUserList(userSid, orgPath);
}
@Override
@ -654,4 +654,9 @@ public class SysUserRest implements SysUserFeign {
public ResultBean<List<String>> shareSelectUser(ShareUserQuery shareUserQuery) {
return sysUserService.shareSelectUser(shareUserQuery);
}
@Override
public ResultBean<String> selectPrivilegeLevel(PrivilegeQuery query) {
return sysUserService.selectPrivilegeLevel(query);
}
}

96
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<SysUserMapper, SysUser> {
String deptSid = "";
if (StringUtils.isNotBlank(vv.getOrgSidPath())) {
List<String> 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<SysUserMapper, SysUser> {
String orgName = "";
if (StringUtils.isNotBlank(vv.getOrgSidPath())) {
List<String> 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<SysUserMapper, SysUser> {
ResultBean<List<SysUserVo>> rb = ResultBean.fireFail();
List<String> roleSids = userQuery.getRoleSids();
String orgSidPath = userQuery.getOrgSidPath();
List<SysUserVo> list=new ArrayList<>();
for(String s:roleSids){
UserQuery uq=new UserQuery();
List<SysUserVo> list = new ArrayList<>();
for (String s : roleSids) {
UserQuery uq = new UserQuery();
uq.setRoleSid(s);
uq.setOrgSidPath(orgSidPath);
ResultBean<List<SysUserVo>> userByRole = getUserByRole(uq);
if(userByRole.getSuccess()){
if (userByRole.getSuccess()) {
List<SysUserVo> 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<SysUserMapper, SysUser> {
//部门list
List<String> 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<SysUserMapper, SysUser> {
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<String> userSidList = baseMapper.selectUserByStaffSid(staffList);
return rb.success().setData(userSidList);
}
public ResultBean<String> selectPrivilegeLevel(PrivilegeQuery query) {
ResultBean<String> rb = ResultBean.fireFail();
String defalutId = "";
if (StringUtils.isBlank(query.getMenuSid())) {
//根据菜单路由查询菜单的sid
List<SysMenu> 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<String> stringList = Arrays.asList(query.getOrgPath().split("/"));
//最后一级的sid所属层级
SysOrganization sysOrganization = sysOrganizationService.fetchBySid(stringList.get(stringList.size() - 1));
//查询层级对应的角色权限id
List<String> 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<String> stringList = Arrays.asList(query.getOrgPath().split("/"));
//最后一级的sid所属层级
SysOrganization sysOrganization = sysOrganizationService.fetchBySid(stringList.get(stringList.size() - 1));
//查询层级对应的角色权限id
List<String> 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);
}
}
Loading…
Cancel
Save