diff --git a/business/jxstore/cms/sync2.go b/business/jxstore/cms/sync2.go index cd09cd9ea..2a27c710b 100644 --- a/business/jxstore/cms/sync2.go +++ b/business/jxstore/cms/sync2.go @@ -338,7 +338,6 @@ func OnCreateThing2Tiktok(ctx *jxcontext.Context, db *dao.DaoDB, appOrgCode stri } errList := errlist.New() for _, v := range vendorThingList { - globals.SugarLogger.Debugf("==========本地商品id:[%d],主商品id:[%d],主商品属性:[%s]", v.LocalSkuId, v.MainId, v.SkuAttrId) thingMap := &model.ThingMap{ ThingID: v.LocalSkuId, ThingType: thingType, diff --git a/business/jxstore/cms/sync_store_sku.go b/business/jxstore/cms/sync_store_sku.go index 6e0ad11b5..60f2cda43 100644 --- a/business/jxstore/cms/sync_store_sku.go +++ b/business/jxstore/cms/sync_store_sku.go @@ -616,7 +616,6 @@ func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, causeFlag } return skuList } - globals.SugarLogger.Debugf("bareSku2Sync==========%s", utils.Format4Output(bareSku2Sync, false)) isContinueWhenError2 := true //如果是银豹平台,则要按照商品skuname维度同步 diff --git a/business/model/store_sku.go b/business/model/store_sku.go index 2bd8d067a..210462ab1 100644 --- a/business/model/store_sku.go +++ b/business/model/store_sku.go @@ -115,14 +115,14 @@ type StoreSkuBind struct { // ElmID int64 `orm:"column(elm_id);index"` MtwmID int64 `orm:"column(mtwm_id);index"` EbaiID int64 `orm:"column(ebai_id);index"` - DdID int64 `orm:"column(dd_id);index"` + DdID int64 `orm:"column(dd_id);index"` // 子品主商品id YbID int64 `orm:"column(yb_id);index"` JdsID int64 `orm:"column(jds_id);index"` JdsWareID int64 `orm:"column(jds_ware_id)"` //GmID string `orm:"column(gm_id)"` // WscID int64 `orm:"column(wsc_id);index"` // 表示微盟skuId // WscID2 int64 `orm:"column(wsc_id2);index"` // 表示微盟goodsId - VendorSkuAttrId string `orm:"column(vendor_sku_attr_id)"` // 抖音需要,抖音商品属性id + VendorSkuAttrId string `orm:"column(vendor_sku_attr_id)"` // 抖音需要,主品skuid VendorMainId string `orm:"column(vendor_Main_id)"` // 抖音需要,商品主id // ElmSyncStatus int8 `orm:"default(2)"` diff --git a/business/partner/partner.go b/business/partner/partner.go index 63d4b1418..98a6fee64 100644 --- a/business/partner/partner.go +++ b/business/partner/partner.go @@ -27,9 +27,10 @@ const ( ) const ( - AfsApproveTypeRefund = 1 // 退款 - AfsApproveTypeReturnGoods = 2 // 退货 - AfsApproveTypeRefused = 3 // 驳回 + AfsApproveTypeRefund = 1 // 同意退款 + AfsApproveTypeReturnGoods = 2 // 退货退款 + AfsApproveTypeRefused = 3 // 驳回退款 + AfsApproveTypeRefusedToRefundMoney = 4 // 退货转退款 ) const ( diff --git a/business/partner/purchase/doudian/store_test.go b/business/partner/purchase/doudian/store_test.go index a0ce41b81..a717e0646 100644 --- a/business/partner/purchase/doudian/store_test.go +++ b/business/partner/purchase/doudian/store_test.go @@ -4,7 +4,6 @@ import ( "fmt" shop_batchCreateStore_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/shop_batchCreateStore/request" "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/tiktok_api" - "git.rosy.net.cn/jx-callback/business/partner/purchase/tiktok_store" "testing" ) @@ -114,6 +113,6 @@ func TestCreateFences(t *testing.T) { //t.Fatalf("resp===========:%v", resp) } func TestSplice(t *testing.T) { - resp := tiktok_store.SplicingTimeToDoudian(100, 1100, 1200, 2100) - t.Fatalf("resp===========:%v", resp) + //resp := tiktok_store.SplicingTimeToDoudian(100, 1100, 1200, 2100) + //t.Fatalf("resp===========:%v", resp) } diff --git a/business/partner/purchase/ebai/order_afs.go b/business/partner/purchase/ebai/order_afs.go index 9149dbfe2..33af86e67 100644 --- a/business/partner/purchase/ebai/order_afs.go +++ b/business/partner/purchase/ebai/order_afs.go @@ -1,6 +1,7 @@ package ebai import ( + "errors" "fmt" "strings" @@ -225,6 +226,8 @@ func (c *PurchaseHandler) AgreeOrRefuseRefund(ctx *jxcontext.Context, order *mod if globals.EnableEbaiStoreWrite { if approveType == partner.AfsApproveTypeRefused { err = api.EbaiAPI.OrderDisagreeReturnGoods(order.VendorOrderID, order.AfsOrderID, reason) + } else if approveType == partner.AfsApproveTypeRefusedToRefundMoney { + return errors.New("此平台暂时不支持") } else { err = api.EbaiAPI.OrderAgreeReturnGoods(order.VendorOrderID, order.AfsOrderID) } diff --git a/business/partner/purchase/mtwm/order_afs.go b/business/partner/purchase/mtwm/order_afs.go index e68c3923c..ccbc1c9a8 100644 --- a/business/partner/purchase/mtwm/order_afs.go +++ b/business/partner/purchase/mtwm/order_afs.go @@ -1,6 +1,7 @@ package mtwm import ( + "errors" "fmt" "git.rosy.net.cn/jx-callback/globals/api" "net/url" @@ -196,6 +197,8 @@ func (c *PurchaseHandler) AgreeOrRefuseRefund(ctx *jxcontext.Context, order *mod if globals.EnableMtwmStoreWrite { if approveType == partner.AfsApproveTypeRefused { err = getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromAfsOrder(order), order.VendorStoreID).OrderRefundReject(utils.Str2Int64(order.VendorOrderID), reason) + } else if approveType == partner.AfsApproveTypeRefusedToRefundMoney { + return errors.New("此平台暂时不支持") } else { err = getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromAfsOrder(order), order.VendorStoreID).OrderRefundAgree(utils.Str2Int64(order.VendorOrderID), reason) } diff --git a/business/partner/purchase/tiktok_store/callback.go b/business/partner/purchase/tiktok_store/callback.go index e6f48308c..f702ef10c 100644 --- a/business/partner/purchase/tiktok_store/callback.go +++ b/business/partner/purchase/tiktok_store/callback.go @@ -2,8 +2,10 @@ package tiktok_store import ( tiktokShop "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/tiktok_api" + "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" "git.rosy.net.cn/jx-callback/globals/api" ) @@ -11,6 +13,9 @@ import ( func OnOrderMsg(msgId string, msg interface{}) (response *tiktokShop.CallbackResponse) { if CurPurchaseHandler != nil { orderId, _ := api.TiktokStore.GetCallbackOrderId(msgId, msg) + globals.SugarLogger.Debugf("======orderId:%s", orderId) + globals.SugarLogger.Debugf("======msg:%s", utils.Format4Output(msg, false)) + jxutils.CallMsgHandler(func() { response = CurPurchaseHandler.onOrderMsg(msgId, orderId, msg) }, jxutils.ComposeUniversalOrderID(orderId, model.VendorIDDD)) diff --git a/business/partner/purchase/tiktok_store/order.go b/business/partner/purchase/tiktok_store/order.go index 28e78349b..747388861 100644 --- a/business/partner/purchase/tiktok_store/order.go +++ b/business/partner/purchase/tiktok_store/order.go @@ -289,7 +289,6 @@ func (c *PurchaseHandler) onOrderMsg(msgId, orderId string, msg interface{}) (re if err := partner.CurOrderManager.OnOrderNew(order, status); err != nil { return tiktokShop.Err2CallbackResponse(err, "") } - orderMap, err := c.getOrderMap("", orderId, "") utils.CallFuncAsync(func() { switch msgId { @@ -613,7 +612,6 @@ func (c *PurchaseHandler) SelfDeliverDelivering(order *model.GoodsOrder, userNam AddressId: 0, StoreId: utils.Str2Int64(order.VendorStoreID), } - globals.SugarLogger.Debugf("=============%s", utils.Format4Output(param, false)) return getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromOrder(order), "").OrderDelivering(param) } diff --git a/business/partner/purchase/tiktok_store/order_afs.go b/business/partner/purchase/tiktok_store/order_afs.go index 51c2ffcb7..01d97f589 100644 --- a/business/partner/purchase/tiktok_store/order_afs.go +++ b/business/partner/purchase/tiktok_store/order_afs.go @@ -114,8 +114,10 @@ func (c *PurchaseHandler) AgreeOrRefuseRefund(ctx *jxcontext.Context, order *mod if globals.EnableDdStoreWrite { if approveType == partner.AfsApproveTypeRefused { // 拒绝退货 err = getAPI(order.VendorOrgCode, order.JxStoreID, "").AfterSaleOperate(tiktokShop.AfterSaleEmuRefuseOnlyRefundApply, order.AfsOrderID, "拒绝退货", utils.Str2Int64(order.VendorStoreID)) - } else { + } else if approveType == partner.AfsApproveTypeRefund { // 同意 err = getAPI(order.VendorOrgCode, order.JxStoreID, "").AfterSaleOperate(tiktokShop.AfterSaleEmuAgreeOnlyRefundApply, order.AfsOrderID, "同意仅退款", utils.Str2Int64(order.VendorStoreID)) + } else if approveType == partner.AfsApproveTypeRefusedToRefundMoney { // 退货转退款 + err = getAPI(order.VendorOrgCode, order.JxStoreID, "").AfterSaleOperate(tiktokShop.AfterSaleEmuReturnGoodsToRefundApply, order.AfsOrderID, "退货转退款", utils.Str2Int64(order.VendorStoreID)) } } return err diff --git a/business/partner/purchase/tiktok_store/store.go b/business/partner/purchase/tiktok_store/store.go index 8a807b695..458ee831d 100644 --- a/business/partner/purchase/tiktok_store/store.go +++ b/business/partner/purchase/tiktok_store/store.go @@ -103,7 +103,6 @@ func (P *PurchaseHandler) CreateStore2(db *dao.DaoDB, storeID int, userName stri for j := 1; j <= 7; j++ { m[int64(j)] = timeStr } - globals.SugarLogger.Debug("storeDetail.OpenTime1, storeDetail.CloseTime1, storeDetail.OpenTime2, storeDetail.CloseTime2,timeStr===========", storeDetail.OpenTime1, storeDetail.CloseTime1, storeDetail.OpenTime2, storeDetail.CloseTime2, timeStr) } list := shop_batchCreateStore_request.StoreListItem{ RowId: 1, @@ -175,7 +174,7 @@ func CreateOrUpdateAll(vendorOrgCode string, storeID, vendorStoreID int64) error if len(bindWarehouseAndFence) == 0 || utils.IsNil(bindWarehouseAndFence) { //未绑定仓库 if warehouseID, err := CreateWarehouse(vendorOrgCode, utils.Int64ToStr(storeID)); err != nil || warehouseID == 0 || utils.IsNil(warehouseID) { errList.AddErr(fmt.Errorf("门店(%d) 创建仓库失败:%v", storeID, err)) - } else { //绑定 + } else { //绑定 if err = BindStoreWarehouse(vendorOrgCode, utils.Int64ToStr(storeID), vendorStoreID); err != nil { //仓库绑定通过自定义外部ID errList.AddErr(fmt.Errorf("门店(%d) 绑定仓库:%d 失败:%v", storeID, warehouseID, err)) } else { diff --git a/business/partner/purchase/tiktok_store/store_sku2.go b/business/partner/purchase/tiktok_store/store_sku2.go index c58c17f81..f2371f4ba 100644 --- a/business/partner/purchase/tiktok_store/store_sku2.go +++ b/business/partner/purchase/tiktok_store/store_sku2.go @@ -1,6 +1,7 @@ package tiktok_store import ( + "errors" "fmt" "git.rosy.net.cn/baseapi/platformapi/mtwmapi" sku_editPrice_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/sku_editPrice/request" @@ -216,38 +217,17 @@ func (p *PurchaseHandler) UpdateStoreSkusStatus(ctx *jxcontext.Context, vendorOr api := getAPI(vendorOrgCode, storeID, vendorStoreID) if status == model.SkuStatusNormal { // 下架 for _, v := range storeSkuList { - //if err := api.EditStoreCommodityCommit(&product_editV2_commit_request.ProductEditV2Param2{ - // ProductId: utils.Str2Int64(v.VendorSkuID), - // Commit: true, - //}); err != nil { - // failedList = append(failedList, putils.GetErrMsg2FailedSingleList(v, err, storeID, model.VendorChineseNames[model.VendorIDDD], "下架商品异常")...) - //} else { - // failedList = append(failedList, putils.GetErrMsg2FailedSingleList(v, err, storeID, model.VendorChineseNames[model.VendorIDDD], "下架商品正常")...) - //} - param := &sku_syncStock_request.SkuSyncStockParam{ - SkuId: utils.Str2Int64(v.VendorSkuAttrId), - ProductId: utils.Str2Int64(v.VendorSkuID), - Incremental: false, - IdempotentId: "", - StockNum: 0, - OutWarehouseId: vendorStoreID, + // 子品商品id获取skuId + childrenSku, err := api.GetSkuDetail(v.VendorSkuID, "") + if err != nil { + return nil, err } - if err := api.UpdateSkuStock(param); err != nil { - failedList = append(failedList, putils.GetErrMsg2FailedSingleList(v, err, storeID, model.VendorChineseNames[model.VendorIDDD], fmt.Sprintf("下架商品异常,添加固定库存.%s", utils.Format4Output(param, false)))...) - } else { - failedList = append(failedList, putils.GetErrMsg2FailedSingleList(v, err, storeID, model.VendorChineseNames[model.VendorIDDD], fmt.Sprintf("下架商品正常,添加固定库存.%s", utils.Format4Output(param, false)))...) + if len(childrenSku.SpecPrices) <= 0 { + return nil, errors.New("子品商品详情获取失败") } - } - } else { // 上架 - for _, v := range storeSkuList { - //err := api.ProductSetOffline(utils.Str2Int64(v.VendorSkuID)) - //if err == nil { - // failedList = append(failedList, putils.GetErrMsg2FailedSingleList(v, err, storeID, model.VendorChineseNames[model.VendorIDDD], "下架商品正常")...) - //} else { - // failedList = append(failedList, putils.GetErrMsg2FailedSingleList(v, err, storeID, model.VendorChineseNames[model.VendorIDDD], "下架商品异常")...) - //} + param := &sku_syncStock_request.SkuSyncStockParam{ - SkuId: utils.Str2Int64(v.VendorSkuAttrId), + SkuId: childrenSku.SpecPrices[0].SkuId, ProductId: utils.Str2Int64(v.VendorSkuID), Incremental: false, IdempotentId: "", @@ -255,9 +235,33 @@ func (p *PurchaseHandler) UpdateStoreSkusStatus(ctx *jxcontext.Context, vendorOr OutWarehouseId: vendorStoreID, } if err := api.UpdateSkuStock(param); err != nil { - failedList = append(failedList, putils.GetErrMsg2FailedSingleList(v, err, storeID, model.VendorChineseNames[model.VendorIDDD], fmt.Sprintf("上架架商品异常,添加固定库存.%s", utils.Format4Output(param, false)))...) + failedList = append(failedList, putils.GetErrMsg2FailedSingleList(v, err, storeID, model.VendorChineseNames[model.VendorIDDD], fmt.Sprintf("下架架商品异常,添加固定库存.%s", utils.Format4Output(param, false)))...) } else { - failedList = append(failedList, putils.GetErrMsg2FailedSingleList(v, err, storeID, model.VendorChineseNames[model.VendorIDDD], fmt.Sprintf("上架架商品异常,添加固定库存.%s", utils.Format4Output(param, false)))...) + failedList = append(failedList, putils.GetErrMsg2FailedSingleList(v, err, storeID, model.VendorChineseNames[model.VendorIDDD], fmt.Sprintf("下架商品异常,添加固定库存.%s", utils.Format4Output(param, false)))...) + } + } + } else { // 上架 + for _, v := range storeSkuList { + // 子品商品id获取skuId + childrenSku, err := api.GetSkuDetail(v.VendorSkuID, "") + if err != nil { + return nil, err + } + if len(childrenSku.SpecPrices) <= 0 { + return nil, errors.New("子品商品详情获取失败") + } + param := &sku_syncStock_request.SkuSyncStockParam{ + SkuId: childrenSku.SpecPrices[0].SkuId, + ProductId: utils.Str2Int64(v.VendorSkuID), + Incremental: false, + IdempotentId: "", + StockNum: 0, + OutWarehouseId: vendorStoreID, + } + if err := api.UpdateSkuStock(param); err != nil { + failedList = append(failedList, putils.GetErrMsg2FailedSingleList(v, err, storeID, model.VendorChineseNames[model.VendorIDDD], fmt.Sprintf("上架商品异常,添加固定库存.%s", utils.Format4Output(param, false)))...) + } else { + failedList = append(failedList, putils.GetErrMsg2FailedSingleList(v, err, storeID, model.VendorChineseNames[model.VendorIDDD], fmt.Sprintf("上架商品正常,添加固定库存.%s", utils.Format4Output(param, false)))...) } } } diff --git a/business/partner/purchase/tiktok_store/store_sku2_utils.go b/business/partner/purchase/tiktok_store/store_sku2_utils.go index a8afe201a..4de3a10a3 100644 --- a/business/partner/purchase/tiktok_store/store_sku2_utils.go +++ b/business/partner/purchase/tiktok_store/store_sku2_utils.go @@ -206,7 +206,6 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI } storeSku.VendorSkuAttrId = strings.Join(attrId, ",") // 属性id skuID err = dao.CreateThingMap(int64(storeSku.SkuID), utils.Int64ToStr(tiktokResult.ProductId), storeDetail.VendorOrgCode, storeSku.VendorSkuAttrId) - globals.SugarLogger.Debugf("err=============%s", err) } else { storeSku.VendorMainId = localThing[0].VendorThingID storeSku.VendorSkuAttrId = localThing[0].Remark // 属性id skuID @@ -246,7 +245,6 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI param.SpecPrices = GetSpecPrices(param.Specs, vendorStoreID, tiktokResultProductId, storeSku) param.StoreId = utils.Str2Int64(vendorStoreID) - globals.SugarLogger.Debugf("CreateStoreCommodity==========:%s", utils.Format4Output(param, false)) // 抖店创建子商品 tiktokResultChildren, err := api.CreateStoreCommodity(param) if err != nil { diff --git a/controllers/tiktok_order.go b/controllers/tiktok_order.go index 2a1eecdcb..04bafaf62 100644 --- a/controllers/tiktok_order.go +++ b/controllers/tiktok_order.go @@ -2,7 +2,9 @@ package controllers import ( "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/tiktok_api" + "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/partner/purchase/tiktok_store" + "git.rosy.net.cn/jx-callback/globals" "git.rosy.net.cn/jx-callback/globals/api" "github.com/astaxie/beego/server/web" "strings" @@ -35,6 +37,7 @@ func (t *TiktokController) CallbackTiktokOrderMsg() { return } + globals.SugarLogger.Debugf("========callback===%s", utils.Format4Output(orderStatus, false)) for k, v := range orderStatus { for _, callback := range v { resp2 := tiktok_store.OnOrderMsg(k, callback)