From f4749a153fb21c73e0c0617bc0b0ff5b322a5ee0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Tue, 8 Nov 2022 15:44:06 +0800 Subject: [PATCH 1/4] 1 --- business/model/dao/store_sku.go | 1 - 1 file changed, 1 deletion(-) diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index a59ca995f..bff4ee70d 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -692,7 +692,6 @@ func GetStoreSkus2(db *DaoDB, vendorID, storeID int, skuIDs []int, mustDirty boo if err = GetRows(db, &skus, sql, sqlParams...); err != nil { return nil, err } - globals.SugarLogger.Debugf("=====skus := %s", utils.Format4Output(skus, false)) return skus, err } From 8a33e0968d48bf9e078fe6aa9df7f3a9e9c902b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Tue, 8 Nov 2022 15:53:31 +0800 Subject: [PATCH 2/4] 1 --- business/model/dao/store_sku.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index bff4ee70d..47a4c8f74 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -687,8 +687,6 @@ func GetStoreSkus2(db *DaoDB, vendorID, storeID int, skuIDs []int, mustDirty boo sql = fmt.Sprintf(sql, fmtParams...) sql += " ORDER BY t1.price" - globals.SugarLogger.Debugf("=======sql := %s", sql) - globals.SugarLogger.Debugf("=====param := %s", utils.Format4Output(sqlParams, false)) if err = GetRows(db, &skus, sql, sqlParams...); err != nil { return nil, err } From 8ea91ef1a028d2052f72733ee6e8e2b5139551aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Tue, 8 Nov 2022 16:21:35 +0800 Subject: [PATCH 3/4] 1 --- business/jxstore/cms/sync_store_sku.go | 3 + .../purchase/tiktok_store/store_sku2.go | 92 +++++++++++-------- 2 files changed, 55 insertions(+), 40 deletions(-) diff --git a/business/jxstore/cms/sync_store_sku.go b/business/jxstore/cms/sync_store_sku.go index a00194706..e092d8098 100644 --- a/business/jxstore/cms/sync_store_sku.go +++ b/business/jxstore/cms/sync_store_sku.go @@ -937,6 +937,9 @@ func PruneMissingStoreSkus(ctx *jxcontext.Context, parentTask tasksch.ITask, ven } func amendAndPruneStoreStuff(ctx *jxcontext.Context, parentTask tasksch.ITask, vendorID, storeID int, vendorStoreID string, isAsync, isContinueWhenError bool, opType int, isForceUpdate bool) (hint string, err error) { + if vendorID == model.VendorIDDD { + return "", nil + } handler, _ := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.ISingleStoreStoreSkuHandler) if handler == nil { return "", fmt.Errorf("平台:%s不支持此操作", model.VendorChineseNames[vendorID]) diff --git a/business/partner/purchase/tiktok_store/store_sku2.go b/business/partner/purchase/tiktok_store/store_sku2.go index 29ba7937c..5d2d351df 100644 --- a/business/partner/purchase/tiktok_store/store_sku2.go +++ b/business/partner/purchase/tiktok_store/store_sku2.go @@ -4,6 +4,7 @@ import ( "errors" "fmt" "git.rosy.net.cn/baseapi/platformapi/mtwmapi" + product_listV2_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_listV2/request" sku_editPrice_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/sku_editPrice/request" sku_syncStock_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/sku_syncStock/request" tiktokShop "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/tiktok_api" @@ -346,47 +347,58 @@ func (p *PurchaseHandler) UpdateStoreSkusStock(ctx *jxcontext.Context, vendorOrg func (p *PurchaseHandler) GetStoreSkusFullInfo(ctx *jxcontext.Context, parentTask tasksch.ITask, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (skuNameList []*partner.SkuNameInfo, err error) { // 查询单个门店商品 - tiktokApi := getAPI(storeSkuList[0].VendorOrgCode, storeID, vendorStoreID) - - for _, v := range storeSkuList { - skuInfo, err := tiktokApi.GetSkuDetail(v.VendorSkuID, utils.Int2Str(v.SkuID)) - if err != nil { - return nil, err - } - if skuName := vendorSku2Jx(skuInfo); skuName != nil { - skuNameList = append(skuNameList, skuName) - } + appOrgCode := "" + if len(storeSkuList) == 0 { + storeDetail, _ := dao.GetStoreDetail(dao.GetDB(), storeID, model.VendorIDDD, "") + appOrgCode = storeDetail.VendorOrgCode + } else { + appOrgCode = storeSkuList[0].VendorOrgCode } - //switch len(storeSkuList) { - //case 1: - // - //default: - // // 列表查询门店商品 - // //var storeSkuMap map[string]*partner.StoreSkuInfo - // //if storeSkuList != nil { - // // storeSkuMap = putils.StoreSkuList2MapByVendorSkuID(storeSkuList) - // //} - // //for { - // // result, err := mtapi.RetailList(vendorStoreID, len(skuNameList), mtwmapi.GeneralMaxLimit) - // // if err != nil { - // // return nil, err - // // } - // // if storeSkuMap == nil { - // // skuNameList = append(skuNameList, vendorSkuList2Jx(result)...) - // // } else { - // // for _, v := range result { - // // if storeSkuMap[v.AppFoodCode] != nil { - // // if skuName := vendorSku2Jx(v); skuName != nil { - // // skuNameList = append(skuNameList, skuName) - // // } - // // } - // // } - // // } - // // if len(result) < mtwmapi.GeneralMaxLimit { - // // break - // // } - // //} - //} + tiktokApi := getAPI(appOrgCode, storeID, vendorStoreID) + + if len(storeSkuList) != 0 { + for _, v := range storeSkuList { + skuInfo, err := tiktokApi.GetSkuDetail(v.VendorSkuID, utils.Int2Str(v.SkuID)) + if err != nil { + return nil, err + } + if skuName := vendorSku2Jx(skuInfo); skuName != nil { + skuNameList = append(skuNameList, skuName) + } + } + } else { + var page int64 = 1 + var pageSize int64 = 100 + for { + skuInfo, err := tiktokApi.GetSkuDetailList(&product_listV2_request.ProductListV2Param{ + Status: 0, + CheckStatus: 3, + ProductType: 0, + Page: page, + Size: pageSize, + StoreId: utils.Str2Int64(vendorStoreID), + }) + if err != nil { + return nil, err + } + for _, v := range skuInfo.Data { + skuInfo, err := tiktokApi.GetSkuDetail(utils.Int64ToStr(v.ProductId), "") + if err != nil { + return nil, err + } + if skuName := vendorSku2Jx(skuInfo); skuName != nil { + skuNameList = append(skuNameList, skuName) + } + } + if page*pageSize > skuInfo.Total { + page++ + } else { + break + } + } + + } + return skuNameList, err } From 2a0e5d85a5bb52dd580dddd30e62e0abb188b8fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Tue, 8 Nov 2022 17:26:59 +0800 Subject: [PATCH 4/4] 1 --- .../partner/purchase/tiktok_store/order.go | 61 ++++++++++++++++++- .../purchase/tiktok_store/order_afs.go | 46 +++++++++++++- .../purchase/tiktok_store/order_afs_utils.go | 4 +- 3 files changed, 106 insertions(+), 5 deletions(-) diff --git a/business/partner/purchase/tiktok_store/order.go b/business/partner/purchase/tiktok_store/order.go index 15d04e261..53f7a36c8 100644 --- a/business/partner/purchase/tiktok_store/order.go +++ b/business/partner/purchase/tiktok_store/order.go @@ -663,6 +663,25 @@ func (c *PurchaseHandler) GetOrderRealMobile(ctx *jxcontext.Context, order *mode return "", err } +const ( + AfterSaleEmuAgreeToReturnOneApply = 101 // 同意退货申请(一次审核)不接 Logistics.ReceiverAddressId 或 Logistics.AfterSaleAddressDetail + AfterSaleEmuRefuseToReturnOneApply = 102 // 拒绝退货申请(一次审核) reason , evidence + AfterSaleEmuAgreeToReturnTwoApply = 111 // 同意退货(二次审核) 不接 + AfterSaleEmuRefuseToReturnTwoApply = 112 // 拒绝退货 (二次审核) reason , evidence + AfterSaleEmuReturnGoodsToRefundApply = 121 // 退货转退款 + AfterSaleEmuAgreeOnlyRefundApply = 201 // 同意仅退款 + AfterSaleEmuRefuseOnlyRefundApply = 202 // 拒绝仅退款 reason , evidence + AfterSaleEmuRefundAfterRefusalApply = 203 // 同意拒签后退款 不接 + AfterSaleEmuAgreeChangeGoodsOneApply = 301 // 同意换货申请(一次审核) 不接 Logistics.ReceiverAddressId 或 Logistics.AfterSaleAddressDetail + AfterSaleEmuRefundChangeGoodsOneApply = 302 // 拒绝换货申请(一次审核) reason,evidence + AfterSaleEmuAgreeChangeGoodsTwoApply = 311 // 同意换货(二次审核) logistics.companyCode,logistics.logisticsCode + AfterSaleEmuRefundChangeGoodsTwoApply = 312 // 拒绝换货(二次审核) reason,evidence + AfterSaleEmuChangeGoodsToRefundApply = 321 // 换货转退款 + AfterSaleEmuAgreePreSaleReturnApply = 401 // 同意售前退申请(拒绝售前退款请使用发货接口) + AfterSaleEmuAgreeReissueApply = 501 // 同意补寄 + AfterSaleEmuRefundReissueApply = 502 // 拒绝补寄 +) + // AgreeOrRefuseCancel 同意或拒绝(退款) func (c *PurchaseHandler) AgreeOrRefuseCancel(ctx *jxcontext.Context, order *model.GoodsOrder, isAgree bool, reason string) (err error) { afsOrder, err := partner.CurOrderManager.LoadAfsOrder(order.VendorOrderID, order.VendorID) @@ -671,11 +690,49 @@ func (c *PurchaseHandler) AgreeOrRefuseCancel(ctx *jxcontext.Context, order *mod } if globals.EnableDdStoreWrite { if isAgree { + errList := make([]string, 0, 0) // 同意仅退款 - err = getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromOrder(order), "").AfterSaleOperate(tiktokShop.AfterSaleEmuAgreeOnlyRefundApply, afsOrder.AfsOrderID, reason, utils.Str2Int64(order.VendorStoreID)) + if err = getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromOrder(order), "").AfterSaleOperate(tiktokShop.AfterSaleEmuAgreeOnlyRefundApply, afsOrder.AfsOrderID, reason, utils.Str2Int64(order.VendorStoreID)); err != nil { + errList = append(errList, err.Error()) + } else { + return nil + } + if err = getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromOrder(order), "").AfterSaleOperate(tiktokShop.AfterSaleEmuAgreeToReturnOneApply, afsOrder.AfsOrderID, reason, utils.Str2Int64(order.VendorStoreID)); err != nil { + errList = append(errList, err.Error()) + } else { + return nil + } + if err = getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromOrder(order), "").AfterSaleOperate(tiktokShop.AfterSaleEmuAgreeToReturnTwoApply, afsOrder.AfsOrderID, reason, utils.Str2Int64(order.VendorStoreID)); err != nil { + errList = append(errList, err.Error()) + } else { + return nil + } + if len(errList) < 3 { + return nil + } + return fmt.Errorf("%s", strings.Join(errList, "--")) } else { + errList := make([]string, 0, 0) // 拒绝退款 - err = getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromOrder(order), "").AfterSaleOperate(tiktokShop.AfterSaleEmuRefuseOnlyRefundApply, afsOrder.AfsOrderID, reason, utils.Str2Int64(order.VendorStoreID)) + if err = getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromOrder(order), "").AfterSaleOperate(tiktokShop.AfterSaleEmuRefuseOnlyRefundApply, afsOrder.AfsOrderID, reason, utils.Str2Int64(order.VendorStoreID)); err != nil { + errList = append(errList, err.Error()) + } else { + return nil + } + if err = getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromOrder(order), "").AfterSaleOperate(tiktokShop.AfterSaleEmuRefuseToReturnOneApply, afsOrder.AfsOrderID, reason, utils.Str2Int64(order.VendorStoreID)); err != nil { + errList = append(errList, err.Error()) + } else { + return nil + } + if err = getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromOrder(order), "").AfterSaleOperate(tiktokShop.AfterSaleEmuRefuseToReturnTwoApply, afsOrder.AfsOrderID, reason, utils.Str2Int64(order.VendorStoreID)); err != nil { + errList = append(errList, err.Error()) + } else { + return nil + } + if len(errList) < 3 { + return nil + } + return fmt.Errorf("%s", strings.Join(errList, "--")) } } return err diff --git a/business/partner/purchase/tiktok_store/order_afs.go b/business/partner/purchase/tiktok_store/order_afs.go index 186d397cf..1a050b11a 100644 --- a/business/partner/purchase/tiktok_store/order_afs.go +++ b/business/partner/purchase/tiktok_store/order_afs.go @@ -8,6 +8,7 @@ import ( "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/partner" "git.rosy.net.cn/jx-callback/globals" + "strings" ) var ( @@ -114,9 +115,50 @@ var ( func (c *PurchaseHandler) AgreeOrRefuseRefund(ctx *jxcontext.Context, order *model.AfsOrder, approveType int, reason string) (err error) { if globals.EnableDdStoreWrite { if approveType == partner.AfsApproveTypeRefused { // 拒绝退货 - err = getAPI(order.VendorOrgCode, order.JxStoreID, "").AfterSaleOperate(tiktokShop.AfterSaleEmuRefuseOnlyRefundApply, order.AfsOrderID, "拒绝退货", utils.Str2Int64(order.VendorStoreID)) + errList := make([]string, 0, 0) + // 拒绝退款 + if err = getAPI(order.VendorOrgCode, order.JxStoreID, "").AfterSaleOperate(tiktokShop.AfterSaleEmuRefuseOnlyRefundApply, order.AfsOrderID, reason, utils.Str2Int64(order.VendorStoreID)); err != nil { + errList = append(errList, err.Error()) + } else { + return nil + } + if err = getAPI(order.VendorOrgCode, order.JxStoreID, "").AfterSaleOperate(tiktokShop.AfterSaleEmuRefuseToReturnOneApply, order.AfsOrderID, reason, utils.Str2Int64(order.VendorStoreID)); err != nil { + errList = append(errList, err.Error()) + } else { + return nil + } + if err = getAPI(order.VendorOrgCode, order.JxStoreID, "").AfterSaleOperate(tiktokShop.AfterSaleEmuRefuseToReturnTwoApply, order.AfsOrderID, reason, utils.Str2Int64(order.VendorStoreID)); err != nil { + errList = append(errList, err.Error()) + } else { + return nil + } + if len(errList) < 3 { + return nil + } + return fmt.Errorf("%s", strings.Join(errList, "--")) } else if approveType == partner.AfsApproveTypeRefund { // 同意 - err = getAPI(order.VendorOrgCode, order.JxStoreID, "").AfterSaleOperate(tiktokShop.AfterSaleEmuAgreeOnlyRefundApply, order.AfsOrderID, "同意仅退款", utils.Str2Int64(order.VendorStoreID)) + errList := make([]string, 0, 0) + // 同意仅退款 + if err = getAPI(order.VendorOrgCode, order.JxStoreID, "").AfterSaleOperate(tiktokShop.AfterSaleEmuAgreeOnlyRefundApply, order.AfsOrderID, reason, utils.Str2Int64(order.VendorStoreID)); err != nil { + errList = append(errList, err.Error()) + } else { + return nil + } + if err = getAPI(order.VendorOrgCode, order.JxStoreID, "").AfterSaleOperate(tiktokShop.AfterSaleEmuAgreeToReturnOneApply, order.AfsOrderID, reason, utils.Str2Int64(order.VendorStoreID)); err != nil { + errList = append(errList, err.Error()) + } else { + return nil + } + if err = getAPI(order.VendorOrgCode, order.JxStoreID, "").AfterSaleOperate(tiktokShop.AfterSaleEmuAgreeToReturnTwoApply, order.AfsOrderID, reason, utils.Str2Int64(order.VendorStoreID)); err != nil { + errList = append(errList, err.Error()) + } else { + return nil + } + + return fmt.Errorf("%s", strings.Join(errList, "--")) + if len(errList) < 3 { + return nil + } } else if approveType == partner.AfsApproveTypeRefusedToRefundMoney { // 退货转退款 err = getAPI(order.VendorOrgCode, order.JxStoreID, "").AfterSaleOperate(tiktokShop.AfterSaleEmuReturnGoodsToRefundApply, order.AfsOrderID, "退货转退款", utils.Str2Int64(order.VendorStoreID)) } diff --git a/business/partner/purchase/tiktok_store/order_afs_utils.go b/business/partner/purchase/tiktok_store/order_afs_utils.go index 6e7001e3e..b5d417e47 100644 --- a/business/partner/purchase/tiktok_store/order_afs_utils.go +++ b/business/partner/purchase/tiktok_store/order_afs_utils.go @@ -7,6 +7,7 @@ import ( "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/model/dao" "git.rosy.net.cn/jx-callback/business/partner" + "git.rosy.net.cn/jx-callback/globals" "strings" ) @@ -48,6 +49,7 @@ func (c *PurchaseHandler) OnAfsOrderMsg(msgId, orderId string, msg interface{}) func (c *PurchaseHandler) onAfsOrderMsg(msgId string, msg interface{}) (retVal *tiktokShop.CallbackResponse) { var err error orderStatus, vendorOrgCode := c.callbackAfsMsg2Status(msgId, msg) + globals.SugarLogger.Debugf("========onAfsOrderMsg====== : %s", utils.Format4Output(orderStatus, false)) if orderStatus == nil { return tiktokShop.Err2CallbackResponse(nil, "") } @@ -279,7 +281,7 @@ func (c *PurchaseHandler) callbackAfsMsg2Status(msgId string, msg interface{}) ( if k, ok := ReasonCodeMap[refundOrder.ReasonCode]; ok { orderMsg.Remark = k } else { - orderMsg.Remark = "同意退款回调,抖音reason_code对应reason不足,需要更新.code:" + utils.Int2Str(refundOrder.ReasonCode) + orderMsg.Remark = "同意退款消息,抖音reason_code对应reason不足,需要更新.code:" + utils.Int2Str(refundOrder.ReasonCode) } if refundOrder.AftersaleId > 0 { orderMsg.VendorOrderID = utils.Int64ToStr(refundOrder.AftersaleId)