diff --git a/business/partner/partner.go b/business/partner/partner.go index 81b3319d2..c83f1dbcb 100644 --- a/business/partner/partner.go +++ b/business/partner/partner.go @@ -70,23 +70,6 @@ type StatusActionParams struct { TimeoutGap int // 以秒为单位的随机时间,0在GetStatusActionConfig返回时表示不修改缺省 } -const ( - WaybillFeeErrCodeCourierNotOpen = 1 //配送门店没有启用 - WaybillFeeErrCodeCourierNotSupported = 2 //配送门店不被系统支持 - WaybillFeeErrCodeCourierForbidden = 3 //配送门店内部禁用 - WaybillFeeErrCodeCourierOthers = 10 //其它错误 -) - -type WaybillFeeInfo struct { - ErrCode int `json:"errCode"` - ErrStr string `json:"errStr"` - RefDeliveryFee int64 `json:"refDeliveryFee"` - RefAddFee int64 `json:"refAddFee"` - DeliveryFee int64 `json:"deliveryFee"` - TimeoutSecond int `json:"timeoutSecond"` // 系统会自动发运单的倒计时 - Waybill *model.Waybill `json:"waybill"` -} - func (s *StatusActionParams) GetRefTimeout(statusTime time.Time, orderCreatedAt time.Time) (timeout time.Duration) { switch s.TimerType { case TimerTypeBaseNow: @@ -121,8 +104,6 @@ var ( CurStoreManager IStoreManager PurchasePlatformHandlers map[int]IPurchasePlatformHandler - DeliveryPlatformHandlers map[int]*DeliveryPlatformHandlerInfo - UseableDeliveryVendorIDs []int ) type IOrderManager interface { @@ -223,21 +204,6 @@ type ISingleStoreHandler interface { RefreshStoresAllSkusID(ctx *jxcontext.Context, parentTask tasksch.ITask, isAsync bool, storeIDs []int) (hint string, err error) } -type CreateWaybillPolicy func(refDeliveryFee, refAddFee, deliveryFee int64) (errStr string) - -type IDeliveryPlatformHandler interface { - CreateWaybill(order *model.GoodsOrder, policy CreateWaybillPolicy) (bill *model.Waybill, err error) - CancelWaybill(bill *model.Waybill, cancelReasonID int, cancelReason string) (err error) - - GetVendorID() int - GetWaybillFee(order *model.GoodsOrder) (deliveryFeeInfo *WaybillFeeInfo, err error) -} - -type DeliveryPlatformHandlerInfo struct { - Handler IDeliveryPlatformHandler - Use4CreateWaybill bool -} - type BasePurchasePlatform struct { } @@ -269,25 +235,6 @@ func RegisterPurchasePlatform(handler IPurchasePlatformHandler) { PurchasePlatformHandlers[vendorID] = handler } -func RegisterDeliveryPlatform(handler IDeliveryPlatformHandler, isUse4CreateWaybill bool) { - vendorID := handler.GetVendorID() - if !(model.IsDeliveryVendorExist(vendorID)) { - panic(fmt.Sprintf("delivery vendor:%d is illegal", vendorID)) - } - if _, ok := DeliveryPlatformHandlers[vendorID]; ok { - panic(fmt.Sprintf("delivery vendor:%d, already exists", vendorID)) - } - DeliveryPlatformHandlers[vendorID] = &DeliveryPlatformHandlerInfo{ - Handler: handler, - Use4CreateWaybill: isUse4CreateWaybill, - } - UseableDeliveryVendorIDs = append(UseableDeliveryVendorIDs, vendorID) -} - func GetPurchasePlatformFromVendorID(vendorID int) IPurchasePlatformHandler { return PurchasePlatformHandlers[vendorID] } - -func GetDeliveryPlatformFromVendorID(vendorID int) *DeliveryPlatformHandlerInfo { - return DeliveryPlatformHandlers[vendorID] -} diff --git a/business/partner/partner_delivery.go b/business/partner/partner_delivery.go new file mode 100644 index 000000000..43e468566 --- /dev/null +++ b/business/partner/partner_delivery.go @@ -0,0 +1,68 @@ +package partner + +import ( + "fmt" + + "git.rosy.net.cn/jx-callback/business/model" +) + +const ( + WaybillFeeErrCodeCourierNotOpen = 1 //配送门店没有启用 + WaybillFeeErrCodeCourierNotSupported = 2 //配送门店不被系统支持 + WaybillFeeErrCodeCourierForbidden = 3 //配送门店内部禁用 + WaybillFeeErrCodeCourierOthers = 10 //其它错误 +) + +type WaybillFeeInfo struct { + ErrCode int `json:"errCode"` + ErrStr string `json:"errStr"` + RefDeliveryFee int64 `json:"refDeliveryFee"` + RefAddFee int64 `json:"refAddFee"` + DeliveryFee int64 `json:"deliveryFee"` + TimeoutSecond int `json:"timeoutSecond"` // 系统会自动发运单的倒计时 + Waybill *model.Waybill `json:"waybill"` +} + +type CreateWaybillPolicy func(refDeliveryFee, refAddFee, deliveryFee int64) (errStr string) + +type IDeliveryPlatformHandler interface { + GetVendorID() int + + CreateWaybill(order *model.GoodsOrder, policy CreateWaybillPolicy) (bill *model.Waybill, err error) + CancelWaybill(bill *model.Waybill, cancelReasonID int, cancelReason string) (err error) + + GetWaybillFee(order *model.GoodsOrder) (deliveryFeeInfo *WaybillFeeInfo, err error) +} + +type DeliveryPlatformHandlerInfo struct { + Handler IDeliveryPlatformHandler + Use4CreateWaybill bool +} + +var ( + DeliveryPlatformHandlers map[int]*DeliveryPlatformHandlerInfo + UseableDeliveryVendorIDs []int +) + +func init() { + DeliveryPlatformHandlers = make(map[int]*DeliveryPlatformHandlerInfo) +} + +func RegisterDeliveryPlatform(handler IDeliveryPlatformHandler, isUse4CreateWaybill bool) { + vendorID := handler.GetVendorID() + if !(model.IsDeliveryVendorExist(vendorID)) { + panic(fmt.Sprintf("delivery vendor:%d is illegal", vendorID)) + } + if _, ok := DeliveryPlatformHandlers[vendorID]; ok { + panic(fmt.Sprintf("delivery vendor:%d, already exists", vendorID)) + } + DeliveryPlatformHandlers[vendorID] = &DeliveryPlatformHandlerInfo{ + Handler: handler, + Use4CreateWaybill: isUse4CreateWaybill, + } + UseableDeliveryVendorIDs = append(UseableDeliveryVendorIDs, vendorID) +} + +func GetDeliveryPlatformFromVendorID(vendorID int) *DeliveryPlatformHandlerInfo { + return DeliveryPlatformHandlers[vendorID] +}