using Blog.Core.IRepository;
using Blog.Core.Model.Models;
using Blog.Core.Repository.Base;
using SqlSugar;
using System.Collections.Generic;
using System.Threading.Tasks;
using Blog.Core.Repository.UnitOfWorks;
namespace Blog.Core.Repository
{
///
/// RoleModulePermissionRepository
///
public class RoleModulePermissionRepository : BaseRepository, IRoleModulePermissionRepository
{
public RoleModulePermissionRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
{
}
public async Task> QueryMuchTable()
{
return await QueryMuch(
(rmp, m, p) => new object[] {
JoinType.Left, rmp.ModuleId == m.Id,
JoinType.Left, rmp.PermissionId == p.Id
},
(rmp, m, p) => new TestMuchTableResult()
{
moduleName = m.Name,
permName = p.Name,
rid = rmp.RoleId,
mid = rmp.ModuleId,
pid = rmp.PermissionId
},
(rmp, m, p) => rmp.IsDeleted == false
);
}
///
/// 角色权限Map
/// RoleModulePermission, Module, Role 三表联合
/// 第四个类型 RoleModulePermission 是返回值
///
///
public async Task> RoleModuleMaps()
{
return await QueryMuch(
(rmp, m, r) => new object[] {
JoinType.Left, rmp.ModuleId == m.Id,
JoinType.Left, rmp.RoleId == r.Id
},
(rmp, m, r) => new RoleModulePermission()
{
Role = r,
Module = m,
IsDeleted = rmp.IsDeleted
},
(rmp, m, r) => rmp.IsDeleted == false && m.IsDeleted == false && r.IsDeleted == false
);
}
///
/// 查询出角色-菜单-接口关系表全部Map属性数据
///
///
public async Task> GetRMPMaps()
{
return await Db.Queryable()
.Mapper(rmp => rmp.Module, rmp => rmp.ModuleId)
.Mapper(rmp => rmp.Permission, rmp => rmp.PermissionId)
.Mapper(rmp => rmp.Role, rmp => rmp.RoleId)
.Where(d => d.IsDeleted == false)
.ToListAsync();
}
///
/// 查询出角色-菜单-接口关系表全部Map属性数据
///
///
public async Task> GetRMPMapsPage()
{
return await Db.Queryable()
.Mapper(rmp => rmp.Module, rmp => rmp.ModuleId)
.Mapper(rmp => rmp.Permission, rmp => rmp.PermissionId)
.Mapper(rmp => rmp.Role, rmp => rmp.RoleId)
.ToPageListAsync(1, 5, 10);
}
///
/// 批量更新菜单与接口的关系
///
/// 菜单主键
/// 接口主键
///
public async Task UpdateModuleId(long permissionId, long moduleId)
{
await Db.Updateable(it => it.ModuleId == moduleId).Where(
it => it.PermissionId == permissionId).ExecuteCommandAsync();
}
}
}