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" ) // OutfitHandler 穿搭相关接口。 type OutfitHandler struct { svc *service.OutfitService } // NewOutfitHandler 创建穿搭 handler。 func NewOutfitHandler() *OutfitHandler { return &OutfitHandler{svc: service.NewOutfitService()} } // Create 创建穿搭。 func (h *OutfitHandler) 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.OutfitCreateRequest 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) } // List 分页查询我的穿搭。 func (h *OutfitHandler) List(c *gin.Context) { response := app.NewResponse(c) userID, ok := middleware.GetUserID(c.Request.Context()) if !ok { response.ToErrorResponse(errcode.Unauthorized) return } var request dto.OutfitListRequest if err := c.ShouldBindQuery(&request); err != nil { response.ToErrorResponse(errcode.InvalidParams.WithDetails(err.Error())) return } out, e := h.svc.List(c.Request.Context(), userID, &request) if e != nil { response.ToErrorResponse(e) return } response.ToResponse(out) } // Get 获取穿搭详情(uuid 来自路径参数)。 func (h *OutfitHandler) Get(c *gin.Context) { response := app.NewResponse(c) userID, ok := middleware.GetUserID(c.Request.Context()) if !ok { response.ToErrorResponse(errcode.Unauthorized) return } request := dto.OutfitGetByUUIDRequest{OutfitUUID: c.Param("uuid")} if request.OutfitUUID == "" { response.ToErrorResponse(errcode.InvalidParams) return } out, e := h.svc.GetByUUID(c.Request.Context(), userID, &request) if e != nil { response.ToErrorResponse(e) return } response.ToResponse(out) } // Update 修改穿搭(uuid 来自路径参数)。 func (h *OutfitHandler) Update(c *gin.Context) { response := app.NewResponse(c) userID, ok := middleware.GetUserID(c.Request.Context()) if !ok { response.ToErrorResponse(errcode.Unauthorized) return } var request dto.OutfitUpdateByUUIDRequest if err := c.ShouldBindJSON(&request); err != nil { response.ToErrorResponse(errcode.InvalidParams.WithDetails(err.Error())) return } request.OutfitUUID = c.Param("uuid") if request.OutfitUUID == "" { response.ToErrorResponse(errcode.InvalidParams) return } out, e := h.svc.UpdateByUUID(c.Request.Context(), userID, &request) if e != nil { response.ToErrorResponse(e) return } response.ToResponse(out) } // Delete 删除穿搭(uuid 来自路径参数)。 func (h *OutfitHandler) Delete(c *gin.Context) { response := app.NewResponse(c) userID, ok := middleware.GetUserID(c.Request.Context()) if !ok { response.ToErrorResponse(errcode.Unauthorized) return } request := dto.OutfitDeleteRequest{OutfitUUID: c.Param("uuid")} if request.OutfitUUID == "" { response.ToErrorResponse(errcode.InvalidParams) return } out, e := h.svc.Delete(c.Request.Context(), userID, &request) if e != nil { response.ToErrorResponse(e) return } response.ToResponse(out) } // Public 设置穿搭公开状态(uuid 来自路径参数)。 func (h *OutfitHandler) Public(c *gin.Context) { response := app.NewResponse(c) userID, ok := middleware.GetUserID(c.Request.Context()) if !ok { response.ToErrorResponse(errcode.Unauthorized) return } var request dto.OutfitPublicRequest if err := c.ShouldBindJSON(&request); err != nil { response.ToErrorResponse(errcode.InvalidParams.WithDetails(err.Error())) return } request.OutfitUUID = c.Param("uuid") if request.OutfitUUID == "" { response.ToErrorResponse(errcode.InvalidParams) return } out, e := h.svc.Public(c.Request.Context(), userID, &request) if e != nil { response.ToErrorResponse(e) return } response.ToResponse(out) }