zhongrj
2023-11-03 4299048ed4f2b5e713dc43fd0e25901b4c72d703
角色权限控制接口调整
8 files modified
1 files added
136 ■■■■■ changed files
src/main/java/org/springblade/modules/system/controller/RoleController.java 13 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/controller/TenantController.java 8 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/mapper/RoleMapper.java 8 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/mapper/RoleMapper.xml 27 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/mapper/UserMapper.xml 1 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/service/IRoleService.java 8 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/service/impl/MenuServiceImpl.java 4 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/service/impl/RoleServiceImpl.java 12 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/vo/RoleParam.java 55 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/controller/RoleController.java
@@ -39,6 +39,7 @@
import org.springblade.modules.system.entity.User;
import org.springblade.modules.system.service.IRoleService;
import org.springblade.modules.system.vo.GrantVO;
import org.springblade.modules.system.vo.RoleParam;
import org.springblade.modules.system.vo.RoleVO;
import org.springblade.modules.system.wrapper.RoleWrapper;
import org.springframework.web.bind.annotation.*;
@@ -180,4 +181,16 @@
    }
    /**
     * 自定义列表(只获取当前角色下级角色)
     * @param roleParam
     * @return
     */
    @GetMapping("/getRoleList")
    public R<List<RoleVO>> getRoleList(RoleParam roleParam) {
        List<Role> list = roleService.getRoleList(roleParam);
        return R.data(RoleWrapper.build().listNodeVO(list));
    }
}
src/main/java/org/springblade/modules/system/controller/TenantController.java
@@ -29,6 +29,7 @@
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.annotation.PreAuth;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.constant.BladeConstant;
@@ -105,9 +106,12 @@
    @ApiOperationSupport(order = 3)
    @ApiOperation(value = "下拉数据源", notes = "传入tenant")
    @PreAuth(RoleConstant.HAS_ROLE_ADMIN)
    public R<List<Tenant>> select(Tenant tenant, BladeUser bladeUser) {
    public R<List<Tenant>> select() {
        BladeUser user = AuthUtil.getUser();
        Tenant tenant = new Tenant();
        tenant.setTenantId(AuthUtil.getTenantId());
        QueryWrapper<Tenant> queryWrapper = Condition.getQueryWrapper(tenant);
        List<Tenant> list = tenantService.list((!bladeUser.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID)) ? queryWrapper.lambda().eq(Tenant::getTenantId, bladeUser.getTenantId()) : queryWrapper);
        List<Tenant> list = tenantService.list((!user.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID)) ? queryWrapper.lambda().eq(Tenant::getTenantId, user.getTenantId()) : queryWrapper);
        return R.data(list);
    }
src/main/java/org/springblade/modules/system/mapper/RoleMapper.java
@@ -20,6 +20,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;
import org.springblade.modules.system.entity.Role;
import org.springblade.modules.system.vo.RoleParam;
import org.springblade.modules.system.vo.RoleVO;
import java.util.List;
@@ -66,4 +67,11 @@
    List<String> getRoleAliases(Long[] ids);
    List<Role> getRoleListByIds(@Param("ids") String roleIds);
    /**
     * 自定义列表(只获取当前角色下级角色)
     * @param roleParam
     * @return
     */
    List<Role> getRoleList(@Param("roleParam") RoleParam roleParam);
}
src/main/java/org/springblade/modules/system/mapper/RoleMapper.xml
@@ -26,6 +26,7 @@
    <select id="tree" resultMap="treeNodeResultMap">
        select id, parent_id, role_name as title, id as "value", id as "key" from blade_role where is_deleted = 0
        and id!=1123598816738675201
        <if test="param1!=null">
            and tenant_id = #{param1}
        </if>
@@ -67,4 +68,30 @@
        </foreach>
    </select>
    <!--角色查询-->
    <select id="getRoleList" resultType="org.springblade.modules.system.entity.Role">
        SELECT br.* FROM blade_role br
        inner join (
        SELECT * FROM
        (
        SELECT t1.*,IF( find_in_set( parent_id, @pids ) > 0, @pids := concat( @pids, ',', id ), 0 ) AS ischild FROM
        ( SELECT id, parent_id,role_name,role_alias FROM blade_role t where is_deleted =0 ORDER BY parent_id, id ) t1,
        ( SELECT @pids := #{roleParam.roleId} ) t2
        ) t3
        WHERE id != 1123598816738675201
        <if test="roleParam.roleName!=null and roleParam.roleName!=''">
            and role_name like concat('%',#{roleParam.roleName},'%')
        </if>
        <if test="roleParam.roleAlias!=null and roleParam.roleAlias!=''">
            and role_alias like concat('%',#{roleParam.roleAlias},'%')
        </if>
        ) t4 on br.id = t4.id
        <if test="roleParam.isNowLevel==0">
            union all
            (
            SELECT * FROM blade_role where id = #{roleParam.roleId}
            )
        </if>
    </select>
</mapper>
src/main/java/org/springblade/modules/system/mapper/UserMapper.xml
@@ -29,6 +29,7 @@
    <select id="selectUserPage" resultMap="userResultMap">
        select * from blade_user where is_deleted = 0
        and id != 1123598821738675201
        <if test="tenantId!=null and tenantId != ''">
            and tenant_id = #{tenantId}
        </if>
src/main/java/org/springblade/modules/system/service/IRoleService.java
@@ -19,6 +19,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springblade.modules.system.entity.Role;
import org.springblade.modules.system.vo.RoleParam;
import org.springblade.modules.system.vo.RoleVO;
import javax.validation.constraints.NotEmpty;
@@ -116,4 +117,11 @@
     * @return
     */
    List<Role> getRoleListByIds(String roleIds);
    /**
     * 自定义列表(只获取当前角色下级角色)
     * @param roleParam
     * @return
     */
    List<Role> getRoleList(RoleParam roleParam);
}
src/main/java/org/springblade/modules/system/service/impl/MenuServiceImpl.java
@@ -25,6 +25,7 @@
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.AuthUtil;
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.support.Kv;
@@ -153,8 +154,7 @@
    @Override
    public List<TreeNode> grantTree(BladeUser user) {
        List<TreeNode> menuTree = user.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID) ? baseMapper.grantTree() : baseMapper.grantTreeByRole(Func.toLongList(user.getRoleId()));
        return ForestNodeMerger.merge(tenantPackageTree(menuTree, user.getTenantId()));
        return ForestNodeMerger.merge(AuthUtil.getUser().getRoleName().equals(RoleConstant.ADMINISTRATOR) ? baseMapper.grantTree() : baseMapper.grantTreeByRole(Func.toLongList(user.getRoleId())));
    }
    @Override
src/main/java/org/springblade/modules/system/service/impl/RoleServiceImpl.java
@@ -35,6 +35,7 @@
import org.springblade.modules.system.service.IRoleMenuService;
import org.springblade.modules.system.service.IRoleScopeService;
import org.springblade.modules.system.service.IRoleService;
import org.springblade.modules.system.vo.RoleParam;
import org.springblade.modules.system.vo.RoleVO;
import org.springblade.modules.system.wrapper.RoleWrapper;
import org.springframework.stereotype.Service;
@@ -197,6 +198,7 @@
            }
            role.setTenantId(parent.getTenantId());
        }
        role.setParentId(Long.parseLong(AuthUtil.getUser().getRoleId()));
        role.setIsDeleted(BladeConstant.DB_NOT_DELETED);
        return saveOrUpdate(role);
    }
@@ -232,4 +234,14 @@
        return baseMapper.getRoleListByIds(roleIds);
    }
    /**
     * 自定义列表(只获取当前角色下级角色)
     * @param roleParam
     * @return
     */
    @Override
    public List<Role> getRoleList(RoleParam roleParam) {
        roleParam.setRoleId(AuthUtil.getUser().getRoleId());
        return baseMapper.getRoleList(roleParam);
    }
}
src/main/java/org/springblade/modules/system/vo/RoleParam.java
New file
@@ -0,0 +1,55 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.modules.system.vo;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.modules.system.entity.Role;
/**
 * 视图实体类
 *
 * @author Chill
 */
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "RoleVO对象", description = "RoleVO对象")
public class RoleParam extends Role {
    private static final long serialVersionUID = 1L;
    /**
     * 是否返回当前层级 0:是  1:否
     */
    private Integer isNowLevel;
    /**
     * 角色id
     */
    private String roleId;
    /**
     * 角色名称
     */
    private String roleName;
    /**
     * 角色别名
     */
    private String roleAlias;
}