96 lines
3.9 KiB
Go
96 lines
3.9 KiB
Go
package basesch
|
|
|
|
import (
|
|
"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/model/dao"
|
|
"git.rosy.net.cn/jx-callback/business/model/legacymodel2"
|
|
"git.rosy.net.cn/jx-callback/business/partner"
|
|
"git.rosy.net.cn/jx-callback/globals"
|
|
"github.com/astaxie/beego/orm"
|
|
)
|
|
|
|
func (c *BaseScheduler) CreateWaybillOnProviders(vendorOrderID string, vendorID int, userName string) (bills []*model.Waybill, err error) {
|
|
globals.SugarLogger.Infof("CreateWaybillOnProviders orderID:%s userName:%s", vendorOrderID, userName)
|
|
order, err := partner.CurOrderManager.LoadOrder(vendorOrderID, vendorID)
|
|
if err == nil {
|
|
if order.LockStatus != model.OrderStatusLocked && order.Status >= model.OrderStatusFinishedPickup && order.Status < model.OrderStatusEndBegin {
|
|
bill, err2 := c.CreateWaybill(model.VendorIDMTPS, order, nil)
|
|
if err = err2; err == nil {
|
|
globals.SugarLogger.Infof("CreateWaybillOnProviders orderID:%s userName:%s bill:%s", vendorOrderID, userName, bill.WaybillVendorID)
|
|
return []*model.Waybill{
|
|
bill,
|
|
}, nil
|
|
}
|
|
} else {
|
|
err = scheduler.ErrOrderStatusIsNotSuitable4CurOperation
|
|
}
|
|
}
|
|
globals.SugarLogger.Infof("CreateWaybillOnProviders orderID:%s userName:%s error:%v", vendorOrderID, userName, err)
|
|
return nil, err
|
|
}
|
|
|
|
func (c *BaseScheduler) SelfDeliveredAndUpdateStatus(vendorOrderID string, vendorID int, userName string) (err error) {
|
|
globals.SugarLogger.Infof("SelfDeliveredAndUpdateStatus orderID:%s userName:%s", vendorOrderID, userName)
|
|
order, err := partner.CurOrderManager.LoadOrder(vendorOrderID, vendorID)
|
|
if err == nil {
|
|
if getStoreDeliveryType(order) == scheduler.StoreDeliveryTypeByStore {
|
|
err = c.SelfDeliverDelievered(order, userName)
|
|
} else {
|
|
err = c.Swtich2SelfDelivered(order, userName)
|
|
}
|
|
if err == nil {
|
|
order.Status = model.OrderStatusDelivered
|
|
if err = partner.CurOrderManager.UpdateOrderStatusAndFlag(order); err == nil {
|
|
globals.SugarLogger.Infof("SelfDeliveredAndUpdateStatus orderID:%s userName:%s successfully", vendorOrderID, userName)
|
|
return err
|
|
}
|
|
}
|
|
}
|
|
globals.SugarLogger.Infof("SelfDeliveredAndUpdateStatus orderID:%s userName:%s error:%v", vendorOrderID, userName, err)
|
|
return err
|
|
}
|
|
|
|
func (c *BaseScheduler) PickupGoodsAndUpdateStatus(vendorOrderID string, vendorID int, userName string) (err error) {
|
|
globals.SugarLogger.Infof("PickupGoodsAndUpdateStatus orderID:%s userName:%s", vendorOrderID, userName)
|
|
order, err := partner.CurOrderManager.LoadOrder(vendorOrderID, vendorID)
|
|
if err == nil {
|
|
err = c.PickupGoods(order, userName)
|
|
if err == nil {
|
|
order.Status = model.OrderStatusFinishedPickup
|
|
if err = partner.CurOrderManager.UpdateOrderStatusAndFlag(order); err == nil {
|
|
globals.SugarLogger.Infof("PickupGoodsAndUpdateStatus orderID:%s userName:%s successfully", vendorOrderID, userName)
|
|
return err
|
|
}
|
|
}
|
|
}
|
|
globals.SugarLogger.Infof("PickupGoodsAndUpdateStatus orderID:%s userName:%s error:%v", vendorOrderID, userName, err)
|
|
return err
|
|
}
|
|
|
|
func getStoreDeliveryType(order *model.GoodsOrder) (deliveryType int) {
|
|
if globals.OrderUseNewTable {
|
|
deliveryType = scheduler.StoreDeliveryTypeByPlatform // 缺省值
|
|
if storeMap, _ := dao.GetStoreMapByStoreID(nil, jxutils.GetJxStoreIDFromOrder(order), order.VendorID); storeMap != nil {
|
|
deliveryType = int(storeMap.DeliveryType)
|
|
}
|
|
return deliveryType
|
|
}
|
|
storefeature := &legacymodel2.Jxstorefeature{
|
|
Id: jxutils.GetJxStoreIDFromOrder(order),
|
|
}
|
|
if storefeature.Id != 0 {
|
|
db := orm.NewOrm()
|
|
err := db.Read(storefeature, "Id")
|
|
if err == nil {
|
|
if order.VendorID == model.VendorIDJD {
|
|
return int(storefeature.JdDeliveryType)
|
|
}
|
|
return int(storefeature.ElmDeliveryType)
|
|
}
|
|
globals.SugarLogger.Infof("getStoreDeliveryType read storefeature failed with error:%v", err)
|
|
}
|
|
return scheduler.StoreDeliveryTypeByPlatform
|
|
}
|