补商户发货API
This commit is contained in:
@@ -18,10 +18,11 @@ import (
|
||||
type OpenV1Handler struct {
|
||||
merchantSvc *service.MerchantService
|
||||
fulfillmentSvc *service.FulfillmentService
|
||||
deliverySvc *service.DeliveryService
|
||||
}
|
||||
|
||||
func NewOpenV1Handler(merchantSvc *service.MerchantService, fulfillmentSvc *service.FulfillmentService) *OpenV1Handler {
|
||||
return &OpenV1Handler{merchantSvc: merchantSvc, fulfillmentSvc: fulfillmentSvc}
|
||||
func NewOpenV1Handler(merchantSvc *service.MerchantService, fulfillmentSvc *service.FulfillmentService, deliverySvc *service.DeliveryService) *OpenV1Handler {
|
||||
return &OpenV1Handler{merchantSvc: merchantSvc, fulfillmentSvc: fulfillmentSvc, deliverySvc: deliverySvc}
|
||||
}
|
||||
|
||||
func (h *OpenV1Handler) ListProducts(c *gin.Context) {
|
||||
@@ -162,6 +163,106 @@ func (h *OpenV1Handler) GetWallet(c *gin.Context) {
|
||||
response.OK(c, wallet)
|
||||
}
|
||||
|
||||
func (h *OpenV1Handler) GetDeliveryLink(c *gin.Context) {
|
||||
openlog.SetAction(c, openlog.ActionQuery)
|
||||
orderNo := c.Param("order_no")
|
||||
openlog.Info(c, "delivery_link start order_no=%s", orderNo)
|
||||
link, err := h.deliverySvc.GetOrCreateDeliveryLink(middleware.GetMerchantID(c), orderNo)
|
||||
if err != nil {
|
||||
openlog.Warn(c, "delivery_link fail order_no=%s err=%v", orderNo, err)
|
||||
if sc, ok := err.(interface{ HTTPStatus() int }); ok {
|
||||
response.Fail(c, sc.HTTPStatus(), sc.HTTPStatus(), err.Error())
|
||||
return
|
||||
}
|
||||
if err.Error() == "订单不存在" {
|
||||
response.NotFound(c, err.Error())
|
||||
return
|
||||
}
|
||||
response.BadRequest(c, err.Error())
|
||||
return
|
||||
}
|
||||
response.OK(c, link)
|
||||
}
|
||||
|
||||
func (h *OpenV1Handler) GetDeliveryOrder(c *gin.Context) {
|
||||
openlog.SetAction(c, openlog.ActionQuery)
|
||||
orderNo := c.Param("order_no")
|
||||
openlog.Info(c, "delivery_get start order_no=%s", orderNo)
|
||||
order, err := h.deliverySvc.GetMerchantOrder(middleware.GetMerchantID(c), orderNo)
|
||||
if err != nil {
|
||||
openlog.Warn(c, "delivery_get fail order_no=%s err=%v", orderNo, err)
|
||||
if err.Error() == "订单不存在" {
|
||||
response.NotFound(c, err.Error())
|
||||
return
|
||||
}
|
||||
if sc, ok := err.(interface{ HTTPStatus() int }); ok {
|
||||
response.Fail(c, sc.HTTPStatus(), sc.HTTPStatus(), err.Error())
|
||||
return
|
||||
}
|
||||
response.BadRequest(c, err.Error())
|
||||
return
|
||||
}
|
||||
response.OK(c, order)
|
||||
}
|
||||
|
||||
type openDeliveryBindReq struct {
|
||||
GameAccount string `json:"game_account" binding:"required"`
|
||||
}
|
||||
|
||||
func (h *OpenV1Handler) BindDeliveryOrder(c *gin.Context) {
|
||||
openlog.SetAction(c, openlog.ActionCreate)
|
||||
var req openDeliveryBindReq
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
response.BadRequest(c, "请输入玩家编号")
|
||||
return
|
||||
}
|
||||
orderNo := c.Param("order_no")
|
||||
openlog.Info(c, "delivery_bind start order_no=%s", orderNo)
|
||||
result, err := h.deliverySvc.BindForMerchant(middleware.GetMerchantID(c), orderNo, req.GameAccount)
|
||||
if err != nil {
|
||||
openlog.Warn(c, "delivery_bind fail order_no=%s err=%v", orderNo, err)
|
||||
if sc, ok := err.(interface{ HTTPStatus() int }); ok {
|
||||
response.Fail(c, sc.HTTPStatus(), sc.HTTPStatus(), err.Error())
|
||||
return
|
||||
}
|
||||
response.BadRequest(c, err.Error())
|
||||
return
|
||||
}
|
||||
response.OK(c, result)
|
||||
}
|
||||
|
||||
type openDeliverySubmitReq struct {
|
||||
GameAccount string `json:"game_account" binding:"required"`
|
||||
BindUUID string `json:"bind_uuid" binding:"required"`
|
||||
}
|
||||
|
||||
func (h *OpenV1Handler) SubmitDeliveryOrder(c *gin.Context) {
|
||||
openlog.SetAction(c, openlog.ActionCreate)
|
||||
var req openDeliverySubmitReq
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
response.BadRequest(c, "玩家编号和绑定凭证不能为空")
|
||||
return
|
||||
}
|
||||
orderNo := c.Param("order_no")
|
||||
openlog.Info(c, "delivery_submit start order_no=%s", orderNo)
|
||||
client := middleware.GetAPIClient(c)
|
||||
result, err := h.deliverySvc.SubmitForMerchant(middleware.GetMerchantID(c), client.ID, orderNo, req.GameAccount, req.BindUUID)
|
||||
if err != nil {
|
||||
openlog.Warn(c, "delivery_submit fail order_no=%s err=%v", orderNo, err)
|
||||
if sc, ok := err.(interface{ HTTPStatus() int }); ok {
|
||||
response.Fail(c, sc.HTTPStatus(), sc.HTTPStatus(), err.Error())
|
||||
return
|
||||
}
|
||||
if err.Error() == "订单不存在" {
|
||||
response.NotFound(c, err.Error())
|
||||
return
|
||||
}
|
||||
response.BadRequest(c, err.Error())
|
||||
return
|
||||
}
|
||||
response.OK(c, result)
|
||||
}
|
||||
|
||||
func buildOpenOrderResponse(order *model.FulfillmentOrder) gin.H {
|
||||
canFulfill, reason := service.CanFulfill(order)
|
||||
data := gin.H{
|
||||
|
||||
Reference in New Issue
Block a user