diff --git a/chain_transfer/svc/svc_turnchain.go b/chain_transfer/svc/svc_turnchain.go index 469c198..30118ed 100644 --- a/chain_transfer/svc/svc_turnchain.go +++ b/chain_transfer/svc/svc_turnchain.go @@ -889,7 +889,7 @@ func FindTaobaoWord(eg *xorm.Engine, officialEg *xorm.Engine, tmp map[string]str return } func CheckTaobao(eg *xorm.Engine, officialEg *xorm.Engine, dbName, s string, args map[string]string) *md.ItemParseInfo { - bizSceneId := "2" + bizSceneId := "" taobaoSdk, _ := taobao.NewTaobaoSDK(eg, args["master_id"], args["platform"], zhios_third_party_utils.StrToInt(args["acc_taobao_share_id"]), args["union_id"]) if taobaoSdk == nil { return nil @@ -1224,7 +1224,7 @@ func TBByGoodsId(eg *xorm.Engine, officialEg *xorm.Engine, tmp map[string]string } var itemInfo *taobao.Material if goodsId != "" { - itemInfo, err = taobaoSdk.ItemDetailById(goodsId, "2") + itemInfo, err = taobaoSdk.ItemDetailById(goodsId, "") } else { itemInfo, err = taobaoSdk.ItemDetailByLink(url, "") } diff --git a/taobao/api.go b/taobao/api.go index 5f7183e..e5ef1bd 100644 --- a/taobao/api.go +++ b/taobao/api.go @@ -27,8 +27,8 @@ const ( // TODO 物料id查找 https://market.m.taobao.com/app/qn/toutiao-new/index-pc.html#/detail/10628875?_k=gpov9a // 淘宝业务, op for operation 操作, tbk for taobaoke, - TBK_SC_MTL_OPT = "taobao.tbk.sc.material.optional" // 淘宝客-服务商-物料搜索 - TBK_DG_MTL_OPT = "taobao.tbk.dg.material.optional" // 淘宝客-推广者-物料搜索 + TBK_SC_MTL_OPT = "taobao.tbk.sc.material.optional.upgrade" // 淘宝客-服务商-物料搜索 + TBK_DG_MTL_OPT = "taobao.tbk.dg.material.optional.upgrade" // 淘宝客-推广者-物料搜索 TB_SVC_AK = "33970476" TB_SVC_SK = "2d46abef05a0d05d7ddcd3af2d540d2b" TB_SVC_TIME = "2022-08-09 10:58:00" diff --git a/taobao/search_list.go b/taobao/search_list.go index 61e6ffa..083f05c 100644 --- a/taobao/search_list.go +++ b/taobao/search_list.go @@ -14,6 +14,7 @@ type Material struct { CategoryName string `json:"category_name"` CommissionRate string `json:"commission_rate"` CommissionType string `json:"commission_type"` + GoodsCoupon string `json:"goods_coupon"` CouponID string `json:"coupon_id"` CouponInfo string `json:"coupon_info"` CouponRemainCount int `json:"coupon_remain_count"` @@ -56,6 +57,91 @@ type Material struct { CouponStartTime string `json:"coupon_start_time,omitempty"` InputNumIid interface{} `json:"input_num_iid"` } +type scTbkScMaterialOptionalUpgradeResponse struct { + TbkScMaterialOptionalUpgradeResponse struct { + TotalResults int `json:"total_results"` + ResultList struct { + MapData []NewMarterial `json:"map_data"` + } `json:"result_list"` + UvidMsg string `json:"uvid_msg"` + } `json:"tbk_sc_material_optional_upgrade_response"` +} +type NewMarterial struct { + ItemBasicInfo struct { + BrandName string `json:"brand_name"` + CategoryId int `json:"category_id"` + CategoryName string `json:"category_name"` + LevelOneCategoryId int `json:"level_one_category_id"` + LevelOneCategoryName string `json:"level_one_category_name"` + PictUrl string `json:"pict_url"` + SellerId int64 `json:"seller_id"` + ShopTitle string `json:"shop_title"` + ShortTitle string `json:"short_title"` + SubTitle string `json:"sub_title"` + Title string `json:"title"` + UserType int `json:"user_type"` + Volume int `json:"volume"` + TkTotalSales string `json:"tk_total_sales"` + WhiteImage string `json:"white_image"` + SmallImages struct { + String []string `json:"string"` + } `json:"small_images"` + } `json:"item_basic_info"` + ItemId string `json:"item_id"` + PresaleInfo struct { + PresaleDeposit string `json:"presale_deposit"` + } `json:"presale_info"` + PricePromotionInfo struct { + FinalPromotionPathList struct { + FinalPromotionPathMapData []struct { + PromotionDesc string `json:"promotion_desc"` + PromotionEndTime string `json:"promotion_end_time"` + PromotionFee string `json:"promotion_fee"` + PromotionId string `json:"promotion_id"` + PromotionStartTime string `json:"promotion_start_time"` + PromotionTitle string `json:"promotion_title"` + } `json:"final_promotion_path_map_data"` + } `json:"final_promotion_path_list"` + FinalPromotionPrice string `json:"final_promotion_price"` + MorePromotionList struct { + MorePromotionMapData []struct { + PromotionDesc string `json:"promotion_desc"` + PromotionEndTime string `json:"promotion_end_time"` + PromotionStartTime string `json:"promotion_start_time"` + PromotionTitle string `json:"promotion_title"` + } `json:"more_promotion_map_data"` + } `json:"more_promotion_list,omitempty"` + PredictRoundingUpPathList struct { + PredictRoundingUpPathMapData []struct { + PromotionDesc string `json:"promotion_desc"` + PromotionTitle string `json:"promotion_title"` + } `json:"predict_rounding_up_path_map_data"` + } `json:"predict_rounding_up_path_list,omitempty"` + PredictRoundingUpPrice string `json:"predict_rounding_up_price,omitempty"` + PredictRoundingUpPriceDesc string `json:"predict_rounding_up_price_desc,omitempty"` + PromotionTagList struct { + PromotionTagMapData []struct { + TagName string `json:"tag_name"` + } `json:"promotion_tag_map_data"` + } `json:"promotion_tag_list"` + ReservePrice string `json:"reserve_price"` + ZkFinalPrice string `json:"zk_final_price"` + } `json:"price_promotion_info"` + PublishInfo struct { + ClickUrl string `json:"click_url"` + CouponShareUrl string `json:"coupon_share_url"` + IncomeInfo struct { + CommissionAmount string `json:"commission_amount"` + CommissionRate string `json:"commission_rate"` + SubsidyAmount string `json:"subsidy_amount"` + SubsidyRate string `json:"subsidy_rate"` + } `json:"income_info"` + IncomeRate string `json:"income_rate"` + } `json:"publish_info"` + ScopeInfo struct { + SuperiorBrand interface{} `json:"superior_brand"` + } `json:"scope_info"` +} type wrapperStruct struct { TbkDgMaterialOptionalResponse struct { diff --git a/taobao/taobao.go b/taobao/taobao.go index fda71a0..c6842ee 100644 --- a/taobao/taobao.go +++ b/taobao/taobao.go @@ -8,6 +8,7 @@ import ( "fmt" "github.com/syyongx/php2go" "strings" + "time" "xorm.io/xorm" ) @@ -151,19 +152,50 @@ func (t *TB) ItemDetailByLink(l, bizSceneId string) (*Material, error) { // 如果是跟随官方 结构不一样 if t.AuthType == 1 { - var tmp scMaterialOptionalStruct + var tmp scTbkScMaterialOptionalUpgradeResponse if err = json.Unmarshal(resp, &tmp); err != nil { return nil, err } - if len(tmp.TbkScMaterialOptionalResponse.ResultList.MapData) == 0 { - return nil, errors.New("没有数据") + if len(tmp.TbkScMaterialOptionalUpgradeResponse.ResultList.MapData) == 0 { + return nil, err } - data := tmp.TbkScMaterialOptionalResponse.ResultList.MapData[0] - itemID, ok := data.ItemID.(float64) - if ok { - data.ItemID = int64(itemID) + data := tmp.TbkScMaterialOptionalUpgradeResponse.ResultList.MapData[0] + tmp1 := Material{ + CategoryID: data.ItemBasicInfo.CategoryId, + CategoryName: data.ItemBasicInfo.CategoryName, + CommissionRate: zhios_third_party_utils.Float64ToStr(zhios_third_party_utils.StrToFloat64(data.PublishInfo.IncomeRate) * 100), + ItemID: data.ItemId, + Nick: data.ItemBasicInfo.ShopTitle, + PictURL: data.ItemBasicInfo.PictUrl, + SellerID: int(data.ItemBasicInfo.SellerId), + ShopTitle: data.ItemBasicInfo.ShopTitle, + ShortTitle: data.ItemBasicInfo.ShortTitle, + Title: data.ItemBasicInfo.Title, + ZkFinalPrice: data.PricePromotionInfo.ZkFinalPrice, + ReservePrice: data.PricePromotionInfo.ReservePrice, + Volume: data.ItemBasicInfo.Volume, + UserType: data.ItemBasicInfo.UserType, + TkTotalSales: zhios_third_party_utils.IntToStr(data.ItemBasicInfo.Volume), } - return &data, nil + tmp1.SmallImages = data.ItemBasicInfo.SmallImages + if len(data.ItemBasicInfo.SmallImages.String) == 0 { + tmp1.SmallImages.String = []string{tmp1.PictURL} + } + if zhios_third_party_utils.StrToFloat64(data.PricePromotionInfo.FinalPromotionPrice) > 0 { + + for _, v1 := range data.PricePromotionInfo.FinalPromotionPathList.FinalPromotionPathMapData { + tmp1.CouponAmount = zhios_third_party_utils.Float64ToStrByPrec(zhios_third_party_utils.StrToFloat64(v1.PromotionFee)+zhios_third_party_utils.StrToFloat64(tmp1.CouponAmount), 2) + tmp1.CouponStartTime = zhios_third_party_utils.IntToStr(zhios_third_party_utils.StrToInt(v1.PromotionStartTime) / 1000) + tmp1.CouponEndTime = zhios_third_party_utils.IntToStr(zhios_third_party_utils.StrToInt(v1.PromotionEndTime) / 1000) + tmp1.CouponID = v1.PromotionId + if v1.PromotionTitle == "商品券" || v1.PromotionTitle == "店铺券" { + if zhios_third_party_utils.StrToInt64(v1.PromotionEndTime)/1000 > time.Now().Unix() { + tmp1.GoodsCoupon = "1" + } + } + } + } + return &tmp1, nil } else { var tmp wrapperStruct if err = json.Unmarshal(resp, &tmp); err != nil {