package v1 import ( "git.lzcwy.cn/zhengchiliu/zt-closet-backend/internal/dto" "git.lzcwy.cn/zhengchiliu/zt-closet-backend/internal/middleware" "git.lzcwy.cn/zhengchiliu/zt-closet-backend/internal/service" "git.lzcwy.cn/zhengchiliu/zt-closet-backend/pkg/app" "git.lzcwy.cn/zhengchiliu/zt-closet-backend/pkg/errcode" "github.com/gin-gonic/gin" ) // AIRecommendHandler AI 穿搭推荐相关接口。 type AIRecommendHandler struct { svc *service.AIRecommendService } // NewAIRecommendHandler 创建 AI 推荐 handler。 func NewAIRecommendHandler() *AIRecommendHandler { return &AIRecommendHandler{svc: service.NewAIRecommendService()} } // Create 发起 AI 穿搭推荐。 func (h *AIRecommendHandler) Create(c *gin.Context) { response := app.NewResponse(c) userID, ok := middleware.GetUserID(c.Request.Context()) if !ok { response.ToErrorResponse(errcode.Unauthorized) return } var request dto.AIRecommendCreateRequest if err := c.ShouldBindJSON(&request); err != nil { response.ToErrorResponse(errcode.InvalidParams.WithDetails(err.Error())) return } out, e := h.svc.Create(c.Request.Context(), userID, &request) if e != nil { response.ToErrorResponse(e) return } response.ToResponse(out) } // Save 保存 AI 推荐穿搭到我的搭配。 func (h *AIRecommendHandler) Save(c *gin.Context) { response := app.NewResponse(c) userID, ok := middleware.GetUserID(c.Request.Context()) if !ok { response.ToErrorResponse(errcode.Unauthorized) return } var request dto.AIRecommendSaveRequest if err := c.ShouldBindJSON(&request); err != nil { response.ToErrorResponse(errcode.InvalidParams.WithDetails(err.Error())) return } if e := h.svc.Save(c.Request.Context(), userID, &request); e != nil { response.ToErrorResponse(e) return } response.ToResponse(nil) }