sunpengfei
2025-08-05 a89531d2e96dbd59f998ee0fcbaa17c4ca5ed1ff
FlexJobApi.User.Application/Roles/Commands/SaveRoleCommandHandler.cs
@@ -32,6 +32,37 @@
                    .FirstOrDefaultAsync(it => it.Id == request.Id, cancellationToken);
                if (entity == null) throw Oops.Oh(EnumErrorCodeType.s404, "角色");
                request.Adapt(entity);
                entity.RoleMenus = entity.RoleMenus.Where(it => request.MenuIds.Contains(it.MenuId)).ToList();
                foreach (var menuId in request.MenuIds)
                {
                    var entityRoleMenu = entity.RoleMenus.FirstOrDefault(it => it.MenuId == menuId);
                    if (entityRoleMenu == null)
                    {
                        entityRoleMenu = new RoleMenu
                        {
                            MenuId = menuId
                        };
                        entity.RoleMenus.Add(entityRoleMenu);
                    }
                }
                entity.RoleResources = entity.RoleResources.Where(it => request.Resources.Any(r => r.ResourceId == it.ResourceId)).ToList();
                foreach (var roleResource in request.Resources)
                {
                    var entityRoleResource = entity.RoleResources.FirstOrDefault(it => it.ResourceId == roleResource.ResourceId);
                    if (entityRoleResource == null)
                    {
                        entityRoleResource = new RoleResource
                        {
                            ResourceId = roleResource.ResourceId,
                            DataPower = roleResource.DataPower
                        };
                        entity.RoleResources.Add(entityRoleResource);
                    }
                    else
                    {
                        entityRoleResource.DataPower = roleResource.DataPower;
                    }
                }
                await rep.UpdateAsync(entity);
                return entity.Id;
            }