物料取消订单处理
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user