Exemplo n.º 1
0
        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("修改成功"));
        }
Exemplo n.º 2
0
        public async Task <ActionResult> ModifyUserRole(ModifyUserRoleParam param)
        {
            var result = await RoleBll.ModifyUserRoleAsync(param, CurrentUser);

            return(MyJson(result));
        }