Example #1
0
        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);
        }