This commit is contained in:
邹宗楠
2023-07-10 18:45:52 +08:00
parent e11958e45d
commit 1628d5cf0e
2 changed files with 57 additions and 38 deletions

View File

@@ -641,26 +641,42 @@ func (c *PurchaseHandler) AgreeOrRefuseCancel(ctx *jxcontext.Context, order *mod
// CancelOrder 商户取消订单(取消订单全部商品) // CancelOrder 商户取消订单(取消订单全部商品)
func (c *PurchaseHandler) CancelOrder(ctx *jxcontext.Context, order *model.GoodsOrder, reason string) (err error) { func (c *PurchaseHandler) CancelOrder(ctx *jxcontext.Context, order *model.GoodsOrder, reason string) (err error) {
api := getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromOrder(order), "") 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) orderSkuList, err := getOrderCancelList(api, order)
if err != nil { if err != nil {
return err return err
} }
outSubOrderIds := make([]string, 0, len(*orderSkuList.OutSubOrders)) outSubOrderIds := make([]domain3156.AlibabaTclsAelophyRefundCsapplyNewCsApplySubOrderDTO, 0, len(*orderSkuList.OutSubOrders))
for _, v := range *orderSkuList.OutSubOrders { for _, v := range *orderSkuList.OutSubOrders {
if *v.CanReverse { if *v.CanReverse {
outSubOrderIds = append(outSubOrderIds, *v.OutSubOrderId) 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 reasonId := *orderSkuList.ReasonList
param := &request3156.AlibabaTclsAelophyRefundCsapplyRequest{ param := &request3156.AlibabaTclsAelophyRefundCsapplyNewRequest{
RefundCsApplyDTO: &domain3156.AlibabaTclsAelophyRefundCsapplyRefundCsApplyDto{ RefundCsApplyDTO: &domain3156.AlibabaTclsAelophyRefundCsapplyNewRefundCsApplyNewDTO{
ReasonId: reasonId[0].ReasonId, ReasonId: reasonId[0].ReasonId,
OutOrderId: utils.String2Pointer(order.VendorOrderID2), OutOrderId: utils.String2Pointer(order.VendorOrderID2),
StoreId: utils.String2Pointer(order.VendorStoreID), StoreId: utils.String2Pointer(order.VendorStoreID),
RequestId: utils.String2Pointer(fmt.Sprintf("%s%d", order.VendorStoreID, time.Now().UnixNano())), RequestId: utils.String2Pointer(fmt.Sprintf("%s%d", order.VendorStoreID, time.Now().UnixNano())),
OutSubOrderIds: &outSubOrderIds, Memo: utils.String2Pointer(reason),
Memo: utils.String2Pointer(reason), SubRefundOrders: &outSubOrderIds,
RefundReason: utils.String2Pointer(reason),
}, },
} }
@@ -668,15 +684,16 @@ func (c *PurchaseHandler) CancelOrder(ctx *jxcontext.Context, order *model.Goods
c.postFakeMsg(order.VendorOrderID, tao_vegetable.OrderStatusMerchantCancel, tao_vegetable.OrderStatusMerchantCancel) c.postFakeMsg(order.VendorOrderID, tao_vegetable.OrderStatusMerchantCancel, tao_vegetable.OrderStatusMerchantCancel)
} }
// 发送取消状态,商户取消 if order.Status < model.OrderStatusEndBegin {
err = api.DeliveryFinish(&request591.AlibabaAelophyOrderWorkCallbackRequest{ // 发送取消状态,商户取消
WorkCallbackRequest: &domain591.AlibabaAelophyOrderWorkCallbackWorkCallbackRequest{ err = api.DeliveryFinish(&request591.AlibabaAelophyOrderWorkCallbackRequest{
StoreId: utils.String2Pointer(order.VendorStoreID), WorkCallbackRequest: &domain591.AlibabaAelophyOrderWorkCallbackWorkCallbackRequest{
BizOrderId: utils.Int64ToPointer(utils.Str2Int64(order.VendorOrderID)), StoreId: utils.String2Pointer(order.VendorStoreID),
Status: utils.String2Pointer(tao_vegetable.OrderStatusMerchantCancel), BizOrderId: utils.Int64ToPointer(utils.Str2Int64(order.VendorOrderID)),
}, Status: utils.String2Pointer(tao_vegetable.OrderStatusMerchantCancel),
}) },
})
}
return err return err
} }

View File

@@ -429,26 +429,28 @@ func (c *PurchaseHandler) callbackAfsMsg2Status(status string, msg interface{})
orderStatus.Remark = fmt.Sprintf("QueryTaoAfsOrderId:%s", refundData.BizSubRefundId) orderStatus.Remark = fmt.Sprintf("QueryTaoAfsOrderId:%s", refundData.BizSubRefundId)
orderStatus.VendorOrderID = refundData.OutMainRefundId orderStatus.VendorOrderID = refundData.OutMainRefundId
} else { } else {
param := &request591.AlibabaWdkOrderRefundGetRequest{ var refundAfs *domain591.AlibabaWdkOrderRefundGetOrderSyncRefundListResult
OrderFrom: utils.Int64ToPointer(utils.Str2Int64(tao_vegetable.TaoVegetableChannelCode)), for i := 0; i < 4; i++ {
ShopId: nil, param := &request591.AlibabaWdkOrderRefundGetRequest{
StoreId: utils.String2Pointer(refundData.StoreId), OrderFrom: utils.Int64ToPointer(utils.Str2Int64(tao_vegetable.TaoVegetableChannelCode)),
RefundIds: &[]int64{utils.Str2Int64(refundData.BizSubRefundId)}, ShopId: nil,
} StoreId: utils.String2Pointer(refundData.StoreId),
time.Sleep(time.Second * 1) RefundIds: &[]int64{utils.Str2Int64(refundData.BizSubRefundId)},
refundAfs, _ := getAPI("", 0, refundData.StoreId).QueryAfsOrderDetail(param) }
if refundAfs.Orders == nil { refundAfs, _ = getAPI("", 0, refundData.StoreId).QueryAfsOrderDetail(param)
globals.SugarLogger.Debugf("================售中退款成功回调查询售后单为空:") if refundAfs.Orders != nil {
} else { break
orders := *refundAfs.Orders }
orderStatus.RefVendorOrderID = utils.Int64ToStr(*orders[0].OriginParentId) time.Sleep(time.Second * 1)
orderStatus.VendorStatus = fmt.Sprintf("%s:%s", tao_vegetable.OrderStatusRefundSuccess, "用户售中退款成功")
orderStatus.Status = c.GetAfsStatusFromVendorStatus(tao_vegetable.OrderStatusRefundSuccess)
orderStatus.StatusTime = time.Now()
orderStatus.Remark = fmt.Sprintf("QueryTaoAfsOrderId:%s", refundData.BizSubRefundId)
orderStatus.VendorOrderID = utils.Int64ToStr(*orders[0].RefundOrderId)
taoRefundList = refundAfs.Orders
} }
orders := *refundAfs.Orders
orderStatus.RefVendorOrderID = utils.Int64ToStr(*orders[0].OriginParentId)
orderStatus.VendorStatus = fmt.Sprintf("%s:%s", tao_vegetable.OrderStatusRefundSuccess, "用户售中退款成功")
orderStatus.Status = c.GetAfsStatusFromVendorStatus(tao_vegetable.OrderStatusRefundSuccess)
orderStatus.StatusTime = time.Now()
orderStatus.Remark = fmt.Sprintf("QueryTaoAfsOrderId:%s", refundData.BizSubRefundId)
orderStatus.VendorOrderID = utils.Int64ToStr(*orders[0].RefundOrderId)
taoRefundList = refundAfs.Orders
} }
} }