From d9c74b0bea958efb145399a0c5088fbefa613f1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Wed, 19 Oct 2022 10:25:11 +0800 Subject: [PATCH] 1 --- business/model/dao/store.go | 2 +- .../purchase/tiktok_store/store_sku2.go | 88 ++++++------------- .../purchase/tiktok_store/store_sku2_utils.go | 87 ++++++++++++++++-- 3 files changed, 108 insertions(+), 69 deletions(-) diff --git a/business/model/dao/store.go b/business/model/dao/store.go index 9f19a1c5c..69cf11e26 100644 --- a/business/model/dao/store.go +++ b/business/model/dao/store.go @@ -1568,7 +1568,7 @@ func GetStoreBrandInfos(storeID int) (date *BrandInfos, err error) { // 查询FreightTemplate func QueryStoreBindInfo(storeID int) (*model.FreightTemplate, error) { var ( - sqlParams = []interface{}{} + sqlParams []interface{} bindInfo *model.FreightTemplate ) sql := "SELECT a.store_id,a.vendor_store_id,a.template_id,a.warehouse_id,a.fence_id,a.trade_limit_id FROM freight_template a " diff --git a/business/partner/purchase/tiktok_store/store_sku2.go b/business/partner/purchase/tiktok_store/store_sku2.go index 8586ba32b..7a5ccfaba 100644 --- a/business/partner/purchase/tiktok_store/store_sku2.go +++ b/business/partner/purchase/tiktok_store/store_sku2.go @@ -1,17 +1,14 @@ package tiktok_store import ( - "errors" "fmt" "git.rosy.net.cn/baseapi/platformapi/mtwmapi" product_addV2_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_addV2/request" product_detail_response "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_detail/response" product_editV2_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_editV2/request" product_editV2_commit_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_editV2_commit/request" - shop_bindStoreSaleLimit_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/shop_bindStoreSaleLimit/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" - trade_createTradeLimitTemplate_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/trade_createTradeLimitTemplate/request" 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" @@ -341,20 +338,37 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI } // 创建子商品 - freightId, err := GetDeliveryTemp(api, vendorStoreID, storeDetail) // 运费模板 - if err != nil { - return nil, err + temp, err := dao.QueryStoreBindInfo(storeDetail.ID) + if err != nil || temp == nil || temp.TemplateID == 0 { + // 运费模板 + param.FreightId, err = GetDeliveryTemp(api, vendorStoreID, storeDetail) + if err != nil { + return nil, err + } + // 获取门店限售模板 + param.SaleLimitId, err = CreateSaleTemp(utils.Str2Int64(vendorStoreID), api) + if err != nil { + return nil, err + } + // 保存数据库 + freightTemplate := &model.FreightTemplate{ + StoreID: storeSku.StoreID, + VendorStoreID: storeDetail.VendorStoreID, + TemplateID: param.FreightId, + WarehouseID: 0, + FenceID: "", + TradeLimitID: param.SaleLimitId, + } + dao.WrapAddIDCULDEntity(param, "jxAdmin") + dao.CreateEntity(dao.GetDB(), &freightTemplate) + } else { + param.FreightId = temp.TemplateID + param.SaleLimitId = temp.TradeLimitID } - param.FreightId = freightId + param.MainProductId = tiktokResultProductId param.SpecPrices = GetSpecPrices(param.Specs, vendorStoreID, tiktokResultProductId, storeSku) - // 获取门店限售模板 - saleLimitId, err := CreateSaleTemp(utils.Str2Int64(vendorStoreID), api) - if err != nil { - return nil, err - } - param.SaleLimitId = saleLimitId param.StoreId = utils.Str2Int64(vendorStoreID) // 抖店创建子商品 @@ -465,54 +479,6 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI return failedList, err } -// CreateSaleTemp 创建限售模板 -func CreateSaleTemp(storeId int64, api *tiktokShop.API) (int64, error) { - // 获取限售模板 - saleLimitId, _ := api.StoreQuerySaleLimitTemp(storeId) - if saleLimitId != 0 { - return saleLimitId, nil - } - - // 创建限售模板 - param := &trade_createTradeLimitTemplate_request.TradeCreateTradeLimitTemplateParam{ - StoreId: storeId, - TradeLimitRuleRequestList: []trade_createTradeLimitTemplate_request.TradeLimitRuleRequestListItem{}, - } - tradeLimitRuleRequestList := make([]trade_createTradeLimitTemplate_request.TradeLimitRuleRequestListItem, 0) - tradeLimitRuleRequest := trade_createTradeLimitTemplate_request.TradeLimitRuleRequestListItem{ - TradeLimitModel: 1, // 限购模型 1-重量,2-数量,3-地区,4-金额 - TradeLimitResource: 2, // 限购资源类别1-抖店,2-门店,3-商品ID,4-sku,5-类目,6-活动,7-商品标 - //TradeLimitResourceObject: nil, - TradeLimitPattern: &trade_createTradeLimitTemplate_request.TradeLimitPattern{ - Minimum: 1, // 1毫克 - Maximum: 500 * 1000 * 1000, //500千克 - CumulativeMax: 99999, - }, - //TimePeriod: nil, - TradeLimitSubjectList: []int32{1}, - } - tradeLimitRuleRequestList = append(tradeLimitRuleRequestList, tradeLimitRuleRequest) - result, err := api.CreateTradeLimitTemplate(param) - if err != nil { - return 0, err - } - - if result.TradeLimitId == 0 { - return 0, errors.New("限售模板创建错误,联系管理员") - } - - // 绑定限售模板 - if err := api.BindStoreSaleLimit(&shop_bindStoreSaleLimit_request.ShopBindStoreSaleLimitParam{ - StoreId: storeId, - SaleLimitId: result.TradeLimitId, - }); err != nil { - globals.SugarLogger.Debug("==========BindStoreSaleLimit", err) - return 0, err - } - - return result.TradeLimitId, nil -} - func (p *PurchaseHandler) DeleteStoreSkus(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (failedList []*partner.StoreSkuInfoWithErr, err error) { if globals.EnableDdStoreWrite { for _, v := range storeSkuList { diff --git a/business/partner/purchase/tiktok_store/store_sku2_utils.go b/business/partner/purchase/tiktok_store/store_sku2_utils.go index a926ec98c..3aafb3bf4 100644 --- a/business/partner/purchase/tiktok_store/store_sku2_utils.go +++ b/business/partner/purchase/tiktok_store/store_sku2_utils.go @@ -6,6 +6,8 @@ import ( "fmt" freightTemplate_create_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/freightTemplate_create/request" shop_bindStoreFreight_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/shop_bindStoreFreight/request" + shop_bindStoreSaleLimit_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/shop_bindStoreSaleLimit/request" + trade_createTradeLimitTemplate_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/trade_createTradeLimitTemplate/request" tiktokShop "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/tiktok_api" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/model" @@ -14,10 +16,53 @@ import ( "strings" ) -// 获取运费模板id,运费模板不存在则创建 -func GetDeliveryTemp(api *tiktokShop.API, vendorStoreID string, storeDetail *dao.StoreDetail) (int64, error) { - // todo 获取本地数据模板 +// CreateSaleTemp 创建限售模板 +func CreateSaleTemp(storeId int64, api *tiktokShop.API) (int64, error) { + // 获取限售模板 + saleLimitId, _ := api.StoreQuerySaleLimitTemp(storeId) + if saleLimitId != 0 { + return saleLimitId, nil + } + // 创建限售模板 + param := &trade_createTradeLimitTemplate_request.TradeCreateTradeLimitTemplateParam{ + StoreId: storeId, + TradeLimitRuleRequestList: []trade_createTradeLimitTemplate_request.TradeLimitRuleRequestListItem{}, + } + tradeLimitRuleRequestList := make([]trade_createTradeLimitTemplate_request.TradeLimitRuleRequestListItem, 0) + tradeLimitRuleRequest := trade_createTradeLimitTemplate_request.TradeLimitRuleRequestListItem{ + TradeLimitModel: 1, // 限购模型 1-重量,2-数量,3-地区,4-金额 + TradeLimitResource: 2, // 限购资源类别1-抖店,2-门店,3-商品ID,4-sku,5-类目,6-活动,7-商品标 + TradeLimitPattern: &trade_createTradeLimitTemplate_request.TradeLimitPattern{ + Minimum: 1, // 1毫克 + Maximum: 500 * 1000 * 1000, //500千克 + CumulativeMax: 99999, + }, + TradeLimitSubjectList: []int32{1}, + } + tradeLimitRuleRequestList = append(tradeLimitRuleRequestList, tradeLimitRuleRequest) + result, err := api.CreateTradeLimitTemplate(param) + if err != nil { + return 0, err + } + + if result.TradeLimitId == 0 { + return 0, errors.New("限售模板创建错误,联系管理员") + } + + // 绑定限售模板 + if err := api.BindStoreSaleLimit(&shop_bindStoreSaleLimit_request.ShopBindStoreSaleLimitParam{ + StoreId: storeId, + SaleLimitId: result.TradeLimitId, + }); err != nil { + return 0, err + } + + return result.TradeLimitId, nil +} + +// GetDeliveryTemp 获取运费模板id,运费模板不存在则创建 +func GetDeliveryTemp(api *tiktokShop.API, vendorStoreID string, storeDetail *dao.StoreDetail) (int64, error) { // 没有模板是查询线上模板 freightId, _ := api.GetStoreBindTemp(utils.Str2Int64(vendorStoreID)) if freightId == 0 { @@ -28,11 +73,39 @@ func GetDeliveryTemp(api *tiktokShop.API, vendorStoreID string, storeDetail *dao ProductProvince: utils.Str2Int64(utils.Int2Str(storeDetail.ProvinceCode)[0:2]), ProductCity: int64(storeDetail.CityCode), CalculateType: 2, - TransferType: 1, // 快递 - RuleType: 1, - FixedAmount: 500, + TransferType: 1, // 快递方式-1.快递 目前仅支持1 + RuleType: 2, // 模板类型-0:阶梯计价 1:固定运费 2:卖家包邮 3:货到付款 + }, + Columns: []freightTemplate_create_request.ColumnsItem{ + { + FirstWeight: 0, + FirstWeightPrice: 0, + FirstNum: 1, + FirstNumPrice: 1, + AddNum: 1, + AddNumPrice: 0.01, + RuleAddress: fmt.Sprintf(`{"%s":{"%s":{"%s":[0]}}}`, utils.Int2Str(storeDetail.ProvinceCode), utils.Int2Str(storeDetail.CityCode)[:2], utils.Int2Str(storeDetail.DistrictCode)[:2]), + IsOverFree: true, + OverAmount: int64(storeDetail.DeliveryFeeDeductionSill), + ProvinceInfos: []freightTemplate_create_request.ProvinceInfosItem{ + { + Id: int64(storeDetail.ProvinceCode), + Children: []freightTemplate_create_request.ChildrenItem_4{ + { + Id: int64(storeDetail.CityCode), + Children: []freightTemplate_create_request.ChildrenItem_5{ + { + Id: int64(storeDetail.DistrictCode), + Children: []freightTemplate_create_request.ChildrenItem{ + {Id: 0}, + }, + }, + }, + }, + }}, + }, + }, }, - Columns: nil, }) if err != nil { return 0, err