126 lines
3.4 KiB
Go
126 lines
3.4 KiB
Go
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)
|
|
}
|