From deb4575b72443cf906946a9fb28a557c16556fb9 Mon Sep 17 00:00:00 2001 From: MrShi <1878285526@qq.com> Date: 星期五, 01 十一月 2024 09:30:50 +0800 Subject: [PATCH] Merge branch '2.0.1' of http://139.186.142.91:10010/r/productDev/yunyibao into 2.0.1 --- server/service/src/main/java/com/doumee/service/system/impl/SystemDataPermissionServiceImpl.java | 145 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 145 insertions(+), 0 deletions(-) diff --git a/server/service/src/main/java/com/doumee/service/system/impl/SystemDataPermissionServiceImpl.java b/server/service/src/main/java/com/doumee/service/system/impl/SystemDataPermissionServiceImpl.java index 89f0101..5dc73fd 100644 --- a/server/service/src/main/java/com/doumee/service/system/impl/SystemDataPermissionServiceImpl.java +++ b/server/service/src/main/java/com/doumee/service/system/impl/SystemDataPermissionServiceImpl.java @@ -5,21 +5,29 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; +import com.doumee.core.utils.Constants; +import com.doumee.dao.business.CompanyDepartmentMapper; +import com.doumee.dao.business.model.Company; +import com.doumee.dao.business.model.CompanyDepartment; import com.doumee.dao.system.SystemDataPermissionMapper; import com.doumee.dao.system.SystemRoleMapper; import com.doumee.dao.system.model.SystemDataPermission; import com.doumee.dao.system.model.SystemRole; +import com.doumee.dao.system.model.SystemUser; import com.doumee.dao.system.vo.SystemDataPermissionListVO; import com.doumee.service.system.SystemDataPermissionService; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.List; +import java.util.stream.Collectors; /** * 鏁版嵁鏉冮檺閰嶇疆Service瀹炵幇 @@ -31,6 +39,8 @@ @Autowired private SystemDataPermissionMapper systemDataPermissionMapper; + @Autowired + private CompanyDepartmentMapper companyDepartmentMapper; @Autowired private SystemRoleMapper systemRoleMapper; @@ -132,4 +142,139 @@ Wrapper<SystemDataPermission> wrapper = new QueryWrapper<>(systemDataPermission); return systemDataPermissionMapper.selectCount(wrapper); } + + + @Override + public List<Integer> selectHighRole(SystemDataPermission model, SystemRole role, SystemUser user) { + List<SystemDataPermissionListVO>list = systemDataPermissionMapper.selectUserList(model,role,user.getId()) ; + if(list !=null){ + boolean all = false; + boolean departAndChild=false; + boolean depart=false; + boolean departAndLeaf=false; + boolean custom=false; + String c = ""; + for(SystemDataPermissionListVO d : list){ + if(!all && Constants.equalsInteger(d.getType(),Constants.DATAPERMISSION_TYPE.all)){ + all =true; + } + if(!depart && Constants.equalsInteger(d.getType(),Constants.DATAPERMISSION_TYPE.depart)){ + depart =true; + } + if(!departAndChild && Constants.equalsInteger(d.getType(),Constants.DATAPERMISSION_TYPE.departAndChild)){ + departAndChild =true; + } + if(!departAndLeaf && Constants.equalsInteger(d.getType(),Constants.DATAPERMISSION_TYPE.departAndLeaf)){ + departAndLeaf =true; + } + if( Constants.equalsInteger(d.getType(),Constants.DATAPERMISSION_TYPE.custom)){ + custom =true; + c += StringUtils.defaultString(d.getCustomData(),""); + } + } + CompanyDepartment department = new CompanyDepartment(); + department.setId(user.getDepartmentId()); + department.setType(Constants.THREE); + if(Constants.equalsInteger(user.getType(),Constants.UserType.COMPANY.getKey())){ + department.setType(Constants.ONE); + }else if(Constants.equalsInteger(user.getType(),Constants.UserType.ZHUBO.getKey())){ + department.setType(Constants.TWO); + }else if(Constants.equalsInteger(user.getType(),Constants.UserType.SYSTEM.getKey())){ + department.setType(Constants.THREE); + } + + if(all){ + return null; + }else{ + List<Integer> dList = new ArrayList<>(); + dList.add(-1);//铏氭嫙閮ㄩ棬锛屾帓鏌ョ┖闆嗗悎 + if(custom) { + //濡傛灉鏈夎嚜瀹氫箟閮ㄩ棬 + String[] idStrs = c.split(","); + for(String s :idStrs){ + try { + Integer si = Integer.parseInt(s); + if(!isExists(si,dList)){ + dList.add(si); + } + }catch (Exception e){ + } + } + } + if(departAndLeaf){ + if(department!= null){ + dList.addAll(userDataPermissonList(department,true)); + } + }else if(departAndChild){ + if(department!= null) { + dList.addAll(userDataPermissonList(department, false)); + } + }else if(depart){ + if(department!= null && !isExists(department.getId(), dList)){ + dList.add(department.getId()); + } + } + return dList; + } + } + return new ArrayList<>(); + } + + public List<Integer> userDataPermissonList(CompanyDepartment depart ,boolean isleaf) { + List<Integer> pool = new ArrayList<>(); + List<CompanyDepartment> departList = companyDepartmentMapper.selectList(new QueryWrapper<CompanyDepartment>().lambda() + .eq(CompanyDepartment::getIsdeleted,Constants.ZERO ) + .eq(CompanyDepartment::getType,depart.getType()) + ); + pool.add(depart.getId()); + this.fillDepartChildren(pool, Arrays.asList(depart.getId()),isleaf,departList); + return pool; + } + + private void fillDepartChildren(List<Integer> pool, List<Integer> asList, boolean isleaf, List<CompanyDepartment> departList) { + List<CompanyDepartment> departments = getDepartListByParentIds(asList,departList); + List<Integer> ids = departments.stream().map(CompanyDepartment::getId).collect(Collectors.toList()); + if(isleaf){ + if (ids.size() > 0) { + pool.addAll(ids); + this.fillDepartChildren(pool, ids,isleaf,departList); + } + }else{ + pool.addAll(ids); + } + + } + + private List<CompanyDepartment> getDepartListByParentIds(List<Integer> asList, List<CompanyDepartment> departList) { + List<CompanyDepartment> list = new ArrayList<>(); + if(asList.size()>0){ + for(Integer id : asList){ + list.addAll(getDepartListByParentId(id,departList)); + } + } + return list; + } + + + private List<CompanyDepartment> getDepartListByParentId(Integer pId, List<CompanyDepartment> departList) { + List<CompanyDepartment> list = new ArrayList<>(); + if(departList!= null){ + for(CompanyDepartment d :departList){ + if(Constants.equalsInteger(d.getParentId(),pId)){ + list.add(d); + } + } + } + return list; + } + private boolean isExists(Integer s, List<Integer> dList) { + if(dList!=null){ + for(Integer t : dList){ + if(Constants.equalsInteger(s,t)){ + return true; + } + } + } + return false; + } } -- Gitblit v1.9.3