守价订单生成
This commit is contained in:
@@ -115,6 +115,7 @@ type JxOrderInfo struct {
|
||||
OrderType int `json:"orderType"`
|
||||
IsBuyNowPrice int `json:"isBuyNowPrice"`
|
||||
IsPriceDefend int `json:"isPriceDefend"`
|
||||
OrderID2 string `json:"-"`
|
||||
}
|
||||
|
||||
type DeliveryTimeItem struct {
|
||||
@@ -324,9 +325,9 @@ func Pay4Order(ctx *jxcontext.Context, orderID int64, payType int, vendorPayType
|
||||
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)
|
||||
priceDefendOrders, _ := dao.GetPriceDefendOrder(db, utils.Int64ToStr(orderID), nil, nil, []int{jxutils.GetDefendPriceIssue()}, 0, -1, -1, 0, "", utils.ZeroTimeValue, utils.ZeroTimeValue, false)
|
||||
if len(priceDefendOrders) == 0 {
|
||||
err = fmt.Errorf("未查询到订单!order_id: %v", orderID)
|
||||
err = fmt.Errorf("未查询到待支付订单!order_id: %v", orderID)
|
||||
}
|
||||
order2 := &model.GoodsOrder{
|
||||
VendorOrderID: priceDefendOrders[0].VendorOrderID,
|
||||
@@ -455,7 +456,7 @@ func OnPayFinished(orderPay *model.OrderPay) (err error) {
|
||||
// }
|
||||
}
|
||||
} else {
|
||||
priceDefendOrders, _ := dao.GetPriceDefendOrder(dao.GetDB(), orderPay.VendorOrderID, nil, nil, []int{jxutils.GetDefendPriceIssue()}, 0, -1, -1, "", utils.ZeroTimeValue, utils.ZeroTimeValue, false)
|
||||
priceDefendOrders, _ := dao.GetPriceDefendOrder(dao.GetDB(), orderPay.VendorOrderID, nil, nil, []int{jxutils.GetDefendPriceIssue()}, 0, -1, -1, 0, "", utils.ZeroTimeValue, utils.ZeroTimeValue, false)
|
||||
if len(priceDefendOrders) > 0 {
|
||||
priceDefendOrders[0].IsPay = model.YES
|
||||
dao.UpdateEntity(dao.GetDB(), priceDefendOrders[0], "IsPay")
|
||||
@@ -811,14 +812,17 @@ 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)
|
||||
flag2 := false
|
||||
for _, v := range priceDefendOrders {
|
||||
if v.IsPay == model.YES {
|
||||
flag2 = true
|
||||
priceDefendOrders, _ := dao.GetPriceDefendOrder(db, "", nil, nil, []int{jxutils.GetDefendPriceIssue()}, 0, -1, -1, 1, deliveryAddress.UserID, utils.ZeroTimeValue, utils.ZeroTimeValue, false)
|
||||
if len(priceDefendOrders) > 0 {
|
||||
flag2 := false
|
||||
for _, v := range priceDefendOrders {
|
||||
if v.StoreID != jxOrder.StoreID {
|
||||
flag2 = true
|
||||
}
|
||||
}
|
||||
if flag2 {
|
||||
return nil, nil, fmt.Errorf("同一期不允许相同用户在不同门店进行守价!")
|
||||
}
|
||||
}
|
||||
if len(priceDefendOrders) > 0 && flag2 {
|
||||
outJxOrder.FreightPrice = 0
|
||||
}
|
||||
} else {
|
||||
@@ -1938,36 +1942,71 @@ func GetSupplySupportStoreSkus(ctx *jxcontext.Context, fromDate, toDate string,
|
||||
return orderSkus, err
|
||||
}
|
||||
|
||||
func CreateOrderByPriceDefend(ctx *jxcontext.Context) {
|
||||
func CreateOrderByPriceDefend(ctx *jxcontext.Context) (err error) {
|
||||
var (
|
||||
db = dao.GetDB()
|
||||
db = dao.GetDB()
|
||||
userOrderMap = make(map[int64][]*model.PriceDefendOrder)
|
||||
)
|
||||
priceDefends, _ := dao.GetPriceDefendOrder(db, "", nil, nil, []int{jxutils.GetDefendPriceIssue()}, 0, -1, 1, "", utils.ZeroTimeValue, utils.ZeroTimeValue, false)
|
||||
if len(priceDefends) == 0 {
|
||||
return
|
||||
}
|
||||
for _, v := range priceDefends {
|
||||
jxOrder := &JxOrderInfo{
|
||||
BuyerComment: "守价订单",
|
||||
StoreID: v.StoreID,
|
||||
Skus: []*JxSkuInfo{
|
||||
&JxSkuInfo{
|
||||
SkuID: v.SkuID,
|
||||
Count: v.Count,
|
||||
},
|
||||
},
|
||||
IsPriceDefend: model.YES,
|
||||
OrderID: utils.Str2Int64(v.VendorOrderID),
|
||||
priceDefends, _ := dao.GetPriceDefendOrder(db, "", nil, nil, []int{jxutils.GetDefendPriceIssue()}, 0, -1, 1, 1, "", utils.ZeroTimeValue, utils.ZeroTimeValue, false)
|
||||
if len(priceDefends) > 0 {
|
||||
for _, v := range priceDefends {
|
||||
userOrderMap[v.AddressID] = append(userOrderMap[v.AddressID], v)
|
||||
}
|
||||
if _, err := CreateOrder(ctx, jxOrder, v.AddressID, OrderCreateTypeNormal, 0, false); err == nil {
|
||||
err = SettleDiscountActByPriceDefend(ctx, v)
|
||||
for kk, vv := range userOrderMap {
|
||||
if len(vv) == 1 {
|
||||
jxOrder := &JxOrderInfo{
|
||||
BuyerComment: "守价订单",
|
||||
StoreID: vv[0].StoreID,
|
||||
Skus: []*JxSkuInfo{
|
||||
&JxSkuInfo{
|
||||
SkuID: vv[0].SkuID,
|
||||
Count: vv[0].Count,
|
||||
},
|
||||
},
|
||||
IsPriceDefend: model.YES,
|
||||
OrderID: utils.Str2Int64(vv[0].VendorOrderID),
|
||||
}
|
||||
if _, err := CreateOrder(ctx, jxOrder, kk, OrderCreateTypeNormal, 0, false); err == nil {
|
||||
err = SettleDiscountActByPriceDefend(ctx, vv[0], false)
|
||||
}
|
||||
} else {
|
||||
var (
|
||||
skus []*JxSkuInfo
|
||||
orderIDs []string
|
||||
)
|
||||
jxOrder := &JxOrderInfo{
|
||||
BuyerComment: "守价订单",
|
||||
StoreID: vv[0].StoreID,
|
||||
IsPriceDefend: model.YES,
|
||||
OrderID: GenOrderNo(ctx),
|
||||
}
|
||||
for _, priceDefend := range vv {
|
||||
sku := &JxSkuInfo{
|
||||
SkuID: priceDefend.SkuID,
|
||||
Count: priceDefend.Count,
|
||||
}
|
||||
skus = append(skus, sku)
|
||||
orderIDs = append(orderIDs, priceDefend.VendorOrderID)
|
||||
err = SettleDiscountActByPriceDefend(ctx, priceDefend, false)
|
||||
}
|
||||
jxOrder.Skus = skus
|
||||
jxOrder.OrderID2 = strings.Join(orderIDs, ",")
|
||||
if _, err := CreateOrder(ctx, jxOrder, kk, OrderCreateTypeNormal, 0, false); err == nil {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
priceDefends2, _ := dao.GetPriceDefendOrder(db, "", nil, nil, []int{jxutils.GetDefendPriceIssue()}, 0, -1, 0, 1, "", utils.ZeroTimeValue, utils.ZeroTimeValue, false)
|
||||
if len(priceDefends2) > 0 {
|
||||
for _, v := range priceDefends2 {
|
||||
err = SettleDiscountActByPriceDefend(ctx, v, true)
|
||||
}
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
//结算因京西折扣活动而参与守价的订单
|
||||
func SettleDiscountActByPriceDefend(ctx *jxcontext.Context, order *model.PriceDefendOrder) (err error) {
|
||||
func SettleDiscountActByPriceDefend(ctx *jxcontext.Context, order *model.PriceDefendOrder, isFull bool) (err error) {
|
||||
var (
|
||||
db = dao.GetDB()
|
||||
)
|
||||
@@ -1977,7 +2016,11 @@ func SettleDiscountActByPriceDefend(ctx *jxcontext.Context, order *model.PriceDe
|
||||
if orderPay.Status == model.PayStatusYes {
|
||||
refundID := order.VendorOrderID
|
||||
if orderPay.PayType == model.PayTypeTL {
|
||||
_, err = RefundOrderByTL(ctx, orderPay, refundID, int(order.ActualPayPrice-order.RealPrice), settleDiscountActRefundReason)
|
||||
if !isFull {
|
||||
_, err = RefundOrderByTL(ctx, orderPay, refundID, int(order.ActualPayPrice-order.RealPrice), settleDiscountActRefundReason)
|
||||
} else {
|
||||
_, err = RefundOrderByTL(ctx, orderPay, refundID, int(order.ActualPayPrice), settleDiscountActRefundReason)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
orderPay.Status = model.PayStatusCanceled
|
||||
@@ -1993,6 +2036,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, -1, userID, utils.Str2Time(fromTime), utils.Str2Time(toTime), true)
|
||||
return priceDefendOrders, err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user