public async Task <string> AddRole(AddRoleVm role, Token user) { if (role == null) { return(Tip.BadRequest); } bool isUpdate = role.Tid > 0; if (!isUpdate) { var en = await this.Entity.FirstOrDefaultAsync(r => r.IsActive && r.RoleName.Equals(role.RoleName.Trim())); if (en != null) { return(Tip.RoleNameIsExists); } } else { var en = await this.Entity.FirstOrDefaultAsync(r => r.IsActive && !r.Tid.Equals(role.Tid) && r.RoleName.Equals(role.RoleName.Trim())); if (en != null) { return(Tip.RoleNameIsExists); } } var menuRights = RightsHelper.SumRights(role.Ids.ToList()); var actionList = role.Actions.GroupBy(r => r.MenuId) .Select(r => new MenuActionSM { MenuTid = r.Key, ActionList = r.Select(y => new ActionSM { ActionId = y.ActionId, ActionName = y.ActionName }).ToList() }).ToList(); var systemRole = new SystemRole { ActionList = JsonConvert.SerializeObject(actionList), IsActive = true, MenuRights = menuRights.ToString(), RoleName = role.RoleName, Description = role.RoleDesc, CreateUser = user.Eid, CreateRoleTid = user.RoleTid }; if (!isUpdate) { var saveResult = this.Save(systemRole) > 0; if (!saveResult) { return(Tip.InserError); } } else { //更新角色 var updateResult = this.Entity.Where(r => r.Tid.Equals(role.Tid)) .Set(r => r.DataChangeLastTime, DateTime.Now) .Set(r => r.RoleName, systemRole.RoleName) .Set(r => r.Description, systemRole.Description) .Set(r => r.MenuRights, systemRole.MenuRights) .Set(r => r.ActionList, systemRole.ActionList) .Update() > 0; if (!updateResult) { return(Tip.UpdateError); } //更新所有角色下的用户菜单权限 Entitys.SystemUsers.Where(r => r.RoleTid.Equals(role.Tid)) .Set(r => r.MenuRights, systemRole.MenuRights) .Set(r => r.DataChangeLastTime, DateTime.Now) .Update(); } return(string.Empty); }