diff --git a/business/jxstore/cms/sync2.go b/business/jxstore/cms/sync2.go index 92f3a9f1c..2a27c710b 100644 --- a/business/jxstore/cms/sync2.go +++ b/business/jxstore/cms/sync2.go @@ -2,6 +2,7 @@ package cms import ( "fmt" + "git.rosy.net.cn/jx-callback/business/partner/purchase/tiktok_store" "strings" "time" @@ -331,18 +332,19 @@ func OnCreateThing(ctx *jxcontext.Context, db *dao.DaoDB, vendorInfoList []*mode return err } -func OnCreateThing2Tiktok(ctx *jxcontext.Context, db *dao.DaoDB, appOrgCode string, vendorThingList map[string]int64, thingType, syncFlag int8, vendorFlag bool) (err error) { +func OnCreateThing2Tiktok(ctx *jxcontext.Context, db *dao.DaoDB, appOrgCode string, vendorThingList []*tiktok_store.TiktokIdAndLocalSkuId, thingType, syncFlag int8, vendorFlag bool) (err error) { if thingType == model.ThingTypeSkuName { return nil } errList := errlist.New() - for k, v := range vendorThingList { + for _, v := range vendorThingList { thingMap := &model.ThingMap{ - ThingID: v, + ThingID: v.LocalSkuId, ThingType: thingType, VendorID: model.VendorIDDD, VendorOrgCode: appOrgCode, - VendorThingID: k, + VendorThingID: v.MainId, + Remark: v.SkuAttrId, } if thingType == model.ThingTypeCategory && !vendorFlag { syncFlag = 0 diff --git a/business/model/dao/thing_map.go b/business/model/dao/thing_map.go index d1080f5d7..7eae8d568 100644 --- a/business/model/dao/thing_map.go +++ b/business/model/dao/thing_map.go @@ -27,6 +27,37 @@ func GetThingMapList(db *DaoDB, thingType int, vendorIDs, thingIDs []int, vendor return cats, err } +func CreateThingMap(thingId int64, vendorThingID, appOrgCode, skuAttrId string) error { + thingMap := &model.ThingMap{ + ThingID: thingId, + ThingType: model.ThingTypeSku, + VendorID: model.VendorIDDD, + VendorOrgCode: appOrgCode, + VendorThingID: vendorThingID, + Remark: skuAttrId, + SyncStatus: 0, + } + + WrapAddIDCULDEntity(thingMap, "jxadmin") + return CreateEntity(GetDB(), thingMap) +} + +// GetThingToTiktokMapList 抖店获取同步类型 +func GetThingToTiktokMapList(db *DaoDB, vendorId int, thingId int64) (cats []*model.ThingMap, err error) { + sql := ` + SELECT t1.* + FROM thing_map t1 + WHERE thing_id = ? AND vendor_id = ? t1.deleted_at = ? + ` + sqlParams := []interface{}{ + vendorId, thingId, + utils.DefaultTimeValue, + } + + err = GetRows(db, &cats, sql, sqlParams...) + return cats, err +} + func GetThingMapMap(db *DaoDB, thingType int, vendorIDs, thingIDs []int) (thingMapMap map[int64][]*model.ThingMap, err error) { thingMapList, err := GetThingMapList(db, thingType, vendorIDs, thingIDs, nil) if err == nil { diff --git a/business/partner/purchase/tiktok_store/store_sku2_utils.go b/business/partner/purchase/tiktok_store/store_sku2_utils.go index a90d6df1d..3deae5052 100644 --- a/business/partner/purchase/tiktok_store/store_sku2_utils.go +++ b/business/partner/purchase/tiktok_store/store_sku2_utils.go @@ -37,12 +37,18 @@ type MainSku struct { PageSize int64 `json:"pageSize"` } +type TiktokIdAndLocalSkuId struct { + MainId string `json:"mainId"` // 商城商品主id + LocalSkuId int64 `json:"localSkuId"` // 本地商品id + SkuAttrId string `json:"skuAttrId"` // 主商品属性id +} + // QueryAllMainSkuList 获取商户账号总的商品,主商品条数. -func QueryAllMainSkuList(appOrgCode string, param *MainSku) (map[string]int64, error) { +func QueryAllMainSkuList(appOrgCode string, param *MainSku) ([]*TiktokIdAndLocalSkuId, error) { var ( page int64 = 1 pageSize int64 = 100 - tiktokIdAndLocalSkuId = make(map[string]int64, 0) + tiktokIdAndLocalSkuId = make([]*TiktokIdAndLocalSkuId, 0, 0) api = getAPI(appOrgCode, 0, "") ) if param.Page == 0 { @@ -59,24 +65,26 @@ func QueryAllMainSkuList(appOrgCode string, param *MainSku) (map[string]int64, e } for _, v := range mainSkuList.Data { var localSkuId int64 = 0 - if v.OutProductId != 0 { - localSkuId = v.ProductId - } else if v.OuterProductId != "" { - localSkuId = utils.Str2Int64(v.OuterProductId) - } else { - skuDetail, err := api.GetSkuDetail(utils.Int64ToStr(v.ProductId), "") - if err != nil { - localSkuId = 0 - } - if skuDetail.OutProductId != 0 { - localSkuId = skuDetail.OutProductId - } else if skuDetail.OuterProductId != "" { - localSkuId = utils.Str2Int64(skuDetail.OuterProductId) - } else { - localSkuId = 0 - } + skuDetail, err := api.GetSkuDetail(utils.Int64ToStr(v.ProductId), "") + if err != nil { + localSkuId = 0 } - tiktokIdAndLocalSkuId[utils.Int64ToStr(v.ProductId)] = localSkuId + if skuDetail.OutProductId != 0 { + localSkuId = skuDetail.OutProductId + } else if skuDetail.OuterProductId != "" { + localSkuId = utils.Str2Int64(skuDetail.OuterProductId) + } + + var attrId []string + for _, v := range skuDetail.SpecPrices { + attrId = append(attrId, utils.Int64ToStr(v.SkuId)) + } + + tiktokIdAndLocalSkuId = append(tiktokIdAndLocalSkuId, &TiktokIdAndLocalSkuId{ + MainId: skuDetail.ProductIdStr, + LocalSkuId: localSkuId, + SkuAttrId: strings.Join(attrId, ","), + }) } if int64(len(mainSkuList.Data)) < pageSize { @@ -169,12 +177,13 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI //if err != nil { // return nil, err //} - param.StandardBrandId = 596120136 + param.StandardBrandId = 596120136 // 默认品牌 // 根据本地商品id获取线上商品是否存在,存在则只创建子商品 var tiktokResultProductId int64 = 0 - skuMain, err2 := api.GetSkuDetailLocalID("", param.OuterProductId) - if err2 != nil { // 线上不存在创建 + // 获取本地存储映射关系 + localThing, _ := dao.GetThingToTiktokMapList(dao.GetDB(), model.VendorIDDD, int64(storeSku.SkuID)) + if len(localThing) == 0 { // 线上不存在创建 tiktokResult, err := api.CreateStoreCommodity(param) // 创建主商品 if err != nil { failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) @@ -187,14 +196,11 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI attrId = append(attrId, utils.Int64ToStr(v.SkuId)) } storeSku.VendorSkuAttrId = strings.Join(attrId, ",") // 属性id skuID + dao.CreateThingMap(int64(storeSku.SkuID), utils.Int64ToStr(tiktokResult.ProductId), storeDetail.VendorOrgCode, storeSku.VendorSkuAttrId) } else { - storeSku.VendorMainId = utils.Int64ToStr(skuMain.ProductId) - var attrId []string - for _, v := range skuMain.SpecPrices { - attrId = append(attrId, utils.Int64ToStr(v.SkuId)) - } - storeSku.VendorSkuAttrId = strings.Join(attrId, ",") // 属性id skuID - tiktokResultProductId = skuMain.ProductId + storeSku.VendorMainId = localThing[0].VendorThingID + storeSku.VendorSkuAttrId = localThing[0].Remark // 属性id skuID + tiktokResultProductId = utils.Str2Int64(localThing[0].VendorThingID) } // 创建子商品