From e69dba21016723f924a5e65cd82b56c098809ac5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Wed, 5 Jul 2023 11:58:10 +0800 Subject: [PATCH] 1 --- .../partner/purchase/tao_vegetable/order.go | 46 +++++++++++++++---- .../purchase/tao_vegetable/order_afs.go | 20 +++++++- .../purchase/tao_vegetable/order_utils.go | 17 +++++-- controllers/jx_order.go | 2 +- 4 files changed, 69 insertions(+), 16 deletions(-) diff --git a/business/partner/purchase/tao_vegetable/order.go b/business/partner/purchase/tao_vegetable/order.go index 698ea0be4..9c7239d4b 100644 --- a/business/partner/purchase/tao_vegetable/order.go +++ b/business/partner/purchase/tao_vegetable/order.go @@ -578,32 +578,62 @@ func (c *PurchaseHandler) GetOrderRealMobile(ctx *jxcontext.Context, order *mode } func (c *PurchaseHandler) AgreeOrRefuseCancel(ctx *jxcontext.Context, order *model.GoodsOrder, isAgree bool, reason string) (err error) { + + db := dao.GetDB() + afsOrder, err := partner.CurOrderManager.LoadAfsOrder(order.VendorOrderID, order.VendorID) + if err != nil { + return err + } if isAgree { + // 加载子订单号 + orderDetail, _ := partner.CurOrderManager.LoadOrder(order.VendorOrderID, model.VendorIDTaoVegetable) + // 加载退款商品 + afsSkuOrder, _ := dao.GetOrderRefundSkuList(db, []string{order.VendorOrderID}) param := &request3156.AlibabaTclsAelophyRefundAgreeRequest{ StoreId: utils.String2Pointer(order.VendorStoreID), - OutOrderId: utils.String2Pointer(order.VendorOrderID), + OutOrderId: utils.String2Pointer(orderDetail.VendorOrderID2), + RefundId: utils.String2Pointer(afsOrder.AfsOrderID), OrderFrom: utils.Int64ToPointer(utils.Str2Int64(tao_vegetable.TaoVegetableChannelCode)), } + // 加载购买商品 + sku, _ := dao.GetSimpleOrderSkus(db, order.VendorOrderID, nil) + skuCount := 0 + for _, v := range sku { + skuCount += v.Count + } + + refundSkuCount := 0 + subRefundList := make([]domain3156.AlibabaTclsAelophyRefundAgreeSubrefundlist, 0, len(afsSkuOrder)) + for _, v := range afsSkuOrder { + subRefundList = append(subRefundList, domain3156.AlibabaTclsAelophyRefundAgreeSubrefundlist{ + OutSubOrderId: utils.String2Pointer(v.VendorSubOrderID), + RefundFee: utils.Int64ToPointer(v.UserMoney), + }) + refundSkuCount += v.Count + } + + // 全退退运费 + if skuCount == refundSkuCount { + + } + + param.SubRefundList = &subRefundList param.AuditMemo = utils.String2Pointer(fmt.Sprintf("商户同意退款")) if reason != "" { param.AuditMemo = utils.String2Pointer(*param.AuditMemo + fmt.Sprintf(",%s", reason)) } - err = getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromOrder(order), "").AgreeUserCancel(param) + err = getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromAfsOrder(afsOrder), order.VendorStoreID).AgreeUserCancel(param) } else { - afsOrder, err := partner.CurOrderManager.LoadAfsOrder(order.VendorOrderID, order.VendorID) - if err != nil { - return err - } param := &request3156.AlibabaTclsAelophyRefundDisagreeRequest{ RefundId: utils.String2Pointer(afsOrder.AfsOrderID), RejectReason: utils.String2Pointer(reason), OrderFrom: utils.Int64ToPointer(utils.Str2Int64(tao_vegetable.TaoVegetableChannelCode)), } - err = getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromOrder(order), "").DisAgreeUserCancel(param) + err = getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromAfsOrder(afsOrder), order.VendorStoreID).DisAgreeUserCancel(param) if err != nil { afsOrder.Status = model.AfsOrderStatusFailed afsOrder.VendorStatus = "老板拒绝" - afsOrder.ReasonDesc += reason + "," + afsOrder.ReasonDesc += "," + reason dao.UpdateEntity(dao.GetDB(), afsOrder, "Status", "ReasonDesc", "VendorStatus") } } diff --git a/business/partner/purchase/tao_vegetable/order_afs.go b/business/partner/purchase/tao_vegetable/order_afs.go index 3190c6b57..b44540f81 100644 --- a/business/partner/purchase/tao_vegetable/order_afs.go +++ b/business/partner/purchase/tao_vegetable/order_afs.go @@ -260,24 +260,40 @@ func (c *PurchaseHandler) GetAfsStatusFromVendorStatus(notifyType string) int { // 审核售后单申请 func (c *PurchaseHandler) AgreeOrRefuseRefund(ctx *jxcontext.Context, order *model.AfsOrder, approveType int, reason string) (err error) { + db := dao.GetDB() if approveType == partner.AfsApproveTypeRefused { // 加载子订单号 orderDetail, _ := partner.CurOrderManager.LoadOrder(order.VendorOrderID, model.VendorIDTaoVegetable) // 加载退款商品 - afsSkuOrder, _ := dao.GetOrderRefundSkuList(dao.GetDB(), []string{order.VendorOrderID}) + afsSkuOrder, _ := dao.GetOrderRefundSkuList(db, []string{order.VendorOrderID}) param := &request3156.AlibabaTclsAelophyRefundAgreeRequest{ StoreId: utils.String2Pointer(order.VendorStoreID), OutOrderId: utils.String2Pointer(orderDetail.VendorOrderID2), RefundId: utils.String2Pointer(order.AfsOrderID), OrderFrom: utils.Int64ToPointer(utils.Str2Int64(tao_vegetable.TaoVegetableChannelCode)), } + // 加载购买商品 + sku, _ := dao.GetSimpleOrderSkus(db, order.VendorOrderID, nil) + skuCount := 0 + for _, v := range sku { + skuCount += v.Count + } + + refundSkuCount := 0 subRefundList := make([]domain3156.AlibabaTclsAelophyRefundAgreeSubrefundlist, 0, len(afsSkuOrder)) for _, v := range afsSkuOrder { subRefundList = append(subRefundList, domain3156.AlibabaTclsAelophyRefundAgreeSubrefundlist{ OutSubOrderId: utils.String2Pointer(v.VendorSubOrderID), RefundFee: utils.Int64ToPointer(v.UserMoney), }) + refundSkuCount += v.Count } + + // 全退退运费 + if skuCount == refundSkuCount { + + } + param.SubRefundList = &subRefundList param.AuditMemo = utils.String2Pointer(fmt.Sprintf("商户同意退款")) if reason != "" { @@ -296,7 +312,7 @@ func (c *PurchaseHandler) AgreeOrRefuseRefund(ctx *jxcontext.Context, order *mod if err != nil { order.Status = model.AfsOrderStatusFailed order.VendorStatus = "老板拒绝" - order.ReasonDesc += reason + "," + order.ReasonDesc += "," + reason dao.UpdateEntity(dao.GetDB(), order, "Status", "ReasonDesc", "VendorStatus") } } diff --git a/business/partner/purchase/tao_vegetable/order_utils.go b/business/partner/purchase/tao_vegetable/order_utils.go index 88fd9f5e7..e34691892 100644 --- a/business/partner/purchase/tao_vegetable/order_utils.go +++ b/business/partner/purchase/tao_vegetable/order_utils.go @@ -31,12 +31,19 @@ func orderStatusChangeNotice(order *model.GoodsOrder, orderStatus string) (*requ if len(skuList) == model.NO { return nil, fmt.Errorf("订单商品列表为零,请管理员检查") } - for _, v := range skuList { + orderDetail, err := getAPI(order.VendorOrgCode, 0, "").QueryOrderDetail(&request591.AlibabaAelophyOrderGetRequest{OrderGetRequest: &domain591.AlibabaAelophyOrderGetOrderGetRequest{ + StoreId: utils.String2Pointer(order.VendorStoreID), + BizOrderId: utils.Int64ToPointer(utils.Str2Int64(order.VendorOrderID)), + }}) + if err != nil { + return nil, err + } + for _, v := range *orderDetail.SubOrderResponseList { workCallbackSubOrderInfo := domain591.AlibabaAelophyOrderWorkCallbackWorkCallbackSubOrderInfo{ - BizSubOrderId: utils.Int64ToPointer(utils.Str2Int64(v.VendorSubOrderID)), - SkuCode: utils.String2Pointer(v.VendorSkuID), - PickSaleQuantity: utils.String2Pointer(utils.Int2Str(v.Count)), - PickStockQuantity: utils.String2Pointer(utils.Int2Str(v.Count)), + BizSubOrderId: v.BizSubOrderId, + SkuCode: v.SkuCode, + PickSaleQuantity: utils.String2Pointer(utils.Float64ToStr(*v.BuySaleQuantity)), + PickStockQuantity: utils.String2Pointer(utils.Float64ToStr(*v.BuyStockQuantity)), } workCallbackSubOrderInfoList = append(workCallbackSubOrderInfoList, workCallbackSubOrderInfo) } diff --git a/controllers/jx_order.go b/controllers/jx_order.go index b01792fac..9641411c2 100644 --- a/controllers/jx_order.go +++ b/controllers/jx_order.go @@ -699,7 +699,7 @@ func (c *OrderController) ConfirmReceiveGoods() { }) } -// @Title 同意或拒绝用户取消订单申请 +// @Title 同意或拒绝用户取消订单申请 (饿百) // @Description 同意或拒绝用户取消订单申请 // @Param token header string true "认证token" // @Param vendorOrderID formData string true "订单ID"