From 50fb58286ed3b718c39a97e0987ee7561a295651 Mon Sep 17 00:00:00 2001 From: k94314517 <8417338+k94314517@user.noreply.gitee.com> Date: 星期五, 04 七月 2025 17:56:41 +0800 Subject: [PATCH] git ch --- server/service/src/main/java/com/doumee/service/system/impl/SystemDataPermissionServiceImpl.java | 174 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 174 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..69583a5 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,168 @@ 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; + boolean self=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(),""); + } + if( Constants.equalsInteger(d.getType(),Constants.DATAPERMISSION_TYPE.self)){ + self =true; + } + } + 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 if(self){ + return new ArrayList<>(); + }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; + } + + + @Override + public SystemDataPermission findByRoleId(SystemDataPermission pageWrap){ + if ( pageWrap.getRoleId() == null) { + return null; + } + + // 鏌ヨ鏁版嵁鏉冮檺 + QueryWrapper<SystemDataPermission> queryWrapper = new QueryWrapper<>(); + queryWrapper.lambda() + .eq(SystemDataPermission::getBusinessCode, "DEPARTMENT") + .eq(SystemDataPermission::getRoleId, pageWrap.getRoleId()) + .eq(SystemDataPermission::getDeleted, Boolean.FALSE) + .eq(SystemDataPermission::getDisabled, Boolean.FALSE); + List<SystemDataPermission> result = systemDataPermissionMapper.selectList(queryWrapper); + if(result!=null && result.size()>0){ + return result.get(0); + } + return null; + } + + } -- Gitblit v1.9.3