using Infrastructure.Attribute; using Infrastructure.Extensions; using SqlSugar; using System.Collections.Generic; using ARW.Model; using ARW.Model.System; using ARW.Model.System.Dto; namespace ARW.Repository.System { [AppService(ServiceLifetime = LifeTime.Transient)] public class SysUserRoleRepository : BaseRepository { /// /// 删除用户角色 /// /// /// public int DeleteUserRoleByUserId(int userId) { return Context.Deleteable().Where(it => it.UserId == userId).ExecuteCommand(); } /// /// 批量删除角色对应用户 /// /// 角色id /// 用户id集合 /// public int DeleteRoleUserByUserIds(long roleId, List userIds) { return Context.Deleteable().Where(it => it.RoleId == roleId && userIds.Contains(it.UserId)) .ExecuteCommand(); } /// /// 添加用户角色 /// /// /// public int AddUserRole(List sysUsers) { return Context.Insertable(sysUsers).ExecuteCommand(); } /// /// 删除角色关联的用户 /// /// /// public int DeleteUserRoleByRoleId(int roleId) { return Context.Deleteable().In(roleId).ExecuteCommand(); } /// /// 获取角色分配个数 /// /// /// public int CountUserRoleByRoleId(long roleId) { return Context.Queryable().Where(it => it.RoleId == roleId).Count(); } /// /// 获取用户数据根据角色id /// /// /// public List GetSysUsersByRoleId(long roleId) { return Context.Queryable((t1, u) => new JoinQueryInfos( JoinType.Left, t1.UserId == u.UserId)) .Where((t1, u) => t1.RoleId == roleId && u.DelFlag == "0") .Select((t1, u) => u) .ToList(); } /// /// 获取用户数据根据角色id /// /// /// public PagedInfo GetSysUsersByRoleId(RoleUserQueryDto roleUserQueryDto) { var query = Context.Queryable((t1, u) => new JoinQueryInfos( JoinType.Left, t1.UserId == u.UserId)) .Where((t1, u) => t1.RoleId == roleUserQueryDto.RoleId && u.DelFlag == "0"); if (!string.IsNullOrEmpty(roleUserQueryDto.UserName)) { query = query.Where((t1, u) => u.UserName.Contains(roleUserQueryDto.UserName)); } return query.Select((t1, u) => u).ToPage(roleUserQueryDto); } /// /// 获取尚未指派的用户数据根据角色id /// /// /// public PagedInfo GetExcludedSysUsersByRoleId(RoleUserQueryDto roleUserQueryDto) { var query = Context.Queryable() .Where(it => it.DelFlag == "0") .Where(it => SqlFunc.Subqueryable().Where(s => s.UserId == it.UserId && s.RoleId == roleUserQueryDto.RoleId).NotAny()) .WhereIF(roleUserQueryDto.UserName.IsNotEmpty(), it => it.UserName.Contains(roleUserQueryDto.UserName)); return query.ToPage(roleUserQueryDto); } } }