+ IPurchasePlatformOrderHandler
This commit is contained in:
@@ -172,55 +172,15 @@ type IStoreManager interface {
|
||||
|
||||
type IPurchasePlatformHandler interface {
|
||||
IPurchasePlatformActHandler
|
||||
IPurchasePlatformOrderHandler
|
||||
|
||||
GetVendorID() int
|
||||
|
||||
GetStatusFromVendorStatus(vendorStatus string) int
|
||||
Map2Order(orderData map[string]interface{}) (order *model.GoodsOrder)
|
||||
GetOrder(vendorOrderID string) (order *model.GoodsOrder, err error)
|
||||
GetStatusActionTimeout(order *model.GoodsOrder, statusType, status int) (params *StatusActionParams)
|
||||
|
||||
AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptIt bool, userName string) (err error)
|
||||
PickupGoods(order *model.GoodsOrder, isSelfDelivery bool, userName string) (err error)
|
||||
|
||||
AcceptOrRefuseFailedGetOrder(ctx *jxcontext.Context, order *model.GoodsOrder, isAcceptIt bool) (err error)
|
||||
CallCourier(ctx *jxcontext.Context, order *model.GoodsOrder) (err error) // 取货失败后再次招唤平台配送
|
||||
ConfirmReceiveGoods(ctx *jxcontext.Context, order *model.GoodsOrder) (err error) // 投递失败后确认收到退货
|
||||
|
||||
// 将订单从购物平台配送转为自送
|
||||
Swtich2SelfDeliver(order *model.GoodsOrder, userName string) (err error)
|
||||
|
||||
// 将订单从购物平台配送转为自送后又送达
|
||||
Swtich2SelfDelivered(order *model.GoodsOrder, userName string) (err error)
|
||||
|
||||
// 完全自送的门店表示开始配送
|
||||
SelfDeliverDelivering(order *model.GoodsOrder, userName string) (err error)
|
||||
|
||||
// 完全自送的门店表示配送完成
|
||||
SelfDeliverDelivered(order *model.GoodsOrder, userName string) (err error)
|
||||
|
||||
GetOrderRealMobile(ctx *jxcontext.Context, order *model.GoodsOrder) (mobile string, err error)
|
||||
|
||||
ReplyOrderComment(ctx *jxcontext.Context, orderComment *model.OrderComment, replyComment string) (err error)
|
||||
|
||||
AgreeOrRefuseCancel(ctx *jxcontext.Context, order *model.GoodsOrder, isAgree bool, reason string) (err error)
|
||||
CancelOrder(ctx *jxcontext.Context, order *model.GoodsOrder, reason string) (err error)
|
||||
// order.Skus要包含原始订单中的Sku信息,removedSkuList中是要移除的Sku信息
|
||||
AdjustOrder(ctx *jxcontext.Context, order *model.GoodsOrder, removedSkuList []*model.OrderSku, reason string) (err error)
|
||||
|
||||
// 售后
|
||||
// 发起全款退款
|
||||
RefundOrder(ctx *jxcontext.Context, order *model.GoodsOrder, reason string) (err error)
|
||||
// 发起部分退款
|
||||
PartRefundOrder(ctx *jxcontext.Context, order *model.GoodsOrder, refundSkuList []*model.OrderSku, reason string) (err error)
|
||||
// 审核售后单申请
|
||||
AgreeOrRefuseRefund(ctx *jxcontext.Context, order *model.AfsOrder, approveType int, reason string) (err error)
|
||||
// // 确认收到退货
|
||||
ConfirmReceivedReturnGoods(ctx *jxcontext.Context, order *model.AfsOrder) (err error)
|
||||
|
||||
////////
|
||||
// Store
|
||||
ReadStore(vendorStoreID string) (store *model.Store, err error)
|
||||
UpdateStore(db *dao.DaoDB, storeID int, userName string) (err error)
|
||||
GetStoreStatus(ctx *jxcontext.Context, storeID int, vendorStoreID string) (storeStatus int, err error)
|
||||
// EnableAutoAcceptOrder(vendorStoreID string, isEnabled bool) error
|
||||
// OpenStore(vendorStoreID string, userName string) error
|
||||
// CloseStore(vendorStoreID, closeNotice, userName string) error
|
||||
@@ -231,7 +191,6 @@ type IPurchasePlatformHandler interface {
|
||||
// !!!注意,此操作会先清除门店已有的商品,一般用于初始化,小心使用
|
||||
FullSyncStoreSkus(ctx *jxcontext.Context, parentTask tasksch.ITask, storeID int, isAsync, isContinueWhenError bool) (hint string, err error)
|
||||
UploadImg(ctx *jxcontext.Context, imgURL string, imgData []byte, imgName string) (imgHint string, err error)
|
||||
GetStoreStatus(ctx *jxcontext.Context, vendorStoreID string) (storeStatus int, err error)
|
||||
GetVendorCategories(ctx *jxcontext.Context) (vendorCats []*model.SkuVendorCategory, err error)
|
||||
|
||||
// todo GetStoresSku应该与GetStoreSkusInfo合并
|
||||
|
||||
50
business/partner/partner_order.go
Normal file
50
business/partner/partner_order.go
Normal file
@@ -0,0 +1,50 @@
|
||||
package partner
|
||||
|
||||
import (
|
||||
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
||||
"git.rosy.net.cn/jx-callback/business/model"
|
||||
)
|
||||
|
||||
type IPurchasePlatformOrderHandler interface {
|
||||
Map2Order(orderData map[string]interface{}) (order *model.GoodsOrder)
|
||||
GetOrder(vendorOrderID string) (order *model.GoodsOrder, err error)
|
||||
GetStatusActionTimeout(order *model.GoodsOrder, statusType, status int) (params *StatusActionParams)
|
||||
|
||||
AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptIt bool, userName string) (err error)
|
||||
PickupGoods(order *model.GoodsOrder, isSelfDelivery bool, userName string) (err error)
|
||||
|
||||
AcceptOrRefuseFailedGetOrder(ctx *jxcontext.Context, order *model.GoodsOrder, isAcceptIt bool) (err error)
|
||||
CallCourier(ctx *jxcontext.Context, order *model.GoodsOrder) (err error) // 取货失败后再次招唤平台配送
|
||||
ConfirmReceiveGoods(ctx *jxcontext.Context, order *model.GoodsOrder) (err error) // 投递失败后确认收到退货
|
||||
|
||||
// 将订单从购物平台配送转为自送
|
||||
Swtich2SelfDeliver(order *model.GoodsOrder, userName string) (err error)
|
||||
|
||||
// 将订单从购物平台配送转为自送后又送达
|
||||
Swtich2SelfDelivered(order *model.GoodsOrder, userName string) (err error)
|
||||
|
||||
// 完全自送的门店表示开始配送
|
||||
SelfDeliverDelivering(order *model.GoodsOrder, userName string) (err error)
|
||||
|
||||
// 完全自送的门店表示配送完成
|
||||
SelfDeliverDelivered(order *model.GoodsOrder, userName string) (err error)
|
||||
|
||||
GetOrderRealMobile(ctx *jxcontext.Context, order *model.GoodsOrder) (mobile string, err error)
|
||||
|
||||
ReplyOrderComment(ctx *jxcontext.Context, orderComment *model.OrderComment, replyComment string) (err error)
|
||||
|
||||
AgreeOrRefuseCancel(ctx *jxcontext.Context, order *model.GoodsOrder, isAgree bool, reason string) (err error)
|
||||
CancelOrder(ctx *jxcontext.Context, order *model.GoodsOrder, reason string) (err error)
|
||||
// order.Skus要包含原始订单中的Sku信息,removedSkuList中是要移除的Sku信息
|
||||
AdjustOrder(ctx *jxcontext.Context, order *model.GoodsOrder, removedSkuList []*model.OrderSku, reason string) (err error)
|
||||
|
||||
// 售后
|
||||
// 发起全款退款
|
||||
RefundOrder(ctx *jxcontext.Context, order *model.GoodsOrder, reason string) (err error)
|
||||
// 发起部分退款
|
||||
PartRefundOrder(ctx *jxcontext.Context, order *model.GoodsOrder, refundSkuList []*model.OrderSku, reason string) (err error)
|
||||
// 审核售后单申请
|
||||
AgreeOrRefuseRefund(ctx *jxcontext.Context, order *model.AfsOrder, approveType int, reason string) (err error)
|
||||
// // 确认收到退货
|
||||
ConfirmReceivedReturnGoods(ctx *jxcontext.Context, order *model.AfsOrder) (err error)
|
||||
}
|
||||
@@ -58,7 +58,7 @@ var (
|
||||
}
|
||||
)
|
||||
|
||||
func (p *PurchaseHandler) GetStatusFromVendorStatus(vendorStatus string) int {
|
||||
func (p *PurchaseHandler) getStatusFromVendorStatus(vendorStatus string) int {
|
||||
if status, ok := VendorStatus2StatusMap[vendorStatus]; ok {
|
||||
return status
|
||||
}
|
||||
@@ -197,7 +197,7 @@ func (p *PurchaseHandler) Map2Order(orderData map[string]interface{}) (order *mo
|
||||
if order.StoreID > math.MaxInt32 {
|
||||
order.StoreID = 0
|
||||
}
|
||||
order.Status = p.GetStatusFromVendorStatus(order.VendorStatus)
|
||||
order.Status = p.getStatusFromVendorStatus(order.VendorStatus)
|
||||
if utils.MustInterface2Int64(orderMap["send_immediately"]) == 1 {
|
||||
order.BusinessType = model.BusinessTypeImmediate
|
||||
} else {
|
||||
@@ -452,7 +452,7 @@ func (c *PurchaseHandler) callbackMsg2Status(msg *ebaiapi.CallbackMsg) (orderSta
|
||||
}
|
||||
orderStatus.Remark = utils.Interface2String(msg.Body["reason"])
|
||||
}
|
||||
orderStatus.Status = c.GetStatusFromVendorStatus(orderStatus.VendorStatus)
|
||||
orderStatus.Status = c.getStatusFromVendorStatus(orderStatus.VendorStatus)
|
||||
return orderStatus
|
||||
}
|
||||
|
||||
|
||||
@@ -393,7 +393,7 @@ func genStoreMapFromStore(store *tEbaiStoreInfo) map[string]interface{} {
|
||||
return params
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) GetStoreStatus(ctx *jxcontext.Context, vendorStoreID string) (storeStatus int, err error) {
|
||||
func (p *PurchaseHandler) GetStoreStatus(ctx *jxcontext.Context, storeID int, vendorStoreID string) (storeStatus int, err error) {
|
||||
ebaiStatus, err := api.EbaiAPI.ShopBusStatusGet("", utils.Str2Int64(vendorStoreID), ebaiapi.PlatformFlagElm)
|
||||
if err == nil {
|
||||
storeStatus = EbaiBusStatus2JxStatus(ebaiStatus)
|
||||
@@ -404,10 +404,11 @@ func (p *PurchaseHandler) GetStoreStatus(ctx *jxcontext.Context, vendorStoreID s
|
||||
func (c *PurchaseHandler) onShopMsgPush(msg *ebaiapi.CallbackMsg) (response *ebaiapi.CallbackResponse) {
|
||||
var err error
|
||||
vendorStoreID := utils.Interface2String(msg.Body["baidu_shop_id"])
|
||||
storeID := int(utils.Interface2Int64WithDefault(msg.Body["shop_id"], 0))
|
||||
storeStatus := model.StoreStatusOpened
|
||||
switch utils.Interface2String(msg.Body["msg_type"]) {
|
||||
case "online", "offline":
|
||||
storeStatus, err = c.GetStoreStatus(jxcontext.AdminCtx, vendorStoreID)
|
||||
storeStatus, err = c.GetStoreStatus(jxcontext.AdminCtx, storeID, vendorStoreID)
|
||||
case "shop_open", "shop_pause", "shop_close":
|
||||
if int(utils.ForceInterface2Int64(msg.Body["business_ele"])) == 1 {
|
||||
storeStatus = model.StoreStatusOpened
|
||||
|
||||
@@ -160,7 +160,7 @@ func (c *PurchaseHandler) Map2Order(orderData map[string]interface{}) (order *mo
|
||||
ActualPayPrice: jxutils.StandardPrice2Int(utils.MustInterface2Float64(result["totalPrice"])),
|
||||
Skus: []*model.OrderSku{},
|
||||
}
|
||||
order.Status = c.GetStatusFromVendorStatus(order.VendorStatus)
|
||||
order.Status = c.getStatusFromVendorStatus(order.VendorStatus)
|
||||
if result["book"].(bool) {
|
||||
order.BusinessType = model.BusinessTypeDingshida
|
||||
} else {
|
||||
@@ -243,7 +243,7 @@ func (c *PurchaseHandler) spliltCompositeState(compositeState string) (state str
|
||||
}
|
||||
|
||||
// IPurchasePlatformHandler
|
||||
func (c *PurchaseHandler) GetStatusFromVendorStatus(vendorStatus string) int {
|
||||
func (c *PurchaseHandler) getStatusFromVendorStatus(vendorStatus string) int {
|
||||
state, _ := c.spliltCompositeState(vendorStatus)
|
||||
if status, ok := VendorStatus2StatusMap[state]; ok {
|
||||
return status
|
||||
|
||||
@@ -33,6 +33,6 @@ func (p *PurchaseHandler) RefreshAllStoresID(ctx *jxcontext.Context, parentTask
|
||||
// return nil
|
||||
// }
|
||||
|
||||
func (p *PurchaseHandler) GetStoreStatus(ctx *jxcontext.Context, vendorStoreID string) (storeStatus int, err error) {
|
||||
func (p *PurchaseHandler) GetStoreStatus(ctx *jxcontext.Context, storeID int, vendorStoreID string) (storeStatus int, err error) {
|
||||
return storeStatus, err
|
||||
}
|
||||
|
||||
@@ -179,7 +179,7 @@ func (c *PurchaseHandler) Map2Order(orderData map[string]interface{}) (order *mo
|
||||
OriginalData: string(utils.MustMarshal(result)),
|
||||
ActualPayPrice: utils.MustInterface2Int64(result["orderBuyerPayableMoney"]),
|
||||
}
|
||||
order.Status = c.GetStatusFromVendorStatus(order.VendorStatus)
|
||||
order.Status = c.getStatusFromVendorStatus(order.VendorStatus)
|
||||
businessTage := utils.Interface2String(result["businessTag"])
|
||||
if strings.Index(businessTage, "dj_aging_immediately") >= 0 {
|
||||
order.BusinessType = model.BusinessTypeImmediate
|
||||
@@ -266,7 +266,7 @@ func (c *PurchaseHandler) callbackMsg2Status(msg *jdapi.CallbackOrderMsg) *model
|
||||
RefVendorOrderID: msg.BillID,
|
||||
RefVendorID: model.VendorIDJD,
|
||||
VendorStatus: msg.StatusID,
|
||||
Status: c.GetStatusFromVendorStatus(msg.StatusID),
|
||||
Status: c.getStatusFromVendorStatus(msg.StatusID),
|
||||
StatusTime: utils.Str2Time(msg.Timestamp),
|
||||
Remark: msg.Remark,
|
||||
}
|
||||
@@ -285,7 +285,7 @@ func (c *PurchaseHandler) postFakeMsg(vendorOrderID, vendorStatus string) {
|
||||
}
|
||||
|
||||
// IPurchasePlatformHandler
|
||||
func (c *PurchaseHandler) GetStatusFromVendorStatus(vendorStatus string) int {
|
||||
func (c *PurchaseHandler) getStatusFromVendorStatus(vendorStatus string) int {
|
||||
if status, ok := VendorStatus2StatusMap[vendorStatus]; ok {
|
||||
return status
|
||||
}
|
||||
|
||||
@@ -288,7 +288,7 @@ func JdDeliveryType2Jx(deliveryType int) int8 {
|
||||
return scheduler.StoreDeliveryTypeByPlatform
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) GetStoreStatus(ctx *jxcontext.Context, vendorStoreID string) (storeStatus int, err error) {
|
||||
func (p *PurchaseHandler) GetStoreStatus(ctx *jxcontext.Context, storeID int, vendorStoreID string) (storeStatus int, err error) {
|
||||
result, err := api.JdAPI.GetStoreInfoByStationNo(vendorStoreID)
|
||||
if err == nil {
|
||||
storeStatus = JdStoreStatus2JxStatus(result["yn"], result["closeStatus"])
|
||||
|
||||
@@ -72,7 +72,7 @@ var (
|
||||
}
|
||||
)
|
||||
|
||||
func (p *PurchaseHandler) GetStatusFromVendorStatus(vendorStatus string) int {
|
||||
func (p *PurchaseHandler) getStatusFromVendorStatus(vendorStatus string) int {
|
||||
if status, ok := VendorStatus2StatusMap[vendorStatus]; ok {
|
||||
return status
|
||||
}
|
||||
@@ -124,7 +124,7 @@ func (p *PurchaseHandler) Map2Order(orderData map[string]interface{}) (order *mo
|
||||
if utils.IsTimeZero(order.PickDeadline) && !utils.IsTimeZero(order.StatusTime) {
|
||||
order.PickDeadline = order.StatusTime.Add(pickupOrderDelay) // 美团外卖要求在5分钟内拣货,不然订单会被取消
|
||||
}
|
||||
order.Status = p.GetStatusFromVendorStatus(order.VendorStatus)
|
||||
order.Status = p.getStatusFromVendorStatus(order.VendorStatus)
|
||||
if utils.IsTimeZero(order.ExpectedDeliveredTime) {
|
||||
order.BusinessType = model.BusinessTypeImmediate
|
||||
} else {
|
||||
@@ -363,7 +363,7 @@ func (c *PurchaseHandler) callbackMsg2Status(msg *mtwmapi.CallbackMsg) (orderSta
|
||||
RefVendorOrderID: orderID,
|
||||
RefVendorID: model.VendorIDMTWM,
|
||||
VendorStatus: vendorStatus,
|
||||
Status: c.GetStatusFromVendorStatus(vendorStatus),
|
||||
Status: c.getStatusFromVendorStatus(vendorStatus),
|
||||
StatusTime: getTimeFromTimestamp(statusTime),
|
||||
Remark: remark,
|
||||
}
|
||||
|
||||
@@ -148,7 +148,7 @@ func (p *PurchaseHandler) onStoreStatusChanged(msg *mtwmapi.CallbackMsg) (respon
|
||||
} else if poiStatus == mtwmapi.MsgPoiStatusOffline {
|
||||
storeStatus = model.StoreStatusDisabled
|
||||
} else {
|
||||
storeStatus, err = p.GetStoreStatus(jxcontext.AdminCtx, vendorStoreID)
|
||||
storeStatus, err = p.GetStoreStatus(jxcontext.AdminCtx, 0, vendorStoreID)
|
||||
}
|
||||
if err == nil {
|
||||
err = partner.CurStoreManager.OnStoreStatusChanged(vendorStoreID, model.VendorIDMTWM, storeStatus)
|
||||
@@ -157,7 +157,7 @@ func (p *PurchaseHandler) onStoreStatusChanged(msg *mtwmapi.CallbackMsg) (respon
|
||||
return response
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) GetStoreStatus(ctx *jxcontext.Context, vendorStoreID string) (storeStatus int, err error) {
|
||||
func (p *PurchaseHandler) GetStoreStatus(ctx *jxcontext.Context, storeID int, vendorStoreID string) (storeStatus int, err error) {
|
||||
result, err := api.MtwmAPI.PoiGet(vendorStoreID)
|
||||
if err == nil {
|
||||
return bizStatusMtwm2JX(result.OpenLevel, result.IsOnline), nil
|
||||
|
||||
@@ -83,7 +83,7 @@ func (p *PurchaseHandler) callbackMsg2Status(msg *weimobapi.CallbackMsg, orderMa
|
||||
RefVendorOrderID: orderID,
|
||||
RefVendorID: model.VendorIDWSC,
|
||||
VendorStatus: vendorStatus,
|
||||
Status: p.GetStatusFromVendorStatus(vendorStatus),
|
||||
Status: p.getStatusFromVendorStatus(vendorStatus),
|
||||
StatusTime: msg.StatusTime,
|
||||
Remark: "",
|
||||
}
|
||||
@@ -94,7 +94,7 @@ func (p *PurchaseHandler) getOrderStatus(orderMapData map[string]interface{}) (s
|
||||
return utils.Int64ToStr(utils.MustInterface2Int64(orderMapData["orderStatus"]))
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) GetStatusFromVendorStatus(vendorStatus string) int {
|
||||
func (p *PurchaseHandler) getStatusFromVendorStatus(vendorStatus string) int {
|
||||
if status, ok := VendorStatus2StatusMap[vendorStatus]; ok {
|
||||
return status
|
||||
}
|
||||
@@ -149,7 +149,7 @@ func (p *PurchaseHandler) Map2Order(orderData map[string]interface{}) (order *mo
|
||||
order.StoreName = utils.Interface2String(selfPickupDetail["selfPickupSiteName"])
|
||||
}
|
||||
}
|
||||
order.Status = p.GetStatusFromVendorStatus(order.VendorStatus)
|
||||
order.Status = p.getStatusFromVendorStatus(order.VendorStatus)
|
||||
itemList := result["itemList"].([]interface{})
|
||||
for _, v := range itemList {
|
||||
item := v.(map[string]interface{})
|
||||
|
||||
@@ -21,6 +21,6 @@ func (p *PurchaseHandler) RefreshAllStoresID(ctx *jxcontext.Context, parentTask
|
||||
return hint, err
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) GetStoreStatus(ctx *jxcontext.Context, vendorStoreID string) (storeStatus int, err error) {
|
||||
func (p *PurchaseHandler) GetStoreStatus(ctx *jxcontext.Context, storeID int, vendorStoreID string) (storeStatus int, err error) {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user