diff --git a/business/jxcallback/orderman/order.go b/business/jxcallback/orderman/order.go index 117031eff..b47c689e6 100644 --- a/business/jxcallback/orderman/order.go +++ b/business/jxcallback/orderman/order.go @@ -410,7 +410,7 @@ func checkPriceDefendOrderByStock(db *dao.DaoDB, storeID, skuID, stock, jxPrice var ( sumStock = 0 ) - priceDefends, _ := dao.GetPriceDefendOrder(db, []int{storeID}, []int{skuID}, []int{jxutils.GetDefendPriceIssue()}, 0, 1, 0, "", utils.ZeroTimeValue, utils.ZeroTimeValue, false) + priceDefends, _ := dao.GetPriceDefendOrder(db, "", []int{storeID}, []int{skuID}, []int{jxutils.GetDefendPriceIssue()}, 0, 1, 0, "", utils.ZeroTimeValue, utils.ZeroTimeValue, false) if len(priceDefends) == 0 { return -1 } diff --git a/business/jxstore/act/act.go b/business/jxstore/act/act.go index 68be7f43a..58ea9c985 100644 --- a/business/jxstore/act/act.go +++ b/business/jxstore/act/act.go @@ -1658,7 +1658,7 @@ func ChangeJxPriceByDiscountAct(ctx *jxcontext.Context) { } func checkPriceDefendOrderByPrice(db *dao.DaoDB, storeID, skuID, stock, jxPrice int) (realStock int) { - priceDefends, _ := dao.GetPriceDefendOrder(db, []int{storeID}, []int{skuID}, []int{jxutils.GetDefendPriceIssue()}, 0, 0, 0, "",utils.ZeroTimeValue, utils.ZeroTimeValue, false) + priceDefends, _ := dao.GetPriceDefendOrder(db, "", []int{storeID}, []int{skuID}, []int{jxutils.GetDefendPriceIssue()}, 0, 0, 0, "", utils.ZeroTimeValue, utils.ZeroTimeValue, false) if len(priceDefends) == 0 { return -1 } diff --git a/business/model/dao/dao_order.go b/business/model/dao/dao_order.go index faf74e5d5..6ba8cf33e 100644 --- a/business/model/dao/dao_order.go +++ b/business/model/dao/dao_order.go @@ -1412,7 +1412,7 @@ func GetSupplySupportStoreSkus(db *DaoDB, fromDate, toDate time.Time, fromStoreI return getSupplySupportStoreSkusResult, err } -func GetPriceDefendOrder(db *DaoDB, storeIDs, skuIDs, issues []int, defendPrice, isBuyNowPrice, isSuccess int, userID string, beginAt, EndAt time.Time, isDesc bool) (priceDefendOrders []*model.PriceDefendOrder, err error) { +func GetPriceDefendOrder(db *DaoDB, vendorOrderID string, storeIDs, skuIDs, issues []int, defendPrice, isBuyNowPrice, isSuccess int, userID string, beginAt, EndAt time.Time, isDesc bool) (priceDefendOrders []*model.PriceDefendOrder, err error) { sql := ` SELECT a.* FROM price_defend_order a @@ -1424,6 +1424,10 @@ func GetPriceDefendOrder(db *DaoDB, storeIDs, skuIDs, issues []int, defendPrice, utils.DefaultTimeValue, utils.DefaultTimeValue, } + if vendorOrderID != "" { + sql += " AND a.vendor_order_id = ?" + sqlParams = append(sqlParams, vendorOrderID) + } if len(storeIDs) > 0 { sql += " AND a.store_id IN (" + GenQuestionMarks(len(storeIDs)) + ")" sqlParams = append(sqlParams, storeIDs) diff --git a/business/partner/purchase/jx/localjx/order.go b/business/partner/purchase/jx/localjx/order.go index 7525658e8..a4588ff19 100644 --- a/business/partner/purchase/jx/localjx/order.go +++ b/business/partner/purchase/jx/localjx/order.go @@ -235,8 +235,9 @@ func CreateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64, } if createType == OrderCreateTypeNormal { if jxOrder.OrderType == model.OrderTypeDefendPrice { - buildDefendPriceOrder(ctx, jxOrder, addressID) - return + vendorOrderID := buildDefendPriceOrder(ctx, jxOrder, addressID) + outJxOrder.OrderID = utils.Str2Int64(vendorOrderID) + return outJxOrder, err } if outJxOrder.TotalPrice != jxOrder.TotalPrice { return nil, fmt.Errorf("商品或配送信息发生改变,请重新下单") @@ -260,7 +261,7 @@ func CreateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64, return outJxOrder, err } -func buildDefendPriceOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64) { +func buildDefendPriceOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64) (vendorOrderID string) { var ( issue = 0 db = dao.GetDB() @@ -278,8 +279,9 @@ func buildDefendPriceOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, address IsSuccess: model.NO, //默认是不成功 } dao.WrapAddIDCULDEntity(priceDefendOrder, ctx.GetUserName()) - priceDefendOrder.ActualPayPrice = int64(priceDefendOrder.Count) * priceDefendOrder.DefendPrice + priceDefendOrder.ActualPayPrice = int64(priceDefendOrder.Count)*priceDefendOrder.DefendPrice + jxOrder.FreightPrice dao.CreateEntity(db, priceDefendOrder) + return priceDefendOrder.VendorOrderID } // 买家取消(或申请取消)订单 @@ -301,6 +303,9 @@ func BuyerCancelOrder(ctx *jxcontext.Context, orderID int64, reason string) (can } func Pay4Order(ctx *jxcontext.Context, orderID int64, payType int, vendorPayType string) (orderPay *model.OrderPay, err error) { + var ( + db = dao.GetDB() + ) order, err := partner.CurOrderManager.LoadOrder(utils.Int64ToStr(orderID), model.VendorIDJX) if err == nil { switch payType { @@ -317,6 +322,20 @@ func Pay4Order(ctx *jxcontext.Context, orderID int64, payType int, vendorPayType default: err = fmt.Errorf("支付方式:%d当前不支持", payType) } + } else { + priceDefendOrders, _ := dao.GetPriceDefendOrder(db, utils.Int64ToStr(orderID), nil, nil, []int{jxutils.GetDefendPriceIssue()}, 0, -1, -1, "", utils.ZeroTimeValue, utils.ZeroTimeValue, false) + if len(priceDefendOrders) == 0 { + err = fmt.Errorf("未查询到订单!order_id: %v", orderID) + } + order2 := &model.GoodsOrder{ + VendorOrderID: priceDefendOrders[0].VendorOrderID, + ActualPayPrice: priceDefendOrders[0].ActualPayPrice, + VendorID: model.VendorIDJX, + } + if orderPay, err = pay4OrderByTL(ctx, order2, vendorPayType); err == nil && orderPay != nil { + dao.WrapAddIDCULDEntity(orderPay, ctx.GetUserName()) + err = dao.CreateEntity(dao.GetDB(), orderPay) + } } return orderPay, err } @@ -428,7 +447,9 @@ func OnPayFinished(orderPay *model.OrderPay) (err error) { //如果是物料的订单,直接到拣货完成,配送中的状态 if order.OrderType != model.OrderTypeNormal { // if order.FromStoreID != 0 { - netprinter.PrintOrderByOrder(jxcontext.AdminCtx, order) + if order.OrderType != model.OrderTypeDefendPrice { + netprinter.PrintOrderByOrder(jxcontext.AdminCtx, order) + } PickupGoods(order, false, "jxadmin") // } } @@ -782,7 +803,7 @@ func generateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64 outJxOrder.FreightPrice = 500 // } //如果是守价的订单,需要查询本期中该用户是否已经守价过,如果守价过就只算一次运费 - priceDefendOrders, _ := dao.GetPriceDefendOrder(db, nil, nil, []int{jxutils.GetDefendPriceIssue()}, 0, -1, -1, deliveryAddress.UserID, utils.ZeroTimeValue, utils.ZeroTimeValue, false) + priceDefendOrders, _ := dao.GetPriceDefendOrder(db, "", nil, nil, []int{jxutils.GetDefendPriceIssue()}, 0, -1, -1, deliveryAddress.UserID, utils.ZeroTimeValue, utils.ZeroTimeValue, false) if len(priceDefendOrders) > 0 { outJxOrder.FreightPrice = 0 } @@ -1907,7 +1928,7 @@ func CreateOrderByPriceDefend(ctx *jxcontext.Context) { var ( db = dao.GetDB() ) - priceDefends, _ := dao.GetPriceDefendOrder(db, nil, nil, []int{jxutils.GetDefendPriceIssue()}, 0, -1, 1, "", utils.ZeroTimeValue, utils.ZeroTimeValue, false) + priceDefends, _ := dao.GetPriceDefendOrder(db, "", nil, nil, []int{jxutils.GetDefendPriceIssue()}, 0, -1, 1, "", utils.ZeroTimeValue, utils.ZeroTimeValue, false) if len(priceDefends) == 0 { return } @@ -1958,6 +1979,6 @@ func GetMyPriceDefendOrders(ctx *jxcontext.Context, fromTime, toTime string) (pr db = dao.GetDB() userID = ctx.GetUserID() ) - priceDefendOrders, err = dao.GetPriceDefendOrder(db, nil, nil, nil, 0, -1, -1, userID, utils.Str2Time(fromTime), utils.Str2Time(toTime), true) + priceDefendOrders, err = dao.GetPriceDefendOrder(db, "", nil, nil, nil, 0, -1, -1, userID, utils.Str2Time(fromTime), utils.Str2Time(toTime), true) return priceDefendOrders, err }