package handler import ( "strings" "affiliate_dash/internal/pkg/response" "affiliate_dash/internal/service" "github.com/gin-gonic/gin" ) // DeliveryHandler 提供用户侧公开发货页面使用的接口。 type DeliveryHandler struct { deliverySvc *service.DeliveryService } func NewDeliveryHandler(deliverySvc *service.DeliveryService) *DeliveryHandler { return &DeliveryHandler{deliverySvc: deliverySvc} } func (h *DeliveryHandler) GetOrder(c *gin.Context) { order, err := h.deliverySvc.GetOrder(c.Param("order_no")) if err != nil { writeDeliveryError(c, err) return } response.OK(c, order) } type deliveryBindReq struct { GameAccount string `json:"game_account" binding:"required"` } func (h *DeliveryHandler) Bind(c *gin.Context) { var req deliveryBindReq if err := c.ShouldBindJSON(&req); err != nil { response.BadRequest(c, "请输入玩家编号") return } result, err := h.deliverySvc.Bind(c.Param("order_no"), req.GameAccount) if err != nil { writeDeliveryError(c, err) return } response.OK(c, result) } type deliverySubmitReq struct { GameAccount string `json:"game_account" binding:"required"` BindUUID string `json:"bind_uuid" binding:"required"` } func (h *DeliveryHandler) Submit(c *gin.Context) { var req deliverySubmitReq if err := c.ShouldBindJSON(&req); err != nil { response.BadRequest(c, "玩家编号和绑定凭证不能为空") return } result, err := h.deliverySvc.Submit(c.Param("order_no"), req.GameAccount, req.BindUUID) if err != nil { writeDeliveryError(c, err) return } response.OK(c, result) } func writeDeliveryError(c *gin.Context, err error) { msg := strings.TrimSpace(err.Error()) if msg == "订单不存在" { response.NotFound(c, msg) return } response.BadRequest(c, msg) }