- order manager added.

This commit is contained in:
gazebo
2018-08-21 17:18:08 +08:00
parent c29bcea27c
commit 643bcac0f8
18 changed files with 463 additions and 165 deletions

View File

@@ -342,7 +342,7 @@ func (c *OrderManager) LoadOrder(vendorOrderID string, vendorID int) (order *mod
func (c *OrderManager) UpdateOrderStatusDirectly(order *model.GoodsOrder) (err error) {
db := orm.NewOrm()
utils.CallFuncLogError(func() error {
_, err = db.Update(db, "Status")
_, err = db.Update(order, "Status")
return err
}, "UpdateOrderStatusDirectly orderID:%s failed with error:%v", order.VendorOrderID, err)
return err

View File

@@ -21,7 +21,7 @@ const (
)
var (
curOrderManager *OrderManager
FixedOrderManager *OrderManager
)
// 所有公共接口调用前要求在order里或status中设置合适的Status
@@ -53,8 +53,8 @@ func (s StatusTimerSlice) Swap(i, j int) {
}
func init() {
curOrderManager = NewOrderManager()
partner.Init(curOrderManager)
FixedOrderManager = NewOrderManager()
partner.Init(FixedOrderManager)
}
func addOrderOrWaybillStatus(status *model.OrderStatus, db orm.Ormer) (isDuplicated bool, err error) {
@@ -86,12 +86,12 @@ func addOrderOrWaybillStatus(status *model.OrderStatus, db orm.Ormer) (isDuplica
// todo 最好还是改成全事件回放算了
func LoadPendingOrders() {
orders := curOrderManager.LoadPendingOrders()
orders := FixedOrderManager.LoadPendingOrders()
globals.SugarLogger.Infof("LoadPendingOrders orders count:%d", len(orders))
ordersCount := len(orders)
if ordersCount > 0 {
bills := curOrderManager.LoadPendingWaybills()
bills := FixedOrderManager.LoadPendingWaybills()
globals.SugarLogger.Infof("LoadPendingOrders waybills count:%d", len(bills))
var sortOrders StatusTimerSlice
for _, order := range orders {

View File

@@ -0,0 +1,53 @@
package orderman
import (
"time"
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/globals"
"github.com/astaxie/beego/orm"
)
const (
maxLastHours = 2 * 24 // 最多只能查询两天内的订单数据
)
func (c *OrderManager) GetStoreOrderInfo(storeID string, lastHours int, fromStatus, toStatus int) (orders []*model.GoodsOrderExt, err error) {
if lastHours > maxLastHours {
lastHours = maxLastHours
}
if toStatus == 0 {
toStatus = fromStatus
}
db := orm.NewOrm()
_, err = db.Raw(`
SELECT t1.*, t2.status waybill_status, t2.courier_name, t2.courier_mobile
FROM goods_order t1
LEFT JOIN waybill t2 ON t1.vendor_waybill_id = t2.vendor_waybill_id AND t1.waybill_vendor_id = t2.waybill_vendor_id
WHERE IF(t1.jx_store_id != 0, t1.jx_store_id, t1.store_id) = ?
AND t1.order_created_at >= ?
AND t1.Status >= ? AND t1.Status <= ?
`, storeID, time.Now().Add(-time.Duration(lastHours)*time.Hour), fromStatus, toStatus).QueryRows(&orders)
if err == nil {
return orders, nil
}
globals.SugarLogger.Infof("GetStoreOrderInfo storeID:%s failed with error:%v", storeID, err)
return nil, err
}
func (c *OrderManager) GetOrderSkuInfo(vendorOrderID string, vendorID int) (skus []*model.OrderSkuExt, err error) {
db := orm.NewOrm()
_, err = db.Raw(`
SELECT t1.*, t2.img image
FROM order_sku t1
LEFT JOIN jx_sku_name t2 ON IF(t1.jx_sku_id != 0, t1.jx_sku_id, t1.sku_id) = t2.id
WHERE vendor_order_id = ? AND vendor_id = ?
`, vendorOrderID, vendorID).QueryRows(&skus)
if err == nil {
return skus, nil
}
globals.SugarLogger.Infof("GetOrderSkuInfo orderID:%s failed with error:%v", vendorOrderID, err)
return nil, err
}