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" ) // CollectHandler 收藏相关接口。 type CollectHandler struct { svc *service.CollectService } // NewCollectHandler 创建收藏 handler。 func NewCollectHandler() *CollectHandler { return &CollectHandler{svc: service.NewCollectService()} } // Collect 收藏/取消收藏社区穿搭。 func (h *CollectHandler) Collect(c *gin.Context) { response := app.NewResponse(c) userID, ok := middleware.GetUserID(c.Request.Context()) if !ok { response.ToErrorResponse(errcode.Unauthorized) return } var request dto.CollectRequest if err := c.ShouldBindJSON(&request); err != nil { response.ToErrorResponse(errcode.InvalidParams.WithDetails(err.Error())) return } out, e := h.svc.Collect(c.Request.Context(), userID, &request) if e != nil { response.ToErrorResponse(e) return } response.ToResponse(out) } // List 分页查询我收藏的穿搭。 func (h *CollectHandler) 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.CollectListRequest 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) } // GetByTarget 查询穿搭收藏状态与数量(targetUUID 来自路径参数)。 func (h *CollectHandler) GetByTarget(c *gin.Context) { response := app.NewResponse(c) userID, ok := middleware.GetUserID(c.Request.Context()) if !ok { response.ToErrorResponse(errcode.Unauthorized) return } request := dto.CollectGetByTargetRequest{TargetUUID: c.Param("targetUUID")} if request.TargetUUID == "" { response.ToErrorResponse(errcode.InvalidParams) return } out, e := h.svc.GetByTarget(c.Request.Context(), userID, &request) if e != nil { response.ToErrorResponse(e) return } response.ToResponse(out) }