This commit is contained in:
苏尹岚
2021-03-30 17:39:07 +08:00
parent b9f7d7f53a
commit 0dd7235485
49 changed files with 579 additions and 582 deletions

View File

@@ -18,10 +18,10 @@ const (
// 处理正向订单结账信息
func (c *OrderManager) SaveOrderFinancialInfo(order *model.OrderFinancial, operation string) (err error) {
db := dao.GetDB()
dao.Begin(db)
txDB , _ := dao.Begin(db)
defer func() {
if r := recover(); r != nil || err != nil {
dao.Rollback(db)
dao.Rollback(db, txDB)
if r != nil {
panic(r)
}
@@ -57,7 +57,7 @@ func (c *OrderManager) SaveOrderFinancialInfo(order *model.OrderFinancial, opera
globals.SugarLogger.Warnf("On SaveOrderDiscountFinancialInfo order.VendorOrderID:%s err: order is err", order.VendorOrderID)
return err
}
dao.Rollback(db)
dao.Rollback(db, txDB)
return nil
}
}
@@ -105,7 +105,7 @@ func (c *OrderManager) SaveOrderFinancialInfo(order *model.OrderFinancial, opera
globals.SugarLogger.Warnf("On SaveOrderSkuFinancialInfo order.VendorOrderID:%s err:%v", order.VendorOrderID, err)
return err
}
dao.Rollback(db)
dao.Rollback(db, txDB)
return nil
}
}
@@ -126,7 +126,7 @@ func (c *OrderManager) SaveOrderFinancialInfo(order *model.OrderFinancial, opera
globals.SugarLogger.Warnf("On SaveOrderSkuFinancialInfo order.VendorOrderID:%s err:%v", order.VendorOrderID, err)
return err
}
dao.Rollback(db)
dao.Rollback(db, txDB)
return nil
}
} else {
@@ -139,10 +139,10 @@ func (c *OrderManager) SaveOrderFinancialInfo(order *model.OrderFinancial, opera
globals.SugarLogger.Warnf("On SaveOrderFinancialInfo order.VendorOrderID:%s err: order is err", order.VendorOrderID)
return err
}
dao.Rollback(db)
dao.Rollback(db, txDB)
return nil
}
dao.Commit(db)
dao.Commit(db, txDB)
return err
}
@@ -150,10 +150,10 @@ func (c *OrderManager) SaveOrderFinancialInfo(order *model.OrderFinancial, opera
func (c *OrderManager) SaveAfsOrderFinancialInfo(afsOrder *model.AfsOrder) (err error) {
globals.SugarLogger.Debug(afsOrder.AfsOrderID)
db := dao.GetDB()
dao.Begin(db)
txDB , _ := dao.Begin(db)
defer func() {
if r := recover(); r != nil || err != nil {
dao.Rollback(db)
dao.Rollback(db, txDB)
if r != nil {
panic(r)
}
@@ -168,7 +168,7 @@ func (c *OrderManager) SaveAfsOrderFinancialInfo(afsOrder *model.AfsOrder) (err
globals.SugarLogger.Warnf("On SaveAfsOrderFinancialInfo afsOrder.AfsOrderID:%s err: SaveAfsOrder is err", afsOrder.AfsOrderID)
return err
}
dao.Rollback(db)
dao.Rollback(db, txDB)
return nil
}
@@ -182,7 +182,7 @@ func (c *OrderManager) SaveAfsOrderFinancialInfo(afsOrder *model.AfsOrder) (err
globals.SugarLogger.Warnf("On SaveAfsOrderFinancialInfo afsOrder.AfsOrderID:%s err: SaveAfsOrderSku is err", afsOrder.AfsOrderID)
return err
}
dao.Rollback(db)
dao.Rollback(db, txDB)
return nil
}
}
@@ -194,13 +194,13 @@ func (c *OrderManager) SaveAfsOrderFinancialInfo(afsOrder *model.AfsOrder) (err
globals.SugarLogger.Warnf("On SaveAfsOrderFinancialInfo afsOrder.AfsOrderID:%s err: SaveAfsOrderSku is err", afsOrder.AfsOrderID)
return err
}
dao.Rollback(db)
dao.Rollback(db, txDB)
return nil
}
} else {
globals.SugarLogger.Warnf("On SaveAfsOrderFinancialInfo afsOrder.AfsOrderID:%s err: afsOrder have no sku", afsOrder.AfsOrderID)
}
dao.Commit(db)
dao.Commit(db, txDB)
return err
}
@@ -212,10 +212,10 @@ func (c *OrderManager) UpdataOrderFinancialInfo(orderFinancial *model.OrderFinan
// orderFinancial.JxFreightMoney = wayBill.DesiredFee
// }
db := dao.GetDB()
dao.Begin(db)
txDB , _ := dao.Begin(db)
defer func() {
if r := recover(); r != nil || err != nil {
dao.Rollback(db)
dao.Rollback(db, txDB)
if r != nil {
panic(r)
}
@@ -254,7 +254,7 @@ func (c *OrderManager) UpdataOrderFinancialInfo(orderFinancial *model.OrderFinan
globals.SugarLogger.Warnf("On SaveOrderFinancialInfo err: order is err")
return err
}
dao.Commit(db)
dao.Commit(db, txDB)
// orderFinancial 和 OrderSkuFinancial 数据计算完毕,准备进行更新
return err
}

View File

@@ -27,7 +27,7 @@ import (
"git.rosy.net.cn/jx-callback/business/model/dao"
"git.rosy.net.cn/jx-callback/business/partner"
"git.rosy.net.cn/jx-callback/globals"
"github.com/astaxie/beego/adapter/orm"
"github.com/astaxie/beego/client/orm"
)
var (
@@ -52,11 +52,11 @@ func (c *OrderManager) OnOrderNew(order *model.GoodsOrder, orderStatus *model.Or
}
db := dao.GetDB()
dao.Begin(db)
txDB, _ := dao.Begin(db)
defer func() {
globals.SugarLogger.Debugf("OnOrderNew exit orderID:%s", order.VendorOrderID)
if r := recover(); r != nil {
dao.Rollback(db)
dao.Rollback(db, txDB)
panic(r)
}
}()
@@ -74,12 +74,12 @@ func (c *OrderManager) OnOrderNew(order *model.GoodsOrder, orderStatus *model.Or
}
}
if err == nil {
dao.Commit(db)
dao.Commit(db, txDB)
if !isDuplicated {
err = scheduler.CurrentScheduler.OnOrderNew(order, false, false)
}
} else {
dao.Rollback(db)
dao.Rollback(db, txDB)
}
return err
}
@@ -92,10 +92,10 @@ func (c *OrderManager) OnOrderAdjust(order *model.GoodsOrder, orderStatus *model
}
db := dao.GetDB()
dao.Begin(db)
txDB, _ := dao.Begin(db)
defer func() {
if r := recover(); r != nil {
dao.Rollback(db)
dao.Rollback(db, txDB)
panic(r)
}
}()
@@ -145,14 +145,14 @@ func (c *OrderManager) OnOrderAdjust(order *model.GoodsOrder, orderStatus *model
isDuplicated, err = c.SaveOrder(order, true, db)
}
if err == nil {
dao.Commit(db)
dao.Commit(db, txDB)
if !isDuplicated {
// 因为订单调度器需要的是真实状态所以用order的状态
_ = scheduler.CurrentScheduler.OnOrderNew(order, false, false)
_ = scheduler.CurrentScheduler.OnOrderStatusChanged(order, orderStatus, false)
}
} else {
dao.Rollback(db)
dao.Rollback(db, txDB)
}
return err
}
@@ -170,16 +170,16 @@ func (c *OrderManager) OnOrderStatusChanged(vendorOrgCode string, orderStatus *m
}
db := dao.GetDB()
dao.Begin(db)
txDB, _ := dao.Begin(db)
defer func() {
if r := recover(); r != nil {
dao.Rollback(db)
dao.Rollback(db, txDB)
panic(r)
}
}()
isDuplicated, order, err := c.addOrderStatus(orderStatus, db)
if err == nil {
dao.Commit(db)
dao.Commit(db, txDB)
if orderStatus.Status == model.OrderStatusWaybillTipChanged {
if order, err2 := c.LoadOrder(orderStatus.VendorOrderID, orderStatus.VendorID); err2 == nil {
if handler := partner.GetWaybillTipUpdater(orderStatus.RefVendorID); handler != nil {
@@ -236,7 +236,7 @@ func (c *OrderManager) OnOrderStatusChanged(vendorOrgCode string, orderStatus *m
}
}
} else {
dao.Rollback(db)
dao.Rollback(db, txDB)
}
return err
}
@@ -294,10 +294,10 @@ func (c *OrderManager) SaveOrder(order *model.GoodsOrder, isAdjust bool, db *dao
setFakeOrderFlag(db, order)
// cms.HandleOrder4Consignee(order)
dao.Begin(db)
txDB, _ := dao.Begin(db)
defer func() {
if r := recover(); r != nil || err != nil {
dao.Rollback(db)
dao.Rollback(db, txDB)
if r != nil {
panic(r)
}
@@ -352,7 +352,7 @@ func (c *OrderManager) SaveOrder(order *model.GoodsOrder, isAdjust bool, db *dao
err = ModifyOrderSkusStock(db, order, false)
}
if err == nil {
dao.Commit(db)
dao.Commit(db, txDB)
}
return isDuplicated, err
}
@@ -938,10 +938,10 @@ func (c *OrderManager) RefreshHistoryOrdersEarningPrice(ctx *jxcontext.Context,
order := batchItemList[0].(*model.GoodsOrder)
db := dao.GetDB()
updateSingleOrderEarningPrice(order, db)
dao.Begin(db)
txDB, _ := dao.Begin(db)
defer func() {
if r := recover(); r != nil || err != nil {
dao.Rollback(db)
dao.Rollback(db, txDB)
if r != nil {
panic(r)
}
@@ -999,7 +999,7 @@ func (c *OrderManager) RefreshHistoryOrdersEarningPrice(ctx *jxcontext.Context,
if err != nil {
return nil, err
}
dao.Commit(db)
dao.Commit(db, txDB)
retVal = []string{utils.Int64ToStr(num)}
return retVal, err
}, orderList)
@@ -1072,9 +1072,10 @@ func AddUpdateOrdersSupplement(ctx *jxcontext.Context, ordersSupplement *model.O
)
now := time.Now()
ordersSupplement.SupplementTime = &now
txDB, _ := dao.Begin(db)
defer func() {
if r := recover(); r != nil || err != nil {
dao.Rollback(db)
dao.Rollback(db, txDB)
if r != nil {
panic(r)
}
@@ -1101,7 +1102,7 @@ func AddUpdateOrdersSupplement(ctx *jxcontext.Context, ordersSupplement *model.O
dao.WrapAddIDCULDEntity(ordersSupplement, ctx.GetUserName())
err = dao.CreateEntity(db, ordersSupplement)
}
dao.Commit(db)
dao.Commit(db, txDB)
return num, err
}
@@ -1123,25 +1124,25 @@ func RefreshOrdersPriceInfo(ctx *jxcontext.Context, fromTime, toTime time.Time,
if err == nil {
db := dao.GetDB()
if err = FixedOrderManager.updateOrderOtherInfo(newOrder, db); err == nil {
dao.Begin(db)
txDB, _ := dao.Begin(db)
defer func() {
if r := recover(); r != nil {
dao.Rollback(db)
dao.Rollback(db, txDB)
panic(r)
}
}()
if _, err = dao.UpdateEntity(db, newOrder); err != nil {
dao.Rollback(db)
dao.Rollback(db, txDB)
return nil, err
}
for _, sku := range newOrder.Skus {
if _, err = dao.UpdateEntity(db, sku); err != nil {
dao.Rollback(db)
dao.Rollback(db, txDB)
return nil, err
}
}
dao.Commit(db)
dao.Commit(db, txDB)
}
}
return retVal, err
@@ -1923,18 +1924,18 @@ func UpdateOrderInfo(ctx *jxcontext.Context, vendorOrderID string, vendorID int,
}
valid := dao.StrictMakeMapByStructObject(payload, order, ctx.GetUserName())
if len(valid) > 0 {
dao.Begin(db)
txDB, _ := dao.Begin(db)
defer func() {
if r := recover(); r != nil {
dao.Rollback(db)
dao.Rollback(db, txDB)
panic(r)
}
}()
if num, err = dao.UpdateEntityByKV(db, order, valid, nil); err != nil {
dao.Rollback(db)
dao.Rollback(db, txDB)
return 0, err
}
dao.Commit(db)
dao.Commit(db, txDB)
}
return num, err
}
@@ -1961,10 +1962,10 @@ func RefreshOrderSkuInfo(ctx *jxcontext.Context, vendorOrderID string, vendorID,
dao.UpdateEntity(db, v, "ShopPrice", "EarningPrice")
return err
}
dao.Begin(db)
txDB, _ := dao.Begin(db)
defer func() {
if r := recover(); r != nil {
dao.Rollback(db)
dao.Rollback(db, txDB)
panic(r)
}
}()
@@ -1989,6 +1990,6 @@ func RefreshOrderSkuInfo(ctx *jxcontext.Context, vendorOrderID string, vendorID,
order.ShopPrice = shopPrice
order.EarningPrice = earningPrice
num, err = dao.UpdateEntity(db, order, "ShopPrice", "EarningPrice")
dao.Commit(db)
dao.Commit(db, txDB)
return num, err
}

View File

@@ -10,7 +10,7 @@ import (
"git.rosy.net.cn/jx-callback/business/model/dao"
"git.rosy.net.cn/jx-callback/business/partner"
"git.rosy.net.cn/jx-callback/globals"
"github.com/astaxie/beego/adapter/orm"
"github.com/astaxie/beego/client/orm"
)
func (c *OrderManager) LoadAfsOrder(vendorAfsOrderID string, vendorID int) (afsOrder *model.AfsOrder, err error) {
@@ -62,10 +62,10 @@ func (c *OrderManager) onAfsOrderNew(afsOrder *model.AfsOrder, orderStatus *mode
}
}
//
dao.Begin(db)
txDB , _ := dao.Begin(db)
defer func() {
if r := recover(); r != nil || err != nil {
dao.Rollback(db)
dao.Rollback(db, txDB)
panic(r)
}
}()
@@ -73,7 +73,7 @@ func (c *OrderManager) onAfsOrderNew(afsOrder *model.AfsOrder, orderStatus *mode
globals.SugarLogger.Debugf("onAfsOrderNew afsOrderID:%s, isDuplicated:%t", afsOrder.AfsOrderID, isDuplicated)
if err != nil || isDuplicated {
if err == nil {
dao.Commit(db)
dao.Commit(db, txDB)
}
return err
}
@@ -101,7 +101,7 @@ func (c *OrderManager) onAfsOrderNew(afsOrder *model.AfsOrder, orderStatus *mode
}
}
dao.Commit(db)
dao.Commit(db, txDB)
scheduler.CurrentScheduler.OnAfsOrderNew(afsOrder, false)
return err
}
@@ -114,10 +114,10 @@ func (c *OrderManager) SaveAfsOrder(db *dao.DaoDB, afsOrder *model.AfsOrder, isD
if err = c.updateAfsOrderOtherInfo(db, afsOrder); err != nil {
return err
}
dao.Begin(db)
txDB , _ := dao.Begin(db)
defer func() {
if r := recover(); r != nil || err != nil {
dao.Rollback(db)
dao.Rollback(db, txDB)
if r != nil {
panic(r)
}
@@ -172,30 +172,30 @@ func (c *OrderManager) SaveAfsOrder(db *dao.DaoDB, afsOrder *model.AfsOrder, isD
} else {
globals.SugarLogger.Warnf("On SaveAfsOrder afsOrder.AfsOrderID:%s err: afsOrder have no sku", afsOrder.AfsOrderID)
}
dao.Commit(db)
dao.Commit(db, txDB)
return err
}
func (c *OrderManager) OnAfsOrderStatusChanged(orderStatus *model.OrderStatus) (err error) {
db := dao.GetDB()
c.setAfsOrderID(db, orderStatus)
dao.Begin(db)
txDB , _ := dao.Begin(db)
defer func() {
if r := recover(); r != nil {
dao.Rollback(db)
dao.Rollback(db, txDB)
panic(r)
}
}()
isDuplicated, afsOrder, err := c.addAfsOrderStatus(db, orderStatus)
if err != nil || isDuplicated {
if err == nil {
dao.Commit(db)
dao.Commit(db, txDB)
} else {
dao.Rollback(db)
dao.Rollback(db, txDB)
}
return err
}
dao.Commit(db)
dao.Commit(db, txDB)
scheduler.CurrentScheduler.OnAfsOrderStatusChanged(afsOrder, orderStatus, false)
return err
}

View File

@@ -70,11 +70,11 @@ func addOrderOrWaybillStatus(status *model.OrderStatus, db *dao.DaoDB) (isDuplic
} else {
globals.SugarLogger.Debugf("addOrderStatus afsOrder:%v", status)
}
dao.Begin(db)
txDB , _ := dao.Begin(db)
defer func() {
if r := recover(); r != nil || err != nil {
globals.SugarLogger.Debug("rollback")
dao.Rollback(db)
dao.Rollback(db, txDB)
if r != nil {
panic(r)
}
@@ -98,7 +98,7 @@ func addOrderOrWaybillStatus(status *model.OrderStatus, db *dao.DaoDB) (isDuplic
// todo 这里居然会有主键重复错误,逻辑上是不应该的
globals.SugarLogger.Warnf("addOrderOrWaybillStatus status:%v, access db error:%v", status, err)
} else {
dao.Commit(db)
dao.Commit(db, txDB)
}
return isDuplicated, err
}

View File

@@ -24,7 +24,7 @@ import (
"git.rosy.net.cn/jx-callback/business/partner"
"git.rosy.net.cn/jx-callback/globals"
"git.rosy.net.cn/jx-callback/globals/api/apimanager"
"github.com/astaxie/beego/adapter/orm"
"github.com/astaxie/beego/client/orm"
)
const (
@@ -570,10 +570,10 @@ func (c *OrderManager) GetWaybills(ctx *jxcontext.Context, fromDateStr, toDateSt
sqlParams = append(sqlParams, pageSize, offset)
var waybills []*tWaybillExt
db := dao.GetDB()
dao.Begin(db)
txDB , _ := dao.Begin(db)
defer func() {
if r := recover(); r != nil {
dao.Rollback(db)
dao.Rollback(db, txDB)
panic(r)
}
}()
@@ -583,7 +583,7 @@ func (c *OrderManager) GetWaybills(ctx *jxcontext.Context, fromDateStr, toDateSt
Data: waybills,
}
}
dao.Commit(db)
dao.Commit(db, txDB)
return pagedInfo, err
}
@@ -703,10 +703,10 @@ func (c *OrderManager) GetOrdersFinancial(ctx *jxcontext.Context, fromDateStr, t
var orders []*model.OrderFinancialExt
db := dao.GetDB()
dao.Begin(db)
txDB , _ := dao.Begin(db)
defer func() {
if r := recover(); r != nil {
dao.Rollback(db)
dao.Rollback(db, txDB)
panic(r)
}
}()
@@ -716,7 +716,7 @@ func (c *OrderManager) GetOrdersFinancial(ctx *jxcontext.Context, fromDateStr, t
Data: orders,
}
}
dao.Commit(db)
dao.Commit(db, txDB)
return pagedInfo, err
}
@@ -1020,10 +1020,10 @@ func (c *OrderManager) GetAfsOrders(ctx *jxcontext.Context, keyword, afsOrderID,
var orders []*model.AfsOrder
db := dao.GetDB()
dao.Begin(db)
txDB , _ := dao.Begin(db)
defer func() {
if r := recover(); r != nil || err != nil {
dao.Rollback(db)
dao.Rollback(db, txDB)
if r != nil {
panic(r)
}
@@ -1034,7 +1034,7 @@ func (c *OrderManager) GetAfsOrders(ctx *jxcontext.Context, keyword, afsOrderID,
TotalCount: dao.GetLastTotalRowCount(db),
Data: orders,
}
dao.Commit(db)
dao.Commit(db, txDB)
}
return pagedInfo, err
}

View File

@@ -15,7 +15,7 @@ import (
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/business/model/dao"
"git.rosy.net.cn/jx-callback/globals"
"github.com/astaxie/beego/adapter/orm"
"github.com/astaxie/beego/client/orm"
)
var (
@@ -107,10 +107,10 @@ func (w *OrderManager) OnWaybillStatusChanged(bill *model.Waybill) (err error) {
}
bill.CourierMobile = jxutils.FormalizeMobile(bill.CourierMobile)
db := dao.GetDB()
dao.Begin(db)
txDB, _ := dao.Begin(db)
defer func() {
if r := recover(); r != nil {
dao.Rollback(db)
dao.Rollback(db, txDB)
panic(r)
}
}()
@@ -133,21 +133,21 @@ func (w *OrderManager) OnWaybillStatusChanged(bill *model.Waybill) (err error) {
billCopy := *bill
billCopy.Status = model.WaybillStatusNew
if isDuplicated, err = w.onWaybillNew(&billCopy, db); err != nil {
dao.Rollback(db)
dao.Rollback(db, txDB)
return err
}
dao.Commit(db)
dao.Commit(db, txDB)
// 进运单调度器OnWaybillStatusChanged之前要确保事务是提交了的否则会导致死锁
scheduler.CurrentScheduler.OnWaybillStatusChanged(&billCopy, false)
dao.Begin(db)
} else {
dao.Rollback(db)
dao.Rollback(db, txDB)
return err2
}
}
// 运单消息错序,之前已经结束了,直接返回
if existingBill.Status >= model.WaybillStatusEndBegin {
dao.Commit(db)
dao.Commit(db, txDB)
return nil
}
}
@@ -171,17 +171,17 @@ func (w *OrderManager) OnWaybillStatusChanged(bill *model.Waybill) (err error) {
}
duplicatedCount, err = w.addWaybillStatus(bill, db, addParams)
if err != nil {
dao.Rollback(db)
dao.Rollback(db, txDB)
return err
}
}
if err == nil {
dao.Commit(db)
dao.Commit(db, txDB)
if duplicatedCount == 0 {
scheduler.CurrentScheduler.OnWaybillStatusChanged(bill, false)
}
} else {
dao.Rollback(db)
dao.Rollback(db, txDB)
}
if bill.VendorOrderID == bill.VendorWaybillID {
if status, ok := waybillOrderStatusMap[bill.Status]; ok {

View File

@@ -35,7 +35,7 @@ import (
"git.rosy.net.cn/jx-callback/business/model/legacymodel"
"git.rosy.net.cn/jx-callback/business/partner"
"git.rosy.net.cn/jx-callback/globals"
"github.com/astaxie/beego/adapter/orm"
"github.com/astaxie/beego/client/orm"
)
const (