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(); } } }