- continue refactoring...
This commit is contained in:
60
business/partner/purchase/jd/jd.go
Normal file
60
business/partner/purchase/jd/jd.go
Normal file
@@ -0,0 +1,60 @@
|
||||
package jd
|
||||
|
||||
import (
|
||||
"git.rosy.net.cn/baseapi/platformapi/jdapi"
|
||||
"git.rosy.net.cn/baseapi/utils"
|
||||
"git.rosy.net.cn/jx-callback/business/jxcallback/scheduler"
|
||||
"git.rosy.net.cn/jx-callback/business/model"
|
||||
)
|
||||
|
||||
var (
|
||||
curPurchaseHandler *PurchaseHandler
|
||||
)
|
||||
|
||||
type PurchaseHandler struct {
|
||||
scheduler.BasePurchasePlatform
|
||||
}
|
||||
|
||||
func init() {
|
||||
curPurchaseHandler = new(PurchaseHandler)
|
||||
scheduler.CurrentScheduler.RegisterPurchasePlatform(model.VendorIDJD, curPurchaseHandler)
|
||||
}
|
||||
|
||||
func OnOrderMsg(msg *jdapi.CallbackOrderMsg) (retVal *jdapi.CallbackResponse) {
|
||||
return curPurchaseHandler.OnOrderMsg(msg)
|
||||
}
|
||||
|
||||
func OnWaybillMsg(msg *jdapi.CallbackDeliveryStatusMsg) (retVal *jdapi.CallbackResponse) {
|
||||
return curPurchaseHandler.OnWaybillMsg(msg)
|
||||
}
|
||||
|
||||
func JdOperationTime2JxOperationTime(value1 interface{}) int {
|
||||
value := int(utils.Interface2Int64WithDefault(value1, 0))
|
||||
return (value/2)*100 + (value%2)*30
|
||||
}
|
||||
|
||||
func JxOperationTime2JdOperationTime(value int) int {
|
||||
return (value/100)*2 + (value % 30)
|
||||
}
|
||||
|
||||
func JdStoreStatus2JxStatus(yn, closeStatus interface{}) int {
|
||||
yn2 := utils.Interface2Int64WithDefault(yn, 0)
|
||||
closeStatus2 := utils.Interface2Int64WithDefault(closeStatus, 0)
|
||||
if yn2 == 1 {
|
||||
return model.StoreStatusDisabled
|
||||
} else if closeStatus2 == 1 {
|
||||
return model.StoreStatusClosed
|
||||
}
|
||||
return model.StoreStatusOpened
|
||||
}
|
||||
|
||||
func JxStoreStatus2JdStatus(status int) (yn, closeStatus int) {
|
||||
switch status {
|
||||
case model.StoreStatusDisabled:
|
||||
return 1, 0
|
||||
case model.StoreStatusClosed:
|
||||
return 0, 1
|
||||
default:
|
||||
return 0, 0
|
||||
}
|
||||
}
|
||||
@@ -6,7 +6,6 @@ import (
|
||||
"git.rosy.net.cn/baseapi/platformapi/autonavi"
|
||||
"git.rosy.net.cn/baseapi/platformapi/jdapi"
|
||||
"git.rosy.net.cn/baseapi/utils"
|
||||
"git.rosy.net.cn/jx-callback/business/jxcallback/scheduler"
|
||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||
"git.rosy.net.cn/jx-callback/business/model"
|
||||
"git.rosy.net.cn/jx-callback/business/partner"
|
||||
@@ -32,22 +31,14 @@ var (
|
||||
}
|
||||
)
|
||||
|
||||
type OrderController struct {
|
||||
scheduler.BasePurchasePlatform
|
||||
}
|
||||
|
||||
func init() {
|
||||
scheduler.CurrentScheduler.RegisterPurchasePlatform(model.VendorIDJD, new(OrderController))
|
||||
}
|
||||
|
||||
func (c *OrderController) OnOrderMsg(msg *jdapi.CallbackOrderMsg) (retVal *jdapi.CallbackResponse) {
|
||||
func (c *PurchaseHandler) OnOrderMsg(msg *jdapi.CallbackOrderMsg) (retVal *jdapi.CallbackResponse) {
|
||||
jxutils.CallMsgHandler(func() {
|
||||
retVal = c.onOrderMsg(msg)
|
||||
}, jxutils.ComposeUniversalOrderID(msg.BillID, model.VendorIDJD))
|
||||
return retVal
|
||||
}
|
||||
|
||||
func (c *OrderController) onOrderMsg(msg *jdapi.CallbackOrderMsg) (retVal *jdapi.CallbackResponse) {
|
||||
func (c *PurchaseHandler) onOrderMsg(msg *jdapi.CallbackOrderMsg) (retVal *jdapi.CallbackResponse) {
|
||||
if jdapi.OrderStatusNew == msg.StatusID {
|
||||
retVal = c.onOrderNew(msg)
|
||||
} else if jdapi.OrderStatusAdjust == msg.StatusID {
|
||||
@@ -68,7 +59,7 @@ func (c *OrderController) onOrderMsg(msg *jdapi.CallbackOrderMsg) (retVal *jdapi
|
||||
return retVal
|
||||
}
|
||||
|
||||
func (c *OrderController) GetOrder(orderID string) (order *model.GoodsOrder, err error) {
|
||||
func (c *PurchaseHandler) GetOrder(orderID string) (order *model.GoodsOrder, err error) {
|
||||
result, err := api.JdAPI.QuerySingleOrder(orderID)
|
||||
// globals.SugarLogger.Info(result)
|
||||
if err == nil {
|
||||
@@ -148,7 +139,7 @@ func setOrederDetailFee(result map[string]interface{}, order *model.GoodsOrder)
|
||||
}
|
||||
|
||||
//
|
||||
func (c *OrderController) onOrderNew(msg *jdapi.CallbackOrderMsg) (response *jdapi.CallbackResponse) {
|
||||
func (c *PurchaseHandler) onOrderNew(msg *jdapi.CallbackOrderMsg) (response *jdapi.CallbackResponse) {
|
||||
order, err := c.GetOrder(msg.BillID)
|
||||
if err == nil {
|
||||
err = partner.CurOrderManager.OnOrderNew(order, msg.StatusID)
|
||||
@@ -159,7 +150,7 @@ func (c *OrderController) onOrderNew(msg *jdapi.CallbackOrderMsg) (response *jda
|
||||
return jdapi.Err2CallbackResponse(err, "jd onOrderNew")
|
||||
}
|
||||
|
||||
func (c *OrderController) onOrderAdjust(msg *jdapi.CallbackOrderMsg) *jdapi.CallbackResponse {
|
||||
func (c *PurchaseHandler) onOrderAdjust(msg *jdapi.CallbackOrderMsg) *jdapi.CallbackResponse {
|
||||
order, err := c.GetOrder(msg.BillID)
|
||||
if err == nil {
|
||||
err = partner.CurOrderManager.OnOrderAdjust(order, msg.StatusID)
|
||||
@@ -170,7 +161,7 @@ func (c *OrderController) onOrderAdjust(msg *jdapi.CallbackOrderMsg) *jdapi.Call
|
||||
return jdapi.Err2CallbackResponse(err, "jd onOrderAdjust")
|
||||
}
|
||||
|
||||
func (c *OrderController) callbackMsg2Status(msg *jdapi.CallbackOrderMsg) *model.OrderStatus {
|
||||
func (c *PurchaseHandler) callbackMsg2Status(msg *jdapi.CallbackOrderMsg) *model.OrderStatus {
|
||||
orderStatus := &model.OrderStatus{
|
||||
VendorOrderID: msg.BillID,
|
||||
VendorID: model.VendorIDJD,
|
||||
@@ -186,24 +177,24 @@ func (c *OrderController) callbackMsg2Status(msg *jdapi.CallbackOrderMsg) *model
|
||||
}
|
||||
|
||||
// IPurchasePlatformHandler
|
||||
func (c *OrderController) GetStatusFromVendorStatus(vendorStatus string) int {
|
||||
func (c *PurchaseHandler) GetStatusFromVendorStatus(vendorStatus string) int {
|
||||
if status, ok := VendorStatus2StatusMap[vendorStatus]; ok {
|
||||
return status
|
||||
}
|
||||
return model.OrderStatusUnknown
|
||||
}
|
||||
|
||||
func (c *OrderController) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptIt bool) (err error) {
|
||||
func (c *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptIt bool) (err error) {
|
||||
_, err = api.JdAPI.OrderAcceptOperate(order.VendorOrderID, isAcceptIt)
|
||||
return err
|
||||
}
|
||||
|
||||
func (c *OrderController) PickupGoods(order *model.GoodsOrder) (err error) {
|
||||
func (c *PurchaseHandler) PickupGoods(order *model.GoodsOrder) (err error) {
|
||||
_, err = api.JdAPI.OrderJDZBDelivery(order.VendorOrderID)
|
||||
return err
|
||||
}
|
||||
|
||||
func (c *OrderController) Swtich2SelfDeliver(order *model.GoodsOrder) (err error) {
|
||||
func (c *PurchaseHandler) Swtich2SelfDeliver(order *model.GoodsOrder) (err error) {
|
||||
_, err = api.JdAPI.ModifySellerDelivery(order.VendorOrderID)
|
||||
if err != nil {
|
||||
if errWithCode, ok := err.(*utils.ErrorWithCode); ok && errWithCode.Level() == 1 {
|
||||
@@ -221,17 +212,17 @@ func (c *OrderController) Swtich2SelfDeliver(order *model.GoodsOrder) (err error
|
||||
return err
|
||||
}
|
||||
|
||||
func (c *OrderController) Swtich2SelfDelivered(order *model.GoodsOrder) (err error) {
|
||||
func (c *PurchaseHandler) Swtich2SelfDelivered(order *model.GoodsOrder) (err error) {
|
||||
_, err = api.JdAPI.DeliveryEndOrder(order.VendorOrderID)
|
||||
return err
|
||||
}
|
||||
|
||||
func (c *OrderController) SelfDeliverDelievering(order *model.GoodsOrder) (err error) {
|
||||
func (c *PurchaseHandler) SelfDeliverDelievering(order *model.GoodsOrder) (err error) {
|
||||
_, err = api.JdAPI.OrderSerllerDelivery(order.VendorOrderID)
|
||||
return err
|
||||
}
|
||||
|
||||
// 京东送达接口都是一样的
|
||||
func (c *OrderController) SelfDeliverDelievered(order *model.GoodsOrder) (err error) {
|
||||
func (c *PurchaseHandler) SelfDeliverDelievered(order *model.GoodsOrder) (err error) {
|
||||
return c.Swtich2SelfDelivered(order)
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ import (
|
||||
)
|
||||
|
||||
// 为了兼容之前的表,造出原来需要的数据
|
||||
func (c *OrderController) legacyWriteJdOrder(order *model.GoodsOrder, delOldFirst bool) (err error) {
|
||||
func (c *PurchaseHandler) legacyWriteJdOrder(order *model.GoodsOrder, delOldFirst bool) (err error) {
|
||||
db := orm.NewOrm()
|
||||
if delOldFirst {
|
||||
db.Raw("DELETE FROM jdorder2 WHERE jdorderid = ?", utils.Str2Int64(order.VendorOrderID)).Exec()
|
||||
@@ -29,7 +29,7 @@ func (c *OrderController) legacyWriteJdOrder(order *model.GoodsOrder, delOldFirs
|
||||
return err
|
||||
}
|
||||
|
||||
func (c *OrderController) legacyJdOrderStatusChanged(status *model.OrderStatus) (err error) {
|
||||
func (c *PurchaseHandler) legacyJdOrderStatusChanged(status *model.OrderStatus) (err error) {
|
||||
db := orm.NewOrm()
|
||||
legacyOrder := &legacymodel.Jdorder2{
|
||||
Jdorderid: utils.Str2Int64(status.VendorOrderID),
|
||||
|
||||
@@ -7,7 +7,7 @@ import (
|
||||
"git.rosy.net.cn/jx-callback/business/model"
|
||||
"git.rosy.net.cn/jx-callback/globals"
|
||||
"git.rosy.net.cn/jx-callback/globals/api"
|
||||
"git.rosy.net.cn/jx-callback/globals/db"
|
||||
"git.rosy.net.cn/jx-callback/globals/beegodb"
|
||||
"github.com/astaxie/beego"
|
||||
)
|
||||
|
||||
@@ -16,7 +16,7 @@ func init() {
|
||||
beego.BConfig.RunMode = "dev" // InitBeegoBeforeTest会将runmode设置为test
|
||||
|
||||
globals.Init()
|
||||
db.Init()
|
||||
beegodb.Init()
|
||||
api.Init()
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ func TestSwitch2SelfDeliver(t *testing.T) {
|
||||
orderID := "817540316000041"
|
||||
if order, err := orderman.CurOrderManager.LoadOrder(orderID, model.VendorIDJD); err == nil {
|
||||
// globals.SugarLogger.Debug(order)
|
||||
c := new(OrderController)
|
||||
c := new(PurchaseHandler)
|
||||
if err = c.Swtich2SelfDeliver(order); err == nil {
|
||||
} else {
|
||||
t.Fatal(err.Error())
|
||||
@@ -35,7 +35,7 @@ func TestSwitch2SelfDeliver(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestGetOrder(t *testing.T) {
|
||||
_, err := new(OrderController).GetOrder("815536199000222")
|
||||
_, err := new(PurchaseHandler).GetOrder("815536199000222")
|
||||
if err != nil {
|
||||
t.Fatal(err.Error())
|
||||
}
|
||||
|
||||
67
business/partner/purchase/jd/store.go
Normal file
67
business/partner/purchase/jd/store.go
Normal file
@@ -0,0 +1,67 @@
|
||||
package jd
|
||||
|
||||
import (
|
||||
"git.rosy.net.cn/baseapi/utils"
|
||||
"git.rosy.net.cn/jx-callback/business/model"
|
||||
"git.rosy.net.cn/jx-callback/globals/api"
|
||||
)
|
||||
|
||||
func (p *PurchaseHandler) GetAllStoreIDsFromRemote() ([]string, error) {
|
||||
result, err := api.JdAPI.GetStationsByVenderId()
|
||||
return result, err
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) GetAllStoresFromRemote() ([]*model.Store, error) {
|
||||
ids, err := p.GetAllStoreIDsFromRemote()
|
||||
if err == nil {
|
||||
retVal := make([]*model.Store, len(ids))
|
||||
for index, id := range ids {
|
||||
store, err2 := p.GetStoreFromRemote(id)
|
||||
if err2 == nil {
|
||||
retVal[index] = store
|
||||
} else {
|
||||
return nil, err2
|
||||
}
|
||||
}
|
||||
return retVal, nil
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) GetStoreFromRemote(vendorStoreID string) (*model.Store, error) {
|
||||
result, err := api.JdAPI.GetStoreInfoByStationNo(vendorStoreID)
|
||||
if err == nil {
|
||||
retVal := &model.Store{
|
||||
Name: utils.Interface2String(result["stationName"]),
|
||||
Address: utils.Interface2String(result["stationAddress"]),
|
||||
OpenTime1: JdOperationTime2JxOperationTime(result["serviceTimeStart1"]),
|
||||
CloseTime1: JdOperationTime2JxOperationTime(result["serviceTimeEnd1"]),
|
||||
OpenTime2: JdOperationTime2JxOperationTime(result["serviceTimeStart2"]),
|
||||
CloseTime2: JdOperationTime2JxOperationTime(result["serviceTimeEnd2"]),
|
||||
Status: JdStoreStatus2JxStatus(result["yn"], result["closeStatus"]),
|
||||
}
|
||||
retVal.ID = uint(utils.Str2Int64WithDefault(utils.Interface2String(result["outSystemId"]), 0))
|
||||
return retVal, nil
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) SaveStore2Remote(vendorStoreID string, store *model.Store) error {
|
||||
params := map[string]interface{}{
|
||||
"outSystemId": utils.Int2Str(int(store.ID)),
|
||||
"stationName": store.Name,
|
||||
"stationAddress": store.Address,
|
||||
"serviceTimeStart1": JxOperationTime2JdOperationTime(store.OpenTime1),
|
||||
"serviceTimeEnd1": JxOperationTime2JdOperationTime(store.CloseTime1),
|
||||
"serviceTimeStart2": JxOperationTime2JdOperationTime(store.OpenTime2),
|
||||
"serviceTimeEnd2": JxOperationTime2JdOperationTime(store.CloseTime2),
|
||||
}
|
||||
params["yn"], params["closeStatus"] = JxStoreStatus2JdStatus(store.Status)
|
||||
_, err := api.JdAPI.UpdateStoreInfo4Open(vendorStoreID, "", params)
|
||||
return err
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) EnableAutoAcceptOrder(vendorStoreID string, isEnabled bool) error {
|
||||
_, err := api.JdAPI.UpdateStoreConfig4Open(vendorStoreID, isEnabled)
|
||||
return err
|
||||
}
|
||||
@@ -9,17 +9,14 @@ import (
|
||||
"git.rosy.net.cn/jx-callback/globals/api"
|
||||
)
|
||||
|
||||
type WaybillController struct {
|
||||
}
|
||||
|
||||
func (c *WaybillController) OnWaybillMsg(msg *jdapi.CallbackDeliveryStatusMsg) (retVal *jdapi.CallbackResponse) {
|
||||
func (c *PurchaseHandler) OnWaybillMsg(msg *jdapi.CallbackDeliveryStatusMsg) (retVal *jdapi.CallbackResponse) {
|
||||
jxutils.CallMsgHandler(func() {
|
||||
retVal = c.onWaybillMsg(msg)
|
||||
}, jxutils.ComposeUniversalOrderID(msg.OrderID, model.VendorIDJD))
|
||||
return retVal
|
||||
}
|
||||
|
||||
func (c *WaybillController) onWaybillMsg(msg *jdapi.CallbackDeliveryStatusMsg) (retVal *jdapi.CallbackResponse) {
|
||||
func (c *PurchaseHandler) onWaybillMsg(msg *jdapi.CallbackDeliveryStatusMsg) (retVal *jdapi.CallbackResponse) {
|
||||
order := c.callbackMsg2Waybill(msg)
|
||||
switch msg.DeliveryStatus {
|
||||
case jdapi.DeliveryStatusWait4Grap:
|
||||
@@ -49,7 +46,7 @@ func (c *WaybillController) onWaybillMsg(msg *jdapi.CallbackDeliveryStatusMsg) (
|
||||
return jdapi.Err2CallbackResponse(partner.CurOrderManager.OnWaybillStatusChanged(order), order.VendorStatus)
|
||||
}
|
||||
|
||||
func (c *WaybillController) callbackMsg2Waybill(msg *jdapi.CallbackDeliveryStatusMsg) (retVal *model.Waybill) {
|
||||
func (c *PurchaseHandler) callbackMsg2Waybill(msg *jdapi.CallbackDeliveryStatusMsg) (retVal *model.Waybill) {
|
||||
retVal = &model.Waybill{
|
||||
VendorOrderID: msg.OrderID,
|
||||
OrderVendorID: model.VendorIDJD,
|
||||
|
||||
Reference in New Issue
Block a user