From 5d6e93d64b4e7bcc74cefd2ed91d83f26def1a9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Tue, 4 Jul 2023 10:49:13 +0800 Subject: [PATCH 01/30] 1 --- .../purchase/tao_vegetable/store_sku2.go | 53 +++++++++++++++++-- 1 file changed, 48 insertions(+), 5 deletions(-) diff --git a/business/partner/purchase/tao_vegetable/store_sku2.go b/business/partner/purchase/tao_vegetable/store_sku2.go index 40b744074..e31e2ffcb 100644 --- a/business/partner/purchase/tao_vegetable/store_sku2.go +++ b/business/partner/purchase/tao_vegetable/store_sku2.go @@ -225,7 +225,7 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI api := getAPI(getStoreVendorOrgCode(storeID), storeID, vendorStoreID) if isCreate { - failedList, err = createTaoVegetable(api, storeSkuList, vendorStoreID, storeID, syncType) + failedList, err = createTaoVegetable(ctx, api, storeSkuList, vendorStoreID, storeID, syncType) globals.SugarLogger.Debugf("创建淘鲜达商品异常:%v", err) } else { failedList, err = UpdateTaoVegetable(api, storeSkuList, vendorStoreID, storeID, syncType) @@ -278,7 +278,7 @@ func UpdateTaoVegetable(api *tao_vegetable.API, storeSkuList []*dao.StoreSkuSync } // createTaoVegetable 创建淘鲜达商品 -func createTaoVegetable(api *tao_vegetable.API, storeSkuList []*dao.StoreSkuSyncInfo, vendorStoreID string, storeID int, syncType string) (failedList []*partner.StoreSkuInfoWithErr, err error) { +func createTaoVegetable(ctx *jxcontext.Context, api *tao_vegetable.API, storeSkuList []*dao.StoreSkuSyncInfo, vendorStoreID string, storeID int, syncType string) (failedList []*partner.StoreSkuInfoWithErr, err error) { createPram := &request585.AlibabaWdkSkuAddRequest{} param := make([]domain585.AlibabaWdkSkuAddSkuDo, 0, 0) totalCount := len(storeSkuList) @@ -376,22 +376,30 @@ func createTaoVegetable(api *tao_vegetable.API, storeSkuList []*dao.StoreSkuSync createPram.ParamList = ¶m result, err := api.AddStoreSku(createPram) globals.SugarLogger.Debugf("创建淘鲜达商品异常 result :%s", utils.Format4Output(result, false)) - if err != nil { globals.SugarLogger.Debugf("创建淘鲜达商品异常:%s", err.Error()) } // 记录失败的同步数据 - failedList, vendorSkuIdMap = SelectStoreSkuListByFoodList(storeSkuList, *result, storeID, model.VendorChineseNames[model.VendorIDTaoVegetable], syncType) + failedList2, vendorSkuIdMap2 := SelectStoreSkuListByFoodList(storeSkuList, *result, storeID, model.VendorChineseNames[model.VendorIDTaoVegetable], syncType) + failedList = append(failedList, failedList2...) + for k, v := range vendorSkuIdMap2 { + vendorSkuIdMap[k] = v + } + createPram.ParamList = nil param = make([]domain585.AlibabaWdkSkuAddSkuDo, 0, 0) } } - globals.SugarLogger.Debugf("vendorSkuIdMap=====err := %v", utils.Format4Output(vendorSkuIdMap, false)) + + var successSku = make([]int, 0, len(vendorSkuIdMap)) for _, v := range storeSkuList { if k, ok := vendorSkuIdMap[utils.Int2Str(v.SkuID)]; ok { v.VendorSkuID = k + successSku = append(successSku, v.SkuID) } } + failedListStock := updateStoreSkusStockByCreate(ctx, api, storeID, vendorStoreID, successSku) + failedList = append(failedList, failedListStock...) globals.SugarLogger.Debugf("storeSkuList=====err := %s", utils.Format4Output(storeSkuList, false)) globals.SugarLogger.Debugf("createTaoVegetable=====err := %v", err) @@ -543,6 +551,41 @@ func (p *PurchaseHandler) UpdateStoreSkusPrice(ctx *jxcontext.Context, vendorOrg return failedList, err } +// updateStoreSkusStockByCreate 创建时更新库存数量 +func updateStoreSkusStockByCreate(ctx *jxcontext.Context, api *tao_vegetable.API, storeID int, vendorStoreID string, storeSkuList []int) (failedList []*partner.StoreSkuInfoWithErr) { + param := request589.AlibabaWdkStockPublishRequest{} + batchStockPublishDto := &domain589.AlibabaWdkStockPublishBatchStockPublishDto{ + UpdateType: utils.Int64ToPointer(tao_vegetable.UpdateTypeStoke), + BillNo: utils.String2Pointer(utils.Int64ToStr(time.Now().UnixNano())), + BillType: utils.Int64ToPointer(tao_vegetable.UpdateTypeStokeBillType), + PublishSource: utils.String2Pointer(vendorStoreID), + ShopCode: utils.String2Pointer(vendorStoreID), + Operator: utils.String2Pointer(ctx.GetUserName()), + StockPublishDtos: nil, + } + stockPublishDtos := make([]domain589.AlibabaWdkStockPublishStockPublishDto, 0, 0) + for index, v := range storeSkuList { + stockPublishDtos = append(stockPublishDtos, domain589.AlibabaWdkStockPublishStockPublishDto{ + SkuCode: utils.String2Pointer(utils.Int2Str(v)), + Quantity: utils.String2Pointer("9999"), + OrderNo: utils.String2Pointer(fmt.Sprintf("%s_%d_%d", vendorStoreID, time.Now().UnixNano(), 84671)), + OrderType: utils.String2Pointer("10006800"), // 这个不太确定 + }) + if (index+model.YES)%tao_vegetable.MAXHandleCount == model.NO || (index+1) == len(storeSkuList) { + batchStockPublishDto.StockPublishDtos = &stockPublishDtos + param.BatchStockPublishDto = batchStockPublishDto + if err := api.StoreSkuStock(¶m); err != nil { + failedList = append(failedList, putils.GetErrMsg2FailedSingleList(v, err, storeID, model.VendorChineseNames[model.VendorIDTaoVegetable], "更新库存错误")...) + } + stockPublishDtos = make([]domain589.AlibabaWdkStockPublishStockPublishDto, 0, 0) + param.BatchStockPublishDto = nil + } + } + globals.SugarLogger.Debugf("UpdateStoreSkusStock=====err := %v", failedList) + return failedList +} + +// UpdateStoreSkusStock 操作更新库存数量 func (p *PurchaseHandler) UpdateStoreSkusStock(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (failedList []*partner.StoreSkuInfoWithErr, err error) { api := getAPI(getStoreVendorOrgCode(storeID), storeID, vendorStoreID) From 811eaee723ad4f56deb85c18b2fbd3811473dfbc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Tue, 4 Jul 2023 13:49:55 +0800 Subject: [PATCH 02/30] 1 --- business/jxstore/cms/sync_store_sku.go | 8 ++++- controllers/taobao_vegetable.go | 42 ++++++++++++-------------- 2 files changed, 26 insertions(+), 24 deletions(-) diff --git a/business/jxstore/cms/sync_store_sku.go b/business/jxstore/cms/sync_store_sku.go index 5ce233747..b045953d2 100644 --- a/business/jxstore/cms/sync_store_sku.go +++ b/business/jxstore/cms/sync_store_sku.go @@ -698,7 +698,13 @@ func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, causeFlag // api.JdShop2API.SetCookieWithStr(configs[0].Value) // } } - + globals.SugarLogger.Debugf("createList ==== := %s", utils.Format4Output(createList, false)) + globals.SugarLogger.Debugf("updateList ==== := %s", utils.Format4Output(updateList, false)) + globals.SugarLogger.Debugf("deleteList ==== := %s", utils.Format4Output(deleteList, false)) + globals.SugarLogger.Debugf("stockList ==== := %s", utils.Format4Output(stockList, false)) + globals.SugarLogger.Debugf("onlineList ==== := %s", utils.Format4Output(onlineList, false)) + globals.SugarLogger.Debugf("offlineList ==== := %s", utils.Format4Output(offlineList, false)) + globals.SugarLogger.Debugf("priceList ==== := %s", utils.Format4Output(priceList, false)) task := tasksch.NewParallelTask("syncStoreSkuNew", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(isContinueWhenError2), ctx, func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { step := batchItemList[0].(int) diff --git a/controllers/taobao_vegetable.go b/controllers/taobao_vegetable.go index 4170e1f44..8f1be1ac5 100644 --- a/controllers/taobao_vegetable.go +++ b/controllers/taobao_vegetable.go @@ -89,7 +89,7 @@ func (c *TaoBaoVegetableController) OrderStatus() { } // 获取body参数 - order, err := api.TaoVegetableApi.ReaderOrderInfo(c.Ctx.Request) + order, body, err := api.TaoVegetableApi.ReaderOrderInfo(c.Ctx.Request) globals.SugarLogger.Debugf("order_status ReaderOrderInfo:= %s", utils.Format4Output(order, false)) globals.SugarLogger.Debugf("order_status ReaderOrderInfo:= %s", utils.Format4Output(order, false)) if err != nil { @@ -99,16 +99,16 @@ func (c *TaoBaoVegetableController) OrderStatus() { } // 验签 - sign := Sign(values, utils.Format4Output(order, false), api.TaoVegetableApi.GetAppSecret()) + sign := Sign(values, body, api.TaoVegetableApi.GetAppSecret()) if sign != values.Get("sign") { c.Data["json"] = tao_vegetable.CallBackResultSign(fmt.Errorf("非法签名")) c.ServeJSON() return - } /*else { + } else { c.Data["json"] = tao_vegetable.CallBackResultSign(nil) c.ServeJSON() return - }*/ + } callbackResponse := taoVegetable.OnCallbackMsg(tao_vegetable.OrderStatusChange, utils.Int64ToStr(order.BizOrderId), order) c.Data["json"] = callbackResponse @@ -130,7 +130,7 @@ func (c *TaoBaoVegetableController) ApplyCancelOrder() { return } - afsOrder, err := api.TaoVegetableApi.UserApplyRefund(c.Ctx.Request) + afsOrder, body, err := api.TaoVegetableApi.UserApplyRefund(c.Ctx.Request) globals.SugarLogger.Debugf("ApplyCancelOrder := %s", utils.Format4Output(afsOrder, false)) globals.SugarLogger.Debugf("ApplyCancelOrder err := %s", utils.Format4Output(err, false)) if err != nil { @@ -141,7 +141,7 @@ func (c *TaoBaoVegetableController) ApplyCancelOrder() { } // 验签 FFF779F16365992BD721C9C1A027F03C - sign := Sign(values, utils.Format4Output(afsOrder, false), api.TaoVegetableApi.GetAppSecret()) + sign := Sign(values, body, api.TaoVegetableApi.GetAppSecret()) if sign != values.Get("sign") { // 76626F983F0F7E4A159AD64F9B13B332 c.Data["json"] = tao_vegetable.CallBackResultSign(fmt.Errorf("非法签名")) c.ServeJSON() @@ -172,7 +172,7 @@ func (c *TaoBaoVegetableController) UserCancelRefund() { return } - afsOrder, err := api.TaoVegetableApi.UserCancelRefundApply(c.Ctx.Request) + afsOrder, body, err := api.TaoVegetableApi.UserCancelRefundApply(c.Ctx.Request) globals.SugarLogger.Debugf("UserCancelRefund := %s", utils.Format4Output(afsOrder, false)) globals.SugarLogger.Debugf("UserCancelRefund err := %s", utils.Format4Output(err, false)) if err != nil { @@ -183,16 +183,16 @@ func (c *TaoBaoVegetableController) UserCancelRefund() { } // 验签 - sign := Sign(values, utils.Format4Output(afsOrder, false), api.TaoVegetableApi.GetAppSecret()) + sign := Sign(values, body, api.TaoVegetableApi.GetAppSecret()) if sign != values.Get("sign") { c.Data["json"] = tao_vegetable.CallBackResultSign(fmt.Errorf("非法签名")) c.ServeJSON() return - } /*else { + } else { c.Data["json"] = tao_vegetable.CallBackResultSign(nil) c.ServeJSON() return - }*/ + } callbackResponse := taoVegetable.OnCallbackMsg(tao_vegetable.OrderStatusCancelAfs, afsOrder.OutOrderId, afsOrder) c.Data["json"] = callbackResponse @@ -214,7 +214,7 @@ func (c *TaoBaoVegetableController) CancelOnSaleRefundOrder() { return } - afsOrder, err := api.TaoVegetableApi.OnSaleRefundOrder(c.Ctx.Request) + afsOrder, body, err := api.TaoVegetableApi.OnSaleRefundOrder(c.Ctx.Request) globals.SugarLogger.Debugf("CancelOnSaleRefundOrder := %s", utils.Format4Output(afsOrder, false)) globals.SugarLogger.Debugf("CancelOnSaleRefundOrder err := %s", utils.Format4Output(err, false)) if err != nil { @@ -225,16 +225,16 @@ func (c *TaoBaoVegetableController) CancelOnSaleRefundOrder() { } // 验签 - sign := Sign(values, utils.Format4Output(afsOrder, false), api.TaoVegetableApi.GetAppSecret()) + sign := Sign(values, body, api.TaoVegetableApi.GetAppSecret()) if sign != values.Get("sign") { c.Data["json"] = tao_vegetable.CallBackResultSign(fmt.Errorf("非法签名")) c.ServeJSON() return - } /*else { + } else { c.Data["json"] = tao_vegetable.CallBackResultSign(nil) c.ServeJSON() return - }*/ + } callbackResponse := taoVegetable.OnCallbackMsg(tao_vegetable.OrderStatusOnSaleCancel, utils.Int64ToStr(afsOrder.PartCancelRequest.BizOrderId), afsOrder) c.Data["json"] = callbackResponse @@ -256,7 +256,7 @@ func (c *TaoBaoVegetableController) RefundOrderSuccess() { return } - refundSuccess, err := api.TaoVegetableApi.RefundOrderFinish(c.Ctx.Request) + refundSuccess, body, err := api.TaoVegetableApi.RefundOrderFinish(c.Ctx.Request) globals.SugarLogger.Debugf("RefundOrderSuccess := %s", utils.Format4Output(refundSuccess, false)) globals.SugarLogger.Debugf("RefundOrderSuccess err := %s", utils.Format4Output(err, false)) if err != nil { @@ -266,16 +266,16 @@ func (c *TaoBaoVegetableController) RefundOrderSuccess() { return } // 验签 - sign := Sign(values, utils.Format4Output(refundSuccess, false), api.TaoVegetableApi.GetAppSecret()) + sign := Sign(values, body, api.TaoVegetableApi.GetAppSecret()) if sign != values.Get("sign") { c.Data["json"] = tao_vegetable.CallBackResultSign(fmt.Errorf("非法签名")) c.ServeJSON() return - } /*else { + } else { c.Data["json"] = tao_vegetable.CallBackResultSign(nil) c.ServeJSON() return - }*/ + } callbackResponse := taoVegetable.OnCallbackMsg(tao_vegetable.OrderStatusRefundSuccess, refundSuccess.OutSubOrderId, refundSuccess) c.Data["json"] = callbackResponse @@ -293,10 +293,6 @@ func Sign(param url.Values, data, secret string) string { } sort.Strings(publicParam) - resultParam := strings.ReplaceAll(strings.ReplaceAll(strings.ReplaceAll(data, "\n", ""), "\t", ""), " ", "") - if strings.Contains(resultParam, `\u0026`) { - resultParam = strings.ReplaceAll(resultParam, `\u0026`, "&") - } - cc := secret + strings.Join(publicParam, "") + resultParam + secret + cc := secret + strings.Join(publicParam, "") + data + secret return fmt.Sprintf("%X", md5.Sum([]byte(cc))) } From ae77df4b37da20ea697e549a0cdeaf4aa9e2a25c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Tue, 4 Jul 2023 14:03:32 +0800 Subject: [PATCH 03/30] 1 --- controllers/taobao_vegetable.go | 124 ++++++++++++++++++-------------- 1 file changed, 70 insertions(+), 54 deletions(-) diff --git a/controllers/taobao_vegetable.go b/controllers/taobao_vegetable.go index 8f1be1ac5..a6f5f77f3 100644 --- a/controllers/taobao_vegetable.go +++ b/controllers/taobao_vegetable.go @@ -100,20 +100,23 @@ func (c *TaoBaoVegetableController) OrderStatus() { // 验签 sign := Sign(values, body, api.TaoVegetableApi.GetAppSecret()) - if sign != values.Get("sign") { - c.Data["json"] = tao_vegetable.CallBackResultSign(fmt.Errorf("非法签名")) - c.ServeJSON() - return - } else { - c.Data["json"] = tao_vegetable.CallBackResultSign(nil) + switch order.MerchantCode { + case "CSSJ": // 淘宝回调地址检测 + if sign != values.Get("sign") { + c.Data["json"] = tao_vegetable.CallBackResultSign(fmt.Errorf("非法签名")) + c.ServeJSON() + return + } else { + c.Data["json"] = tao_vegetable.CallBackResultSign(nil) + c.ServeJSON() + return + } + default: + callbackResponse := taoVegetable.OnCallbackMsg(tao_vegetable.OrderStatusChange, utils.Int64ToStr(order.BizOrderId), order) + c.Data["json"] = callbackResponse c.ServeJSON() return } - - callbackResponse := taoVegetable.OnCallbackMsg(tao_vegetable.OrderStatusChange, utils.Int64ToStr(order.BizOrderId), order) - c.Data["json"] = callbackResponse - c.ServeJSON() - return } // ApplyCancelOrder 用户发起售后申请 @@ -142,20 +145,23 @@ func (c *TaoBaoVegetableController) ApplyCancelOrder() { // 验签 FFF779F16365992BD721C9C1A027F03C sign := Sign(values, body, api.TaoVegetableApi.GetAppSecret()) - if sign != values.Get("sign") { // 76626F983F0F7E4A159AD64F9B13B332 - c.Data["json"] = tao_vegetable.CallBackResultSign(fmt.Errorf("非法签名")) - c.ServeJSON() - return - } else { - c.Data["json"] = tao_vegetable.CallBackResultSign(nil) + switch afsOrder.MerchantCode { + case "CSSJ": + if sign != values.Get("sign") { // 76626F983F0F7E4A159AD64F9B13B332 + c.Data["json"] = tao_vegetable.CallBackResultSign(fmt.Errorf("非法签名")) + c.ServeJSON() + return + } else { + c.Data["json"] = tao_vegetable.CallBackResultSign(nil) + c.ServeJSON() + return + } + default: + callbackResponse := taoVegetable.OnCallbackMsg(tao_vegetable.OrderStatusApplyAfs, afsOrder.OutOrderId, afsOrder) + c.Data["json"] = callbackResponse c.ServeJSON() return } - - callbackResponse := taoVegetable.OnCallbackMsg(tao_vegetable.OrderStatusApplyAfs, afsOrder.OutOrderId, afsOrder) - c.Data["json"] = callbackResponse - c.ServeJSON() - return } // UserCancelRefund 用户取消售后 @@ -184,20 +190,24 @@ func (c *TaoBaoVegetableController) UserCancelRefund() { // 验签 sign := Sign(values, body, api.TaoVegetableApi.GetAppSecret()) - if sign != values.Get("sign") { - c.Data["json"] = tao_vegetable.CallBackResultSign(fmt.Errorf("非法签名")) - c.ServeJSON() - return - } else { - c.Data["json"] = tao_vegetable.CallBackResultSign(nil) + switch afsOrder.MerchantCode { + case "CSSJ": + if sign != values.Get("sign") { + c.Data["json"] = tao_vegetable.CallBackResultSign(fmt.Errorf("非法签名")) + c.ServeJSON() + return + } else { + c.Data["json"] = tao_vegetable.CallBackResultSign(nil) + c.ServeJSON() + return + } + default: + callbackResponse := taoVegetable.OnCallbackMsg(tao_vegetable.OrderStatusCancelAfs, afsOrder.OutOrderId, afsOrder) + c.Data["json"] = callbackResponse c.ServeJSON() return } - callbackResponse := taoVegetable.OnCallbackMsg(tao_vegetable.OrderStatusCancelAfs, afsOrder.OutOrderId, afsOrder) - c.Data["json"] = callbackResponse - c.ServeJSON() - return } // CancelOnSaleRefundOrder 用户售中取消(走订单取消流程) @@ -226,20 +236,23 @@ func (c *TaoBaoVegetableController) CancelOnSaleRefundOrder() { // 验签 sign := Sign(values, body, api.TaoVegetableApi.GetAppSecret()) - if sign != values.Get("sign") { - c.Data["json"] = tao_vegetable.CallBackResultSign(fmt.Errorf("非法签名")) - c.ServeJSON() - return - } else { - c.Data["json"] = tao_vegetable.CallBackResultSign(nil) + switch afsOrder.PartCancelRequest.MerchantCode { + case "CSSJ": + if sign != values.Get("sign") { + c.Data["json"] = tao_vegetable.CallBackResultSign(fmt.Errorf("非法签名")) + c.ServeJSON() + return + } else { + c.Data["json"] = tao_vegetable.CallBackResultSign(nil) + c.ServeJSON() + return + } + default: + callbackResponse := taoVegetable.OnCallbackMsg(tao_vegetable.OrderStatusOnSaleCancel, utils.Int64ToStr(afsOrder.PartCancelRequest.BizOrderId), afsOrder) + c.Data["json"] = callbackResponse c.ServeJSON() return } - - callbackResponse := taoVegetable.OnCallbackMsg(tao_vegetable.OrderStatusOnSaleCancel, utils.Int64ToStr(afsOrder.PartCancelRequest.BizOrderId), afsOrder) - c.Data["json"] = callbackResponse - c.ServeJSON() - return } // RefundOrderSuccess 用户售后成功通知,只有退款成功了才会通知(商户拒绝退款,不会通知) @@ -267,20 +280,23 @@ func (c *TaoBaoVegetableController) RefundOrderSuccess() { } // 验签 sign := Sign(values, body, api.TaoVegetableApi.GetAppSecret()) - if sign != values.Get("sign") { - c.Data["json"] = tao_vegetable.CallBackResultSign(fmt.Errorf("非法签名")) - c.ServeJSON() - return - } else { - c.Data["json"] = tao_vegetable.CallBackResultSign(nil) + switch refundSuccess.MerchantCode { + case "CSSJ": + if sign != values.Get("sign") { + c.Data["json"] = tao_vegetable.CallBackResultSign(fmt.Errorf("非法签名")) + c.ServeJSON() + return + } else { + c.Data["json"] = tao_vegetable.CallBackResultSign(nil) + c.ServeJSON() + return + } + default: + callbackResponse := taoVegetable.OnCallbackMsg(tao_vegetable.OrderStatusRefundSuccess, refundSuccess.OutSubOrderId, refundSuccess) + c.Data["json"] = callbackResponse c.ServeJSON() return } - - callbackResponse := taoVegetable.OnCallbackMsg(tao_vegetable.OrderStatusRefundSuccess, refundSuccess.OutSubOrderId, refundSuccess) - c.Data["json"] = callbackResponse - c.ServeJSON() - return } func Sign(param url.Values, data, secret string) string { From 47c2776059f7b3020bf62f7f92fe6492a3eeb6d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Tue, 4 Jul 2023 15:24:22 +0800 Subject: [PATCH 04/30] 1 --- controllers/taobao_vegetable.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/controllers/taobao_vegetable.go b/controllers/taobao_vegetable.go index a6f5f77f3..8e4c667bd 100644 --- a/controllers/taobao_vegetable.go +++ b/controllers/taobao_vegetable.go @@ -147,7 +147,7 @@ func (c *TaoBaoVegetableController) ApplyCancelOrder() { sign := Sign(values, body, api.TaoVegetableApi.GetAppSecret()) switch afsOrder.MerchantCode { case "CSSJ": - if sign != values.Get("sign") { // 76626F983F0F7E4A159AD64F9B13B332 + if sign != values.Get("sign") { // E8C3B7D19ECCB6618CB0F2C30BB086EC c.Data["json"] = tao_vegetable.CallBackResultSign(fmt.Errorf("非法签名")) c.ServeJSON() return @@ -309,6 +309,11 @@ func Sign(param url.Values, data, secret string) string { } sort.Strings(publicParam) - cc := secret + strings.Join(publicParam, "") + data + secret + resultParam := strings.ReplaceAll(strings.ReplaceAll(strings.ReplaceAll(strings.ReplaceAll(data, "\n", ""), "\t", ""), " ", ""), "\r", "") + if strings.Contains(resultParam, `\u0026`) { + resultParam = strings.ReplaceAll(resultParam, `\u0026`, "&") + } + cc := secret + strings.Join(publicParam, "") + resultParam + secret + return fmt.Sprintf("%X", md5.Sum([]byte(cc))) } From e5aa44721fef3fcecef8231510442bc042683c3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Tue, 4 Jul 2023 16:41:44 +0800 Subject: [PATCH 05/30] 1 --- business/partner/purchase/tao_vegetable/order.go | 1 + .../partner/purchase/tao_vegetable/order_afs.go | 14 +++++++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/business/partner/purchase/tao_vegetable/order.go b/business/partner/purchase/tao_vegetable/order.go index fbea60828..61c6fc604 100644 --- a/business/partner/purchase/tao_vegetable/order.go +++ b/business/partner/purchase/tao_vegetable/order.go @@ -65,6 +65,7 @@ func (p *PurchaseHandler) getOrder(vendorOrgCode string, vendorOrderID int64, ve VendorOrderID: utils.Int64ToStr(vendorOrderID), VendorID: model.VendorIDTaoVegetable, VendorStoreID: vendorStoreID, + VendorOrderID2: *orderDetail.OutOrderId, StoreID: utils.Str2Int(*orderDetail.StoreId), JxStoreID: utils.Str2Int(*orderDetail.StoreId), CoordinateType: model.CoordinateTypeMars, diff --git a/business/partner/purchase/tao_vegetable/order_afs.go b/business/partner/purchase/tao_vegetable/order_afs.go index a5f0c897a..d4511e1e9 100644 --- a/business/partner/purchase/tao_vegetable/order_afs.go +++ b/business/partner/purchase/tao_vegetable/order_afs.go @@ -28,7 +28,8 @@ var ( func (c *PurchaseHandler) isAfsMsg(orderStatus string, orderId string) bool { if orderStatus == tao_vegetable.OrderStatusApplyAfs || orderStatus == tao_vegetable.OrderStatusCancelAfs || orderStatus == tao_vegetable.OrderStatusRefundSuccess { - order, _ := partner.CurOrderManager.LoadOrder(orderId, model.VendorIDTaoVegetable) + // order, _ := partner.CurOrderManager.LoadOrder(orderId, model.VendorIDTaoVegetable) + order, _ := partner.CurOrderManager.LoadOrder2(orderId, model.VendorIDTaoVegetable) if order != nil { return true } @@ -192,7 +193,7 @@ func (c *PurchaseHandler) callbackAfsMsg2Status(status string, msg interface{}) } switch status { - case tao_vegetable.OrderStatusApplyAfs: + case tao_vegetable.OrderStatusApplyAfs: // 用户申请售后 refundData := msg.(*tao_vegetable.UserApplyRefundCallBack) orderStatus.RefVendorOrderID = refundData.OutOrderId orderStatus.VendorStatus = fmt.Sprintf("%s:%s", tao_vegetable.OrderStatusApplyAfs, "用户申请取消") @@ -200,7 +201,7 @@ func (c *PurchaseHandler) callbackAfsMsg2Status(status string, msg interface{}) orderStatus.StatusTime = time.Now() orderStatus.Remark = refundData.Remarks orderStatus.VendorOrderID = refundData.BizRefundId - case tao_vegetable.OrderStatusCancelAfs: + case tao_vegetable.OrderStatusCancelAfs: // 用户取消售后 refundData := msg.(*tao_vegetable.UserCancelRefundApply) orderStatus.RefVendorOrderID = refundData.OutOrderId orderStatus.VendorStatus = fmt.Sprintf("%s:%s", tao_vegetable.OrderStatusCancelAfs, "用户取消售后申请") @@ -214,7 +215,7 @@ func (c *PurchaseHandler) callbackAfsMsg2Status(status string, msg interface{}) // orderStatus.Status = c.GetAfsStatusFromVendorStatus(tao_vegetable.OrderStatusOnSaleCancel) // orderStatus.StatusTime = utils.Str2Time(refundData.Timestamp) // orderStatus.VendorOrderID = refundData.IdempotentId - case tao_vegetable.OrderStatusRefundSuccess: + case tao_vegetable.OrderStatusRefundSuccess: // 售后成功 refundData := msg.(*tao_vegetable.RefundOrderFinish) orderStatus.RefVendorOrderID = refundData.OutMainRefundId orderStatus.VendorStatus = fmt.Sprintf("%s:%s", tao_vegetable.OrderStatusRefundSuccess, "用户售后退款成功") @@ -222,7 +223,10 @@ func (c *PurchaseHandler) callbackAfsMsg2Status(status string, msg interface{}) orderStatus.StatusTime = time.Now() orderStatus.VendorOrderID = refundData.BizSubRefundId } - + order, _ := partner.CurOrderManager.LoadOrder2(orderStatus.RefVendorOrderID, model.VendorIDTaoVegetable) + if order != nil { + orderStatus.RefVendorOrderID = order.VendorOrderID + } if orderStatus.VendorOrderID == "" { orderStatus.VendorOrderID = orderStatus.RefVendorOrderID } From 80e789e30e588c738431466301554daa85f1502a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Tue, 4 Jul 2023 17:03:42 +0800 Subject: [PATCH 06/30] 1 --- business/jxcallback/orderman/order.go | 32 ++++++++++++++++----------- business/model/dao/dao_order.go | 3 --- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/business/jxcallback/orderman/order.go b/business/jxcallback/orderman/order.go index 5dd7a7646..323e5e577 100644 --- a/business/jxcallback/orderman/order.go +++ b/business/jxcallback/orderman/order.go @@ -4,6 +4,7 @@ import ( "crypto/md5" "errors" "fmt" + "git.rosy.net.cn/baseapi/platformapi/tao_vegetable" "math" "strings" "time" @@ -161,19 +162,6 @@ func (c *OrderManager) OnOrderAdjust(order *model.GoodsOrder, orderStatus *model } func (c *OrderManager) OnOrderStatusChanged(vendorOrgCode string, orderStatus *model.OrderStatus) (err error) { - // 有些平台(比如美团外卖),在新订单事件没有成功返回,但在重发订单消息前,订单状态转换,则不会再重发新订单事件,特殊处理一下 - if orderStatus != nil { - if orderStatus.Status == model.OrderStatusAccepted { - if _, err2 := c.LoadOrder(orderStatus.VendorOrderID, orderStatus.VendorID); err2 == ErrCanNotFindOrder { - if handler := partner.GetPurchaseOrderHandlerFromVendorID(orderStatus.VendorID); handler != nil { - if order, err2 := handler.GetOrder(vendorOrgCode, orderStatus.VendorOrderID, ""); err2 == nil && order != nil { - c.OnOrderNew(order, orderStatus) - } - } - } - } - } - db := dao.GetDB() txDB, _ := dao.Begin(db) defer func() { @@ -182,6 +170,24 @@ func (c *OrderManager) OnOrderStatusChanged(vendorOrgCode string, orderStatus *m panic(r) } }() + + // 有些平台(比如美团外卖),在新订单事件没有成功返回,但在重发订单消息前,订单状态转换,则不会再重发新订单事件,特殊处理一下 + if orderStatus != nil { + if orderStatus.Status == model.OrderStatusAccepted { + if loadOrder, err2 := c.LoadOrder(orderStatus.VendorOrderID, orderStatus.VendorID); err2 == ErrCanNotFindOrder { + if handler := partner.GetPurchaseOrderHandlerFromVendorID(orderStatus.VendorID); handler != nil { + if order, err2 := handler.GetOrder(vendorOrgCode, orderStatus.VendorOrderID, ""); err2 == nil && order != nil { + c.OnOrderNew(order, orderStatus) + } + } + } else { + loadOrder.Status = model.OrderStatusAccepted + loadOrder.VendorStatus = tao_vegetable.OrderStatusNew + c.UpdateOrderFields(loadOrder, []string{"Status", "VendorStatus"}) + } + } + } + isDuplicated, order, err := c.addOrderStatus(orderStatus, db) if err == nil { dao.Commit(db, txDB) diff --git a/business/model/dao/dao_order.go b/business/model/dao/dao_order.go index 0dda02257..637b4e99c 100644 --- a/business/model/dao/dao_order.go +++ b/business/model/dao/dao_order.go @@ -2,7 +2,6 @@ package dao import ( "fmt" - "git.rosy.net.cn/jx-callback/globals" "regexp" "strconv" "time" @@ -1156,8 +1155,6 @@ func GetOrders(db *DaoDB, ids []int64, isIncludeSku, isIncludeFake bool, fromDat sqlParams = append(sqlParams, pageSize, offset) txDB, _ := Begin(db) defer Commit(db, txDB) - globals.SugarLogger.Debugf("===============sql2 := %s", sql) - globals.SugarLogger.Debugf("===============sql2 := %s", utils.Format4Output(sqlParams, false)) if err = GetRowsTx(txDB, &orders, sql, sqlParams...); err == nil { totalCount = GetLastTotalRowCount2(db, txDB) } From 839b52d1db0a158b778cab033ee8818f3abe4102 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Tue, 4 Jul 2023 17:20:46 +0800 Subject: [PATCH 07/30] 1 --- business/jxcallback/orderman/order.go | 4 ++++ business/partner/purchase/tao_vegetable/order.go | 3 --- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/business/jxcallback/orderman/order.go b/business/jxcallback/orderman/order.go index 323e5e577..597581283 100644 --- a/business/jxcallback/orderman/order.go +++ b/business/jxcallback/orderman/order.go @@ -171,6 +171,8 @@ func (c *OrderManager) OnOrderStatusChanged(vendorOrgCode string, orderStatus *m } }() + globals.SugarLogger.Debugf("========OnOrderStatusChanged : %s", vendorOrgCode) + globals.SugarLogger.Debugf("========OnOrderStatusChanged : %s", utils.Format4Output(orderStatus, false)) // 有些平台(比如美团外卖),在新订单事件没有成功返回,但在重发订单消息前,订单状态转换,则不会再重发新订单事件,特殊处理一下 if orderStatus != nil { if orderStatus.Status == model.OrderStatusAccepted { @@ -181,9 +183,11 @@ func (c *OrderManager) OnOrderStatusChanged(vendorOrgCode string, orderStatus *m } } } else { + globals.SugarLogger.Debugf("========loadOrder : %s", utils.Format4Output(loadOrder, false)) loadOrder.Status = model.OrderStatusAccepted loadOrder.VendorStatus = tao_vegetable.OrderStatusNew c.UpdateOrderFields(loadOrder, []string{"Status", "VendorStatus"}) + globals.SugarLogger.Debugf("========loadOrder : %s", utils.Format4Output(loadOrder, false)) } } } diff --git a/business/partner/purchase/tao_vegetable/order.go b/business/partner/purchase/tao_vegetable/order.go index 61c6fc604..7b9bb5881 100644 --- a/business/partner/purchase/tao_vegetable/order.go +++ b/business/partner/purchase/tao_vegetable/order.go @@ -334,9 +334,6 @@ func (c *PurchaseHandler) onOrderMsg(orderStatus, orderId string, orderCallback msg.OrderStatus = tao_vegetable.OrderStatusOnSaleCancel } status := c.callbackOrderMsg2Status(msg) - if partner.CurOrderManager.GetStatusDuplicatedCount(status) > 0 { - return nil - } // 校验重复消息 if partner.CurOrderManager.GetStatusDuplicatedCount(status) > 0 { return tao_vegetable.CallBackResultInfo(nil) From b4089926f515ab1d36d525631ad56a0eedd74fba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Tue, 4 Jul 2023 17:26:02 +0800 Subject: [PATCH 08/30] 1 --- business/partner/purchase/tao_vegetable/order.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/business/partner/purchase/tao_vegetable/order.go b/business/partner/purchase/tao_vegetable/order.go index 7b9bb5881..a9c173560 100644 --- a/business/partner/purchase/tao_vegetable/order.go +++ b/business/partner/purchase/tao_vegetable/order.go @@ -7,7 +7,6 @@ import ( "strings" "time" - "git.rosy.net.cn/baseapi/platformapi/mtwmapi" "git.rosy.net.cn/baseapi/platformapi/tao_vegetable" domain3156 "git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability3156/domain" request3156 "git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability3156/request" @@ -340,13 +339,13 @@ func (c *PurchaseHandler) onOrderMsg(orderStatus, orderId string, orderCallback } // 商户接单/支付完成代表新订单 - if msg.OrderStatus == tao_vegetable.OrderStatusNew || msg.OrderStatus == tao_vegetable.OrderStatusPayFinsh { + if msg.OrderStatus == tao_vegetable.OrderStatusPayFinsh { order, orderMap, err2 := c.getOrder("", msg.BizOrderId, msg.StoreId) if err = err2; err == nil { err = partner.CurOrderManager.OnOrderNew(order, status) if err == nil { utils.CallFuncAsync(func() { - if msg.OrderStatus == mtwmapi.MsgTypeNewOrder { + if msg.OrderStatus == tao_vegetable.OrderStatusPayFinsh { c.OnOrderDetail(orderMap, partner.CreatedPeration) } else { c.OnOrderDetail(orderMap, partner.UpdatedPeration) From 46dbea6cdf4d24afcbfd3b16ce665ab5c975190d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Tue, 4 Jul 2023 18:14:47 +0800 Subject: [PATCH 09/30] 1 --- business/jxcallback/orderman/order_afs.go | 5 +- business/model/order_financial.go | 9 ++-- business/partner/purchase/ebai/financial.go | 14 +++--- .../purchase/tao_vegetable/financial.go | 48 ++++++++++--------- .../partner/purchase/tao_vegetable/order.go | 5 +- .../purchase/tao_vegetable/order_afs.go | 6 ++- .../partner/purchase/tao_vegetable/store.go | 2 +- 7 files changed, 51 insertions(+), 38 deletions(-) diff --git a/business/jxcallback/orderman/order_afs.go b/business/jxcallback/orderman/order_afs.go index e361d0cdc..5fe5c9bfa 100644 --- a/business/jxcallback/orderman/order_afs.go +++ b/business/jxcallback/orderman/order_afs.go @@ -411,8 +411,9 @@ func (c *OrderManager) CreateAfsOrderFromOrder(vendorOrderID string, vendorID in for _, sku := range order.Skus { orderSkuFinancial := &model.OrderSkuFinancial{ - VendorID: sku.VendorID, - VendorOrderID: sku.VendorOrderID, + VendorID: sku.VendorID, + VendorOrderID: sku.VendorOrderID, + VendorSubOrderID: sku.VendorSubOrderID, // OrderFinancialID: sku.VendorOrderID, // ConfirmTime: afsOrder.AfsCreateAt, VendorStoreID: afsOrder.VendorStoreID, diff --git a/business/model/order_financial.go b/business/model/order_financial.go index aef6bddf0..6f5da2492 100644 --- a/business/model/order_financial.go +++ b/business/model/order_financial.go @@ -119,10 +119,11 @@ func (o *AfsOrder) TableUnique() [][]string { type OrderSkuFinancial struct { ModelIDCUL - VendorID int `orm:"column(vendor_id)" json:"vendorID"` // 平台id - VendorOrderID string `orm:"column(vendor_order_id);size(48)" json:"vendorOrderID"` // 关联原始订单ID - AfsOrderID string `orm:"column(afs_order_id);size(48)" json:"afsOrderID"` // 售后单ID - IsAfsOrder int8 `json:"isAfsOrder"` // 0--正向单, 1--售后单 + VendorID int `orm:"column(vendor_id)" json:"vendorID"` // 平台id + VendorOrderID string `orm:"column(vendor_order_id);size(48)" json:"vendorOrderID"` // 关联原始订单ID + VendorSubOrderID string `orm:"column(vendor_sub_order_id);size(48)" json:"vendorSubOrderID"` // 关联原始订单ID + AfsOrderID string `orm:"column(afs_order_id);size(48)" json:"afsOrderID"` // 售后单ID + IsAfsOrder int8 `json:"isAfsOrder"` // 0--正向单, 1--售后单 // ConfirmTime time.Time `orm:"type(datetime)" json:"confirmTime"` // 订单生成/完成时间 VendorStoreID string `orm:"column(vendor_store_id);size(48)" json:"vendorStoreID"` // 外部系统里记录的storeid diff --git a/business/partner/purchase/ebai/financial.go b/business/partner/purchase/ebai/financial.go index 40cfe6773..8607b74eb 100644 --- a/business/partner/purchase/ebai/financial.go +++ b/business/partner/purchase/ebai/financial.go @@ -88,9 +88,10 @@ func (p *PurchaseHandler) OrderFinancialDetail2Refund(orderFinancial *model.Orde } for _, sku := range orderFinancial.Skus { orderSkuFinancial := &model.OrderSkuFinancial{ - VendorID: sku.VendorID, - VendorOrderID: sku.VendorOrderID, - AfsOrderID: sku.VendorOrderID, + VendorID: sku.VendorID, + VendorOrderID: sku.VendorOrderID, + VendorSubOrderID: sku.VendorSubOrderID, + AfsOrderID: sku.VendorOrderID, // ConfirmTime: afsOrder.AfsCreateAt, VendorStoreID: afsOrder.VendorStoreID, StoreID: afsOrder.StoreID, @@ -141,9 +142,10 @@ func (p *PurchaseHandler) AfsOrderDetail2Financial(orderData map[string]interfac for _, refundInfo := range refundDetail { xMap := refundInfo.(map[string]interface{}) orderSkuFinancial := &model.OrderSkuFinancial{ - VendorID: model.VendorIDEBAI, - AfsOrderID: afsOrder.AfsOrderID, - VendorOrderID: afsOrder.VendorOrderID, + VendorID: model.VendorIDEBAI, + AfsOrderID: afsOrder.AfsOrderID, + VendorOrderID: afsOrder.VendorOrderID, + VendorSubOrderID: afsOrder.VendorOrderID2, // ConfirmTime: getTimeFromInterface(xMap["apply_time"]), VendorSkuID: utils.Interface2String(xMap["sku_id"]), SkuID: int(utils.Str2Int64WithDefault(utils.Interface2String(xMap["custom_sku_id"]), 0)), diff --git a/business/partner/purchase/tao_vegetable/financial.go b/business/partner/purchase/tao_vegetable/financial.go index c31d6510b..8b1a6c9b0 100644 --- a/business/partner/purchase/tao_vegetable/financial.go +++ b/business/partner/purchase/tao_vegetable/financial.go @@ -29,7 +29,7 @@ func OnFinancialMsg(msg *mtwmapi.CallbackMsg) (err error) { orderData := msg.FormData if orderData.Get("notify_type") == mtwmapi.NotifyTypeSuccess { afsOrderID := orderData.Get("order_id") - orderFinancial, err := partner.CurOrderManager.LoadOrderFinancial(afsOrderID, model.VendorIDMTWM) + orderFinancial, err := partner.CurOrderManager.LoadOrderFinancial(afsOrderID, model.VendorIDTaoVegetable) if err == nil { err = partner.CurOrderManager.SaveAfsOrderFinancialInfo(CurPurchaseHandler.OrderFinancialDetail2Refund(orderFinancial, orderData)) } else { @@ -42,7 +42,7 @@ func OnFinancialMsg(msg *mtwmapi.CallbackMsg) (err error) { func (p *PurchaseHandler) OrderFinancialDetail2Refund(orderFinancial *model.OrderFinancial, orderData url.Values) (afsOrder *model.AfsOrder) { afsOrder = &model.AfsOrder{ - VendorID: model.VendorIDMTWM, + VendorID: model.VendorIDTaoVegetable, AfsOrderID: orderData.Get("refund_id"), VendorOrderID: orderData.Get("order_id"), AfsCreatedAt: utils.Timestamp2Time(utils.Str2Int64(orderData.Get("timestamp"))), @@ -63,8 +63,9 @@ func (p *PurchaseHandler) OrderFinancialDetail2Refund(orderFinancial *model.Orde } for _, sku := range orderFinancial.Skus { orderSkuFinancial := &model.OrderSkuFinancial{ - VendorID: sku.VendorID, - VendorOrderID: sku.VendorOrderID, + VendorID: sku.VendorID, + VendorOrderID: sku.VendorOrderID, + VendorSubOrderID: sku.VendorSubOrderID, // OrderFinancialID: sku.VendorOrderID, // ConfirmTime: afsOrder.AfsCreateAt, VendorStoreID: afsOrder.VendorStoreID, @@ -88,7 +89,7 @@ func (p *PurchaseHandler) OrderFinancialDetail2Refund(orderFinancial *model.Orde func (p *PurchaseHandler) AfsOrderDetail2Financial(orderData url.Values) (afsOrder *model.AfsOrder) { afsOrder = &model.AfsOrder{ - VendorID: model.VendorIDMTWM, + VendorID: model.VendorIDTaoVegetable, AfsOrderID: orderData.Get("order_id"), VendorOrderID: orderData.Get("order_id"), AfsCreatedAt: utils.Timestamp2Time(utils.Str2Int64(orderData.Get("timestamp"))), @@ -111,9 +112,10 @@ func (p *PurchaseHandler) AfsOrderDetail2Financial(orderData url.Values) (afsOrd utils.UnmarshalUseNumber([]byte(food), &refundDetail) for _, xMap := range refundDetail { orderSkuFinancial := &model.OrderSkuFinancial{ - VendorID: model.VendorIDMTWM, - AfsOrderID: afsOrder.AfsOrderID, - VendorOrderID: afsOrder.VendorOrderID, + VendorID: model.VendorIDTaoVegetable, + AfsOrderID: afsOrder.AfsOrderID, + VendorOrderID: afsOrder.VendorOrderID, + VendorSubOrderID: afsOrder.VendorOrderID2, // ConfirmTime: afsOrder.AfsCreateAt, VendorSkuID: utils.Interface2String(xMap["app_food_code"]), SkuID: int(utils.Str2Int64WithDefault(utils.Interface2String(xMap["sku_id"]), 0)), @@ -159,18 +161,19 @@ func (p *PurchaseHandler) OrderDetail2Financial(result *domain591.AlibabaAelophy // 订单 for _, x := range *result.SubOrderResponseList { orderSkuFinancial := &model.OrderSkuFinancial{ - VendorID: orderFinancial.VendorID, - VendorOrderID: orderFinancial.VendorOrderID, - VendorStoreID: *result.StoreId, - StoreID: 0, - JxStoreID: jxStoreID, - VendorSkuID: *x.SkuCode, - SkuID: utils.Str2Int(*x.SkuCode), - Name: *x.SkuName, - SalePrice: *x.Price, - Count: utils.Float64TwoInt(*x.BuySaleQuantity), - SkuBoxMoney: 0, - IsAfsOrder: 0, + VendorID: orderFinancial.VendorID, + VendorOrderID: orderFinancial.VendorOrderID, + VendorSubOrderID: orderFinancial.VendorOrderID2, + VendorStoreID: *result.StoreId, + StoreID: 0, + JxStoreID: jxStoreID, + VendorSkuID: *x.SkuCode, + SkuID: utils.Str2Int(*x.SkuCode), + Name: *x.SkuName, + SalePrice: *x.Price, + Count: utils.Float64TwoInt(*x.BuySaleQuantity), + SkuBoxMoney: 0, + IsAfsOrder: 0, } orderFinancial.Skus = append(orderFinancial.Skus, orderSkuFinancial) orderFinancial.SalePriceMoney += orderSkuFinancial.SalePrice * int64(orderSkuFinancial.Count) @@ -180,8 +183,9 @@ func (p *PurchaseHandler) OrderDetail2Financial(result *domain591.AlibabaAelophy if x.Activitys != nil { for _, v := range *x.Activitys { activity := &model.OrderDiscountFinancial{ - VendorID: orderFinancial.VendorID, - VendorOrderID: orderFinancial.VendorOrderID, + VendorID: orderFinancial.VendorID, + VendorOrderID: orderFinancial.VendorOrderID, + VendorOrderID2: orderFinancial.VendorOrderID2, } if v.ChannelActivityId != nil { activity.VendorActivityID = *v.ChannelActivityId diff --git a/business/partner/purchase/tao_vegetable/order.go b/business/partner/purchase/tao_vegetable/order.go index a9c173560..698ea0be4 100644 --- a/business/partner/purchase/tao_vegetable/order.go +++ b/business/partner/purchase/tao_vegetable/order.go @@ -104,6 +104,7 @@ func (p *PurchaseHandler) getOrder(vendorOrgCode string, vendorOrderID int64, ve for _, extra := range *orderDetail.SubOrderResponseList { sku := &model.OrderSku{ VendorOrderID: order.VendorOrderID, + VendorSubOrderID: *extra.OutSubOrderId, VendorID: model.VendorIDTaoVegetable, StoreSubID: 0, StoreSubName: "", @@ -122,7 +123,6 @@ func (p *PurchaseHandler) getOrder(vendorOrgCode string, vendorOrderID int64, ve OrderCreatedAt: order.OrderCreatedAt, IsVendorAct: 0, Upc: *extra.Barcode, - VendorSubOrderID: utils.Int64ToStr(*extra.BizSubOrderId), } activityId := make([]int64, 0) @@ -436,6 +436,9 @@ func (c *PurchaseHandler) callbackOrderMsg2Status(msg *tao_vegetable.CallbackOrd case tao_vegetable.OrderStatusOnSaleCancel: orderStatus.Status = model.OrderStatusCanceled orderStatus.Remark = "用户售中取消" + case tao_vegetable.OrderStatusSuccess: // 送达 + orderStatus.Status = model.OrderStatusFinished + orderStatus.Remark = "订单送达" } return orderStatus } diff --git a/business/partner/purchase/tao_vegetable/order_afs.go b/business/partner/purchase/tao_vegetable/order_afs.go index d4511e1e9..fda37f967 100644 --- a/business/partner/purchase/tao_vegetable/order_afs.go +++ b/business/partner/purchase/tao_vegetable/order_afs.go @@ -125,6 +125,8 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal Name: *sku.SkuName, UserMoney: *sku.OriginalFee - *sku.DiscountFee, PmSkuSubsidyMoney: *sku.DiscountPlatformFee, // 平台补贴商品 + VendorOrderID: orderStatus.VendorOrderID, + VendorSubOrderID: *sku.OutSubOrderId, } afsOrder.PmSkuSubsidyMoney += orderSku.PmSkuSubsidyMoney @@ -281,7 +283,7 @@ func (c *PurchaseHandler) ConfirmReceivedReturnGoods(ctx *jxcontext.Context, ord // 发起全款退款 func (c *PurchaseHandler) RefundOrder(ctx *jxcontext.Context, order *model.GoodsOrder, reason string) (err error) { - return fmt.Errorf("%s不支持售后全额退款,请让买家发起退款", model.VendorChineseNames[model.VendorIDMTWM]) + return fmt.Errorf("%s不支持售后全额退款,请让买家发起退款", model.VendorChineseNames[model.VendorIDTaoVegetable]) } // 发起部分退款 @@ -299,7 +301,7 @@ func (c *PurchaseHandler) GetOrderAfsInfo(ctx *jxcontext.Context, vendorOrderID, } } } - if order, err := partner.CurOrderManager.LoadOrder(vendorOrderID, model.VendorIDMTWM); err == nil { + if order, err := partner.CurOrderManager.LoadOrder(vendorOrderID, model.VendorIDTaoVegetable); err == nil { orderAfsInfo.AfsTotalShopMoney = order.TotalShopMoney + afsTotalShopMoney } return orderAfsInfo, err diff --git a/business/partner/purchase/tao_vegetable/store.go b/business/partner/purchase/tao_vegetable/store.go index d32f173b5..dac751604 100644 --- a/business/partner/purchase/tao_vegetable/store.go +++ b/business/partner/purchase/tao_vegetable/store.go @@ -440,7 +440,7 @@ func (p *PurchaseHandler) onStoreStatusChanged(msg *mtwmapi.CallbackMsg) (respon } if err == nil { - err = partner.CurStoreManager.OnStoreStatusChanged(vendorStoreID, model.VendorIDMTWM, storeStatus) + err = partner.CurStoreManager.OnStoreStatusChanged(vendorStoreID, model.VendorIDTaoVegetable, storeStatus) } response = mtwmapi.Err2CallbackResponse(err, "") // 操作日志(美团外卖) From c4079bcd6bc69d74f3822e6dfc8724194bdcfd11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Tue, 4 Jul 2023 18:21:45 +0800 Subject: [PATCH 10/30] 1 --- .../purchase/tao_vegetable/order_afs.go | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/business/partner/purchase/tao_vegetable/order_afs.go b/business/partner/purchase/tao_vegetable/order_afs.go index fda37f967..d469eba34 100644 --- a/business/partner/purchase/tao_vegetable/order_afs.go +++ b/business/partner/purchase/tao_vegetable/order_afs.go @@ -89,25 +89,25 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal } refundIds = append(refundIds, utils.Str2Int64(refundData.BizRefundId)) - taoAfsOrderDetail, err := getAPI(refundData.MerchantCode, 0, "").QueryAfsOrderDetail(&request591.AlibabaWdkOrderRefundGetRequest{ - BizOrderIds: &bizOrderIds, - RefundIds: &refundIds, - OrderFrom: nil, - ShopId: nil, - StoreId: &refundData.StoreId, - }) - if err != nil { - return tao_vegetable.CallBackResultInfo(err) - } + //taoAfsOrderDetail, err := getAPI(refundData.MerchantCode, 0, "").QueryAfsOrderDetail(&request591.AlibabaWdkOrderRefundGetRequest{ + // BizOrderIds: &bizOrderIds, + // RefundIds: &refundIds, + // OrderFrom: nil, + // ShopId: nil, + // StoreId: &refundData.StoreId, + //}) + //if err != nil { + // return tao_vegetable.CallBackResultInfo(err) + //} + // + //taoAfsOrder := *taoAfsOrderDetail.Orders - taoAfsOrder := *taoAfsOrderDetail.Orders - - afsOrder.FreightUserMoney = *taoAfsOrder[0].RefundPostFee - afsOrder.AfsFreightMoney = *taoAfsOrder[0].RefundPostFee // 暂时未发现退货取件费用 - afsOrder.BoxMoney = 0 // 餐盒费 - afsOrder.TongchengFreightMoney = 0 // 同城配送费 - afsOrder.SkuBoxMoney = 0 // 商品包装费 - afsOrder.VendorStatus = orderStatus.VendorStatus // 退货状态 + afsOrder.FreightUserMoney = 0 // 订单运费 + afsOrder.AfsFreightMoney = 0 // 暂时未发现退货取件费用 + afsOrder.BoxMoney = 0 // 餐盒费 + afsOrder.TongchengFreightMoney = 0 // 同城配送费 + afsOrder.SkuBoxMoney = 0 // 商品包装费 + afsOrder.VendorStatus = orderStatus.VendorStatus // 退货状态 // 订单商品详细信息 skuList, err := getAPI(refundData.MerchantCode, 0, "").QueryOrderDetail(&request591.AlibabaAelophyOrderGetRequest{OrderGetRequest: &domain591.AlibabaAelophyOrderGetOrderGetRequest{ From a198f5f6e8833eac3972ab473c99b6828a380fa2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Tue, 4 Jul 2023 18:24:39 +0800 Subject: [PATCH 11/30] 1 --- business/partner/purchase/tao_vegetable/order_afs.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/partner/purchase/tao_vegetable/order_afs.go b/business/partner/purchase/tao_vegetable/order_afs.go index d469eba34..2ad405e54 100644 --- a/business/partner/purchase/tao_vegetable/order_afs.go +++ b/business/partner/purchase/tao_vegetable/order_afs.go @@ -110,7 +110,7 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal afsOrder.VendorStatus = orderStatus.VendorStatus // 退货状态 // 订单商品详细信息 - skuList, err := getAPI(refundData.MerchantCode, 0, "").QueryOrderDetail(&request591.AlibabaAelophyOrderGetRequest{OrderGetRequest: &domain591.AlibabaAelophyOrderGetOrderGetRequest{ + skuList, err := getAPI("", 0, refundData.StoreId).QueryOrderDetail(&request591.AlibabaAelophyOrderGetRequest{OrderGetRequest: &domain591.AlibabaAelophyOrderGetOrderGetRequest{ StoreId: utils.String2Pointer(refundData.StoreId), BizOrderId: utils.Int64ToPointer(utils.Str2Int64(refundData.OutOrderId)), }}) From b61c4bf2aaf52b8f2d49eda397f5d8f40cf567b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Tue, 4 Jul 2023 18:29:22 +0800 Subject: [PATCH 12/30] 1 --- business/partner/purchase/tao_vegetable/tao.go | 3 --- 1 file changed, 3 deletions(-) diff --git a/business/partner/purchase/tao_vegetable/tao.go b/business/partner/purchase/tao_vegetable/tao.go index 77a5278f8..2bd7000d3 100644 --- a/business/partner/purchase/tao_vegetable/tao.go +++ b/business/partner/purchase/tao_vegetable/tao.go @@ -210,9 +210,6 @@ func (p *PurchaseHandler) getUploadImgPoiCode() (poiCode string) { // getAPI 包含门店token func getAPI(appOrgCode string, storeID int, vendorStoreID string) (apiObj *tao_vegetable.API) { - if appOrgCode == "" { - globals.SugarLogger.Debugf("getAPI appOrgCode is empty") - } if appOrgCode != "" { apiObj = partner.CurAPIManager.GetAPI(model.VendorIDTaoVegetable, appOrgCode).(*tao_vegetable.API) } else if appOrgCode == "" && vendorStoreID != "" { From 47ea44bd5c3693fcb166ee311f0c096a2e81b465 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Tue, 4 Jul 2023 18:39:22 +0800 Subject: [PATCH 13/30] 1' --- .../purchase/tao_vegetable/order_afs.go | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/business/partner/purchase/tao_vegetable/order_afs.go b/business/partner/purchase/tao_vegetable/order_afs.go index 2ad405e54..bd17921c7 100644 --- a/business/partner/purchase/tao_vegetable/order_afs.go +++ b/business/partner/purchase/tao_vegetable/order_afs.go @@ -110,10 +110,20 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal afsOrder.VendorStatus = orderStatus.VendorStatus // 退货状态 // 订单商品详细信息 - skuList, err := getAPI("", 0, refundData.StoreId).QueryOrderDetail(&request591.AlibabaAelophyOrderGetRequest{OrderGetRequest: &domain591.AlibabaAelophyOrderGetOrderGetRequest{ - StoreId: utils.String2Pointer(refundData.StoreId), - BizOrderId: utils.Int64ToPointer(utils.Str2Int64(refundData.OutOrderId)), - }}) + queryOrderDetailParam := &request591.AlibabaAelophyOrderGetRequest{OrderGetRequest: &domain591.AlibabaAelophyOrderGetOrderGetRequest{ + StoreId: utils.String2Pointer(refundData.StoreId), + }} + order, err := partner.CurOrderManager.LoadOrder2(refundData.OutOrderId, model.VendorIDTaoVegetable) + if err != nil { + globals.SugarLogger.Debugf("用户申请售后时,通过售后外部渠道订单号获取主订单失败:%s", err.Error()) + return tao_vegetable.CallBackResultInfo(err) + } + if order == nil { + globals.SugarLogger.Debugf("数据库订单查询失败,订单号异常 :%s", refundData.OutOrderId) + return tao_vegetable.CallBackResultInfo(errors.New("订单号异常")) + } + queryOrderDetailParam.OrderGetRequest.BizOrderId = utils.Int64ToPointer(utils.Str2Int64(order.VendorOrderID)) + skuList, err := getAPI("", 0, refundData.StoreId).QueryOrderDetail(queryOrderDetailParam) if err != nil { return tao_vegetable.CallBackResultInfo(err) } From 9b8548e19596430f1308889f4dcbd9adb9b646f1 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 09:51:58 +0800 Subject: [PATCH 14/30] 1 --- business/model/dao/dao_auth2.go | 2 -- .../purchase/tao_vegetable/order_afs.go | 28 +++++++++++++++---- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/business/model/dao/dao_auth2.go b/business/model/dao/dao_auth2.go index 09cf76cd4..72b8cced9 100644 --- a/business/model/dao/dao_auth2.go +++ b/business/model/dao/dao_auth2.go @@ -5,7 +5,6 @@ import ( "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/model" - "git.rosy.net.cn/jx-callback/globals" ) func GetAuthBind(db *DaoDB, bindType int, authType, authID string) (authBind *model.AuthBind, err error) { @@ -62,7 +61,6 @@ func GetUserBindAuthInfo(db *DaoDB, userID string, bindType int, typeList []stri sqlParams = append(sqlParams, typeIDs) } sql += " ORDER BY t1.type" - globals.SugarLogger.Debugf("GetUserBindAuthInfo sql=%s,sqlParams=%s", sql, utils.Format4Output(sqlParams, false)) err = GetRows(db, &authList, sql, sqlParams...) return authList, err } diff --git a/business/partner/purchase/tao_vegetable/order_afs.go b/business/partner/purchase/tao_vegetable/order_afs.go index bd17921c7..745928324 100644 --- a/business/partner/purchase/tao_vegetable/order_afs.go +++ b/business/partner/purchase/tao_vegetable/order_afs.go @@ -4,6 +4,7 @@ import ( "errors" "fmt" "git.rosy.net.cn/baseapi/platformapi/tao_vegetable" + domain3156 "git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability3156/domain" request3156 "git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability3156/request" domain591 "git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability591/domain" request591 "git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability591/request" @@ -64,6 +65,8 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal if needCallNew { refundData := msg.(*tao_vegetable.UserApplyRefundCallBack) var afsOrder *model.AfsOrder + var api = getAPI("", 0, refundData.StoreId) + afsOrder = &model.AfsOrder{ VendorID: model.VendorIDTaoVegetable, AfsOrderID: orderStatus.VendorOrderID, @@ -79,7 +82,7 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal ReasonDesc: refundData.RefundReason, ReasonImgList: utils.LimitUTF8StringLen(refundData.RefundPictures, 1024), RefundType: model.AfsTypeFullRefund, - VendorOrgCode: refundData.MerchantCode, + VendorOrgCode: api.GetVendorOrgCode(), } refundIds := make([]int64, 0, 0) @@ -123,7 +126,7 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal return tao_vegetable.CallBackResultInfo(errors.New("订单号异常")) } queryOrderDetailParam.OrderGetRequest.BizOrderId = utils.Int64ToPointer(utils.Str2Int64(order.VendorOrderID)) - skuList, err := getAPI("", 0, refundData.StoreId).QueryOrderDetail(queryOrderDetailParam) + skuList, err := api.QueryOrderDetail(queryOrderDetailParam) if err != nil { return tao_vegetable.CallBackResultInfo(err) } @@ -212,14 +215,14 @@ func (c *PurchaseHandler) callbackAfsMsg2Status(status string, msg interface{}) orderStatus.Status = c.GetAfsStatusFromVendorStatus(tao_vegetable.OrderStatusApplyAfs) orderStatus.StatusTime = time.Now() orderStatus.Remark = refundData.Remarks - orderStatus.VendorOrderID = refundData.BizRefundId + orderStatus.VendorOrderID = refundData.RefundId case tao_vegetable.OrderStatusCancelAfs: // 用户取消售后 refundData := msg.(*tao_vegetable.UserCancelRefundApply) orderStatus.RefVendorOrderID = refundData.OutOrderId orderStatus.VendorStatus = fmt.Sprintf("%s:%s", tao_vegetable.OrderStatusCancelAfs, "用户取消售后申请") orderStatus.Status = c.GetAfsStatusFromVendorStatus(tao_vegetable.OrderStatusCancelAfs) orderStatus.StatusTime = time.Now() - orderStatus.VendorOrderID = refundData.BizRefundId + orderStatus.VendorOrderID = refundData.RefundId //case tao_vegetable.OrderStatusOnSaleCancel: // refundData := msg.(*tao_vegetable.OnSaleCancel) // orderStatus.RefVendorOrderID = utils.Int64ToStr(refundData.BizOrderId) @@ -233,7 +236,7 @@ func (c *PurchaseHandler) callbackAfsMsg2Status(status string, msg interface{}) orderStatus.VendorStatus = fmt.Sprintf("%s:%s", tao_vegetable.OrderStatusRefundSuccess, "用户售后退款成功") orderStatus.Status = c.GetAfsStatusFromVendorStatus(tao_vegetable.OrderStatusRefundSuccess) orderStatus.StatusTime = time.Now() - orderStatus.VendorOrderID = refundData.BizSubRefundId + orderStatus.VendorOrderID = refundData.OutMainRefundId } order, _ := partner.CurOrderManager.LoadOrder2(orderStatus.RefVendorOrderID, model.VendorIDTaoVegetable) if order != nil { @@ -256,11 +259,24 @@ func (c *PurchaseHandler) GetAfsStatusFromVendorStatus(notifyType string) int { // 审核售后单申请 func (c *PurchaseHandler) AgreeOrRefuseRefund(ctx *jxcontext.Context, order *model.AfsOrder, approveType int, reason string) (err error) { if approveType == partner.AfsApproveTypeRefused { + // 加载子订单号 + orderDetail, _ := partner.CurOrderManager.LoadOrder(order.VendorOrderID, model.VendorIDTaoVegetable) + // 加载退款商品 + afsSkuOrder, _ := dao.GetOrderRefundSkuList(dao.GetDB(), []string{order.VendorOrderID}) param := &request3156.AlibabaTclsAelophyRefundAgreeRequest{ StoreId: utils.String2Pointer(order.VendorStoreID), - OutOrderId: utils.String2Pointer(order.VendorOrderID), + OutOrderId: utils.String2Pointer(orderDetail.VendorOrderID2), + RefundId: utils.String2Pointer(order.AfsOrderID), OrderFrom: utils.Int64ToPointer(utils.Str2Int64(tao_vegetable.TaoVegetableChannelCode)), } + 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), + }) + } + param.SubRefundList = &subRefundList param.AuditMemo = utils.String2Pointer(fmt.Sprintf("商户同意退款")) if reason != "" { param.AuditMemo = utils.String2Pointer(*param.AuditMemo + fmt.Sprintf(",%s", reason)) From 35760f74b7d779ede9c8f7ebdc2877980c14fe6b 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 10:03:20 +0800 Subject: [PATCH 15/30] 1 --- business/partner/purchase/tao_vegetable/order_afs.go | 1 + 1 file changed, 1 insertion(+) diff --git a/business/partner/purchase/tao_vegetable/order_afs.go b/business/partner/purchase/tao_vegetable/order_afs.go index 745928324..ac036ed4a 100644 --- a/business/partner/purchase/tao_vegetable/order_afs.go +++ b/business/partner/purchase/tao_vegetable/order_afs.go @@ -197,6 +197,7 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal } } } + globals.SugarLogger.Debugf("=============errr : %s", err) return tao_vegetable.CallBackResultInfo(err) } From 57f065314f719d3b8a4b2d8f4235e31ede35b5d8 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 10:04:42 +0800 Subject: [PATCH 16/30] 1 --- business/partner/purchase/tao_vegetable/order_afs.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/business/partner/purchase/tao_vegetable/order_afs.go b/business/partner/purchase/tao_vegetable/order_afs.go index ac036ed4a..ed3546300 100644 --- a/business/partner/purchase/tao_vegetable/order_afs.go +++ b/business/partner/purchase/tao_vegetable/order_afs.go @@ -41,6 +41,7 @@ func (c *PurchaseHandler) isAfsMsg(orderStatus string, orderId string) bool { func (c *PurchaseHandler) OnAfsOrderMsg(orderId, status string, msg interface{}) (retVal *tao_vegetable.CallBackResult) { jxutils.CallMsgHandlerAsync(func() { retVal = c.onAfsOrderMsg(status, msg) + globals.SugarLogger.Debugf("=============errr : %s", utils.Format4Output(retVal, false)) }, jxutils.ComposeUniversalOrderID(orderId, model.VendorIDTaoVegetable)) return retVal } @@ -197,7 +198,7 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal } } } - globals.SugarLogger.Debugf("=============errr : %s", err) + globals.SugarLogger.Debugf("=============errr : %v", err) return tao_vegetable.CallBackResultInfo(err) } From 784ba5115734999698a8d8fbf40ec7f257dbb13a 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 10:09:30 +0800 Subject: [PATCH 17/30] 1 --- business/partner/purchase/tao_vegetable/callback.go | 2 ++ controllers/taobao_vegetable.go | 1 + 2 files changed, 3 insertions(+) diff --git a/business/partner/purchase/tao_vegetable/callback.go b/business/partner/purchase/tao_vegetable/callback.go index 9d8c09894..b8898dec2 100644 --- a/business/partner/purchase/tao_vegetable/callback.go +++ b/business/partner/purchase/tao_vegetable/callback.go @@ -3,6 +3,7 @@ package tao_vegetable import ( "git.rosy.net.cn/baseapi/platformapi/mtwmapi" "git.rosy.net.cn/baseapi/platformapi/tao_vegetable" + "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/globals" @@ -15,6 +16,7 @@ func OnCallbackMsg(orderStatus, orderId string, msg interface{}) (response *tao_ if CurPurchaseHandler != nil { jxutils.CallMsgHandler(func() { response = CurPurchaseHandler.onOrderMsg(orderStatus, orderId, msg) + globals.SugarLogger.Debugf("OnCallbackMsg response : %s", utils.Format4Output(response, false)) }, jxutils.ComposeUniversalOrderID(orderId, model.VendorIDTaoVegetable)) } return response diff --git a/controllers/taobao_vegetable.go b/controllers/taobao_vegetable.go index 8e4c667bd..9784e38fd 100644 --- a/controllers/taobao_vegetable.go +++ b/controllers/taobao_vegetable.go @@ -158,6 +158,7 @@ func (c *TaoBaoVegetableController) ApplyCancelOrder() { } default: callbackResponse := taoVegetable.OnCallbackMsg(tao_vegetable.OrderStatusApplyAfs, afsOrder.OutOrderId, afsOrder) + globals.SugarLogger.Debugf("callbackResponse response : %s", utils.Format4Output(callbackResponse, false)) c.Data["json"] = callbackResponse c.ServeJSON() return From ac479e7c3f61fc09fe2efdb4d1576f2e60da9fc5 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 10:16:13 +0800 Subject: [PATCH 18/30] 1 --- business/partner/purchase/tao_vegetable/order_afs.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/business/partner/purchase/tao_vegetable/order_afs.go b/business/partner/purchase/tao_vegetable/order_afs.go index ed3546300..3190c6b57 100644 --- a/business/partner/purchase/tao_vegetable/order_afs.go +++ b/business/partner/purchase/tao_vegetable/order_afs.go @@ -39,10 +39,10 @@ func (c *PurchaseHandler) isAfsMsg(orderStatus string, orderId string) bool { } func (c *PurchaseHandler) OnAfsOrderMsg(orderId, status string, msg interface{}) (retVal *tao_vegetable.CallBackResult) { - jxutils.CallMsgHandlerAsync(func() { - retVal = c.onAfsOrderMsg(status, msg) - globals.SugarLogger.Debugf("=============errr : %s", utils.Format4Output(retVal, false)) - }, jxutils.ComposeUniversalOrderID(orderId, model.VendorIDTaoVegetable)) + // 取消线程池执行代码,异步返回 + //jxutils.CallMsgHandlerAsync(func() { + retVal = c.onAfsOrderMsg(status, msg) + //}, jxutils.ComposeUniversalOrderID(orderId, model.VendorIDTaoVegetable)) return retVal } 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 19/30] 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" From cd2855a047b1042db598cf723aa42c3ac2571721 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 14:04:22 +0800 Subject: [PATCH 20/30] 1 --- .../partner/purchase/tao_vegetable/order.go | 6 ++-- .../purchase/tao_vegetable/order_afs.go | 31 ++++++++++--------- 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/business/partner/purchase/tao_vegetable/order.go b/business/partner/purchase/tao_vegetable/order.go index 9c7239d4b..63fe4b705 100644 --- a/business/partner/purchase/tao_vegetable/order.go +++ b/business/partner/purchase/tao_vegetable/order.go @@ -54,8 +54,8 @@ func (p *PurchaseHandler) getOrder(vendorOrgCode string, vendorOrderID int64, ve StoreId: utils.String2Pointer(vendorStoreID), BizOrderId: utils.Int64ToPointer(vendorOrderID), }} - - orderDetail, err := getAPI(vendorOrgCode, 0, vendorStoreID).QueryOrderDetail(requestParam) + api := getAPI(vendorOrgCode, 0, vendorStoreID) + orderDetail, err := api.QueryOrderDetail(requestParam) if err != nil { return nil, nil, err } @@ -79,7 +79,7 @@ func (p *PurchaseHandler) getOrder(vendorOrgCode string, vendorOrderID int64, ve InvoiceTitle: "", InvoiceTaxerID: "", InvoiceEmail: "", - VendorOrgCode: vendorOrgCode, + VendorOrgCode: api.GetVendorOrgCode(), UserID: *orderDetail.OpenUid, } diff --git a/business/partner/purchase/tao_vegetable/order_afs.go b/business/partner/purchase/tao_vegetable/order_afs.go index b44540f81..4d6a99fcd 100644 --- a/business/partner/purchase/tao_vegetable/order_afs.go +++ b/business/partner/purchase/tao_vegetable/order_afs.go @@ -262,6 +262,21 @@ 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 { + param := &request3156.AlibabaTclsAelophyRefundDisagreeRequest{ + RefundId: utils.String2Pointer(order.AfsOrderID), + RejectReason: utils.String2Pointer(reason), + OrderFrom: utils.Int64ToPointer(utils.Str2Int64(tao_vegetable.TaoVegetableChannelCode)), + } + err = getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromAfsOrder(order), order.VendorStoreID).DisAgreeUserCancel(param) + if err != nil { + order.Status = model.AfsOrderStatusFailed + order.VendorStatus = "老板拒绝" + order.ReasonDesc += "," + reason + dao.UpdateEntity(dao.GetDB(), order, "Status", "ReasonDesc", "VendorStatus") + } + } else if approveType == partner.AfsApproveTypeRefusedToRefundMoney { + return errors.New("此平台暂时不支持") + } else { // 加载子订单号 orderDetail, _ := partner.CurOrderManager.LoadOrder(order.VendorOrderID, model.VendorIDTaoVegetable) // 加载退款商品 @@ -300,21 +315,7 @@ func (c *PurchaseHandler) AgreeOrRefuseRefund(ctx *jxcontext.Context, order *mod param.AuditMemo = utils.String2Pointer(*param.AuditMemo + fmt.Sprintf(",%s", reason)) } err = getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromAfsOrder(order), order.VendorStoreID).AgreeUserCancel(param) - } else if approveType == partner.AfsApproveTypeRefusedToRefundMoney { - return errors.New("此平台暂时不支持") - } else { - param := &request3156.AlibabaTclsAelophyRefundDisagreeRequest{ - RefundId: utils.String2Pointer(order.AfsOrderID), - RejectReason: utils.String2Pointer(reason), - OrderFrom: utils.Int64ToPointer(utils.Str2Int64(tao_vegetable.TaoVegetableChannelCode)), - } - err = getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromAfsOrder(order), order.VendorStoreID).DisAgreeUserCancel(param) - if err != nil { - order.Status = model.AfsOrderStatusFailed - order.VendorStatus = "老板拒绝" - order.ReasonDesc += "," + reason - dao.UpdateEntity(dao.GetDB(), order, "Status", "ReasonDesc", "VendorStatus") - } + } return err } From 656773fc97c4cc348650629e85657e5610ef374e 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 15:14:21 +0800 Subject: [PATCH 21/30] 1' --- business/model/order_financial.go | 2 +- .../purchase/tao_vegetable/order_afs.go | 61 +++++++++++-------- 2 files changed, 35 insertions(+), 28 deletions(-) diff --git a/business/model/order_financial.go b/business/model/order_financial.go index 6f5da2492..f27af9fb3 100644 --- a/business/model/order_financial.go +++ b/business/model/order_financial.go @@ -89,7 +89,7 @@ type AfsOrder struct { ReasonImgList string `orm:"size(1024)" json:"reasonImgList"` // 售后描述图片 AppealType int8 `json:"appealType"` // 售后方式(本地) VendorAppealType string `orm:"size(255)" json:"vendorAppealType"` // 原始售后方式(第三方平台) - Flag int `json:"flag"` + Flag int `json:"flag"` // 0 未操作/1同意/3驳回 RefundType int8 `json:"refundType"` RefuseReason string `orm:"size(1024)" json:"refuseReason"` diff --git a/business/partner/purchase/tao_vegetable/order_afs.go b/business/partner/purchase/tao_vegetable/order_afs.go index 4d6a99fcd..4033a7d41 100644 --- a/business/partner/purchase/tao_vegetable/order_afs.go +++ b/business/partner/purchase/tao_vegetable/order_afs.go @@ -164,29 +164,36 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal return tao_vegetable.CallBackResultInfo(err) } - if err = utils.CallFuncLogError(func() error { - _, err = dao.DeleteEntity(db, afsOrder[0], "VendorOrderID", "VendorID") - return err - }, "SaveAfsOrder delete AfsOrder, afsOrderID:%s", afsOrder[0].AfsOrderID); err != nil { - return tao_vegetable.CallBackResultInfo(err) - } + cancelMsg := msg.(*tao_vegetable.UserCancelRefundApply) + for _, v := range afsOrder { + // 商家驳回,会发出用户撤销的回调通知,不管他 + if v.AfsOrderID == cancelMsg.RefundId && v.Flag == model.AfsOrderFlagRefuseUserRefund { + return tao_vegetable.CallBackResultInfo(nil) + } - // 删除售后商品 - if err = utils.CallFuncLogError(func() error { - _, err = dao.DeleteEntity(db, &model.OrderSkuFinancial{ - VendorOrderID: afsOrder[0].VendorOrderID, - VendorID: afsOrder[0].VendorID, - IsAfsOrder: 1, - }, "VendorOrderID", "VendorID", "IsAfsOrder") - return err - }, "SaveAfsOrder delete OrderSkuFinancial, afsOrderID:%s", afsOrder[0].AfsOrderID); err != nil { - return tao_vegetable.CallBackResultInfo(err) + // 用户撤销未处理的售后订单 + if v.AfsOrderID == cancelMsg.RefundId && v.Flag == 0 { + // 下面处理用户撤销售后 + if err = utils.CallFuncLogError(func() error { + _, err = dao.DeleteEntity(db, v, "VendorOrderID", "VendorID") + return err + }, "SaveAfsOrder delete AfsOrder, afsOrderID:%s", v.AfsOrderID); err != nil { + return tao_vegetable.CallBackResultInfo(err) + } + + // 删除售后商品 + if err = utils.CallFuncLogError(func() error { + _, err = dao.DeleteEntity(db, &model.OrderSkuFinancial{ + VendorOrderID: v.VendorOrderID, + VendorID: v.VendorID, + IsAfsOrder: 1, + }, "VendorOrderID", "VendorID", "IsAfsOrder") + return err + }, "SaveAfsOrder delete OrderSkuFinancial, afsOrderID:%s", v.AfsOrderID); err != nil { + return tao_vegetable.CallBackResultInfo(err) + } + } } - // 订单更改为待配送 - goodsOrder, _ := partner.CurOrderManager.LoadOrder(orderStatus.RefVendorOrderID, model.VendorIDTaoVegetable) - goodsOrder.Status = model.OrderStatusFinishedPickup - goodsOrder.VendorStatus = status - dao.UpdateEntity(db, goodsOrder, "Status", "VendorStatus") } if err := partner.CurOrderManager.OnAfsOrderStatusChanged(orderStatus); err == nil { @@ -268,12 +275,12 @@ func (c *PurchaseHandler) AgreeOrRefuseRefund(ctx *jxcontext.Context, order *mod OrderFrom: utils.Int64ToPointer(utils.Str2Int64(tao_vegetable.TaoVegetableChannelCode)), } err = getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromAfsOrder(order), order.VendorStoreID).DisAgreeUserCancel(param) - if err != nil { - order.Status = model.AfsOrderStatusFailed - order.VendorStatus = "老板拒绝" - order.ReasonDesc += "," + reason - dao.UpdateEntity(dao.GetDB(), order, "Status", "ReasonDesc", "VendorStatus") - } + //if err == nil { + // order.Status = model.AfsOrderStatusFailed + // order.VendorStatus = "老板拒绝" + // order.ReasonDesc += "," + reason + // dao.UpdateEntity(dao.GetDB(), order, "Status", "ReasonDesc", "VendorStatus") + //} } else if approveType == partner.AfsApproveTypeRefusedToRefundMoney { return errors.New("此平台暂时不支持") } else { From 1d1f547c72eb4aa477e14fc550608227661ba88e 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 15:46:58 +0800 Subject: [PATCH 22/30] 1 --- .../purchase/tao_vegetable/order_afs.go | 44 ++++++++++++------- 1 file changed, 29 insertions(+), 15 deletions(-) diff --git a/business/partner/purchase/tao_vegetable/order_afs.go b/business/partner/purchase/tao_vegetable/order_afs.go index 4033a7d41..2f5f94a0a 100644 --- a/business/partner/purchase/tao_vegetable/order_afs.go +++ b/business/partner/purchase/tao_vegetable/order_afs.go @@ -82,7 +82,6 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal ReasonType: 0, ReasonDesc: refundData.RefundReason, ReasonImgList: utils.LimitUTF8StringLen(refundData.RefundPictures, 1024), - RefundType: model.AfsTypeFullRefund, VendorOrgCode: api.GetVendorOrgCode(), } @@ -131,22 +130,37 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal if err != nil { return tao_vegetable.CallBackResultInfo(err) } - for _, sku := range *skuList.SubOrderResponseList { - orderSku := &model.OrderSkuFinancial{ - Count: utils.Float64TwoInt(*sku.BuySaleQuantity), - VendorSkuID: *sku.SkuCode, - SkuID: utils.Str2Int(*sku.SkuCode), - Name: *sku.SkuName, - UserMoney: *sku.OriginalFee - *sku.DiscountFee, - PmSkuSubsidyMoney: *sku.DiscountPlatformFee, // 平台补贴商品 - VendorOrderID: orderStatus.VendorOrderID, - VendorSubOrderID: *sku.OutSubOrderId, - } - afsOrder.PmSkuSubsidyMoney += orderSku.PmSkuSubsidyMoney - afsOrder.SkuUserMoney += orderSku.UserMoney - afsOrder.Skus = append(afsOrder.Skus, orderSku) + var refundSkuCount int64 = 0 + var orderSkuCount int64 = 0 + for _, refundSku := range refundData.SubRefundOrders { + refundSkuCount += refundSku.RefundAmount + for _, sku := range *skuList.SubOrderResponseList { + if refundSku.OutSubOrderId == *sku.OutSubOrderId { + orderSku := &model.OrderSkuFinancial{ + Count: utils.Float64TwoInt(*sku.BuySaleQuantity), + VendorSkuID: *sku.SkuCode, + SkuID: utils.Str2Int(*sku.SkuCode), + Name: *sku.SkuName, + UserMoney: *sku.OriginalFee - *sku.DiscountFee, + PmSkuSubsidyMoney: *sku.DiscountPlatformFee, // 平台补贴商品 + VendorOrderID: orderStatus.VendorOrderID, + VendorSubOrderID: *sku.OutSubOrderId, + } + + afsOrder.PmSkuSubsidyMoney += orderSku.PmSkuSubsidyMoney + afsOrder.SkuUserMoney += orderSku.UserMoney + afsOrder.Skus = append(afsOrder.Skus, orderSku) + orderSkuCount += utils.Float64TwoInt64(*sku.BuySaleQuantity) + } + } } + if refundSkuCount == orderSkuCount { + afsOrder.RefundType = model.AfsTypeFullRefund + } else { + afsOrder.RefundType = model.AfsTypePartRefund + } + if afsOrder != nil { //直接就来一个新的售后单,并且还是售后完成的 if orderStatus.Status == model.AfsOrderStatusFinished { From 14a153ef566cf292bc406b67118c2ccf671aa306 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 16:58:06 +0800 Subject: [PATCH 23/30] 1 --- .../purchase/tao_vegetable/order_afs.go | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/business/partner/purchase/tao_vegetable/order_afs.go b/business/partner/purchase/tao_vegetable/order_afs.go index 2f5f94a0a..bf0226c66 100644 --- a/business/partner/purchase/tao_vegetable/order_afs.go +++ b/business/partner/purchase/tao_vegetable/order_afs.go @@ -131,11 +131,11 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal return tao_vegetable.CallBackResultInfo(err) } - var refundSkuCount int64 = 0 - var orderSkuCount int64 = 0 - for _, refundSku := range refundData.SubRefundOrders { + var refundSkuCount int64 = 0 // 子订单申请退款的商品数 + var orderSkuCount int64 = 0 // 子订单购买的商品数 + for _, refundSku := range refundData.SubRefundOrders { // 本次退款订单 refundSkuCount += refundSku.RefundAmount - for _, sku := range *skuList.SubOrderResponseList { + for _, sku := range *skuList.SubOrderResponseList { // 总订单 if refundSku.OutSubOrderId == *sku.OutSubOrderId { orderSku := &model.OrderSkuFinancial{ Count: utils.Float64TwoInt(*sku.BuySaleQuantity), @@ -149,17 +149,17 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal } afsOrder.PmSkuSubsidyMoney += orderSku.PmSkuSubsidyMoney - afsOrder.SkuUserMoney += orderSku.UserMoney afsOrder.Skus = append(afsOrder.Skus, orderSku) orderSkuCount += utils.Float64TwoInt64(*sku.BuySaleQuantity) } } } - if refundSkuCount == orderSkuCount { + if refundSkuCount == orderSkuCount && refundData.RefundFee == *skuList.PayFee { // 全退 afsOrder.RefundType = model.AfsTypeFullRefund } else { afsOrder.RefundType = model.AfsTypePartRefund } + afsOrder.SkuUserMoney += refundData.RefundFee if afsOrder != nil { //直接就来一个新的售后单,并且还是售后完成的 @@ -309,26 +309,26 @@ func (c *PurchaseHandler) AgreeOrRefuseRefund(ctx *jxcontext.Context, order *mod OrderFrom: utils.Int64ToPointer(utils.Str2Int64(tao_vegetable.TaoVegetableChannelCode)), } // 加载购买商品 - sku, _ := dao.GetSimpleOrderSkus(db, order.VendorOrderID, nil) - skuCount := 0 - for _, v := range sku { - skuCount += v.Count - } + //sku, _ := dao.GetSimpleOrderSkus(db, order.VendorOrderID, nil) + //skuCount := 0 + //for _, v := range sku { + // skuCount += v.Count + //} - refundSkuCount := 0 + //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 + //refundSkuCount += v.Count } // 全退退运费 - if skuCount == refundSkuCount { - - } + //if skuCount == refundSkuCount { + // subRefundList[len(subRefundList)-1].RefundFee = utils.Int64ToPointer(*subRefundList[len(subRefundList)-1].RefundFee + orderDetail.BaseFreightMoney) + //} param.SubRefundList = &subRefundList param.AuditMemo = utils.String2Pointer(fmt.Sprintf("商户同意退款")) From 6b41dbe6c4de1bc494df2f19cb57325736c9eb59 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 17:08:20 +0800 Subject: [PATCH 24/30] 1 --- business/partner/purchase/tao_vegetable/order_afs.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/partner/purchase/tao_vegetable/order_afs.go b/business/partner/purchase/tao_vegetable/order_afs.go index bf0226c66..929312515 100644 --- a/business/partner/purchase/tao_vegetable/order_afs.go +++ b/business/partner/purchase/tao_vegetable/order_afs.go @@ -142,7 +142,7 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal VendorSkuID: *sku.SkuCode, SkuID: utils.Str2Int(*sku.SkuCode), Name: *sku.SkuName, - UserMoney: *sku.OriginalFee - *sku.DiscountFee, + UserMoney: refundSku.MaxRefundFee, PmSkuSubsidyMoney: *sku.DiscountPlatformFee, // 平台补贴商品 VendorOrderID: orderStatus.VendorOrderID, VendorSubOrderID: *sku.OutSubOrderId, From ec1d94abdf6b1b71ce93b1c761e0f4defd21ae48 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 17:20:53 +0800 Subject: [PATCH 25/30] 1 --- .../partner/purchase/tao_vegetable/order_utils.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/business/partner/purchase/tao_vegetable/order_utils.go b/business/partner/purchase/tao_vegetable/order_utils.go index e34691892..7fa19de19 100644 --- a/business/partner/purchase/tao_vegetable/order_utils.go +++ b/business/partner/purchase/tao_vegetable/order_utils.go @@ -92,6 +92,18 @@ func getOrderCancelList(api *tao_vegetable.API, order *model.GoodsOrder) (*domai OrderFrom: utils.Int64ToPointer(utils.Str2Int64(tao_vegetable.TaoVegetableChannelCode)), }, } + + skuList, err := dao.GetSimpleOrderSkus(dao.GetDB(), order.VendorOrderID, nil) + if err != nil { + return nil, err + } + + outSubOrderIds := make([]string, 0, len(skuList)) + for _, v := range skuList { + outSubOrderIds = append(outSubOrderIds, v.VendorSubOrderID) + } + param.RefundCsApplyRenderDTO.OutSubOrderIds = &outSubOrderIds + return api.PartialRefundReason(param) } From 47aee25b981d2a0c6cc725080f71d2167185437a 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 18:11:19 +0800 Subject: [PATCH 26/30] 1 --- business/partner/purchase/tao_vegetable/order.go | 5 +++-- business/partner/purchase/tao_vegetable/order_utils.go | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/business/partner/purchase/tao_vegetable/order.go b/business/partner/purchase/tao_vegetable/order.go index 63fe4b705..13d5eb972 100644 --- a/business/partner/purchase/tao_vegetable/order.go +++ b/business/partner/purchase/tao_vegetable/order.go @@ -654,10 +654,11 @@ func (c *PurchaseHandler) CancelOrder(ctx *jxcontext.Context, order *model.Goods } } + reasonId := *orderSkuList.ReasonList param := &request3156.AlibabaTclsAelophyRefundCsapplyRequest{ RefundCsApplyDTO: &domain3156.AlibabaTclsAelophyRefundCsapplyRefundCsApplyDto{ - ReasonId: utils.Int64ToPointer(1111), - OutOrderId: utils.String2Pointer(order.VendorOrderID), + 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())), OutSubOrderIds: &outSubOrderIds, diff --git a/business/partner/purchase/tao_vegetable/order_utils.go b/business/partner/purchase/tao_vegetable/order_utils.go index 7fa19de19..86ed90286 100644 --- a/business/partner/purchase/tao_vegetable/order_utils.go +++ b/business/partner/purchase/tao_vegetable/order_utils.go @@ -86,7 +86,7 @@ func OrderStatusChangeDelivery(order *model.GoodsOrder, orderStatus string) *req func getOrderCancelList(api *tao_vegetable.API, order *model.GoodsOrder) (*domain3156.AlibabaTclsAelophyRefundCsapplyrenderRefundCsApplyRenderResponseDto, error) { param := &request3156.AlibabaTclsAelophyRefundCsapplyrenderRequest{ RefundCsApplyRenderDTO: &domain3156.AlibabaTclsAelophyRefundCsapplyrenderRefundCsApplyRenderDto{ - OutOrderId: utils.String2Pointer(order.VendorOrderID), + OutOrderId: utils.String2Pointer(order.VendorOrderID2), StoreId: utils.String2Pointer(order.VendorStoreID), OutSubOrderIds: nil, OrderFrom: utils.Int64ToPointer(utils.Str2Int64(tao_vegetable.TaoVegetableChannelCode)), From 83a0b7216844ccd6c7a226d8b9b92419ff22d6c2 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 18:47:22 +0800 Subject: [PATCH 27/30] 1' --- business/partner/purchase/tao_vegetable/order.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/partner/purchase/tao_vegetable/order.go b/business/partner/purchase/tao_vegetable/order.go index 13d5eb972..09ae8d9c0 100644 --- a/business/partner/purchase/tao_vegetable/order.go +++ b/business/partner/purchase/tao_vegetable/order.go @@ -377,7 +377,7 @@ func (c *PurchaseHandler) onOrderMsg(orderStatus, orderId string, orderCallback // 发货完成 if msg.OrderStatus == tao_vegetable.OrderStatusCallRider { // || msgId == tiktokShop.CallbackPartGoodsMsgTagId 部分发货 utils.CallFuncAsync(func() { - orderMap, _ := getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromOrder(order), "").QueryOrderDetail(&request591.AlibabaAelophyOrderGetRequest{ + orderMap, _ := getAPI("", jxutils.GetSaleStoreIDFromOrder(order), order.VendorStoreID).QueryOrderDetail(&request591.AlibabaAelophyOrderGetRequest{ OrderGetRequest: &domain591.AlibabaAelophyOrderGetOrderGetRequest{ StoreId: utils.String2Pointer(msg.StoreId), BizOrderId: utils.Int64ToPointer(msg.BizOrderId), From 71425a6952787abad94bbf9a2bd18b93ba6a8019 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 19:14:08 +0800 Subject: [PATCH 28/30] 1 --- .../purchase/tao_vegetable/order_afs.go | 34 +++++++++++++------ controllers/taobao_vegetable.go | 2 +- 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/business/partner/purchase/tao_vegetable/order_afs.go b/business/partner/purchase/tao_vegetable/order_afs.go index 929312515..675cdf0c2 100644 --- a/business/partner/purchase/tao_vegetable/order_afs.go +++ b/business/partner/purchase/tao_vegetable/order_afs.go @@ -29,10 +29,17 @@ var ( func (c *PurchaseHandler) isAfsMsg(orderStatus string, orderId string) bool { if orderStatus == tao_vegetable.OrderStatusApplyAfs || orderStatus == tao_vegetable.OrderStatusCancelAfs || orderStatus == tao_vegetable.OrderStatusRefundSuccess { - // order, _ := partner.CurOrderManager.LoadOrder(orderId, model.VendorIDTaoVegetable) - order, _ := partner.CurOrderManager.LoadOrder2(orderId, model.VendorIDTaoVegetable) - if order != nil { - return true + switch orderStatus { + case tao_vegetable.OrderStatusApplyAfs, tao_vegetable.OrderStatusCancelAfs: + order, _ := partner.CurOrderManager.LoadOrder2(orderId, model.VendorIDTaoVegetable) + if order != nil { + return true + } + case tao_vegetable.OrderStatusRefundSuccess: + afsOrder, _ := partner.CurOrderManager.LoadAfsOrder(orderId, model.VendorIDTaoVegetable) + if afsOrder != nil { + return true + } } } return false @@ -239,6 +246,10 @@ func (c *PurchaseHandler) callbackAfsMsg2Status(status string, msg interface{}) orderStatus.StatusTime = time.Now() orderStatus.Remark = refundData.Remarks orderStatus.VendorOrderID = refundData.RefundId + order, _ := partner.CurOrderManager.LoadOrder2(orderStatus.RefVendorOrderID, model.VendorIDTaoVegetable) + if order != nil { + orderStatus.RefVendorOrderID = order.VendorOrderID + } case tao_vegetable.OrderStatusCancelAfs: // 用户取消售后 refundData := msg.(*tao_vegetable.UserCancelRefundApply) orderStatus.RefVendorOrderID = refundData.OutOrderId @@ -246,7 +257,11 @@ func (c *PurchaseHandler) callbackAfsMsg2Status(status string, msg interface{}) orderStatus.Status = c.GetAfsStatusFromVendorStatus(tao_vegetable.OrderStatusCancelAfs) orderStatus.StatusTime = time.Now() orderStatus.VendorOrderID = refundData.RefundId - //case tao_vegetable.OrderStatusOnSaleCancel: + order, _ := partner.CurOrderManager.LoadOrder2(orderStatus.RefVendorOrderID, model.VendorIDTaoVegetable) + if order != nil { + orderStatus.RefVendorOrderID = order.VendorOrderID + } + //case tao_vegetable.OrderStatusOnSaleCancel: // refundData := msg.(*tao_vegetable.OnSaleCancel) // orderStatus.RefVendorOrderID = utils.Int64ToStr(refundData.BizOrderId) // orderStatus.VendorStatus = fmt.Sprintf("%s:%s", tao_vegetable.OrderStatusOnSaleCancel, "用户售中取消") @@ -255,16 +270,15 @@ func (c *PurchaseHandler) callbackAfsMsg2Status(status string, msg interface{}) // orderStatus.VendorOrderID = refundData.IdempotentId case tao_vegetable.OrderStatusRefundSuccess: // 售后成功 refundData := msg.(*tao_vegetable.RefundOrderFinish) - orderStatus.RefVendorOrderID = refundData.OutMainRefundId + afsOrder, _ := partner.CurOrderManager.LoadAfsOrder(refundData.OutMainRefundId, model.VendorIDTaoVegetable) + orderStatus.RefVendorOrderID = afsOrder.VendorOrderID 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 = refundData.OutMainRefundId } - order, _ := partner.CurOrderManager.LoadOrder2(orderStatus.RefVendorOrderID, model.VendorIDTaoVegetable) - if order != nil { - orderStatus.RefVendorOrderID = order.VendorOrderID - } + if orderStatus.VendorOrderID == "" { orderStatus.VendorOrderID = orderStatus.RefVendorOrderID } diff --git a/controllers/taobao_vegetable.go b/controllers/taobao_vegetable.go index 9784e38fd..bf9926651 100644 --- a/controllers/taobao_vegetable.go +++ b/controllers/taobao_vegetable.go @@ -293,7 +293,7 @@ func (c *TaoBaoVegetableController) RefundOrderSuccess() { return } default: - callbackResponse := taoVegetable.OnCallbackMsg(tao_vegetable.OrderStatusRefundSuccess, refundSuccess.OutSubOrderId, refundSuccess) + callbackResponse := taoVegetable.OnCallbackMsg(tao_vegetable.OrderStatusRefundSuccess, refundSuccess.OutMainRefundId, refundSuccess) c.Data["json"] = callbackResponse c.ServeJSON() return From 29296e9a07199beae1d1b6be72685790e9d185fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Thu, 6 Jul 2023 09:20:32 +0800 Subject: [PATCH 29/30] 1 --- business/partner/purchase/tao_vegetable/order_afs.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/business/partner/purchase/tao_vegetable/order_afs.go b/business/partner/purchase/tao_vegetable/order_afs.go index 675cdf0c2..30f0cac23 100644 --- a/business/partner/purchase/tao_vegetable/order_afs.go +++ b/business/partner/purchase/tao_vegetable/order_afs.go @@ -149,11 +149,17 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal VendorSkuID: *sku.SkuCode, SkuID: utils.Str2Int(*sku.SkuCode), Name: *sku.SkuName, - UserMoney: refundSku.MaxRefundFee, PmSkuSubsidyMoney: *sku.DiscountPlatformFee, // 平台补贴商品 VendorOrderID: orderStatus.VendorOrderID, VendorSubOrderID: *sku.OutSubOrderId, } + // 交易成功,商户取消,配送中,配送结束时!订单不退换运费 + switch *sku.OrderStatus { + case tao_vegetable.OrderStatusSuccess, tao_vegetable.OrderStatusMerchantCancel, tao_vegetable.OrderStatusDelivery, tao_vegetable.OrderStatusDeliveryOver: + orderSku.UserMoney = refundSku.RefundFee + default: + orderSku.UserMoney = refundSku.MaxRefundFee + } afsOrder.PmSkuSubsidyMoney += orderSku.PmSkuSubsidyMoney afsOrder.Skus = append(afsOrder.Skus, orderSku) From acb95c8459f6e01aeae86fb1ff024f0c3f057e66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Thu, 6 Jul 2023 09:44:38 +0800 Subject: [PATCH 30/30] 1 --- .../partner/purchase/tao_vegetable/order_afs.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/business/partner/purchase/tao_vegetable/order_afs.go b/business/partner/purchase/tao_vegetable/order_afs.go index 30f0cac23..54f9b3f92 100644 --- a/business/partner/purchase/tao_vegetable/order_afs.go +++ b/business/partner/purchase/tao_vegetable/order_afs.go @@ -224,7 +224,18 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal } if err := partner.CurOrderManager.OnAfsOrderStatusChanged(orderStatus); err == nil { - if err == nil && status == tao_vegetable.OrderStatusRefundSuccess { + skuList, _ := dao.GetSimpleOrderSkus(db, orderStatus.RefVendorOrderID, nil) + totalSkuCount := 0 + for _, v := range skuList { + totalSkuCount += v.Count + } + + financialSku, _ := dao.GetOrderRefundSkuList(db, []string{orderStatus.RefVendorOrderID}) + refundSkuCount := 0 + for _, v := range financialSku { + refundSkuCount += v.Count + } + if err == nil && status == tao_vegetable.OrderStatusRefundSuccess && totalSkuCount == refundSkuCount { goodsOrder, _ := partner.CurOrderManager.LoadOrder(orderStatus.RefVendorOrderID, orderStatus.VendorID) goodsOrder.Status = model.OrderStatusCanceled goodsOrder.VendorStatus = orderStatus.VendorStatus