- 调整售后单消息的处理次序

- 将test配置改为dev一致,本地测试可用beta
This commit is contained in:
gazebo
2019-05-11 13:16:29 +08:00
parent 90a4f4973f
commit aa4e9c3507
9 changed files with 45 additions and 68 deletions

View File

@@ -42,17 +42,24 @@ func (c *OrderManager) onAfsOrderNew(afsOrder *model.AfsOrder, orderStatus *mode
}
}()
isDuplicated, err := addOrderOrWaybillStatus(orderStatus, db)
globals.SugarLogger.Debugf("onAfsOrderNew isDuplicated:%t", isDuplicated)
if err != nil || isDuplicated {
if err == nil {
dao.Commit(db)
}
return err
}
_, err = c.loadAfsOrder(db, afsOrder.AfsOrderID, afsOrder.VendorID)
if dao.IsNoRowsError(err) {
err = c.SaveAfsOrder(db, afsOrder, isAdjust)
if afsOrder.Status == model.AfsOrderStatusNew {
if _, err = c.loadAfsOrder(db, afsOrder.AfsOrderID, afsOrder.VendorID); err != nil {
if !dao.IsNoRowsError(err) {
return err
}
} else {
dao.Commit(db)
return nil
}
}
if err != nil {
if err = c.SaveAfsOrder(db, afsOrder, isAdjust); err != nil {
return err
}
dao.Commit(db)

View File

@@ -74,7 +74,7 @@ type AfsOrder struct {
VendorOrderID string `orm:"column(vendor_order_id);size(48)" json:"vendorOrderID"` // 关联原始订单ID
VendorOrderID2 string `orm:"column(vendor_order_id2);size(48);index" json:"vendorOrderID2"` // 关联原始订单ID2,饿百独有
AfsOrderID string `orm:"column(afs_order_id);size(48)" json:"afsOrderID"` // 售后订单ID
AfsCreateAt time.Time `orm:"type(datetime);index" json:"afsCreateAt"` // 售后单生成时间
AfsCreatedAt time.Time `orm:"type(datetime);null;index" json:"afsCreatedAt"` // 售后单生成时间
AfsFinishedAt time.Time `orm:"type(datetime);null;index" json:"afsFinishedAt"` // 售后单结束时间
VendorStoreID string `orm:"column(vendor_store_id);size(48)" json:"vendorStoreID"` // 外部系统里记录的storeid
StoreID int `orm:"column(store_id)" json:"storeID"` // 接口返回的京西门店ID

View File

@@ -61,7 +61,7 @@ func (p *PurchaseHandler) OrderFinancialDetail2Refund(orderFinancial *model.Orde
VendorID: model.VendorIDEBAI,
AfsOrderID: GetOrderIDFromMsg(msg),
VendorOrderID: GetOrderIDFromMsg(msg),
AfsCreateAt: utils.Timestamp2Time(msg.Timestamp),
AfsCreatedAt: utils.Timestamp2Time(msg.Timestamp),
// BoxMoney: orderFinancial.BoxMoney, // 饿百的餐盒费已经拆分到单条Sku里面退款时直接计算用户支付sku金额就好了
// SkuBoxMoney: orderFinancial.SkuBoxMoney,
FreightUserMoney: orderFinancial.FreightMoney,
@@ -157,7 +157,7 @@ func (p *PurchaseHandler) AfsOrderDetail2Financial(orderData map[string]interfac
afsOrder.PmSubsidyMoney += orderSkuFinancial.PmSubsidyMoney
}
if len(refundDetail) > 0 {
afsOrder.AfsCreateAt = getTimeFromInterface(refundDetail[0].(map[string]interface{})["apply_time"])
afsOrder.AfsCreatedAt = getTimeFromInterface(refundDetail[0].(map[string]interface{})["apply_time"])
} else {
globals.SugarLogger.Warnf("ebai AfsOrderDetail2Financial, orderID:%s have no refund_detail", afsOrder.VendorOrderID)
}

View File

@@ -6,6 +6,7 @@ import (
"git.rosy.net.cn/baseapi/platformapi/ebaiapi"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/jxutils"
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/business/partner"
@@ -44,9 +45,11 @@ func (c *PurchaseHandler) isAfsMsg(msg *ebaiapi.CallbackMsg) bool {
}
func (c *PurchaseHandler) OnAfsOrderMsg(msg *ebaiapi.CallbackMsg) (retVal *ebaiapi.CallbackResponse) {
utils.CallFuncAsync(func() {
retVal = c.onAfsOrderMsg(msg)
})
jxutils.CallMsgHandler(func() {
utils.CallFuncAsync(func() {
retVal = c.onAfsOrderMsg(msg)
})
}, jxutils.ComposeUniversalOrderID(GetOrderIDFromMsg(msg), model.VendorIDEBAI))
return retVal
}
@@ -58,7 +61,7 @@ func (c *PurchaseHandler) onAfsOrderMsg(msg *ebaiapi.CallbackMsg) (retVal *ebaia
VendorOrderID: orderStatus.RefVendorOrderID,
VendorStoreID: "",
StoreID: 0,
AfsCreateAt: utils.Timestamp2Time(msg.Timestamp),
AfsCreatedAt: utils.Timestamp2Time(msg.Timestamp),
VendorAppealType: "",
AppealType: model.AfsAppealTypeRefund,
// FreightUserMoney: afsInfo.OrderFreightMoney,

View File

@@ -177,7 +177,7 @@ func (p *PurchaseHandler) AfsOrderDetail2Financial(orderData map[string]interfac
VendorOrderID: utils.Interface2String(orderData["orderId"]),
VendorStoreID: utils.Interface2String(orderData["stationId"]),
StoreID: int(utils.Str2Int64WithDefault(utils.Interface2String(orderData["stationNumOutSystem"]), 0)),
AfsCreateAt: utils.Timestamp2Time(utils.MustInterface2Int64(orderData["updateTime"].(map[string]interface{})["time"]) / 1000),
AfsCreatedAt: utils.Timestamp2Time(utils.MustInterface2Int64(orderData["updateTime"].(map[string]interface{})["time"]) / 1000),
FreightUserMoney: utils.MustInterface2Int64(orderData["orderFreightMoney"]),
AfsFreightMoney: utils.MustInterface2Int64(orderData["afsFreight"]),
BoxMoney: utils.MustInterface2Int64(orderData["packagingMoney"]),

View File

@@ -12,6 +12,6 @@ func TestOnFinancialMsg(t *testing.T) {
BillID: "907315020000322",
StatusID: "330902",
}
res := OnFinancialMsg(msg)
res := curPurchaseHandler.onFinancialMsg(msg)
fmt.Println(res)
}

View File

@@ -3,6 +3,7 @@ package jd
import (
"git.rosy.net.cn/baseapi/platformapi/jdapi"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/jxutils"
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/business/partner"
@@ -60,7 +61,9 @@ var (
func (c *PurchaseHandler) OnAfsOrderMsg(msg *jdapi.CallbackOrderMsg) (retVal *jdapi.CallbackResponse) {
utils.CallFuncAsync(func() {
retVal = c.onAfsOrderMsg(msg)
jxutils.CallMsgHandler(func() {
retVal = c.onAfsOrderMsg(msg)
}, jxutils.ComposeUniversalOrderID(msg.BillID, model.VendorIDJD))
})
return retVal
}
@@ -125,7 +128,7 @@ func (c *PurchaseHandler) buildAfsOrder(afsInfo *jdapi.AfsServiceResponse) (afsO
VendorOrderID: afsInfo.OrderID,
VendorStoreID: afsInfo.StationID,
StoreID: int(utils.Str2Int64WithDefault(afsInfo.StationNumOutSystem, 0)),
AfsCreateAt: afsInfo.UpdateTime.GoTime(),
AfsCreatedAt: afsInfo.UpdateTime.GoTime(),
FreightUserMoney: afsInfo.OrderFreightMoney,
AfsFreightMoney: afsInfo.AfsFreight,
BoxMoney: afsInfo.PackagingMoney,

View File

@@ -45,7 +45,7 @@ func (p *PurchaseHandler) OrderFinancialDetail2Refund(orderFinancial *model.Orde
VendorID: model.VendorIDMTWM,
AfsOrderID: orderData.Get("order_id"),
VendorOrderID: orderData.Get("order_id"),
AfsCreateAt: utils.Timestamp2Time(utils.Str2Int64(orderData.Get("timestamp"))),
AfsCreatedAt: utils.Timestamp2Time(utils.Str2Int64(orderData.Get("timestamp"))),
// BoxMoney: orderFinancial.BoxMoney,
// SkuBoxMoney: orderFinancial.SkuBoxMoney, // 美团的餐盒费已经拆到单条SKU里面去了,退款时直接计算用户支付sku金额就好了
FreightUserMoney: orderFinancial.FreightMoney,
@@ -93,7 +93,7 @@ func (p *PurchaseHandler) AfsOrderDetail2Financial(orderData url.Values) (afsOrd
VendorID: model.VendorIDMTWM,
AfsOrderID: orderData.Get("order_id"),
VendorOrderID: orderData.Get("order_id"),
AfsCreateAt: utils.Timestamp2Time(utils.Str2Int64(orderData.Get("timestamp"))),
AfsCreatedAt: utils.Timestamp2Time(utils.Str2Int64(orderData.Get("timestamp"))),
RefundMoney: jxutils.StandardPrice2Int(utils.Str2Float64(orderData.Get("money"))),
}
// if orderData.Get("timestamp") != "" {

View File

@@ -204,64 +204,28 @@ dingdingCallbackURL = "http://callback-jxgy.jxc4.com/dingding/msg"
getWeixinTokenURL = "http://www.jxc4.com/v2/sys/GetWXToken"
[prod2]
httpport = 8082
disableJd = false
jdToken = "46058015-11b1-485d-9622-b7a91e446023"
jdAppKey = "8410aba1b67e4d3199098e944f91cb68"
jdSecret = "14af1be608934b73accab57b9efe8c96"
disableElm = true
disableMtps = true
disableDada = true
disableWeixin = true
disableEbai = true
dbConnectStr = "root:WebServer@1@tcp(db1.int.jxc4.com:3306)/jxd_dev_2?charset=utf8mb4&loc=Local&parseTime=true"
enableStoreWrite = true
[prod3]
httpport = 8082
disableJd = false
jdToken = "8a2af9af-14bb-4464-8676-aaacf6348e5c"
jdAppKey = "6c269bdfa1dd496c8194aa8fb569e71b"
jdSecret = "d678e48d202c4bf29d66c3b6642ece80"
disableElm = true
disableMtps = true
disableDada = true
disableWeixin = true
disableEbai = true
dbConnectStr = "root:WebServer@1@tcp(db1.int.jxc4.com:3306)/jxd_dev_2?charset=utf8mb4&loc=Local&parseTime=true"
enableStoreWrite = true
[test]
jdToken = "ccb10daf-e6f5-4a58-ada5-b97f9073a137"
jdAppKey = "1dba76d40cac446ca500c0391a0b6c9d"
jdSecret = "a88d031a1e7b462cb1579f12e97fe7f4"
jdToken = "df97f334-f7d8-4b36-9664-5784d8ae0baf"
jdAppKey = "06692746f7224695ad4788ce340bc854"
jdSecret = "d6b42a35a7414a5490d811654d745c84"
elmIsProd = true
elmToken = ""
elmAppKey = "KLRDcOZGrk"
elmSecret = "1fc221f8265506531da36fb613d5f5ad673f2e9a"
elmIsProd = false
elmToken = "2d2b583447b04b6bba5a6f3faed3559b"
elmAppKey = "RwT214gAsS"
elmSecret = "56afff4b9ebd8a7eb532d18fa33f17be57f9b9db"
ebaiSource = "34665"
ebaiSecret = "c3db75b754ea2d89"
ebaiSource = "62923"
ebaiSecret = "aa4cdc6c1108486b"
mtpsAppKey = "3c0a05d464c247c19d7ec13accc78605"
mtpsSecret = "b1M}9?:sTbsB[OF2gNORnN(|(iy9rB8(`7]|[wGLnbmt`evfM>E:A90DjHAW:UPE"
mtpsAppKey = "25e816550bc9484480642f19a95f13fd"
mtpsSecret = "r4$HqrKx9~=7?2Jfo,$Z~a7%~k!Au&pEdI2)oPJvSbH2ao@2N0[8wSIvtuumh_J^"
dadaIsProd = true
dadaIsProd = false
dadaCallbackURL = "http://callback.test.jxc4.com/dadadelivery/msg"
dadaSourceID = "6660"
dadaSourceID = "73753"
weixinAppID = "wx2bb99eb5d2c9b82c"
weixinSecret = "6bbbed1443cc062c20a015a64c07a531"
weixinAppID = "wxbf235770edaabc5c"
weixinSecret = "ba32b269a068a5b72486a0beafd171e8"
dbConnectStr = "root:WebServer@1@tcp(127.0.0.1:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true"