package product import ( "context" "tyapi-server/internal/application/product/dto/commands" "tyapi-server/internal/application/product/dto/queries" "tyapi-server/internal/application/product/dto/responses" "tyapi-server/internal/shared/interfaces" ) // ProductApplicationService 产品应用服务接口 type ProductApplicationService interface { // 产品管理 CreateProduct(ctx context.Context, cmd *commands.CreateProductCommand) error UpdateProduct(ctx context.Context, cmd *commands.UpdateProductCommand) error DeleteProduct(ctx context.Context, cmd *commands.DeleteProductCommand) error GetProductByID(ctx context.Context, query *queries.GetProductQuery) (*responses.ProductInfoResponse, error) ListProducts(ctx context.Context, filters map[string]interface{}, options interfaces.ListOptions) (*responses.ProductListResponse, error) ListProductsWithSubscriptionStatus(ctx context.Context, filters map[string]interface{}, options interfaces.ListOptions) (*responses.ProductListResponse, error) GetProductsByIDs(ctx context.Context, query *queries.GetProductsByIDsQuery) ([]*responses.ProductInfoResponse, error) // 管理员专用方法 ListProductsForAdmin(ctx context.Context, filters map[string]interface{}, options interfaces.ListOptions) (*responses.ProductAdminListResponse, error) GetProductByIDForAdmin(ctx context.Context, query *queries.GetProductDetailQuery) (*responses.ProductAdminInfoResponse, error) // 用户端专用方法 GetProductByIDForUser(ctx context.Context, query *queries.GetProductDetailQuery) (*responses.ProductInfoWithDocumentResponse, error) // 业务查询 GetSubscribableProducts(ctx context.Context, query *queries.GetSubscribableProductsQuery) ([]*responses.ProductInfoResponse, error) GetProductStats(ctx context.Context) (*responses.ProductStatsResponse, error) // 组合包管理 AddPackageItem(ctx context.Context, packageID string, cmd *commands.AddPackageItemCommand) error UpdatePackageItem(ctx context.Context, packageID, itemID string, cmd *commands.UpdatePackageItemCommand) error RemovePackageItem(ctx context.Context, packageID, itemID string) error ReorderPackageItems(ctx context.Context, packageID string, cmd *commands.ReorderPackageItemsCommand) error UpdatePackageItems(ctx context.Context, packageID string, cmd *commands.UpdatePackageItemsCommand) error // 可选子产品查询 GetAvailableProducts(ctx context.Context, query *queries.GetAvailableProductsQuery) (*responses.ProductListResponse, error) // API配置管理 GetProductApiConfig(ctx context.Context, productID string) (*responses.ProductApiConfigResponse, error) CreateProductApiConfig(ctx context.Context, productID string, config *responses.ProductApiConfigResponse) error UpdateProductApiConfig(ctx context.Context, configID string, config *responses.ProductApiConfigResponse) error DeleteProductApiConfig(ctx context.Context, configID string) error }