xiejun
2023-12-01 93c7226d536d312fc083a57619629192ba076413
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/RoleServiceImpl.java
@@ -16,29 +16,34 @@
 */
package com.vci.ubcs.system.service.impl;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.system.mapper.RoleMapper;
import com.vci.ubcs.system.service.IMenuService;
import com.vci.ubcs.system.service.IRoleMenuService;
import com.vci.ubcs.system.service.IRoleScopeService;
import com.vci.ubcs.system.service.IRoleService;
import com.vci.ubcs.system.vo.DeptVO;
import com.vci.ubcs.system.wrapper.RoleWrapper;
import lombok.AllArgsConstructor;
import org.springblade.core.log.annotation.GrantLog;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.constant.BladeConstant;
import org.springblade.core.tool.constant.RoleConstant;
import org.springblade.core.tool.node.ForestNodeMerger;
import org.springblade.core.tool.node.TreeNode;
import org.springblade.core.tool.utils.CollectionUtil;
import org.springblade.core.tool.utils.Func;
import com.vci.ubcs.system.entity.Role;
import com.vci.ubcs.system.entity.RoleMenu;
import com.vci.ubcs.system.entity.RoleScope;
import com.vci.ubcs.system.vo.RoleVO;
import org.springblade.core.tool.utils.StringUtil;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
@@ -64,6 +69,7 @@
   private final IRoleMenuService roleMenuService;
   private final IRoleScopeService roleScopeService;
   private final IMenuService menuService;
   @Override
   public IPage<RoleVO> selectRolePage(IPage<RoleVO> page, RoleVO role) {
@@ -93,6 +99,32 @@
      return grantRoleMenu(roleIds, menuIds) && grantDataScope(roleIds, dataScopeIds) && grantApiScope(roleIds, apiScopeIds);
   }
   /**
    * 角色权限配置日志记录
    * @param roleRes
    * @return
    */
   @Override
   @GrantLog("grantRole")
   public boolean grantLog(String roleRes, boolean isException) {
      return false;
   }
   /**
    * 获取角色授权日志的信息
    * @param roleId
    * @return
    */
   @Override
   public String getGrantRoleResString(List<Long> roleId) {
      // 获取到菜单信息,再获取到角色信息,进行拼接
      List<TreeNode> menuTree = menuService.grantTreeByRoleIds(roleId);
      List<String> roleNames = this.baseMapper.getRoleNames(new Long[]{roleId.get(0)});
      String res = roleNames.get(0) + "授权为:{" + JSON.toJSONString(menuTree)+"}";
      return res;
   }
   private boolean grantRoleMenu(List<Long> roleIds, List<Long> menuIds) {
      // 防止越权配置超管角色
      Long administratorCount = baseMapper.selectCount(Wrappers.<Role>query().lambda().eq(Role::getRoleAlias, RoleConstant.ADMINISTRATOR).in(Role::getId, roleIds));