ZhouliProject/Zhouli.DAL/Implements/SysRoleDAL.cs
(完整代码) 2KBusing 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 算力,解读结果公开显示在下面。
还没有人解读过这个文件。