+ RefundOrder, PartRefundOrder
This commit is contained in:
@@ -342,16 +342,17 @@ func (c *OrderController) GetAfsOrders() {
|
||||
}
|
||||
|
||||
// @Title 得到售后单SKU信息
|
||||
// @Description 得到售后单SKU信息
|
||||
// @Description 得到售后单SKU信息(订单与售后单必填一项)
|
||||
// @Param token header string true "认证token"
|
||||
// @Param afsOrderID query string true "售后单ID"
|
||||
// @Param vendorID query int true "售后单所属的厂商ID"
|
||||
// @Param vendorOrderID query string faslse "订单ID"
|
||||
// @Param afsOrderID query string faslse "售后单ID"
|
||||
// @Success 200 {object} controllers.CallResult
|
||||
// @Failure 200 {object} controllers.CallResult
|
||||
// @router /GetAfsOrderSkuInfo [get]
|
||||
func (c *OrderController) GetAfsOrderSkuInfo() {
|
||||
c.callGetAfsOrderSkuInfo(func(params *tOrderGetAfsOrderSkuInfoParams) (retVal interface{}, errCode string, err error) {
|
||||
retVal, err = orderman.FixedOrderManager.GetAfsOrderSkuInfo(params.Ctx, params.AfsOrderID, params.VendorID)
|
||||
retVal, err = dao.GetAfsOrderSkuInfo(dao.GetDB(), params.VendorOrderID, params.AfsOrderID, params.VendorID)
|
||||
return retVal, "", err
|
||||
})
|
||||
}
|
||||
@@ -535,24 +536,7 @@ func (c *OrderController) AdjustOrder() {
|
||||
var order *model.GoodsOrder
|
||||
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 {
|
||||
if err = fillSkuList(skuList, order.Skus); err == nil {
|
||||
err = defsch.FixedScheduler.AdjustOrder(params.Ctx, order, skuList, params.Reason)
|
||||
}
|
||||
}
|
||||
@@ -730,3 +714,89 @@ func (c *OrderController) AmendMissingOrders() {
|
||||
return retVal, "", err
|
||||
})
|
||||
}
|
||||
|
||||
// @Title 商家主动发起部分退款售后
|
||||
// @Description 商家主动发起部分退款售后
|
||||
// @Param token header string true "认证token"
|
||||
// @Param vendorOrderID formData string true "订单ID"
|
||||
// @Param vendorID formData int true "订单所属厂商ID"
|
||||
// @Param refundSkuList formData string true "要去除的商品信息,只有skuID与Count字段有效"
|
||||
// @Param reason formData string true "原因"
|
||||
// @Success 200 {object} controllers.CallResult
|
||||
// @Failure 200 {object} controllers.CallResult
|
||||
// @router /PartRefundOrder [put]
|
||||
func (c *OrderController) PartRefundOrder() {
|
||||
c.callPartRefundOrder(func(params *tOrderPartRefundOrderParams) (retVal interface{}, errCode string, err error) {
|
||||
var skuList []*model.OrderSku
|
||||
err = jxutils.Strings2Objs(params.RefundSkuList, &skuList)
|
||||
if err == nil {
|
||||
var order *model.GoodsOrder
|
||||
order, err = partner.CurOrderManager.LoadOrder(params.VendorOrderID, params.VendorID)
|
||||
if err == nil {
|
||||
if err = fillSkuList(skuList, order.Skus); err == nil {
|
||||
err = defsch.FixedScheduler.PartRefundOrder(params.Ctx, order, skuList, params.Reason)
|
||||
}
|
||||
}
|
||||
}
|
||||
return retVal, "", err
|
||||
})
|
||||
}
|
||||
|
||||
func fillSkuList(skuList, orderSkuList []*model.OrderSku) (err error) {
|
||||
orderSkuMap := skuList2Map(orderSkuList)
|
||||
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
|
||||
}
|
||||
}
|
||||
return 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 /RefundOrder [put]
|
||||
func (c *OrderController) RefundOrder() {
|
||||
c.callRefundOrder(func(params *tOrderRefundOrderParams) (retVal interface{}, errCode string, err error) {
|
||||
order, err := orderman.FixedOrderManager.LoadOrder(params.VendorOrderID, params.VendorID)
|
||||
if err != nil {
|
||||
return nil, "", err
|
||||
}
|
||||
afsSkuList, err := dao.GetAfsOrderSkuInfo(dao.GetDB(), params.VendorOrderID, "", params.VendorID)
|
||||
if err != nil {
|
||||
return nil, "", err
|
||||
}
|
||||
order = jxutils.RemoveSkuFromOrder(order, afsSkus2OrderSkus(afsSkuList))
|
||||
err = defsch.FixedScheduler.RefundOrder(params.Ctx, order, params.Reason)
|
||||
return retVal, "", err
|
||||
})
|
||||
}
|
||||
|
||||
func afsSkus2OrderSkus(afsSkuList []*model.OrderFinancialSkuExt) (skuList []*model.OrderSku) {
|
||||
for _, v := range afsSkuList {
|
||||
if v.IsAfsOrder == 1 {
|
||||
skuList = append(skuList, &model.OrderSku{
|
||||
SkuID: v.SkuID,
|
||||
VendorSkuID: v.VendorSkuID,
|
||||
Count: v.Count,
|
||||
})
|
||||
}
|
||||
}
|
||||
return skuList
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user