ZhouliProject/Zhouli.DAL/Implements/SysRoleDAL.cs

(完整代码) 2KB

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

namespace Zhouli.DAL.Implements
{
    public class SysRoleDAL : BaseDAL<SysRole>, ISysRoleDAL
    {
        public SysRoleDAL(ZhouLiContext db, IDbConnection dbConnection) : base(db, dbConnection)
        {
        }
        /// <summary>
        /// 为角色添加功能菜单
        /// </summary>
        /// <param name="roleId"></param>
        /// <param name="menus"></param>
        /// <returns></returns>
        public bool AddRoleMenu(string roleId, List<SysMenu> menus)
        {
            StringBuilder builderSql = new StringBuilder(20);
            //var list = conn.Query<string>($@"SELECT AuthorityId
            //                      FROM Sys_RaRelated
            //                      WHERE RoleId ='{RoleId}')
            //                     AND AuthorityType={(int)AuthorityType.Type_Menu}");
            ////删除角色权限关联表数据
            //builderSql.AppendLine($@"DELETE FROM Sys_RaRelated
            //                        WHERE RaRelatedId IN (
            //                          SELECT T.RaRelatedId
            //                          FROM Sys_RaRelated T, Sys_Authority T1
            //                          WHERE T.AuthorityId = T1.AuthorityId
            //                           AND T.RoleId = '{RoleId}'
            //                           AND T1.AuthorityType = {(int)AuthorityType.Type_Menu}
            //                         )");
            //删除权限表对应数据
            //builderSql.AppendLine($@"DELETE FROM Sys_Authority
            //                    WHERE AuthorityId IN ('{string.Join("','", list)}')");

            //删除权限表数据
            //builderSql.AppendLine($"DELETE FROM Sys_Authority WHERE AuthorityId IN (SELECT AuthorityId FROM Sys_AmRelated WHERE MenuId IN('{string.Join("','", menus.Select(t => t.MenuId))}'))");
            //删除角色权限表数据
            builderSql.AppendLine($@"DELETE FROM sys_ra_related
                                        WHERE role_id = '{roleId}' ;");
            var list = _dbConnection.Query<SysAmRelated>($"SELECT  am_related_id 'AmRelatedId', authority_id 'AuthorityId', menu_id 'MenuId' FROM sys_am_related WHERE menu_id IN('{string.Join("','", menus.Select(t => t.MenuId))}')");
            builderSql.AppendLine("INSERT INTO sys_ra_related(ra_related_id,role_id,authority_id)");
            foreach (var item in list)
            {
                builderSql.AppendLine($"SELECT '{Guid.NewGuid().ToString()}','{roleId}','{item.AuthorityId}' UNION ALL");
            }
            var sql = builderSql.ToString().Remove(builderSql.ToString().LastIndexOf("UNION ALL"));
            return _dbConnection.Execute(sql) > 0;
        }

    }
}

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

AI 解读 AI

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

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