Files
baseapi/platformapi/pddapi/union.go
2025-11-21 09:09:09 +08:00

264 lines
10 KiB
Go

package pddapi
import "git.rosy.net.cn/baseapi/utils"
const (
cthMediaID = 9180924964
resouceTypeSecKill = 4 //限时秒杀
resouceTypeCharge = 39997 //充值中心,
resouceTypeActChangeLink = 39998 //活动转链,
resouceTypeBYBT = 39996 //百亿补贴,
resouceTypeDQC = 39999 //电器城,
resouceTypeLQZX = 40000 //领券中心,
resouceTypeHCP = 50005 //火车票
)
type GoodsOPidGenerateResult struct {
PIDGenerateResponse struct {
PIDList []struct {
CreateTime int `json:"create_time"`
MediaID int64 `json:"media_id"`
PidName string `json:"pid_name"`
PID string `json:"p_id"`
} `json:"p_id_list"`
RemainPidCount int `json:"remain_pid_count"`
RequestID string `json:"request_id"`
} `json:"p_id_generate_response"`
}
//创建推广位
func (a *API) GoodsOPidGenerate(name string) (pid string, err error) {
result, err := a.AccessAPI("pdd.ddk.goods.pid.generate", false, map[string]interface{}{
"number": 1,
"p_id_name_list": []string{"\"" + name + "\""},
"media_id": cthMediaID,
})
if err == nil {
goodsOPidGenerateResult := &GoodsOPidGenerateResult{}
utils.Map2StructByJson(result, &goodsOPidGenerateResult, false)
if goodsOPidGenerateResult != nil {
pid = goodsOPidGenerateResult.PIDGenerateResponse.PIDList[0].PID
}
}
return pid, err
}
type ActivityOperationListResult struct {
ID int `json:"id"`
Name string `json:"name"`
Starttime string `json:"startTime"`
Endtime string `json:"endTime"`
Description string `json:"description"`
Introduction string `json:"introduction"`
Level int `json:"level"`
Goodspoolid string `json:"goodsPoolId"`
Duoimage string `json:"duoImage"`
Bannerimage string `json:"bannerImage"`
Filename string `json:"fileName"`
Fileurl string `json:"fileUrl"`
Activitylink string `json:"activityLink"`
Cpscoverage int `json:"cpsCoverage"`
Activitystatus int `json:"activityStatus"`
Tagid int `json:"tagId"`
Goodslist []struct {
Mallid int `json:"mallId"`
Mallname string `json:"mallName"`
Malllogo interface{} `json:"mallLogo"`
Qrcodeimageurl interface{} `json:"qrCodeImageUrl"`
Merchanttype int `json:"merchantType"`
Hascltcpn bool `json:"hasCltCpn"`
Goodsid int64 `json:"goodsId"`
Goodssign string `json:"goodsSign"`
Goodsname string `json:"goodsName"`
Goodsdesc string `json:"goodsDesc"`
Goodsimageurl string `json:"goodsImageUrl"`
Goodsthumbnailurl string `json:"goodsThumbnailUrl"`
Mingroupprice int `json:"minGroupPrice"`
Categoryid int `json:"categoryId"`
Categoryname string `json:"categoryName"`
Goodstype int `json:"goodsType"`
Subsidyamount interface{} `json:"subsidyAmount"`
Haspddcoupon interface{} `json:"hasPddCoupon"`
Hascoupon bool `json:"hasCoupon"`
Couponminorderamount int `json:"couponMinOrderAmount"`
Coupondiscount int `json:"couponDiscount"`
Coupontotalquantity int `json:"couponTotalQuantity"`
Couponremainquantity int `json:"couponRemainQuantity"`
Couponstarttime int `json:"couponStartTime"`
Couponendtime int `json:"couponEndTime"`
Mallclientable bool `json:"mallClientAble"`
Plantype int `json:"planType"`
Plantypeisbest interface{} `json:"planTypeIsBest"`
Zsduoid int `json:"zsDuoId"`
Plantypeall int `json:"planTypeAll"`
Promotionrate int `json:"promotionRate"`
Activitypromotionrate interface{} `json:"activityPromotionRate"`
Sharerate int `json:"shareRate"`
Mallrate int `json:"mallRate"`
Optid int `json:"optId"`
Collected bool `json:"collected"`
Marketfee int `json:"marketFee"`
Salestip string `json:"salesTip"`
Desctxt string `json:"descTxt"`
Servtxt string `json:"servTxt"`
Lgsttxt string `json:"lgstTxt"`
Issceneauth interface{} `json:"isSceneAuth"`
Inbigsale []int `json:"inBigSale"`
Haohuocouponlist interface{} `json:"haohuoCouponList"`
Brandcouponlist []interface{} `json:"brandCouponList"`
Isonsale bool `json:"isOnsale"`
Isbijia bool `json:"isBiJia"`
Isextramissiongoods bool `json:"isExtraMissionGoods"`
Unifiedtag struct {
Goodsid int64 `json:"goodsId"`
Tagdtos []struct {
Groupcode int `json:"groupCode"`
Tagseries int `json:"tagSeries"`
Tagid int `json:"tagId"`
Text string `json:"text"`
Color string `json:"color"`
URL interface{} `json:"url"`
Prefiximageurl interface{} `json:"prefixImageUrl"`
Link interface{} `json:"link"`
Width interface{} `json:"width"`
Height interface{} `json:"height"`
} `json:"tagDTOs"`
Icondtos []interface{} `json:"iconDTOs"`
Highlightdtos []interface{} `json:"highLightDTOs"`
Rankdtos []interface{} `json:"rankDTOs"`
} `json:"unifiedTag"`
Matchtype int `json:"matchType"`
Goodsgalleryurls interface{} `json:"goodsGalleryUrls"`
Hasmaterial bool `json:"hasMaterial"`
Withfixedrate bool `json:"withFixedRate"`
Nextlevelpromotionrate int `json:"nextLevelPromotionRate"`
Nextlevelmarketfee int `json:"nextLevelMarketFee"`
Extrainfovo interface{} `json:"extraInfoVO"`
} `json:"goodsList"`
}
//获取官方活动
func (a *API) ActivityOperationList() (activityOperationListResult []*ActivityOperationListResult, err error) {
result, err := a.AccessStorePage("https://jinbao.pinduoduo.com/network/api/activity/operation/list", map[string]interface{}{
"inPrepare": false,
"pageNumber": 1,
"pageSize": 9,
}, true)
if err == nil {
utils.Map2StructByJson(result["result"].(map[string]interface{})["list"], &activityOperationListResult, false)
}
return activityOperationListResult, err
}
type RpPromURLGenerateResult struct {
ResourceList []struct {
URL string `json:"url"`
Desc string `json:"desc"`
} `json:"resource_list"`
RequestID string `json:"request_id"`
}
//生成营销工具推广链接
func (a *API) RpPromURLGenerate(pid string) (rpPromURLGenerateResult *RpPromURLGenerateResult, err error) {
result, err := a.AccessAPI("pdd.ddk.rp.prom.url.generate", false, map[string]interface{}{
"p_id_list": []string{"\"" + pid + "\""},
"channel_type": -1,
})
if err == nil {
utils.Map2StructByJson(result["rp_promotion_url_generate_response"], &rpPromURLGenerateResult, false)
}
return rpPromURLGenerateResult, err
}
type ResourceURLGenResult struct {
SingleURLList struct {
WeAppPagePath string `json:"we_app_page_path"`
MobileURL string `json:"mobile_url"`
MobileShortURL string `json:"mobile_short_url"`
WeAppWebViewURL string `json:"we_app_web_view_url"`
URL string `json:"url"`
ShortURL string `json:"short_url"`
WeAppWebViewShortURL string `json:"we_app_web_view_short_url"`
} `json:"single_url_list"`
Sign string `json:"sign"`
WeAppInfo struct {
WeAppIconURL string `json:"we_app_icon_url"`
UserName string `json:"user_name"`
PagePath string `json:"page_path"`
SourceDisplayName string `json:"source_display_name"`
Title string `json:"title"`
AppID string `json:"app_id"`
Desc string `json:"desc"`
} `json:"we_app_info"`
RequestID string `json:"request_id"`
}
//生成频道推广链接
func (a *API) ResourceURLGen(pid string, resourceType int) (resourceURLGenResult *ResourceURLGenResult, err error) {
result, err := a.AccessAPI("pdd.ddk.resource.url.gen", false, map[string]interface{}{
"pid": pid,
"resource_type": resourceType,
})
if err == nil {
utils.Map2StructByJson(result["resource_url_response"], &resourceURLGenResult, false)
}
return resourceURLGenResult, err
}
type GoodsPromotionURLGenResult struct {
MobileURL string `json:"mobile_url"`
WeAppInfo struct {
WeAppIconURL string `json:"we_app_icon_url"`
UserName string `json:"user_name"`
PagePath string `json:"page_path"`
SourceDisplayName string `json:"source_display_name"`
Title string `json:"title"`
AppID string `json:"app_id"`
Desc string `json:"desc"`
} `json:"we_app_info"`
MobileShortURL string `json:"mobile_short_url"`
WeAppWebViewURL string `json:"we_app_web_view_url"`
URL string `json:"url"`
ShortURL string `json:"short_url"`
WeAppWebViewShortURL string `json:"we_app_web_view_short_url"`
}
//生成商品推广链接
func (a *API) GoodsPromotionURLGen(pid string, goodsID string, isAuth bool) (resourceURLGenResult *GoodsPromotionURLGenResult, err error) {
var resourceURLGenResults []*GoodsPromotionURLGenResult
params := map[string]interface{}{
"p_id": pid,
"generate_short_url": true,
"goods_sign_list": []string{"\"" + goodsID + "\""},
//"generate_authority_url": true,
"generate_we_app": true,
}
if isAuth {
params["generate_authority_url"] = true
}
result, err := a.AccessAPI("pdd.ddk.goods.promotion.url.generate", false, params)
if err == nil {
utils.Map2StructByJson(result["goods_promotion_url_generate_response"].(map[string]interface{})["goods_promotion_url_list"], &resourceURLGenResults, false)
if len(resourceURLGenResults) > 0 {
return resourceURLGenResults[0], err
}
}
return resourceURLGenResult, err
}
//查询是否绑定备案
func (a *API) MemberAuthorityQuery(pid string) (bool bool, err error) {
result, err := a.AccessAPI("pdd.ddk.member.authority.query", false, map[string]interface{}{
"pid": pid,
})
if err == nil {
if utils.MustInterface2Int64(result["authority_query_response"].(map[string]interface{})["bind"]) == 0 {
return false, err
} else {
return true, err
}
}
return false, err
}