From 663dbe4ddca1fa409e6acbc1f77d924c161b0c39 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期一, 09 六月 2025 17:04:50 +0800
Subject: [PATCH] 提交一把订单
---
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