完善发货链接签名和作废恢复
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package handler
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"affiliate_dash/internal/pkg/response"
|
||||
@@ -19,7 +20,7 @@ func NewDeliveryHandler(deliverySvc *service.DeliveryService) *DeliveryHandler {
|
||||
}
|
||||
|
||||
func (h *DeliveryHandler) GetOrder(c *gin.Context) {
|
||||
order, err := h.deliverySvc.GetOrder(c.Param("order_no"))
|
||||
order, err := h.deliverySvc.GetOrder(c.Param("order_no"), parseDeliveryAuth(c))
|
||||
if err != nil {
|
||||
writeDeliveryError(c, err)
|
||||
return
|
||||
@@ -37,7 +38,7 @@ func (h *DeliveryHandler) Bind(c *gin.Context) {
|
||||
response.BadRequest(c, "请输入玩家编号")
|
||||
return
|
||||
}
|
||||
result, err := h.deliverySvc.Bind(c.Param("order_no"), req.GameAccount)
|
||||
result, err := h.deliverySvc.Bind(c.Param("order_no"), req.GameAccount, parseDeliveryAuth(c))
|
||||
if err != nil {
|
||||
writeDeliveryError(c, err)
|
||||
return
|
||||
@@ -56,7 +57,7 @@ func (h *DeliveryHandler) Submit(c *gin.Context) {
|
||||
response.BadRequest(c, "玩家编号和绑定凭证不能为空")
|
||||
return
|
||||
}
|
||||
result, err := h.deliverySvc.Submit(c.Param("order_no"), req.GameAccount, req.BindUUID)
|
||||
result, err := h.deliverySvc.Submit(c.Param("order_no"), req.GameAccount, req.BindUUID, parseDeliveryAuth(c))
|
||||
if err != nil {
|
||||
writeDeliveryError(c, err)
|
||||
return
|
||||
@@ -64,11 +65,36 @@ func (h *DeliveryHandler) Submit(c *gin.Context) {
|
||||
response.OK(c, result)
|
||||
}
|
||||
|
||||
func parseDeliveryAuth(c *gin.Context) service.DeliveryLinkAuth {
|
||||
exp := int64(0)
|
||||
if value := strings.TrimSpace(c.Query("exp")); value != "" {
|
||||
if parsed, err := strconv.ParseInt(value, 10, 64); err == nil {
|
||||
exp = parsed
|
||||
}
|
||||
}
|
||||
return service.DeliveryLinkAuth{
|
||||
Exp: exp,
|
||||
Sign: strings.TrimSpace(c.Query("sign")),
|
||||
}
|
||||
}
|
||||
|
||||
func writeDeliveryError(c *gin.Context, err error) {
|
||||
type statusCoder interface {
|
||||
HTTPStatus() int
|
||||
}
|
||||
if sc, ok := err.(statusCoder); ok {
|
||||
status := sc.HTTPStatus()
|
||||
response.Fail(c, status, status, strings.TrimSpace(err.Error()))
|
||||
return
|
||||
}
|
||||
msg := strings.TrimSpace(err.Error())
|
||||
if msg == "订单不存在" {
|
||||
response.NotFound(c, msg)
|
||||
return
|
||||
}
|
||||
if msg == "链接参数缺失" || msg == "发货链接未生成" || msg == "发货链接已失效" || msg == "发货链接已过期" || msg == "发货链接签名无效" {
|
||||
response.Forbidden(c, msg)
|
||||
return
|
||||
}
|
||||
response.BadRequest(c, msg)
|
||||
}
|
||||
|
||||
@@ -16,13 +16,15 @@ type MerchantHandler struct {
|
||||
merchantSvc *service.MerchantService
|
||||
fulfillmentSvc *service.FulfillmentService
|
||||
callbackSvc *service.CallbackService
|
||||
deliverySvc *service.DeliveryService
|
||||
}
|
||||
|
||||
func NewMerchantHandler(merchantSvc *service.MerchantService, fulfillmentSvc *service.FulfillmentService, callbackSvc *service.CallbackService) *MerchantHandler {
|
||||
func NewMerchantHandler(merchantSvc *service.MerchantService, fulfillmentSvc *service.FulfillmentService, callbackSvc *service.CallbackService, deliverySvc *service.DeliveryService) *MerchantHandler {
|
||||
return &MerchantHandler{
|
||||
merchantSvc: merchantSvc,
|
||||
fulfillmentSvc: fulfillmentSvc,
|
||||
callbackSvc: callbackSvc,
|
||||
deliverySvc: deliverySvc,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -165,6 +167,32 @@ func (h *MerchantHandler) CreateTestOrder(c *gin.Context) {
|
||||
})
|
||||
}
|
||||
|
||||
func (h *MerchantHandler) GetDeliveryLink(c *gin.Context) {
|
||||
link, err := h.deliverySvc.GetOrCreateDeliveryLink(middleware.GetMerchantID(c), c.Param("order_no"))
|
||||
if err != nil {
|
||||
writeDeliveryError(c, err)
|
||||
return
|
||||
}
|
||||
response.OK(c, link)
|
||||
}
|
||||
|
||||
func (h *MerchantHandler) RevokeDeliveryLink(c *gin.Context) {
|
||||
if err := h.deliverySvc.RevokeDeliveryLink(middleware.GetMerchantID(c), c.Param("order_no")); err != nil {
|
||||
writeDeliveryError(c, err)
|
||||
return
|
||||
}
|
||||
response.OK(c, nil)
|
||||
}
|
||||
|
||||
func (h *MerchantHandler) RestoreDeliveryLink(c *gin.Context) {
|
||||
link, err := h.deliverySvc.RestoreDeliveryLink(middleware.GetMerchantID(c), c.Param("order_no"))
|
||||
if err != nil {
|
||||
writeDeliveryError(c, err)
|
||||
return
|
||||
}
|
||||
response.OK(c, link)
|
||||
}
|
||||
|
||||
func (h *MerchantHandler) GetWallet(c *gin.Context) {
|
||||
wallet, err := h.fulfillmentSvc.GetWallet(middleware.GetMerchantID(c))
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user