ludc
2023-12-27 360accaf390a8541a325936522ad863ef7b04632
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/ClassifyAuthServiceImpl.java
@@ -1,28 +1,27 @@
package com.vci.ubcs.system.service.impl;
import cn.hutool.db.ds.pooled.ConnectionWraper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import com.vci.ubcs.system.entity.ClassifyAuth;
import com.vci.ubcs.system.entity.Menu;
import com.vci.ubcs.system.mapper.ClassifyAuthMapper;
import com.vci.ubcs.system.service.IClassifyAuthService;
import com.vci.ubcs.system.service.IMenuService;
import com.vci.ubcs.system.vo.ClassifyAuthVO;
import com.vci.ubcs.system.vo.MenuVO;
import com.vci.ubcs.system.wrapper.ClassifyAuthWrapper;
import lombok.AllArgsConstructor;
import lombok.RequiredArgsConstructor;
import org.redisson.api.condition.Conditions;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -35,6 +34,8 @@
public class ClassifyAuthServiceImpl extends ServiceImpl<ClassifyAuthMapper,ClassifyAuth> implements IClassifyAuthService {
   private final ClassifyAuthMapper classifyAuthMapper;
   private final IMenuService menuService;
   /**
    * 分类授权保存接口
@@ -80,4 +81,39 @@
      return new ArrayList<ClassifyAuthVO>();
   }
   /**
    * 查询该分类下,当前登录的角色有哪些按钮权限
    * @param classifyId
    * @return
    */
   public Map<String,Boolean> getAuthButtonList(String classifyId){
      final String roleIds = AuthUtil.getUser().getRoleId();
      // 先查询按钮id列表
      LambdaQueryWrapper<ClassifyAuth> wrapper = Wrappers.<ClassifyAuth>query()
         .lambda().eq(ClassifyAuth::getClassifyId, classifyId)
         .in(ClassifyAuth::getRoleId, roleIds);
      List<ClassifyAuth> classifyAuths = this.classifyAuthMapper.selectList(wrapper);
      if(classifyAuths.size()>1){
         throw new ServiceException("角色和分类配置存在多条记录,请联系管理人员清理错误配置!");
      }
      // 是否为超管
      Boolean isAdmin = VciBaseUtil.checkAdminTenant();
      // 未配置按钮权限
      if(!isAdmin && (classifyAuths.isEmpty() || Func.isBlank(classifyAuths.get(0).getButtonIds()))){
         return new HashMap<>();
      }
      List<String> condition1 = new ArrayList<>();
      // 如果不是超管用户
      if(!isAdmin){
         condition1.addAll(Arrays.asList(classifyAuths.get(0).getButtonIds().split(",")));
      }
      List<Menu> menuList = menuService.getMenuListById(condition1,"1648879284590858241");
      if(menuList.isEmpty()){
         return new HashMap<>();
      }
      Map<String, Boolean> buttonMaps = menuList.stream()
         .collect(Collectors.toMap(Menu::getCode, menu -> true));
      return buttonMaps;
   }
}