- handle pending orders and waybills when starting.

This commit is contained in:
gazebo
2018-07-21 12:57:20 +08:00
parent 65eeef9966
commit 1958f24705
12 changed files with 134 additions and 50 deletions

View File

@@ -1,6 +1,8 @@
package controller
import (
"time"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/jxutils/weixinmsg"
"git.rosy.net.cn/jx-callback/business/model"
@@ -17,6 +19,40 @@ func NewWaybillManager() *WaybillController {
return &WaybillController{}
}
func (w *WaybillController) LoadPendingWaybills() {
db := orm.NewOrm()
var bills []*model.Waybill
_, err := db.Raw(`
SELECT t1.*
FROM waybill t1
JOIN goods_order t2 ON t2.vendor_order_id = t1.vendor_order_id
AND t2.vendor_id = t1.order_vendor_id
AND t2.order_created_at >= ?
AND t2.status < ?
WHERE waybill_created_at >= ?
AND t1.status < ?
ORDER by waybill_created_at
`, time.Now().Add(-pendingOrderGapMax), model.WaybillStatusEndBegin,
time.Now().Add(-pendingOrderGapMax), model.WaybillStatusEndBegin).QueryRows(&bills)
if err != nil {
globals.SugarLogger.Warnf("init load pending waybills error:%v", err)
return
}
globals.SugarLogger.Info(len(bills))
for _, v := range bills {
v2 := v
routinePool.CallFunAsync(func() {
if v2.Status != model.WaybillStatusNew {
savedStatus := v2.Status
v2.Status = model.WaybillStatusNew
scheduler.CurrentScheduler.OnWaybillStatusChanged(v2)
v2.Status = savedStatus
}
scheduler.CurrentScheduler.OnWaybillStatusChanged(v2)
}, v2.VendorOrderID)
}
}
func (w *WaybillController) onWaybillNew(bill *model.Waybill) (err error) {
db := orm.NewOrm()
isDuplicated, err := addOrderOrWaybillStatus(model.Waybill2Status(bill), db)