发货结果通知接口新增 game_channel、game_uid、role_name、pay_score 字段
This commit is contained in:
@@ -44,19 +44,24 @@ func (h *OpenHandler) QueryOrder(c *gin.Context) {
|
|||||||
if data.Product != nil {
|
if data.Product != nil {
|
||||||
sku, name, game = data.Product.SKU, data.Product.Name, data.Product.Game
|
sku, name, game = data.Product.SKU, data.Product.Name, data.Product.Game
|
||||||
}
|
}
|
||||||
openlog.Info(c, "query_order ok order_no=%s status=%s can_ship=%v reason=%q sku=%s name=%s game=%s buyer=%s amount=%.2f provider_no=%s shipped_at=%v fail_reason=%q",
|
openlog.Info(c, "query_order ok order_no=%s status=%s can_ship=%v reason=%q sku=%s name=%s game=%s buyer=%s amount=%.2f provider_no=%s shipped_at=%v fail_reason=%q game_channel=%s game_uid=%s role_name=%s pay_score=%d",
|
||||||
data.OrderNo, data.Status, data.CanShip, data.CannotShipReason,
|
data.OrderNo, data.Status, data.CanShip, data.CannotShipReason,
|
||||||
sku, name, game, data.BuyerName, data.Amount, data.ProviderOrderNo, data.ShippedAt, data.ShipFailReason,
|
sku, name, game, data.BuyerName, data.Amount, data.ProviderOrderNo, data.ShippedAt, data.ShipFailReason,
|
||||||
|
data.GameChannel, data.GameUID, data.RoleName, data.PayScore,
|
||||||
)
|
)
|
||||||
response.OK(c, data)
|
response.OK(c, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
type shipNotifyReq struct {
|
type shipNotifyReq struct {
|
||||||
OrderNo string `json:"order_no" binding:"required"`
|
OrderNo string `json:"order_no" binding:"required"`
|
||||||
ShipStatus string `json:"ship_status" binding:"required"` // success/failed/processing
|
ShipStatus string `json:"ship_status" binding:"required"` // success/failed/processing
|
||||||
ProviderOrderNo string `json:"provider_order_no"`
|
ProviderOrderNo string `json:"provider_order_no"`
|
||||||
ShippedAt string `json:"shipped_at"` // RFC3339 可选
|
ShippedAt string `json:"shipped_at"` // RFC3339 可选
|
||||||
FailReason string `json:"fail_reason"`
|
FailReason string `json:"fail_reason"`
|
||||||
|
GameChannel *string `json:"game_channel"` // 账号区服(安卓/IOS-微信/QQ)
|
||||||
|
GameUID *string `json:"game_uid"` // 游戏角色UUID
|
||||||
|
RoleName *string `json:"role_name"` // 角色名
|
||||||
|
PayScore *int `json:"pay_score"` // 消耗积分
|
||||||
}
|
}
|
||||||
|
|
||||||
// ShipNotify POST /api/open/v1/orders/ship-notify
|
// ShipNotify POST /api/open/v1/orders/ship-notify
|
||||||
@@ -92,6 +97,10 @@ func (h *OpenHandler) ShipNotify(c *gin.Context) {
|
|||||||
ShippedAt: shippedAt,
|
ShippedAt: shippedAt,
|
||||||
FailReason: req.FailReason,
|
FailReason: req.FailReason,
|
||||||
RawPayload: string(raw),
|
RawPayload: string(raw),
|
||||||
|
GameChannel: req.GameChannel,
|
||||||
|
GameUID: req.GameUID,
|
||||||
|
RoleName: req.RoleName,
|
||||||
|
PayScore: req.PayScore,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
openlog.Warn(c, "ship_notify fail order_no=%s ship_status=%s err=%s",
|
openlog.Warn(c, "ship_notify fail order_no=%s ship_status=%s err=%s",
|
||||||
|
|||||||
@@ -70,6 +70,11 @@ type Order struct {
|
|||||||
ProviderOrderNo string `gorm:"size:64;index" json:"provider_order_no"` // 上游单号
|
ProviderOrderNo string `gorm:"size:64;index" json:"provider_order_no"` // 上游单号
|
||||||
ShippedAt *time.Time `json:"shipped_at"` // 发货成功时间
|
ShippedAt *time.Time `json:"shipped_at"` // 发货成功时间
|
||||||
ShipFailReason string `gorm:"size:512" json:"ship_fail_reason"` // 最近一次失败原因
|
ShipFailReason string `gorm:"size:512" json:"ship_fail_reason"` // 最近一次失败原因
|
||||||
|
|
||||||
|
GameChannel string `gorm:"size:64" json:"game_channel"` // 账号区服(安卓/IOS-微信/QQ)
|
||||||
|
GameUID string `gorm:"size:128" json:"game_uid"` // 游戏角色UUID
|
||||||
|
RoleName string `gorm:"size:64" json:"role_name"` // 角色名
|
||||||
|
PayScore int `gorm:"default:0" json:"pay_score"` // 消耗积分
|
||||||
}
|
}
|
||||||
|
|
||||||
// 订单状态
|
// 订单状态
|
||||||
|
|||||||
@@ -147,17 +147,21 @@ func (s *OrderService) UpdateStatus(id uint, status string) error {
|
|||||||
|
|
||||||
// OpenOrderQuery 开放接口订单查询结果
|
// OpenOrderQuery 开放接口订单查询结果
|
||||||
type OpenOrderQuery struct {
|
type OpenOrderQuery struct {
|
||||||
OrderNo string `json:"order_no"`
|
OrderNo string `json:"order_no"`
|
||||||
Status string `json:"status"`
|
Status string `json:"status"`
|
||||||
CanShip bool `json:"can_ship"`
|
CanShip bool `json:"can_ship"`
|
||||||
CannotShipReason string `json:"cannot_ship_reason,omitempty"`
|
CannotShipReason string `json:"cannot_ship_reason,omitempty"`
|
||||||
Product *OpenOrderProduct `json:"product,omitempty"`
|
Product *OpenOrderProduct `json:"product,omitempty"`
|
||||||
BuyerName string `json:"buyer_name"`
|
BuyerName string `json:"buyer_name"`
|
||||||
Amount float64 `json:"amount"`
|
Amount float64 `json:"amount"`
|
||||||
ProviderOrderNo string `json:"provider_order_no,omitempty"`
|
ProviderOrderNo string `json:"provider_order_no,omitempty"`
|
||||||
CreatedAt time.Time `json:"created_at"`
|
CreatedAt time.Time `json:"created_at"`
|
||||||
ShippedAt *time.Time `json:"shipped_at"`
|
ShippedAt *time.Time `json:"shipped_at"`
|
||||||
ShipFailReason string `json:"ship_fail_reason,omitempty"`
|
ShipFailReason string `json:"ship_fail_reason,omitempty"`
|
||||||
|
GameChannel string `json:"game_channel,omitempty"`
|
||||||
|
GameUID string `json:"game_uid,omitempty"`
|
||||||
|
RoleName string `json:"role_name,omitempty"`
|
||||||
|
PayScore int `json:"pay_score,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type OpenOrderProduct struct {
|
type OpenOrderProduct struct {
|
||||||
@@ -174,6 +178,10 @@ type ShipNotifyInput struct {
|
|||||||
ShippedAt *time.Time
|
ShippedAt *time.Time
|
||||||
FailReason string
|
FailReason string
|
||||||
RawPayload string
|
RawPayload string
|
||||||
|
GameChannel *string
|
||||||
|
GameUID *string
|
||||||
|
RoleName *string
|
||||||
|
PayScore *int
|
||||||
}
|
}
|
||||||
|
|
||||||
type ShipNotifyResult struct {
|
type ShipNotifyResult struct {
|
||||||
@@ -215,6 +223,10 @@ func (s *OrderService) QueryOpenOrder(orderNo string) (*OpenOrderQuery, error) {
|
|||||||
CreatedAt: order.CreatedAt,
|
CreatedAt: order.CreatedAt,
|
||||||
ShippedAt: order.ShippedAt,
|
ShippedAt: order.ShippedAt,
|
||||||
ShipFailReason: order.ShipFailReason,
|
ShipFailReason: order.ShipFailReason,
|
||||||
|
GameChannel: order.GameChannel,
|
||||||
|
GameUID: order.GameUID,
|
||||||
|
RoleName: order.RoleName,
|
||||||
|
PayScore: order.PayScore,
|
||||||
}
|
}
|
||||||
if order.Skin != nil {
|
if order.Skin != nil {
|
||||||
out.Product = &OpenOrderProduct{
|
out.Product = &OpenOrderProduct{
|
||||||
@@ -337,6 +349,19 @@ func (s *OrderService) HandleShipNotify(in ShipNotifyInput) (*ShipNotifyResult,
|
|||||||
msg = "订单已标记为发货中"
|
msg = "订单已标记为发货中"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if in.GameChannel != nil {
|
||||||
|
updates["game_channel"] = *in.GameChannel
|
||||||
|
}
|
||||||
|
if in.GameUID != nil {
|
||||||
|
updates["game_uid"] = *in.GameUID
|
||||||
|
}
|
||||||
|
if in.RoleName != nil {
|
||||||
|
updates["role_name"] = *in.RoleName
|
||||||
|
}
|
||||||
|
if in.PayScore != nil {
|
||||||
|
updates["pay_score"] = *in.PayScore
|
||||||
|
}
|
||||||
|
|
||||||
if err := s.db.Model(&model.Order{}).Where("id = ?", order.ID).Updates(updates).Error; err != nil {
|
if err := s.db.Model(&model.Order{}).Where("id = ?", order.ID).Updates(updates).Error; err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user