public virtual async Task <BaseResponseModel> ModifyUserRoleAsync(ModifyUserRoleParam param, UserCacheBo currentUser) { var result = new ResponseModel <string>(); var checkResult = await RoleIdCheckAsync(param.RoleId, currentUser); if (!checkResult.IsNullOrEmpty()) { return(result.Fail(checkResult)); } var db = SysRoleDao.CurrentDbContext; var dbUserIds = await db.SysUsers.Where(c => c.TenantId == currentUser.TenantId && c.CreatedBy > 0 && c.UserId != currentUser.UserId).Select(c => c.UserId).ToListAsync(); var crossUserIds = param.UserIds.Intersect(dbUserIds).ToList(); //检查修改的用户是否是自己管理的用户ID,谨防其它手段上传的数据 //直接全量修改 原有角色用户关系删除 直接新增现加的 await db.SysUserRoleRelations.Where(c => c.RoleId == param.RoleId && c.TenantId == currentUser.TenantId).DeleteFromQueryAsync(); if (crossUserIds.Count > 0) { var userRoles = new List <SysUserRoleRelation>(); crossUserIds.ForEach(uid => { userRoles.Add(new SysUserRoleRelation() { TenantId = currentUser.TenantId, UserId = uid, RoleId = param.RoleId, State = 1, CreatedBy = currentUser.UserId, CreatedTime = DateTime.Now, Deleted = false, UpdatedBy = 0, UpdatedTime = DateTime.Now, }); }); await db.SysUserRoleRelations.AddRangeAsync(userRoles); } await db.SaveChangesAsync(); return(result.Succeed("修改成功")); }
public async Task <ActionResult> ModifyUserRole(ModifyUserRoleParam param) { var result = await RoleBll.ModifyUserRoleAsync(param, CurrentUser); return(MyJson(result)); }