This commit is contained in:
邹宗楠
2023-07-11 09:09:31 +08:00
parent 1628d5cf0e
commit 5cb534a4a7

View File

@@ -641,48 +641,6 @@ func (c *PurchaseHandler) AgreeOrRefuseCancel(ctx *jxcontext.Context, order *mod
// CancelOrder 商户取消订单(取消订单全部商品)
func (c *PurchaseHandler) CancelOrder(ctx *jxcontext.Context, order *model.GoodsOrder, reason string) (err error) {
api := getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromOrder(order), "")
localSkuList, _ := dao.GetSimpleOrderSkus(dao.GetDB(), order.VendorOrderID, nil)
skuMap := make(map[string]*model.OrderSku, 0)
for _, v := range localSkuList {
skuMap[v.VendorSubOrderID] = v
}
orderSkuList, err := getOrderCancelList(api, order)
if err != nil {
return err
}
outSubOrderIds := make([]domain3156.AlibabaTclsAelophyRefundCsapplyNewCsApplySubOrderDTO, 0, len(*orderSkuList.OutSubOrders))
for _, v := range *orderSkuList.OutSubOrders {
if *v.CanReverse {
subOrder := domain3156.AlibabaTclsAelophyRefundCsapplyNewCsApplySubOrderDTO{
RefundFee: utils.String2Pointer(utils.Int64ToStr(*v.MaxRefundFee)),
RefundAmount: nil,
OutSubOrderId: v.OutSubOrderId,
}
if skuMap[*v.OutSubOrderId] != nil {
subOrder.RefundAmount = utils.String2Pointer(utils.Int2Str(skuMap[*v.OutSubOrderId].Count))
} else {
continue
}
outSubOrderIds = append(outSubOrderIds, subOrder)
}
}
reasonId := *orderSkuList.ReasonList
param := &request3156.AlibabaTclsAelophyRefundCsapplyNewRequest{
RefundCsApplyDTO: &domain3156.AlibabaTclsAelophyRefundCsapplyNewRefundCsApplyNewDTO{
ReasonId: reasonId[0].ReasonId,
OutOrderId: utils.String2Pointer(order.VendorOrderID2),
StoreId: utils.String2Pointer(order.VendorStoreID),
RequestId: utils.String2Pointer(fmt.Sprintf("%s%d", order.VendorStoreID, time.Now().UnixNano())),
Memo: utils.String2Pointer(reason),
SubRefundOrders: &outSubOrderIds,
RefundReason: utils.String2Pointer(reason),
},
}
if err = api.PartialRefund(param); err == nil {
c.postFakeMsg(order.VendorOrderID, tao_vegetable.OrderStatusMerchantCancel, tao_vegetable.OrderStatusMerchantCancel)
}
if order.Status < model.OrderStatusEndBegin {
// 发送取消状态,商户取消
@@ -693,6 +651,50 @@ func (c *PurchaseHandler) CancelOrder(ctx *jxcontext.Context, order *model.Goods
Status: utils.String2Pointer(tao_vegetable.OrderStatusMerchantCancel),
},
})
} else {
localSkuList, _ := dao.GetSimpleOrderSkus(dao.GetDB(), order.VendorOrderID, nil)
skuMap := make(map[string]*model.OrderSku, 0)
for _, v := range localSkuList {
skuMap[v.VendorSubOrderID] = v
}
orderSkuList, err := getOrderCancelList(api, order)
if err != nil {
return err
}
outSubOrderIds := make([]domain3156.AlibabaTclsAelophyRefundCsapplyNewCsApplySubOrderDTO, 0, len(*orderSkuList.OutSubOrders))
for _, v := range *orderSkuList.OutSubOrders {
if *v.CanReverse {
subOrder := domain3156.AlibabaTclsAelophyRefundCsapplyNewCsApplySubOrderDTO{
RefundFee: utils.String2Pointer(utils.Int64ToStr(*v.MaxRefundFee)),
RefundAmount: nil,
OutSubOrderId: v.OutSubOrderId,
}
if skuMap[*v.OutSubOrderId] != nil {
subOrder.RefundAmount = utils.String2Pointer(utils.Int2Str(skuMap[*v.OutSubOrderId].Count))
} else {
continue
}
outSubOrderIds = append(outSubOrderIds, subOrder)
}
}
reasonId := *orderSkuList.ReasonList
param := &request3156.AlibabaTclsAelophyRefundCsapplyNewRequest{
RefundCsApplyDTO: &domain3156.AlibabaTclsAelophyRefundCsapplyNewRefundCsApplyNewDTO{
ReasonId: reasonId[0].ReasonId,
OutOrderId: utils.String2Pointer(order.VendorOrderID2),
StoreId: utils.String2Pointer(order.VendorStoreID),
RequestId: utils.String2Pointer(fmt.Sprintf("%s%d", order.VendorStoreID, time.Now().UnixNano())),
Memo: utils.String2Pointer(reason),
SubRefundOrders: &outSubOrderIds,
RefundReason: utils.String2Pointer(reason),
OrderFrom: utils.Int64ToPointer(tao_vegetable.ChannelCome),
},
}
if err = api.PartialRefund(param); err == nil {
c.postFakeMsg(order.VendorOrderID, tao_vegetable.OrderStatusMerchantCancel, tao_vegetable.OrderStatusMerchantCancel)
}
}
return err
}