Files
jx-callback/business/jxcallback/scheduler/basesch/basesch_ext.go
2018-10-17 16:53:01 +08:00

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
}