物料取消订单处理

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("商品或配送信息发生改变,请重新下单")
}
outJxOrder.OrderID = GenOrderNo(ctx)
order, err2 := jxOrder2GoodsOrder(ctx, outJxOrder, deliveryAddress)
order, err2 := jxOrder2GoodsOrder(ctx, outJxOrder, deliveryAddress, "")
if err = err2; err == nil {
order.AddressID = addressID
order.Status = model.OrderStatusWait4Pay
@@ -699,14 +699,14 @@ func matterSkusLimited(skus []*JxSkuInfo, storeID int) (err error) {
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{
VendorOrderID: utils.Int64ToStr(jxOrder.OrderID),
VendorID: model.VendorIDJX,
VendorStoreID: utils.Int2Str(jxOrder.StoreID),
StoreID: jxOrder.StoreID,
StoreName: jxOrder.StoreName,
UserID: ctx.GetUserID(),
// UserID: ctx.GetUserID(),
ConsigneeName: deliveryAddress.ConsigneeName,
ConsigneeMobile: deliveryAddress.ConsigneeMobile,
@@ -724,6 +724,11 @@ func jxOrder2GoodsOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, deliveryAd
DeliveryType: model.OrderDeliveryTypeStoreSelf,
StatusTime: time.Now(),
}
if userID == "" {
order.UserID = ctx.GetUserID()
} else {
order.UserID = userID
}
order.OrderCreatedAt = order.StatusTime
order.VendorUserID = order.UserID
if jxOrder.ExpectedDeliveredTimestamp != 0 {
@@ -749,6 +754,7 @@ func jxOrder2GoodsOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, deliveryAd
if jxOrder.FromStoreID != 0 {
order.FromStoreID = jxOrder.FromStoreID
order.WaybillVendorID = model.VendorIDJDWL
order.DeliveryFlag = model.OrderDeliveryFlagMaskScheduleDisabled
}
return order, err
}
@@ -833,34 +839,34 @@ func orderSolutionForWuLiao(order *model.GoodsOrder) (err error) {
}
dao.CreateEntity(db, waybill)
} else { //如果重量超过5kg则需要进行拆单分包商品分包规则。最后一个包不超过5kg,其他包不超过3kg
// jxOrder := &JxOrderInfo{}
// jxOrder.StoreID = order.StoreID
// var skus []*JxSkuInfo
// for _, v := range orderSkus {
// sku := &JxSkuInfo{}
// sku.SkuID = v.SkuID
// sku.SalePrice = v.SalePrice
// sku.Name = v.SkuName
// sku.Weight = v.Weight
// sku.Count = v.Count
// skus = append(skus, sku)
// }
// jxOrder.Skus = skus
// outOrders, _, _ := tryToSplitMatterOrder(jxOrder)
// for k, v := range outOrders {
// outJxOrder, deliveryAddress, err := generateOrder(jxcontext.AdminCtx, v, order.AddressID, order.FromStoreID, order.UserID)
// if err != nil {
// return err
// }
// outJxOrder.OrderID = utils.Str2Int64(order.VendorOrderID)*100 + int64(k+1)
// order2, err2 := jxOrder2GoodsOrder(jxcontext.AdminCtx, outJxOrder, deliveryAddress)
// if err = err2; err == nil {
// order2.AddressID = order.AddressID
// order2.Status = model.OrderStatusDelivering
// err = partner.CurOrderManager.OnOrderNew(order2, model.Order2Status(order2))
// orderSolutionForWuLiao(order2)
// }
// }
jxOrder := &JxOrderInfo{}
jxOrder.StoreID = order.StoreID
var skus []*JxSkuInfo
for _, v := range orderSkus {
sku := &JxSkuInfo{}
sku.SkuID = v.SkuID
sku.SalePrice = v.SalePrice
sku.Name = v.SkuName
sku.Weight = v.Weight
sku.Count = v.Count
skus = append(skus, sku)
}
jxOrder.Skus = skus
outOrders, _, _ := tryToSplitMatterOrder(jxOrder)
for k, v := range outOrders {
outJxOrder, deliveryAddress, err := generateOrder(jxcontext.AdminCtx, v, order.AddressID, order.FromStoreID, order.UserID)
if err != nil {
return err
}
outJxOrder.OrderID = utils.Str2Int64(order.VendorOrderID)*100 + int64(k+1)
order2, err2 := jxOrder2GoodsOrder(jxcontext.AdminCtx, outJxOrder, deliveryAddress, order.UserID)
if err = err2; err == nil {
order2.AddressID = order.AddressID
order2.Status = model.OrderStatusDelivering
err = partner.CurOrderManager.OnOrderNew(order2, model.Order2Status(order2))
orderSolutionForWuLiao(order2)
}
}
//刷新一下库存
for _, v := range goods[0].Skus {
cms.RefreshMatterStock(jxcontext.AdminCtx, v.SkuID)
@@ -894,20 +900,17 @@ func CancelOrder(ctx *jxcontext.Context, order *model.GoodsOrder, reason string)
if err == nil {
dao.WrapAddIDCULDEntity(orderPayRefund, ctx.GetUserName())
errList.AddErr(dao.CreateEntity(dao.GetDB(), orderPayRefund))
MarkArrears(db, order, orderPay)
CancelMatterOrder(db, order)
} else {
errList.AddErr(err)
}
} else if orderPay.PayType == model.PayTypeTL {
orderPayRefund, err = refundOrderByTL(ctx, orderPay, refundID, orderPay.TotalFee, reason)
if err == nil {
MarkArrears(db, order, orderPay)
CancelMatterOrder(db, order)
} else {
if err != nil {
errList.AddErr(err)
}
}
MarkArrears(db, order, orderPay)
CancelMatterOrder(db, order)
} else {
orderPay.Status = model.PayStatusCanceled
_, 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))
}
err = errList.GetErrListAsOne()
if len(payList) == 0 {
CancelMatterOrder(db, order)
}
} else {
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) {
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
}