物料取消订单处理

This commit is contained in:
苏尹岚
2020-03-16 16:20:49 +08:00
parent 942fac44e8
commit cd371f6bad

View File

@@ -203,7 +203,7 @@ func CreateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64,
return nil, fmt.Errorf("商品或配送信息发生改变,请重新下单") return nil, fmt.Errorf("商品或配送信息发生改变,请重新下单")
} }
outJxOrder.OrderID = GenOrderNo(ctx) outJxOrder.OrderID = GenOrderNo(ctx)
order, err2 := jxOrder2GoodsOrder(ctx, outJxOrder, deliveryAddress) order, err2 := jxOrder2GoodsOrder(ctx, outJxOrder, deliveryAddress, "")
if err = err2; err == nil { if err = err2; err == nil {
order.AddressID = addressID order.AddressID = addressID
order.Status = model.OrderStatusWait4Pay order.Status = model.OrderStatusWait4Pay
@@ -699,14 +699,14 @@ func matterSkusLimited(skus []*JxSkuInfo, storeID int) (err error) {
return err return err
} }
func jxOrder2GoodsOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, deliveryAddress *dao.UserDeliveryAddressEx) (order *model.GoodsOrder, err error) { func jxOrder2GoodsOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, deliveryAddress *dao.UserDeliveryAddressEx, userID string) (order *model.GoodsOrder, err error) {
order = &model.GoodsOrder{ order = &model.GoodsOrder{
VendorOrderID: utils.Int64ToStr(jxOrder.OrderID), VendorOrderID: utils.Int64ToStr(jxOrder.OrderID),
VendorID: model.VendorIDJX, VendorID: model.VendorIDJX,
VendorStoreID: utils.Int2Str(jxOrder.StoreID), VendorStoreID: utils.Int2Str(jxOrder.StoreID),
StoreID: jxOrder.StoreID, StoreID: jxOrder.StoreID,
StoreName: jxOrder.StoreName, StoreName: jxOrder.StoreName,
UserID: ctx.GetUserID(), // UserID: ctx.GetUserID(),
ConsigneeName: deliveryAddress.ConsigneeName, ConsigneeName: deliveryAddress.ConsigneeName,
ConsigneeMobile: deliveryAddress.ConsigneeMobile, ConsigneeMobile: deliveryAddress.ConsigneeMobile,
@@ -724,6 +724,11 @@ func jxOrder2GoodsOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, deliveryAd
DeliveryType: model.OrderDeliveryTypeStoreSelf, DeliveryType: model.OrderDeliveryTypeStoreSelf,
StatusTime: time.Now(), StatusTime: time.Now(),
} }
if userID == "" {
order.UserID = ctx.GetUserID()
} else {
order.UserID = userID
}
order.OrderCreatedAt = order.StatusTime order.OrderCreatedAt = order.StatusTime
order.VendorUserID = order.UserID order.VendorUserID = order.UserID
if jxOrder.ExpectedDeliveredTimestamp != 0 { if jxOrder.ExpectedDeliveredTimestamp != 0 {
@@ -749,6 +754,7 @@ func jxOrder2GoodsOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, deliveryAd
if jxOrder.FromStoreID != 0 { if jxOrder.FromStoreID != 0 {
order.FromStoreID = jxOrder.FromStoreID order.FromStoreID = jxOrder.FromStoreID
order.WaybillVendorID = model.VendorIDJDWL order.WaybillVendorID = model.VendorIDJDWL
order.DeliveryFlag = model.OrderDeliveryFlagMaskScheduleDisabled
} }
return order, err return order, err
} }
@@ -833,34 +839,34 @@ func orderSolutionForWuLiao(order *model.GoodsOrder) (err error) {
} }
dao.CreateEntity(db, waybill) dao.CreateEntity(db, waybill)
} else { //如果重量超过5kg则需要进行拆单分包商品分包规则。最后一个包不超过5kg,其他包不超过3kg } else { //如果重量超过5kg则需要进行拆单分包商品分包规则。最后一个包不超过5kg,其他包不超过3kg
// jxOrder := &JxOrderInfo{} jxOrder := &JxOrderInfo{}
// jxOrder.StoreID = order.StoreID jxOrder.StoreID = order.StoreID
// var skus []*JxSkuInfo var skus []*JxSkuInfo
// for _, v := range orderSkus { for _, v := range orderSkus {
// sku := &JxSkuInfo{} sku := &JxSkuInfo{}
// sku.SkuID = v.SkuID sku.SkuID = v.SkuID
// sku.SalePrice = v.SalePrice sku.SalePrice = v.SalePrice
// sku.Name = v.SkuName sku.Name = v.SkuName
// sku.Weight = v.Weight sku.Weight = v.Weight
// sku.Count = v.Count sku.Count = v.Count
// skus = append(skus, sku) skus = append(skus, sku)
// } }
// jxOrder.Skus = skus jxOrder.Skus = skus
// outOrders, _, _ := tryToSplitMatterOrder(jxOrder) outOrders, _, _ := tryToSplitMatterOrder(jxOrder)
// for k, v := range outOrders { for k, v := range outOrders {
// outJxOrder, deliveryAddress, err := generateOrder(jxcontext.AdminCtx, v, order.AddressID, order.FromStoreID, order.UserID) outJxOrder, deliveryAddress, err := generateOrder(jxcontext.AdminCtx, v, order.AddressID, order.FromStoreID, order.UserID)
// if err != nil { if err != nil {
// return err return err
// } }
// outJxOrder.OrderID = utils.Str2Int64(order.VendorOrderID)*100 + int64(k+1) outJxOrder.OrderID = utils.Str2Int64(order.VendorOrderID)*100 + int64(k+1)
// order2, err2 := jxOrder2GoodsOrder(jxcontext.AdminCtx, outJxOrder, deliveryAddress) order2, err2 := jxOrder2GoodsOrder(jxcontext.AdminCtx, outJxOrder, deliveryAddress, order.UserID)
// if err = err2; err == nil { if err = err2; err == nil {
// order2.AddressID = order.AddressID order2.AddressID = order.AddressID
// order2.Status = model.OrderStatusDelivering order2.Status = model.OrderStatusDelivering
// err = partner.CurOrderManager.OnOrderNew(order2, model.Order2Status(order2)) err = partner.CurOrderManager.OnOrderNew(order2, model.Order2Status(order2))
// orderSolutionForWuLiao(order2) orderSolutionForWuLiao(order2)
// } }
// } }
//刷新一下库存 //刷新一下库存
for _, v := range goods[0].Skus { for _, v := range goods[0].Skus {
cms.RefreshMatterStock(jxcontext.AdminCtx, v.SkuID) cms.RefreshMatterStock(jxcontext.AdminCtx, v.SkuID)
@@ -894,20 +900,17 @@ func CancelOrder(ctx *jxcontext.Context, order *model.GoodsOrder, reason string)
if err == nil { if err == nil {
dao.WrapAddIDCULDEntity(orderPayRefund, ctx.GetUserName()) dao.WrapAddIDCULDEntity(orderPayRefund, ctx.GetUserName())
errList.AddErr(dao.CreateEntity(dao.GetDB(), orderPayRefund)) errList.AddErr(dao.CreateEntity(dao.GetDB(), orderPayRefund))
MarkArrears(db, order, orderPay)
CancelMatterOrder(db, order)
} else { } else {
errList.AddErr(err) errList.AddErr(err)
} }
} else if orderPay.PayType == model.PayTypeTL { } else if orderPay.PayType == model.PayTypeTL {
orderPayRefund, err = refundOrderByTL(ctx, orderPay, refundID, orderPay.TotalFee, reason) orderPayRefund, err = refundOrderByTL(ctx, orderPay, refundID, orderPay.TotalFee, reason)
if err == nil { if err != nil {
MarkArrears(db, order, orderPay)
CancelMatterOrder(db, order)
} else {
errList.AddErr(err) errList.AddErr(err)
} }
} }
MarkArrears(db, order, orderPay)
CancelMatterOrder(db, order)
} else { } else {
orderPay.Status = model.PayStatusCanceled orderPay.Status = model.PayStatusCanceled
_, err2 := dao.UpdateEntity(db, orderPay) _, err2 := dao.UpdateEntity(db, orderPay)
@@ -923,6 +926,9 @@ func CancelOrder(ctx *jxcontext.Context, order *model.GoodsOrder, reason string)
errList.AddErr(changeOrderStatus(order.VendorOrderID, model.OrderStatusCanceled, reason)) errList.AddErr(changeOrderStatus(order.VendorOrderID, model.OrderStatusCanceled, reason))
} }
err = errList.GetErrListAsOne() err = errList.GetErrListAsOne()
if len(payList) == 0 {
CancelMatterOrder(db, order)
}
} else { } else {
err = fmt.Errorf("当前订单状态:%s不允许取消", model.OrderStatusName[order.Status]) err = fmt.Errorf("当前订单状态:%s不允许取消", model.OrderStatusName[order.Status])
} }
@@ -931,7 +937,19 @@ func CancelOrder(ctx *jxcontext.Context, order *model.GoodsOrder, reason string)
func CancelMatterOrder(db *dao.DaoDB, order *model.GoodsOrder) (err error) { func CancelMatterOrder(db *dao.DaoDB, order *model.GoodsOrder) (err error) {
if order.FromStoreID != 0 { if order.FromStoreID != 0 {
_, err = api.JdEclpAPI.CancelOrder(order.EclpOutID) if order.EclpOutID != "" {
_, err = api.JdEclpAPI.CancelOrder(order.EclpOutID)
} else {
var goodsList []*model.GoodsOrder
sql := "SELECT * FROM goods_order WHERE vendor_order_id LIKE ? OR vendor_order_id LIKE ? AND vendor_id = ?"
sqlParams := []interface{}{order.VendorOrderID + "0%", order.VendorOrderID + "1%", model.VendorIDJX}
err = dao.GetRows(db, &goodsList, sql, sqlParams)
if err == nil && len(goodsList) > 0 {
for _, v := range goodsList {
_, err = api.JdEclpAPI.CancelOrder(v.EclpOutID)
}
}
}
} }
return err return err
} }