ZhouliProject/Zhouli.DAL/Implements/SysAuthorityDAL.cs

(开头部分) 2KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using Zhouli.DAL.Interface;
using Zhouli.DbEntity.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Dapper;
using System.Data;
using Microsoft.Extensions.Configuration;
using Zhouli.Enum;

namespace Zhouli.DAL.Implements
{
    public class SysAuthorityDAL : BaseDAL<SysAuthority>, ISysAuthorityDAL
    {

        public SysAuthorityDAL(ZhouLiContext db, IDbConnection dbConnection) : base(db, dbConnection)
        {
        }
        /// <summary>
        /// 获取角色的权限集合
        /// </summary>
        /// <param name="isAdmin">是否超级管理员</param>
        /// <param name="roles">角色集合</param>
        /// <param name="authorityType">权限类型</param>
        /// <returns></returns>
        public List<SysAuthority> GetSysAuthorities(Boolean isAdmin, List<SysRole> roles, AuthorityType authorityType)
        {
            StringBuilder builder = new StringBuilder(20);
            builder.AppendLine($@"SELECT SAT.authority_id 'AuthorityId',SAT.authority_type 'AuthorityType',SM.menu_id 'MenuId',SM.menu_name 'MenuName', 
                      SM.menu_icon 'MenuIcon',SM.menu_url 'MenuUrl',SM.menu_sort 'MenuSort',SM.parent_menu_id 'ParentMenuId'
                                FROM(
                                    SELECT SAT.*
                                    FROM sys_authority SAT WHERE delete_sign={(int)DeleteSign.Sing_Deleted} ) SAT");
            if (!isAdmin)
            {
                var roleList = roles.Select(t => t.RoleId).ToList();
                if (roleList.Count() == 0)
                    roleList.Add(Guid.Empty.ToString());
                builder.AppendLine($@"INNER JOIN (
                                SELECT srar.authority_id
                                FROM sys_role srol, sys_ra_related srar
                                WHERE srol.role_id = srar.role_id
                                    AND srol.role_id IN ('{string.Join("','", roleList)}')
                            ) t
                            ON t.authority_id = SAT.authority_id");
            }
            switch (authorityType)
            {
                case AuthorityType.Type_Menu:
                    builder.AppendLine($@"
                                INNER JOIN sys_am_related SAR ON SAR.authority_id = SAT.authority_id
                                LEFT JOIN sys_menu SM ON SAR.menu_id = SM.menu_id
                            WHERE authority_type = {(int)authorityType}");
                    break;
            }
            var list = _dbConnection.Query<SysAuthority, SysMenu, SysAuthority>(builder.ToString(), (a, b) =>
           {
               a.sysMenu = b;
               return a;
后面还有 6 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。