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" ) // ClosetShareHandler 衣柜分享相关接口。 type ClosetShareHandler struct { svc *service.ClosetShareService } // NewClosetShareHandler 创建衣柜分享 handler。 func NewClosetShareHandler() *ClosetShareHandler { return &ClosetShareHandler{svc: service.NewClosetShareService()} } // Create 创建衣柜分享。 func (h *ClosetShareHandler) 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.ClosetShareCreateRequest 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 *ClosetShareHandler) 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.ClosetShareListRequest 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) } // ReceivedList 分页查询分享给我的分享。 func (h *ClosetShareHandler) ReceivedList(c *gin.Context) { response := app.NewResponse(c) userID, ok := middleware.GetUserID(c.Request.Context()) if !ok { response.ToErrorResponse(errcode.Unauthorized) return } var request dto.ClosetShareListRequest if err := c.ShouldBindQuery(&request); err != nil { response.ToErrorResponse(errcode.InvalidParams.WithDetails(err.Error())) return } out, e := h.svc.ListReceived(c.Request.Context(), userID, &request) if e != nil { response.ToErrorResponse(e) return } response.ToResponse(out) } // Detail 查看分享详情(uuid 来自路径参数)。 func (h *ClosetShareHandler) Detail(c *gin.Context) { response := app.NewResponse(c) userID, ok := middleware.GetUserID(c.Request.Context()) if !ok { response.ToErrorResponse(errcode.Unauthorized) return } shareUUID := c.Param("uuid") if shareUUID == "" { response.ToErrorResponse(errcode.InvalidParams) return } out, e := h.svc.Detail(c.Request.Context(), userID, shareUUID) if e != nil { response.ToErrorResponse(e) return } response.ToResponse(out) } // Cancel 取消分享(uuid 来自路径参数)。 func (h *ClosetShareHandler) Cancel(c *gin.Context) { response := app.NewResponse(c) userID, ok := middleware.GetUserID(c.Request.Context()) if !ok { response.ToErrorResponse(errcode.Unauthorized) return } request := dto.ClosetShareCancelRequest{ShareUUID: c.Param("uuid")} if request.ShareUUID == "" { response.ToErrorResponse(errcode.InvalidParams) return } out, e := h.svc.Cancel(c.Request.Context(), userID, &request) if e != nil { response.ToErrorResponse(e) return } response.ToResponse(out) }