f
This commit is contained in:
@@ -166,6 +166,80 @@ func (h *ProductHandler) ListProducts(c *gin.Context) {
|
||||
h.responseBuilder.Success(c, result, "获取产品列表成功")
|
||||
}
|
||||
|
||||
// ListProductsForAI 获取产品列表(AI专用)
|
||||
// @Summary 获取产品列表(AI专用)
|
||||
// @Description AI调用专用产品列表,返回全部产品(含禁用/隐藏),包含 is_enabled/is_visible,不含用户订阅状态、成本价和备注
|
||||
// @Tags AI接口
|
||||
// @Accept json
|
||||
// @Produce json
|
||||
// @Param page query int false "页码" default(1)
|
||||
// @Param page_size query int false "每页数量" default(10)
|
||||
// @Param keyword query string false "搜索关键词"
|
||||
// @Param category_id query string false "分类ID"
|
||||
// @Param is_enabled query bool false "是否启用"
|
||||
// @Param is_visible query bool false "是否可见"
|
||||
// @Param is_package query bool false "是否组合包"
|
||||
// @Param sort_by query string false "排序字段"
|
||||
// @Param sort_order query string false "排序方向" Enums(asc, desc)
|
||||
// @Success 200 {object} responses.ProductAIListResponse "获取产品列表成功"
|
||||
// @Failure 400 {object} map[string]interface{} "请求参数错误"
|
||||
// @Failure 500 {object} map[string]interface{} "服务器内部错误"
|
||||
// @Router /api/v1/ai/products [get]
|
||||
func (h *ProductHandler) ListProductsForAI(c *gin.Context) {
|
||||
page := h.getIntQuery(c, "page", 1)
|
||||
pageSize := h.getIntQuery(c, "page_size", 10)
|
||||
|
||||
filters := make(map[string]interface{})
|
||||
|
||||
if keyword := c.Query("keyword"); keyword != "" {
|
||||
filters["keyword"] = keyword
|
||||
}
|
||||
if categoryID := c.Query("category_id"); categoryID != "" {
|
||||
filters["category_id"] = categoryID
|
||||
}
|
||||
if isEnabled := c.Query("is_enabled"); isEnabled != "" {
|
||||
if enabled, err := strconv.ParseBool(isEnabled); err == nil {
|
||||
filters["is_enabled"] = enabled
|
||||
}
|
||||
}
|
||||
if isVisible := c.Query("is_visible"); isVisible != "" {
|
||||
if visible, err := strconv.ParseBool(isVisible); err == nil {
|
||||
filters["is_visible"] = visible
|
||||
}
|
||||
}
|
||||
if isPackage := c.Query("is_package"); isPackage != "" {
|
||||
if pkg, err := strconv.ParseBool(isPackage); err == nil {
|
||||
filters["is_package"] = pkg
|
||||
}
|
||||
}
|
||||
|
||||
sortBy := c.Query("sort_by")
|
||||
if sortBy == "" {
|
||||
sortBy = "created_at"
|
||||
}
|
||||
|
||||
sortOrder := c.Query("sort_order")
|
||||
if sortOrder == "" {
|
||||
sortOrder = "desc"
|
||||
}
|
||||
|
||||
options := interfaces.ListOptions{
|
||||
Page: page,
|
||||
PageSize: pageSize,
|
||||
Sort: sortBy,
|
||||
Order: sortOrder,
|
||||
}
|
||||
|
||||
result, err := h.appService.ListProductsForAI(c.Request.Context(), filters, options)
|
||||
if err != nil {
|
||||
h.logger.Error("获取AI产品列表失败", zap.Error(err))
|
||||
h.responseBuilder.InternalError(c, "获取产品列表失败")
|
||||
return
|
||||
}
|
||||
|
||||
h.responseBuilder.Success(c, result, "获取产品列表成功")
|
||||
}
|
||||
|
||||
// getIntQuery 获取整数查询参数
|
||||
func (h *ProductHandler) getIntQuery(c *gin.Context, key string, defaultValue int) int {
|
||||
if value := c.Query(key); value != "" {
|
||||
|
||||
37
internal/infrastructure/http/routes/ai_product_routes.go
Normal file
37
internal/infrastructure/http/routes/ai_product_routes.go
Normal file
@@ -0,0 +1,37 @@
|
||||
package routes
|
||||
|
||||
import (
|
||||
"tyapi-server/internal/infrastructure/http/handlers"
|
||||
sharedhttp "tyapi-server/internal/shared/http"
|
||||
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
// AIProductRoutes AI产品接口路由
|
||||
type AIProductRoutes struct {
|
||||
productHandler *handlers.ProductHandler
|
||||
logger *zap.Logger
|
||||
}
|
||||
|
||||
// NewAIProductRoutes 创建AI产品路由
|
||||
func NewAIProductRoutes(
|
||||
productHandler *handlers.ProductHandler,
|
||||
logger *zap.Logger,
|
||||
) *AIProductRoutes {
|
||||
return &AIProductRoutes{
|
||||
productHandler: productHandler,
|
||||
logger: logger,
|
||||
}
|
||||
}
|
||||
|
||||
// Register 注册AI产品相关路由
|
||||
func (r *AIProductRoutes) Register(router *sharedhttp.GinRouter) {
|
||||
engine := router.GetEngine()
|
||||
|
||||
aiProducts := engine.Group("/api/v1/ai/products")
|
||||
{
|
||||
aiProducts.GET("", r.productHandler.ListProductsForAI)
|
||||
}
|
||||
|
||||
r.logger.Info("AI产品路由注册完成")
|
||||
}
|
||||
Reference in New Issue
Block a user