- AdjustOrder
- CancelOrder
This commit is contained in:
@@ -114,3 +114,17 @@ func (c *BaseScheduler) GetStoreDeliveryType(order *model.GoodsOrder, storeMap *
|
|||||||
globals.SugarLogger.Debugf("GetStoreDeliveryType orderID:%s, deliveryType:%d", order.VendorOrderID, deliveryType)
|
globals.SugarLogger.Debugf("GetStoreDeliveryType orderID:%s, deliveryType:%d", order.VendorOrderID, deliveryType)
|
||||||
return deliveryType
|
return deliveryType
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *BaseScheduler) AdjustOrder(ctx *jxcontext.Context, order *model.GoodsOrder, removedSkuList []*model.OrderSku, reason string) (err error) {
|
||||||
|
if c.IsReallyCallPlatformAPI {
|
||||||
|
err = partner.GetPurchasePlatformFromVendorID(order.VendorID).AdjustOrder(ctx, order, removedSkuList, reason)
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *BaseScheduler) CancelOrder(ctx *jxcontext.Context, order *model.GoodsOrder, reason string) (err error) {
|
||||||
|
if c.IsReallyCallPlatformAPI {
|
||||||
|
err = partner.GetPurchasePlatformFromVendorID(order.VendorID).CancelOrder(ctx, order, reason)
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"git.rosy.net.cn/jx-callback/business/partner"
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxcallback/orderman"
|
"git.rosy.net.cn/jx-callback/business/jxcallback/orderman"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxcallback/scheduler/defsch"
|
"git.rosy.net.cn/jx-callback/business/jxcallback/scheduler/defsch"
|
||||||
@@ -343,3 +345,78 @@ func (c *OrderController) GetPrinterStatus() {
|
|||||||
return retVal, "", err
|
return retVal, "", err
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func skuList2Map(skuList []*model.OrderSku) (skuMap map[int]*model.OrderSku) {
|
||||||
|
skuMap = make(map[int]*model.OrderSku)
|
||||||
|
for _, sku := range skuList {
|
||||||
|
skuID := jxutils.GetSkuIDFromOrderSku(sku)
|
||||||
|
if skuMap[skuID] == nil {
|
||||||
|
skuMap[skuID] = sku
|
||||||
|
} else {
|
||||||
|
skuMap[skuID].Count += sku.Count
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return skuMap
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Title 调整订单
|
||||||
|
// @Description 调整订单
|
||||||
|
// @Param token header string true "认证token"
|
||||||
|
// @Param vendorOrderID formData string true "订单ID"
|
||||||
|
// @Param vendorID formData int true "订单所属厂商ID)"
|
||||||
|
// @Param removedSkuInfo formData string true "要去除的商品信息,只有skuID与Count字段有效"
|
||||||
|
// @Param reason formData string false "调整原因"
|
||||||
|
// @Success 200 {object} controllers.CallResult
|
||||||
|
// @Failure 200 {object} controllers.CallResult
|
||||||
|
// @router /AdjustOrder [put]
|
||||||
|
func (c *OrderController) AdjustOrder() {
|
||||||
|
c.callAdjustOrder(func(params *tOrderAdjustOrderParams) (retVal interface{}, errCode string, err error) {
|
||||||
|
var skuList []*model.OrderSku
|
||||||
|
err = jxutils.Strings2Objs(params.RemovedSkuInfo, &skuList)
|
||||||
|
if err == nil {
|
||||||
|
order, err := partner.CurOrderManager.LoadOrder(params.VendorOrderID, params.VendorID)
|
||||||
|
if err == nil {
|
||||||
|
orderSkuMap := skuList2Map(order.Skus)
|
||||||
|
removeSkuMap := skuList2Map(skuList)
|
||||||
|
for _, sku := range removeSkuMap {
|
||||||
|
skuID := jxutils.GetSkuIDFromOrderSku(sku)
|
||||||
|
if orderSkuMap[skuID] == nil {
|
||||||
|
err = fmt.Errorf("找不到SKU:%d", skuID)
|
||||||
|
} else if sku.Count > orderSkuMap[skuID].Count {
|
||||||
|
err = fmt.Errorf("SKU:%d调整数量:%d大于实际数量:%d", skuID, sku.Count, orderSkuMap[skuID].Count)
|
||||||
|
}
|
||||||
|
if err != nil {
|
||||||
|
break
|
||||||
|
} else {
|
||||||
|
count := sku.Count
|
||||||
|
*sku = *orderSkuMap[skuID]
|
||||||
|
sku.Count = count
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if err == nil {
|
||||||
|
err = defsch.FixedScheduler.AdjustOrder(params.Ctx, order, skuList, params.Reason)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return retVal, "", err
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Title 取消订单
|
||||||
|
// @Description 取消订单
|
||||||
|
// @Param token header string true "认证token"
|
||||||
|
// @Param vendorOrderID formData string true "订单ID"
|
||||||
|
// @Param vendorID formData int true "订单所属厂商ID)"
|
||||||
|
// @Param reason formData string false "取消原因"
|
||||||
|
// @Success 200 {object} controllers.CallResult
|
||||||
|
// @Failure 200 {object} controllers.CallResult
|
||||||
|
// @router /CancelOrder [put]
|
||||||
|
func (c *OrderController) CancelOrder() {
|
||||||
|
c.callCancelOrder(func(params *tOrderCancelOrderParams) (retVal interface{}, errCode string, err error) {
|
||||||
|
order, err := partner.CurOrderManager.LoadOrder(params.VendorOrderID, params.VendorID)
|
||||||
|
if err == nil {
|
||||||
|
err = defsch.FixedScheduler.CancelOrder(params.Ctx, order, params.Reason)
|
||||||
|
}
|
||||||
|
return retVal, "", err
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user