Files
baseapi/platformapi/ebaiapi/store_page.go
2025-11-21 09:09:09 +08:00

1487 lines
60 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package ebaiapi
import (
"fmt"
"net/http"
"strings"
"time"
"git.rosy.net.cn/baseapi/platformapi"
"git.rosy.net.cn/baseapi/utils"
)
const (
storeURL = "https://be.ele.me"
getStoreURL = "https://newretail.ele.me"
swithShopURL = "crm/manager/switchshop"
)
const (
CommentLevelAll = -1
CommentLevel1 = 1
CommentLevel2 = 2
CommentLevel3 = 3
CommentLevel4 = 4
CommentLevel5 = 5
CommentContentAll = -1
CommentContentHaveContent = 1
CommentContentNoContent = 0
ShopStatusOnLine = 1 //饿百商家中心商户 上线
ShopStatusOffLine = 2 //饿百商家中心商户 未上线
ProxyBusinessState = 10 //饿百商家中心商户,除正常营业外的状态
EbaiWholeCountryStore = "22267110836"
)
type PageShopUserInfo struct {
CategoryID string `json:"category_id"`
CityID string `json:"city_id"`
CityName string `json:"city_name"`
DeliveryParty string `json:"delivery_party"`
EleID string `json:"ele_id"`
EleSoaToken string `json:"ele_soa_token"`
IsAPI int `json:"is_api"`
IsStore interface{} `json:"is_store"`
MerchantID string `json:"merchant_id"`
MerchantName string `json:"merchant_name"`
Role struct {
Ename string `json:"ename"`
Name string `json:"name"`
ShopRoleID int64 `json:"shop_role_id"`
} `json:"role"`
SalesID string `json:"sales_id"`
SalesName string `json:"sales_name"`
ServicePackage struct {
BaiduSign int `json:"baiduSign"`
EleSign int `json:"eleSign"`
} `json:"service_package"`
ShopInfo struct {
AreaID string `json:"area_id"`
BaiduBusinessState string `json:"baidu_business_state"`
BaiduOnlineStatus string `json:"baidu_online_status"`
BaiduTakeoutLogo string `json:"baidu_takeout_logo"`
CategoryID string `json:"category_id"`
CategoryIds string `json:"category_ids"`
CategoryName string `json:"category_name"`
County string `json:"county"`
CreateType string `json:"create_type"`
CreatedAt string `json:"created_at"`
CrmOncallType int `json:"crm_oncall_type"`
EffectiveAt string `json:"effective_at"`
EleBusinessState string `json:"ele_business_state"`
EleDeliveryParty string `json:"ele_delivery_party"`
EleID string `json:"ele_id"`
EleOnlineStatus string `json:"ele_online_status"`
EleShopLogo interface{} `json:"ele_shop_logo"`
IsSignZhongbao string `json:"is_sign_zhongbao"`
OnlineStatus string `json:"online_status"`
Phone string `json:"phone"`
ServStatus string `json:"serv_status"`
ShopTransactionOpen int `json:"shop_transaction_open"`
SourceName string `json:"source_name"`
SupplierID string `json:"supplier_id"`
TakeoutBoxPrice string `json:"takeout_box_price"`
TakeoutDispatchTime []*BussinessTimeInfo `json:"takeout_dispatch_time"`
TakeoutOncallType string `json:"takeout_oncall_type"`
TakeoutOpenTime []*BussinessTimeInfo `json:"takeout_open_time"`
TakeoutServicePhone string `json:"takeout_service_phone"`
TakeoutShopLogo string `json:"takeout_shop_logo"`
TransferStatus string `json:"transfer_status"`
} `json:"shop_info"`
ShopRole int `json:"shop_role"`
ShopUserID string `json:"shop_user_id"`
SwitchFromSupplier int `json:"switch_from_supplier"`
UserName string `json:"user_name"`
UserPhone string `json:"user_phone"`
YellowPrompt struct {
Capacity int `json:"capacity"`
Complete int `json:"complete"`
Display bool `json:"display"`
Msg string `json:"msg"`
MsgCount int `json:"msg_count"`
MsgList []interface{} `json:"msg_list"`
Online int `json:"online"`
PcURL string `json:"pc_url"`
TransferStatus string `json:"transfer_status"`
Type int `json:"type"`
URL string `json:"url"`
} `json:"yellow_prompt"`
}
type PageShopHealthInfo struct {
MerchantID string `json:"merchant_id"`
MerchantName string `json:"merchant_name"`
BadOrderRate string `json:"bad_order_rate"`
Category2 string `json:"category_2"`
Data string `json:"data"`
EndTime string `json:"endTime"`
HasPhotoRate string `json:"has_photo_rate"`
Hours string `json:"hours"`
ID string `json:"id"`
IsButie string `json:"is_butie"`
IsCp string `json:"is_cp"`
IsDeliverFee string `json:"is_deliver_fee"`
IsGood string `json:"is_good"`
IsHealthy string `json:"is_healthy"`
IsJiedan string `json:"is_jiedan"`
IsManjian string `json:"is_manjian"`
IsQisong string `json:"is_qisong"`
IsShopNew string `json:"is_shop_new"`
IsSku string `json:"is_sku"`
IsYinye string `json:"is_yinye"`
IsYoutu string `json:"is_youtu"`
IsZs string `json:"is_zs"`
MinDeliveryFee string `json:"min_delivery_fee"`
MinDeliveryPrice string `json:"min_delivery_price"`
RestaurantSubsidy string `json:"restaurant_subsidy"`
ShopCategory string `json:"shop_category"`
ShopID string `json:"shop_id"`
SkuNum string `json:"sku_num"`
StartTime string `json:"startTime"`
TargetButie string `json:"target_butie"`
TargetCp string `json:"target_cp"`
TargetDeliverFee string `json:"target_deliver_fee"`
TargetJiedan string `json:"target_jiedan"`
TargetQisong string `json:"target_qisong"`
TargetSku string `json:"target_sku"`
TargetYinye string `json:"target_yinye"`
TargetYoutu string `json:"target_youtu"`
UnvalidOrderNum string `json:"unvalid_order_num"`
UpdateTime string `json:"update_time"`
Week string `json:"week"`
}
type ActivityTagInfo struct {
Color struct {
BgColor string `json:"bg_color"`
FrameColor string `json:"frame_color"`
FrontColor string `json:"front_color"`
} `json:"color"`
Discount string `json:"discount"`
Msg string `json:"msg"`
Type string `json:"type"`
}
type PageListInnerShopInfo struct {
ActivityTag []*ActivityTagInfo `json:"activity_tag"`
BrandName string `json:"brand_name"`
BusinessStatus int `json:"business_status"`
BusinessTime []*BussinessTimeInfo `json:"business_time"`
CanRefund int `json:"can_refund"`
CashGiftComment string `json:"cash_gift_comment"`
DeliveryTime int `json:"delivery_time"`
DisplayRefundLabel int `json:"display_refund_label"`
Distance float64 `json:"distance"`
EleID string `json:"ele_id"`
FlashsalesStyleShop int `json:"flashsales_style_shop"`
HasFoodEnsurance int `json:"has_food_ensurance"`
HasServiceCommitment int `json:"has_service_commitment"`
HitGod int `json:"hit_god"`
IsBrand int `json:"is_brand"`
IsDoubleTwelve int `json:"is_double_twelve"`
IsRank int `json:"is_rank"`
IsTransfer int `json:"is_transfer"`
LogoURL string `json:"logo_url"`
OverallRating float64 `json:"overall_rating"`
SaledMonth int `json:"saled_month"`
SameBrandFolding []struct {
DeliveryTime int `json:"delivery_time"`
Distance float64 `json:"distance"`
EleID string `json:"ele_id"`
IsTransfer int `json:"is_transfer"`
ShopName string `json:"shop_name"`
Wid string `json:"wid"`
} `json:"same_brand_folding"`
ShopLabels string `json:"shop_labels"`
ShopName string `json:"shop_name"`
TakeoutCost float64 `json:"takeout_cost"`
TakeoutPrice float64 `json:"takeout_price"`
Type interface{} `json:"type"`
WelfareInfo []struct {
IconColor struct {
BgColor string `json:"bg_color"`
FrameColor string `json:"frame_color"`
FrontColor string `json:"front_color"`
} `json:"icon_color"`
IconName string `json:"icon_name"`
IconNameOther string `json:"icon_name_other"`
Msg string `json:"msg"`
Type string `json:"type"`
} `json:"welfare_info"`
Wid string `json:"wid"`
}
type PageListShopInfo struct {
ActivityEntry interface{} `json:"activity_entry"`
AoiID string `json:"aoi_id"`
DisplayWindow []struct {
CategoryIds []string `json:"category_ids"`
CurrentPrice string `json:"current_price"`
Image string `json:"image"`
ItemID string `json:"item_id"`
LeftNum int `json:"left_num"`
Name string `json:"name"`
OriginPrice string `json:"origin_price"`
SkuID string `json:"sku_id"`
} `json:"display_window"`
ShopInfo *PageListInnerShopInfo `json:"shop_info"`
}
type PageListInfo struct {
ShopList []*PageListShopInfo `json:"shop_list"`
Total int `json:"total"`
UserType string `json:"user_type"`
}
type PageShopInfo struct {
Activities []struct {
IconColor struct {
BgColor string `json:"bg_color"`
FrameColor string `json:"frame_color"`
FrontColor string `json:"front_color"`
} `json:"icon_color"`
IconName string `json:"icon_name"`
IconNameOther string `json:"icon_name_other"`
Msg string `json:"msg"`
Type string `json:"type"`
} `json:"activities"`
ActivityTag []*ActivityTagInfo `json:"activity_tag"`
Address string `json:"address"`
Albums []interface{} `json:"albums"`
BdHeadBg string `json:"bd_head_bg"`
BdHeadColor string `json:"bd_head_color"`
Brand string `json:"brand"`
BusinessStatus int `json:"business_status"`
CanRefund int `json:"can_refund"`
Category string `json:"category"`
CityID string `json:"city_id"`
CurrentBusinessTime interface{} `json:"current_business_time"` // 无值时为空字符串,有值时为对象:{"end":"20:45","start":"08:05"}
DeliveryInfo []interface{} `json:"delivery_info"`
DeliveryMode struct {
Tag []interface{} `json:"tag"`
Text string `json:"text"`
} `json:"delivery_mode"`
Description string `json:"description"`
DisplayRefundLabel int `json:"display_refund_label"`
Distance int `json:"distance"`
EleBusinessState int `json:"ele_business_state"`
EleID string `json:"ele_id"`
FirstOpenTime *BussinessTimeInfo `json:"first_open_time"`
HitGod int `json:"hit_god"`
ImagePath string `json:"image_path"`
IsColdChain int `json:"is_cold_chain"`
IsDoubleTwelve int `json:"is_double_twelve"`
IsMedicineShop int `json:"is_medicine_shop"`
IsOwnTheme int `json:"is_own_theme"`
Latitude float64 `json:"latitude"`
Longitude float64 `json:"longitude"`
MedicineQualification []*struct {
AptitudeName string `json:"aptitude_name"`
AptitudePhoto []string `json:"aptitude_photo"`
AptitudeType string `json:"aptitude_type"`
LicenseNumber string `json:"license_number"`
} `json:"medicine_qualification"`
Name string `json:"name"`
NewStyle bool `json:"new_style"`
OTakoutCost int `json:"o_takout_cost"`
OTakoutPrice int `json:"o_takout_price"`
OrderLeadTime interface{} `json:"order_lead_time"`
Phone string `json:"phone"`
PromotionInfo string `json:"promotion_info"`
Qualification string `json:"qualification"`
RecentOrderNum int `json:"recent_order_num"`
ShopID string `json:"shop_id"`
ShopScore float64 `json:"shop_score"`
ShopSourceFrom int `json:"shop_source_from"`
SkuCount int `json:"sku_count"`
TakeoutCost float64 `json:"takeout_cost"`
TakeoutInvoice float64 `json:"takeout_invoice"`
TakeoutInvoiceMinPrice string `json:"takeout_invoice_min_price"`
TakeoutOpenTime string `json:"takeout_open_time"`
TakeoutPrice float64 `json:"takeout_price"`
}
type ShopList struct {
Wid string `json:"wid"`
SalesID string `json:"sales_id"`
ContractStatus string `json:"contract_status"`
AuditStatus string `json:"audit_status"`
BaiduBusinessState string `json:"baidu_business_state"`
EleBusinessState string `json:"ele_business_state"`
EleID string `json:"ele_id"`
TakeoutOpenTime string `json:"takeout_open_time"`
TakeoutDispatchTime string `json:"takeout_dispatch_time"`
Name string `json:"name"`
BaiduOnlineStatus string `json:"baidu_online_status"`
EleOnlineStatus string `json:"ele_online_status"`
BusinessState int `json:"business_state"`
BaiduContractStatus int `json:"baidu_contract_status"`
EleContractStatus int `json:"ele_contract_status"`
ProxyBusinessState int `json:"proxy_business_state"`
}
type StoreShowWindowSkuList struct {
SkuID string `json:"sku_id"`
UpcID string `json:"upc_id"`
Wid string `json:"wid"`
//UpcType string `json:"upc_type"`
UpdateTime string `json:"update_time"`
ShelfNumber string `json:"shelf_number"`
LeftNum string `json:"left_num"`
MarketPrice float64 `json:"market_price"`
Ext string `json:"ext"`
ExtCode string `json:"ext_code"`
WeightFlag string `json:"weight_flag"`
IsSupplier string `json:"is_supplier"`
PurchaseLimit string `json:"purchase_limit"`
PreparationTime string `json:"preparation_time"`
Weight string `json:"weight"`
SalePrice float64 `json:"sale_price"`
Discount int `json:"discount"`
Enabled string `json:"enabled"`
UpcName string `json:"upc_name"`
Upc string `json:"upc"`
Photos []struct {
URL string `json:"url"`
IsMaster int `json:"is_master"`
} `json:"photos"`
BrandID string `json:"brand_id"`
DeleteTime string `json:"delete_time"`
CreateTime string `json:"create_time"`
NeedIce string `json:"need_ice"`
SkuProperty []interface{} `json:"sku_property"`
SaleUnit string `json:"sale_unit"`
PreminusWeight int `json:"preminus_weight"`
Minimum string `json:"minimum"`
SaleStep string `json:"sale_step"`
ProcessType int `json:"process_type"`
ProcessDetail []interface{} `json:"process_detail"`
IsInActivity int `json:"is_in_activity"`
Cat1ID string `json:"cat1_id"`
Cat2ID string `json:"cat2_id"`
Cat3ID string `json:"cat3_id"`
Propertys []interface{} `json:"propertys"`
Description string `json:"description"`
Rtf string `json:"rtf"`
Summary string `json:"summary"`
ProductionAddr1 string `json:"production_addr1"`
ProductionAddr2 string `json:"production_addr2"`
ProductionAddr3 string `json:"production_addr3"`
Cat1Name string `json:"cat1_name"`
Cat2Name string `json:"cat2_name"`
Cat3Name string `json:"cat3_name"`
Editable int `json:"editable"`
SkuStatus int `json:"sku_status"`
}
type ExianDaSkus struct {
Category string `json:"category"`
CustomGoodsCode interface{} `json:"customGoodsCode"`
CustomGoodsID int `json:"customGoodsId"`
ElemeGoodsCode string `json:"elemeGoodsCode"`
ElemeGoodsID string `json:"elemeGoodsId"`
ElemeOwnerCode string `json:"elemeOwnerCode"`
ElemeOwnerID int `json:"elemeOwnerId"`
ExtValues struct {
} `json:"extValues"`
GoodsID int `json:"goodsId"`
GoodsName string `json:"goodsName"`
ID int `json:"id"`
ImageURL string `json:"imageUrl"`
IsShelflife int `json:"isShelflife"`
IsWeight int `json:"isWeight"`
MeasurementUnitID int `json:"measurementUnitId"`
MeasurementUnitText string `json:"measurementUnitText"`
OperationType int `json:"operationType"`
OperationTypeName string `json:"operationTypeName"`
OwnerID string `json:"ownerId"`
OwnerName string `json:"ownerName"`
PurchaseUnitConversionRate string `json:"purchaseUnitConversionRate"`
PurchaseUnitID int `json:"purchaseUnitId"`
PurchaseUnitText string `json:"purchaseUnitText"`
Status int `json:"status"`
TaxRate string `json:"taxRate"`
UpcID string `json:"upcId"`
}
type ExianDaSku struct {
AdventLifeCycle interface{} `json:"adventLifeCycle"`
CategoryIDFirst int `json:"categoryIdFirst"`
CategoryIDSecond int `json:"categoryIdSecond"`
CategoryIDThird int `json:"categoryIdThird"`
CategoryText string `json:"categoryText"`
CreatedBy string `json:"createdBy"`
CustomGoodsCode interface{} `json:"customGoodsCode"`
CustomGoodsID int `json:"customGoodsId"`
ElemeGoodsCode string `json:"elemeGoodsCode"`
ElemeGoodsID string `json:"elemeGoodsId"`
ElemeOwnerCode string `json:"elemeOwnerCode"`
ElemeOwnerID int `json:"elemeOwnerId"`
ExtValues struct {
} `json:"extValues"`
GoodsID int `json:"goodsId"`
GoodsName string `json:"goodsName"`
GoodsType int `json:"goodsType"`
Height string `json:"height"`
ImageCOs []struct {
ExtValues struct {
} `json:"extValues"`
Seq int `json:"seq"`
URL string `json:"url"`
} `json:"imageCOs"`
IsDelete int `json:"isDelete"`
IsEstimateLifeCycle int `json:"isEstimateLifeCycle"`
IsShelflife int `json:"isShelflife"`
IsWeight int `json:"isWeight"`
Length string `json:"length"`
LifeCycle int `json:"lifeCycle"`
LockupLifeCycle interface{} `json:"lockupLifeCycle"`
MeasurementUnitID int `json:"measurementUnitId"`
MeasurementUnitText string `json:"measurementUnitText"`
NetWeight string `json:"netWeight"`
OperationType int `json:"operationType"`
OwnerID string `json:"ownerId"`
OwnerName string `json:"ownerName"`
PurchaseUnitConversionRate string `json:"purchaseUnitConversionRate"`
PurchaseUnitID int `json:"purchaseUnitId"`
PurchaseUnitText string `json:"purchaseUnitText"`
RejectLifeCycle interface{} `json:"rejectLifeCycle"`
Status int `json:"status"`
TaxRate string `json:"taxRate"`
TemperatureType int `json:"temperatureType"`
TenantID int `json:"tenantId"`
UpcIds []string `json:"upcIds"`
UpdatedBy interface{} `json:"updatedBy"`
Volume string `json:"volume"`
Weight string `json:"weight"`
Width string `json:"width"`
}
type EbaiSku struct {
SkuID string `json:"sku_id"`
UpcID string `json:"upc_id"`
Upc string `json:"upc"`
Wid string `json:"wid"`
LeftNum string `json:"left_num"`
MarketPrice int `json:"market_price"`
SalePrice float64 `json:"sale_price"`
Discount int `json:"discount"`
Enabled string `json:"enabled"`
PurchaseLimit string `json:"purchase_limit"`
ShelfNumber string `json:"shelf_number"`
Ext string `json:"ext"`
NeedIce string `json:"need_ice"`
SkuProperty []interface{} `json:"sku_property"`
ExtCode string `json:"ext_code"`
WeightFlag string `json:"weight_flag"`
SaleUnit string `json:"sale_unit"`
PreminusWeight int `json:"preminus_weight"`
Minimum string `json:"minimum"`
SaleStep string `json:"sale_step"`
PreparationTime string `json:"preparation_time"`
ProcessType int `json:"process_type"`
ProcessDetail []interface{} `json:"process_detail"`
IsInActivity int `json:"is_in_activity"`
//UpcType string `json:"upc_type"`
UpcName string `json:"upc_name"`
BrandID string `json:"brand_id"`
Description string `json:"description"`
Rtf string `json:"rtf"`
Summary string `json:"summary"`
Photos []struct {
URL string `json:"url"`
IsMaster int `json:"is_master"`
} `json:"photos"`
Cat1ID string `json:"cat1_id"`
Cat2ID string `json:"cat2_id"`
Cat3ID string `json:"cat3_id"`
Propertys []interface{} `json:"propertys"`
Length string `json:"length"`
Width string `json:"width"`
Height string `json:"height"`
Weight string `json:"weight"`
ProductionAddr1 string `json:"production_addr1"`
ProductionAddr2 string `json:"production_addr2"`
ProductionAddr3 string `json:"production_addr3"`
CustomCatID string `json:"custom_cat_id"`
CustomCatName string `json:"custom_cat_name"`
Cat1Name string `json:"cat1_name"`
Cat2Name string `json:"cat2_name"`
Cat3Name string `json:"cat3_name"`
BrandName string `json:"brand_name"`
Brand struct {
BrandID string `json:"brand_id"`
BrandName string `json:"brand_name"`
} `json:"brand"`
Illustration []interface{} `json:"illustration"`
IllustrationOrigin []interface{} `json:"illustration_origin"`
Cat struct {
Cat1 struct {
ID string `json:"id"`
Name string `json:"name"`
} `json:"cat1"`
Cat2 struct {
ID string `json:"id"`
Name string `json:"name"`
} `json:"cat2"`
Cat3 struct {
ID string `json:"id"`
Name string `json:"name"`
} `json:"cat3"`
} `json:"cat"`
LengthOrigin string `json:"length_origin"`
WidthOrigin string `json:"width_origin"`
HeightOrigin string `json:"height_origin"`
ProductionAddr1Origin string `json:"production_addr1_origin"`
ProductionAddr2Origin string `json:"production_addr2_origin"`
ProductionAddr3Origin string `json:"production_addr3_origin"`
SummaryOrigin string `json:"summary_origin"`
Cat1Origin struct {
ID string `json:"id"`
Name string `json:"name"`
} `json:"cat1_origin"`
Cat2Origin struct {
ID string `json:"id"`
Name string `json:"name"`
} `json:"cat2_origin"`
Cat3Origin struct {
ID string `json:"id"`
Name string `json:"name"`
} `json:"cat3_origin"`
BrandOrigin struct {
BrandID string `json:"brand_id"`
BrandName string `json:"brand_name"`
} `json:"brand_origin"`
IsDrug int `json:"is_drug"`
SupplierID string `json:"supplier_id"`
Editable int `json:"editable"`
IsWaterDiscount int `json:"is_water_discount"`
DiscountRange int `json:"discount_range"`
CtrlEdit struct {
UpcName int `json:"upc_name"`
Upc int `json:"upc"`
Cat int `json:"cat"`
BrandID int `json:"brand_id"`
Photos int `json:"photos"`
Description int `json:"description"`
Volumn int `json:"volumn"`
Weight int `json:"weight"`
Discount int `json:"discount"`
} `json:"ctrl_edit"`
}
type EbaiSkuList struct {
UpcID string `json:"upc_id"`
//UpcType string `json:"upc_type"`
Photos string `json:"photos"`
UpcName string `json:"upc_name"`
Upc string `json:"upc"`
BrandID string `json:"brand_id"`
Weight string `json:"weight"`
Wid string `json:"wid"`
Enabled string `json:"enabled"`
Cat1ID string `json:"cat1_id"`
Cat2ID string `json:"cat2_id"`
Cat3ID string `json:"cat3_id"`
BrandName string `json:"brand_name"`
PhotosList []struct {
URL string `json:"url"`
IsMaster int `json:"is_master"`
} `json:"photos_list"`
Shopsku int `json:"shopsku"`
IsInActivity int `json:"is_in_activity"`
}
func (a *API) AccessStorePage2(subURL, storeURL2 string, params map[string]interface{}, isPost bool, cookies map[string]string) (retVal map[string]interface{}, err error) {
if a.GetCookieCount() == 0 {
return nil, fmt.Errorf("需要设置Store Cookie才能使用此方法")
}
err = platformapi.AccessPlatformAPIWithRetry(a.client,
func() *http.Request {
var request *http.Request
var url string
if storeURL2 != "" {
url = storeURL2
} else {
url = storeURL
}
if !isPost {
request, _ = http.NewRequest(http.MethodGet, utils.GenerateGetURL(url, subURL, params), nil)
} else {
if storeURL2 != "" {
//result, _ := json.MarshalIndent(params, "", " ")
request, _ = http.NewRequest(http.MethodPost, utils.GenerateGetURL(url, subURL, nil), strings.NewReader(utils.Map2URLValues(params).Encode()))
//request.Header.Set("Content-Type", "application/ncp4+json")
request.Header.Set("Content-Type", "application/x-www-form-urlencoded")
} else {
request, _ = http.NewRequest(http.MethodPost, utils.GenerateGetURL(url, subURL, nil), strings.NewReader(utils.Map2URLValues(params).Encode()))
request.Header.Set("charset", "UTF-8")
request.Header.Set("Content-Type", "application/x-www-form-urlencoded")
}
}
a.FillRequestCookies(request)
for k, v := range cookies {
request.AddCookie(&http.Cookie{
Name: k,
Value: v,
})
}
return request
},
a.config,
func(response *http.Response, bodyStr string, jsonResult1 map[string]interface{}) (errLevel string, err error) {
if jsonResult1 == nil {
return platformapi.ErrLevelRecoverableErr, fmt.Errorf("mapData is nil")
}
retVal = jsonResult1
if storeURL2 != "" {
return platformapi.ErrLevelSuccess, nil
}
// if jsonResult1["errno"] == nil {
// if storeURL2 == "" {
// if jsonResult1[platformapi.KeyData] == nil {
// baseapi.SugarLogger.Warnf("ebai AccessStorePage2, jsonResult1:%s", utils.Format4Output(jsonResult1, true))
// } else {
// return platformapi.ErrLevelRecoverableErr, fmt.Errorf("%s return not json", subURL)
// }
// }
// }
code := int(utils.MustInterface2Int64(jsonResult1["errno"]))
if code == ResponseCodeSuccess || code == ResponseCodeSuccess2 {
if subURL == swithShopURL {
for _, v := range response.Cookies() {
if v.Name == "SWITCH_SHOP" {
retVal = utils.Struct2FlatMap(v)
break
}
}
} else {
retVal, _ = jsonResult1["data"].(map[string]interface{})
}
return platformapi.ErrLevelSuccess, nil
}
newErr := utils.NewErrorIntCode(jsonResult1["errmsg"].(string), code)
if code == ResponseCodeCallElmFailed {
return platformapi.ErrLevelRecoverableErr, newErr
}
return platformapi.ErrLevelCodeIsNotOK, newErr
})
return retVal, err
}
func (a *API) AccessStorePage(subURL, storeURL2 string, params map[string]interface{}, isPost bool) (retVal map[string]interface{}, err error) {
return a.AccessStorePage2(subURL, storeURL2, params, isPost, nil)
}
func (a *API) GetRealMobile4Order(orderId string) (mobile string, err error) {
retVal, err := a.GetStoreOrderInfo(orderId)
if err == nil {
if orderBasic, ok := retVal["order_basic"].(map[string]interface{}); ok {
return utils.Interface2String(orderBasic["user_phone_call"]), nil
}
}
return "", err
}
func (a *API) GetStoreOrderInfo(orderId string) (storeOrderInfo map[string]interface{}, err error) {
retVal, err := a.AccessStorePage("crm/orderlist", "", map[string]interface{}{
"keyword": orderId,
}, false)
if err == nil {
resultList := retVal["order_list"].([]interface{})
if len(resultList) > 0 {
return resultList[0].(map[string]interface{}), nil
}
return nil, fmt.Errorf("不能找到订单:%s的相关信息", orderId)
}
return nil, err
}
// todo 与上一个函数重了
func (a *API) GetStoreOrderInfoList(fromTime, toTime string, shopID string, orderStatus int) (storeOrderList []map[string]interface{}, err error) {
// pageSize := 20
pageNo := 1
params := map[string]interface{}{
"start_timestamp": utils.Str2Time(fromTime).Unix(),
"end_timestamp": utils.Str2Time(toTime).Unix(),
"shop_id": shopID,
}
if orderStatus >= 0 {
params["order_status"] = orderStatus
}
for {
params["page"] = pageNo
retVal, err2 := a.AccessStorePage("crm/orderlist", "", params, false)
if err = err2; err == nil {
resultList := retVal["order_list"].([]interface{})
storeOrderList = append(storeOrderList, utils.Slice2MapSlice(resultList)...)
if len(storeOrderList) >= int(utils.MustInterface2Int64(retVal["order_count"])) {
return storeOrderList, nil
}
pageNo++
} else {
return nil, err
}
}
return nil, err
}
func (a *API) getCommentList(isElm bool, fromTime, toTime time.Time, shopID, supplierID string, replyStatus, level, nonEmpty int) (commentList []map[string]interface{}, err error) {
pageSize := 200
pageNo := 1
params := map[string]interface{}{
"start_time": utils.Time2Str(fromTime),
"end_time": utils.Time2Str(toTime),
"page_count": pageSize,
}
if shopID != "" {
params["shop_id"] = shopID
} else if supplierID != "" {
params["supplier_id"] = supplierID
}
if replyStatus != ReplyStatusAll {
params["reply_status"] = replyStatus
}
if level != CommentLevelAll {
params["level"] = level
}
if nonEmpty != CommentContentAll {
params["nonempty"] = nonEmpty
}
fixedURL := fmt.Sprintf("crm/%s", []string{
"getelecommentlist",
"getcommentlist",
}[1-utils.Bool2Int(isElm)])
for {
params["page_num"] = pageNo
retVal, err2 := a.AccessStorePage(fixedURL, "", params, false)
if err = err2; err == nil && retVal != nil {
for _, comment := range retVal["comment_list"].([]interface{}) {
commentMap := comment.(map[string]interface{})
for _, orderComment := range commentMap["order_commentList"].([]interface{}) {
orderCommentMap := orderComment.(map[string]interface{})
orderCommentMap["order_id"] = commentMap["order_id"]
orderCommentMap["shop_id"] = commentMap["shop_id"]
commentList = append(commentList, orderComment.(map[string]interface{}))
}
}
if len(commentList) >= int(utils.MustInterface2Int64(retVal["total"])) {
return commentList, nil
}
pageNo++
} else {
return nil, err
}
}
return nil, err
}
func (a *API) GetEleCommentList(fromTime, toTime time.Time, shopID, supplierID string, replyStatus, level, nonEmpty int) (commentList []map[string]interface{}, err error) {
return a.getCommentList(false, fromTime, toTime, shopID, supplierID, replyStatus, level, nonEmpty)
}
func (a *API) GetCommentList(fromTime, toTime time.Time, shopID, supplierID string, replyStatus, level, nonEmpty int) (commentList []map[string]interface{}, err error) {
return a.getCommentList(false, fromTime, toTime, shopID, supplierID, replyStatus, level, nonEmpty)
}
func (a *API) PageGetSkuList(baiduShopID int64) (skuList []map[string]interface{}, err error) {
pageSize := 200
pageNo := 1
params := map[string]interface{}{
// "upc_type": 2,
// "weight": 2,
"wid": baiduShopID,
"perpage": pageSize,
}
for {
params["curpage"] = pageNo
retVal, err2 := a.AccessStorePage("commodity/getskulist", "", params, false)
if err = err2; err == nil {
for _, sku := range retVal["sku_list"].([]interface{}) {
skuList = append(skuList, sku.(map[string]interface{}))
}
if len(skuList) >= int(utils.Str2Int64(utils.Interface2String(retVal["total"]))) {
return skuList, nil
}
pageNo++
} else {
return nil, err
}
}
return nil, err
}
func (a *API) PageGetSku(baiduShopID int64, skuID int64) (ebaiSku *EbaiSku, err error) {
params := map[string]interface{}{
"wid": baiduShopID,
"sku_id": skuID,
}
retVal, err := a.AccessStorePage("commodity/getsku", "", params, false)
utils.Map2StructByJson(retVal, &ebaiSku, false)
return ebaiSku, err
}
func (a *API) PageGetCustomSkuList(baiduShopID int64, customCatID int64) (skuList []map[string]interface{}, err error) {
params := map[string]interface{}{
"wid": baiduShopID,
"custom_cat_id": customCatID,
}
retVal, err := a.AccessStorePage("commodity/getCustomSkuList", "", params, false)
if err == nil {
return utils.Slice2MapSlice(retVal["sku_list"].([]interface{})), nil
}
return nil, err
}
func (a *API) PageGetCustomCatList(baiduShopID int64) (catList []map[string]interface{}, err error) {
params := map[string]interface{}{
"wid": baiduShopID,
}
retVal, err := a.AccessStorePage("commodity/GetCustomCatList", "", params, false)
if err == nil {
return utils.Slice2MapSlice(retVal["cat_list"].([]interface{})), nil
}
return nil, err
}
func (a *API) GetStoreList(lng string, lat string, pageNo, pageSize int) (shopListInfo *PageListInfo, err error) {
if pageNo <= 0 {
pageNo = 1
}
if pageSize > 20 || pageSize <= 0 {
pageSize = 20
}
params := map[string]interface{}{
"channel": "kitchen",
"rn": pageSize,
"pn": pageNo,
"lng": lng,
"lat": lat,
}
// 水果
// https://h5.ele.me/restapi/shopping/v3/restaurants?latitude=30.64743&longitude=104.089981&keyword=&offset=0&limit=8&extras[]=activities&extras[]=tags&terminal=h5&rank_id=456ad3b166954bc996324b6fc43a29fb&order_by=0&brand_ids[]=&restaurant_category_ids[]=245
result, err := a.AccessStorePageNoCookie("newretail/main/shoplist", params)
if err == nil && result != nil {
err = utils.Map2StructByJson(result, &shopListInfo, true)
}
return shopListInfo, err
}
func (a *API) GetStoreList2(lng float64, lat float64) (shopListInfo *PageListInfo, err error) {
pageSize := 20
pageNo := 1
for {
retVal, err2 := a.GetStoreList(fmt.Sprintf("%.6f", lng), fmt.Sprintf("%.6f", lat), pageNo, pageSize)
if err = err2; err == nil {
if shopListInfo == nil {
shopListInfo = retVal
} else {
shopListInfo.ShopList = append(shopListInfo.ShopList, retVal.ShopList...)
}
if len(retVal.ShopList) < pageSize {
break
}
pageNo++
} else {
break
}
}
return shopListInfo, err
}
func (a *API) GetStoreInfo(storeId string) (storeInfo map[string]interface{}, err error) {
params := map[string]interface{}{
"shop_id": storeId,
"lng": 0,
"lat": 0,
}
retVal, err := a.AccessStorePageNoCookie("newretail/shop/getshopinfo", params)
if err != nil {
return nil, err
}
if retVal != nil {
retVal["shop_id"] = storeId
}
return retVal, err
}
func (a *API) GetStoreInfo2(storeID string) (storeInfo *PageShopInfo, err error) {
retVal, err := a.GetStoreInfo(storeID)
if err == nil {
if retVal != nil {
err = utils.Map2StructByJson(retVal, &storeInfo, true)
}
}
return storeInfo, err
}
func (a *API) AccessStorePageNoCookie(subURL string, params map[string]interface{}) (retVal map[string]interface{}, err error) {
err = platformapi.AccessPlatformAPIWithRetry(a.client,
func() *http.Request {
fullURL := utils.GenerateGetURL(getStoreURL, subURL, params)
request, _ := http.NewRequest(http.MethodGet, fullURL, nil)
if err != nil {
return nil
}
return request
},
a.config,
func(response *http.Response, bodyStr string, jsonResult1 map[string]interface{}) (errLevel string, err error) {
if jsonResult1 == nil {
return platformapi.ErrLevelRecoverableErr, fmt.Errorf("mapData is nil")
}
code := int(utils.MustInterface2Int64(jsonResult1["error_no"]))
if code == ResponseCodeSuccess {
retVal = jsonResult1["result"].(map[string]interface{})
return platformapi.ErrLevelSuccess, nil
} else if code == GetStoreSuccessButUnderfind {
return platformapi.ErrLevelSuccess, nil
}
newErr := utils.NewErrorIntCode(jsonResult1["error_msg"].(string), code)
return platformapi.ErrLevelCodeIsNotOK, newErr
})
return retVal, err
}
func (a *API) SwitchShop(baiduShopID int64) (switchShopCookie string, err error) {
result, err := a.AccessStorePage("crm/manager/switchshop", "", map[string]interface{}{
"switch_shop_id": baiduShopID,
}, true)
if err == nil {
switchShopCookie = utils.Interface2String(result["Value"])
}
return switchShopCookie, err
}
func (a *API) GetShopUserInfo2(switchShopCookie string) (shopUserInfo *PageShopUserInfo, err error) {
shopInfo, err := a.AccessStorePage2("crm/account/getshopuserinfo", "", nil, true, map[string]string{
"SWITCH_SHOP": switchShopCookie,
})
if err == nil {
err = utils.Map2StructByJson(shopInfo, &shopUserInfo, true)
}
return shopUserInfo, err
}
func (a *API) GetShopUserInfo(baiduShopID int64) (shopUserInfo *PageShopUserInfo, err error) {
switchShopCookie, err := a.SwitchShop(baiduShopID)
if err != nil {
return nil, err
}
return a.GetShopUserInfo2(switchShopCookie)
}
func (a *API) GetShopHealthByDetail2(switchShopCookie string) (shopHealthDetail *PageShopHealthInfo, err error) {
shopInfo, err := a.GetShopUserInfo2(switchShopCookie)
if err != nil {
return nil, err
}
result, err := a.AccessStorePage2("crm/getshophealthydetail", "", map[string]interface{}{
"shop_id": shopInfo.EleID,
}, true, map[string]string{
"SWITCH_SHOP": switchShopCookie,
})
if err == nil {
if err = utils.Map2StructByJson(result, &shopHealthDetail, true); err == nil {
shopHealthDetail.MerchantID = shopInfo.MerchantID
shopHealthDetail.MerchantName = shopInfo.MerchantName
}
}
return shopHealthDetail, err
}
func (a *API) GetShopHealthByDetail(baiduShopID int64) (shopHealthDetail *PageShopHealthInfo, err error) {
switchShopCookie, err := a.SwitchShop(baiduShopID)
if err != nil {
return nil, err
}
return a.GetShopHealthByDetail2(switchShopCookie)
}
//查询饿百商家中心商户列表
// https://be.ele.me/crm/suppliershopstatus?status=1&proxy_business_state=10&pageCount=500&pageNum=1
func (a *API) GetShopListByPage(status, proxyBusinessState, pageCount, pageNum int) (shopList []*ShopList, totalCount int, err error) {
params := map[string]interface{}{
"status": status,
"proxy_business_state": proxyBusinessState,
"pageCount": pageCount,
"pageNum": pageNum,
}
retVal, err := a.AccessStorePage("crm/suppliershopstatus", "", params, false)
if err == nil {
utils.Map2StructByJson(retVal["shop_list"], &shopList, true)
totalCount = int(utils.MustInterface2Int64(retVal["total"]))
}
return shopList, totalCount, err
}
//饿百骑手增加小费单位为元最低0.1元
// orderID与elemeOrderID任意一个都可以
// https://be.ele.me/crm/modifytip
func (a *API) ModifyTip4OrderWaybill(orderID, elemeOrderID string, tip, zhongBaoAskPrice float64) (err error) {
params := map[string]interface{}{
"order_id": orderID,
"eleme_order_id": elemeOrderID,
"tip": tip,
"zhongbao_ask_price": zhongBaoAskPrice,
}
_, err = a.AccessStorePage("crm/modifytip", "", params, false)
return err
}
//查询饿百门店橱窗商品信息
func (a *API) GetStoresShowWindowSkus(baiduShopID int64) (storeShowWindowList []*StoreShowWindowSkuList, err error) {
// params := map[string]interface{}{
// "wid": baiduShopID,
// }
// result, err := a.AccessStorePage("crm/shop/getcurrshopwindow", "", params, true)
// if err == nil {
// err2 := utils.Map2StructByJson(result["sku_list"], &storeShowWindowList, false)
// if err2 != nil {
// return storeShowWindowList, err
// }
// }
return storeShowWindowList, err
}
//获取饿鲜达商品库
func (a *API) GetExianDaSkuDepot(upcID string) (results []*ExianDaSkus, err error) {
var (
pageNum = 1
pageSize = 200
)
for {
params := map[string]interface{}{
"metas": map[string]interface{}{},
"params": map[string]interface{}{
"goodsListQry": map[string]interface{}{
"pageNum": pageNum,
"pageSize": pageSize,
},
},
}
if upcID != "" {
params["params"].(map[string]interface{})["goodsListQry"].(map[string]interface{})["upcId"] = upcID
}
result, err := a.AccessStorePage("bwm_newretail.scm_ic/GoodsServiceI/findGoodsList", "https://ncp.ele.me", params, true)
if err != nil {
return results, err
}
if result["data"] != nil {
var exianDaSkus []*ExianDaSkus
utils.Map2StructByJson(result["data"], &exianDaSkus, false)
if len(exianDaSkus) > 0 {
results = append(results, exianDaSkus...)
}
if len(exianDaSkus) < pageSize {
break
}
}
pageNum++
}
return results, err
}
//获取饿鲜达单个商品主要取分类id
func (a *API) GetExianDaSku(exdSkuID int64) (results *ExianDaSku, err error) {
params := map[string]interface{}{
"metas": map[string]interface{}{},
"params": map[string]interface{}{
"goodsGetQry": map[string]interface{}{
"elemeGoodsId": exdSkuID,
},
},
}
result, err := a.AccessStorePage("bwm_newretail.scm_ic/GoodsServiceI/findGoodsById", "https://ncp.ele.me", params, true)
if err != nil {
return results, err
}
utils.Map2StructByJson(result["data"], &results, false)
return results, err
}
//查询饿百全国账号商品库商品
func (a *API) GetEbaiDepotSku(supplierID string, upc string) (ebaiSkuList []*EbaiSkuList, err error) {
params := map[string]interface{}{
"wid": 0,
"supplierId": supplierID,
"upc": upc,
"curpage": 1,
"perpage": 20,
}
result, err := a.AccessStorePage("commodity/getsuppliergoods", "", params, false)
if err == nil {
err2 := utils.Map2StructByJson(result["sku_list"], &ebaiSkuList, false)
if err2 != nil {
return ebaiSkuList, err
}
}
return ebaiSkuList, err
}
//查询饿百商品根据upc
func (a *API) GetEbaiSku(upcID string, supplierID string) (ebaiSku *EbaiSku, err error) {
params := map[string]interface{}{
"supplierId": supplierID,
"upc_id": upcID,
}
result, err := a.AccessStorePage("commodity/getsku", "", params, false)
if err == nil {
err2 := utils.Map2StructByJson(result, &ebaiSku, false)
if err2 != nil {
return ebaiSku, err
}
}
return ebaiSku, err
}
//饿百分享链接
func (a *API) GetEbaiShopShareInfo() (err error) {
_, err = a.AccessStorePage("commodity/getsku", "", nil, false)
if err == nil {
}
return err
}
type GetMainActivityListResult struct {
TemplateName interface{} `json:"templateName"`
BeginTimeRun interface{} `json:"beginTimeRun"`
EndTimeRun interface{} `json:"endTimeRun"`
Weeks interface{} `json:"weeks"`
AllowCancel interface{} `json:"allowCancel"`
InvestmentType int `json:"investmentType"`
ActivityPactName interface{} `json:"activityPactName"`
ActivityPactText interface{} `json:"activityPactText"`
ActivityPlayRule interface{} `json:"activityPlayRule"`
OperationalReviewStartTime interface{} `json:"operationalReviewStartTime"`
OperationalReviewEndTime interface{} `json:"operationalReviewEndTime"`
SignUpStatus string `json:"signUpStatus"`
IsLimit bool `json:"is_limit"`
ActivityType string `json:"activity_type"`
Weekday interface{} `json:"weekday"`
Flag string `json:"flag"`
StopStatus int `json:"stop_status"`
StopReason string `json:"stop_reason"`
CreatedAt int64 `json:"created_at"`
SkuCount int `json:"skuCount"`
Platform interface{} `json:"platform"`
PcActivityImgURL interface{} `json:"pcActivityImgUrl"`
AppActivityImgURL interface{} `json:"appActivityImgUrl"`
SignUpMinCycleTime interface{} `json:"signUpMinCycleTime"`
SignUpMaxCycleTime interface{} `json:"signUpMaxCycleTime"`
ReviewRuleID interface{} `json:"reviewRuleId"`
ReviewRuleName interface{} `json:"reviewRuleName"`
InviteActivityType int `json:"inviteActivityType"`
InvestmentTemplate int `json:"investmentTemplate"`
InvestmentWay int `json:"investmentWay"`
IsOld interface{} `json:"isOld"`
CreatedUserID string `json:"createdUserId"`
CreatedUserName string `json:"createdUserName"`
UpdatedAt string `json:"updatedAt"`
IsDelete int `json:"isDelete"`
InviteNum int `json:"inviteNum"`
AcceptNum int `json:"acceptNum"`
WaitApproveNum int `json:"waitApproveNum"`
ApproveNum int `json:"approveNum"`
GoodsNum int `json:"goodsNum"`
IsNewActivity int `json:"isNewActivity"`
SubActivityIds []int64 `json:"subActivityIds"`
CreatedUserNickName string `json:"createdUserNickName"`
TimeMode int `json:"timeMode"`
ActivityID int64 `json:"activity_id"`
StartTime int64 `json:"start_time"`
EndTime int64 `json:"end_time"`
Status int `json:"status"`
RecruitName string `json:"recruit_name"`
RecruitDesc string `json:"recruit_desc"`
RecruitStartTime interface{} `json:"recruit_start_time"`
RecruitEndTime interface{} `json:"recruit_end_time"`
AllowSign bool `json:"allowSign"`
Reason string `json:"reason"`
}
//饿百平台流量活动
//https://ebai-zs.ele.me/api/activities/main-activity-list?pageSize=20&page=1&supplier_id=2233065879
func (a *API) GetMainActivityList(supplierID int) (getMainActivityListResult []*GetMainActivityListResult, err error) {
result, err := a.AccessStorePage("api/activities/main-activity-list", "https://ebai-zs.ele.me", map[string]interface{}{
"supplier_id": supplierID,
"pageSize": 30,
"page": 1,
}, false)
if err == nil {
utils.Map2StructByJson(result["data"].(map[string]interface{})["rows"], &getMainActivityListResult, false)
}
return getMainActivityListResult, err
}
type GetMainActivityDetailResult struct {
ID int64 `json:"id"`
MainActivityID int64 `json:"mainActivityId"`
ActivityID int64 `json:"activityId"`
Name string `json:"name"`
TemplateID int `json:"templateId"`
TemplateName string `json:"templateName"`
Description string `json:"description"`
BeginTime string `json:"beginTime"`
EndTime string `json:"endTime"`
BeginTimeRun string `json:"beginTimeRun"`
EndTimeRun string `json:"endTimeRun"`
Weeks string `json:"weeks"`
SigninStartTime string `json:"signinStartTime"`
SigninEndTime string `json:"signinEndTime"`
AuditStartTime string `json:"auditStartTime"`
OperationalReviewStartTime string `json:"operationalReviewStartTime"`
AuditEndTime string `json:"auditEndTime"`
OperationalReviewEndTime string `json:"operationalReviewEndTime"`
WeekRun interface{} `json:"weekRun"`
ApplyPlatform int `json:"applyPlatform"`
AllowCancel int `json:"allowCancel"`
ActivityType int `json:"activityType"`
InvestmentType int `json:"investmentType"`
Status int `json:"status"`
ActivityPactName interface{} `json:"activityPactName"`
ActivityPactText interface{} `json:"activityPactText"`
ActivityPlayRule interface{} `json:"activityPlayRule"`
CreatedAt string `json:"createdAt"`
SuspendReason interface{} `json:"suspendReason"`
IsOld int `json:"isOld"`
InviteActivityType interface{} `json:"inviteActivityType"`
InvestmentTemplate int `json:"investmentTemplate"`
IsNewActivity int `json:"isNewActivity"`
PcActivityImgURL interface{} `json:"pcActivityImgUrl"`
AppActivityImgURL interface{} `json:"appActivityImgUrl"`
SignUpMinCycleTime interface{} `json:"signUpMinCycleTime"`
SignUpMaxCycleTime interface{} `json:"signUpMaxCycleTime"`
PlayID int `json:"playId"`
PlayName interface{} `json:"playName"`
ActivitySignupRecords interface{} `json:"activitySignupRecords"`
SignUpShopType int `json:"signUpShopType"`
ResponsePlayDataInfoDTO interface{} `json:"responsePlayDataInfoDTO"`
GetSubActivityDetailResult *GetSubActivityDetailResult
}
//饿百平台流量活动详情
//https://ebai-zs.ele.me/api/activities/get-main-activity-detail?id=8134513001
func (a *API) GetMainActivityDetail(actID int) (getMainActivityDetailResult []*GetMainActivityDetailResult, err error) {
result, err := a.AccessStorePage("api/activities/get-main-activity-detail", "https://ebai-zs.ele.me", map[string]interface{}{
"id": actID,
}, false)
if err == nil {
utils.Map2StructByJson(result["data"].(map[string]interface{})["subActivities"], &getMainActivityDetailResult, false)
}
return getMainActivityDetailResult, err
}
type GetSubActivityDetailResult struct {
Activity struct {
ID int64 `json:"id"`
MainActivityID int64 `json:"mainActivityId"`
ActivityID int64 `json:"activityId"`
Name string `json:"name"`
TemplateID int `json:"templateId"`
TemplateName string `json:"templateName"`
Description string `json:"description"`
BeginTime string `json:"beginTime"`
EndTime string `json:"endTime"`
BeginTimeRun string `json:"beginTimeRun"`
EndTimeRun string `json:"endTimeRun"`
Weeks string `json:"weeks"`
SigninStartTime string `json:"signinStartTime"`
SigninEndTime string `json:"signinEndTime"`
AuditStartTime string `json:"auditStartTime"`
OperationalReviewStartTime interface{} `json:"operationalReviewStartTime"`
AuditEndTime string `json:"auditEndTime"`
OperationalReviewEndTime interface{} `json:"operationalReviewEndTime"`
WeekRun interface{} `json:"weekRun"`
ApplyPlatform int `json:"applyPlatform"`
AllowCancel int `json:"allowCancel"`
ActivityType int `json:"activityType"`
InvestmentType int `json:"investmentType"`
Status int `json:"status"`
ActivityPactName interface{} `json:"activityPactName"`
ActivityPactText interface{} `json:"activityPactText"`
ActivityPlayRule interface{} `json:"activityPlayRule"`
CreatedAt string `json:"createdAt"`
SuspendReason interface{} `json:"suspendReason"`
IsOld int `json:"isOld"`
InviteActivityType int `json:"inviteActivityType"`
InvestmentTemplate int `json:"investmentTemplate"`
IsNewActivity int `json:"isNewActivity"`
PcActivityImgURL interface{} `json:"pcActivityImgUrl"`
AppActivityImgURL interface{} `json:"appActivityImgUrl"`
SignUpMinCycleTime interface{} `json:"signUpMinCycleTime"`
SignUpMaxCycleTime interface{} `json:"signUpMaxCycleTime"`
PlayID int `json:"playId"`
PlayName interface{} `json:"playName"`
ActivitySignupRecords []struct {
ID int `json:"id"`
ActivityID int64 `json:"activityId"`
BeginTime string `json:"beginTime"`
EndTime string `json:"endTime"`
SignupStoreCount int `json:"signupStoreCount"`
SignupCommodityCount int `json:"signupCommodityCount"`
Status int `json:"status"`
GatewayActivityID int `json:"gatewayActivityId"`
ActivityInfoID int `json:"activityInfoId"`
} `json:"activitySignupRecords"`
SignUpShopType int `json:"signUpShopType"`
ResponsePlayDataInfoDTO interface{} `json:"responsePlayDataInfoDTO"`
MarketPlay struct {
Model struct {
UUID string `json:"uuid"`
WorkspaceUUID string `json:"workspaceUuid"`
Type string `json:"type"`
Name string `json:"name"`
Title string `json:"title"`
Description string `json:"description"`
Code struct {
Content string `json:"content"`
} `json:"code"`
Metas []struct {
Name string `json:"name"`
Title string `json:"title"`
Description string `json:"description"`
FieldType int `json:"fieldType"`
DataType string `json:"dataType"`
EditorType string `json:"editorType"`
DefaultValue interface{} `json:"defaultValue"`
Props interface{} `json:"props"`
Array bool `json:"array"`
FieldIndex int `json:"fieldIndex"`
Tip interface{} `json:"tip"`
Group struct {
Name string `json:"name"`
Title string `json:"title"`
} `json:"group"`
Validator struct {
ValidatorType string `json:"validatorType"`
Expression string `json:"expression"`
ValidatorParameters string `json:"validatorParameters"`
} `json:"validator"`
Items interface{} `json:"items"`
SubFields interface{} `json:"subFields"`
} `json:"metas"`
Fields []struct {
Name string `json:"name"`
Title string `json:"title"`
Description interface{} `json:"description"`
FieldType int `json:"fieldType"`
DataType string `json:"dataType"`
EditorType string `json:"editorType"`
DefaultValue string `json:"defaultValue"`
Props string `json:"props"`
Array bool `json:"array"`
FieldIndex interface{} `json:"fieldIndex"`
Tip interface{} `json:"tip"`
Group struct {
Name string `json:"name"`
Title string `json:"title"`
} `json:"group"`
Validator interface{} `json:"validator"`
Items interface{} `json:"items"`
SubFields interface{} `json:"subFields"`
} `json:"fields"`
Pipelines []struct {
ResourceType string `json:"resourceType"`
Name string `json:"name"`
Description string `json:"description"`
FieldMappings []struct {
FieldName string `json:"fieldName"`
Expression string `json:"expression"`
} `json:"fieldMappings"`
} `json:"pipelines"`
} `json:"model"`
Instance struct {
ID int `json:"id"`
ComponentType string `json:"componentType"`
WorkspaceUUID string `json:"workspaceUuid"`
Metas struct {
ActivityID string `json:"activityId"`
ModelUUID string `json:"_model_uuid_"`
} `json:"metas"`
Fields struct {
Creator string `json:"creator"`
DateRange string `json:"dateRange"`
UserScope string `json:"userScope"`
SaleRule string `json:"saleRule"`
Weekday string `json:"weekday"`
OutBizContext string `json:"outBizContext"`
Name string `json:"name"`
ItemDiscountType string `json:"itemDiscountType"`
UserLimit string `json:"userLimit"`
EffectiveChannel string `json:"effectiveChannel"`
Budget string `json:"budget"`
TimeRange string `json:"timeRange"`
} `json:"fields"`
Features struct {
} `json:"features"`
CreateTime string `json:"createTime"`
} `json:"instance"`
} `json:"marketPlay"`
} `json:"activity"`
Rule struct {
ID int `json:"id"`
ActivityID interface{} `json:"activityId"`
SkuID interface{} `json:"skuId"`
UpcCode interface{} `json:"upcCode"`
UpcSet interface{} `json:"upcSet"`
CommodityName interface{} `json:"commodityName"`
SkuCatJSON string `json:"skuCatJson"`
SkuTitleKeyword interface{} `json:"skuTitleKeyword"`
MaxDiscount interface{} `json:"maxDiscount"`
MinDiscount interface{} `json:"minDiscount"`
MaxOriginalPrice string `json:"maxOriginalPrice"`
MinOriginalPrice string `json:"minOriginalPrice"`
MaxPresentPrice interface{} `json:"maxPresentPrice"`
MinPresentPrice interface{} `json:"minPresentPrice"`
CommodityAmount interface{} `json:"commodityAmount"`
MaxCommodityAmount int `json:"maxCommodityAmount"`
SevenDaysMinValidOrderCnt int `json:"sevenDaysMinValidOrderCnt"`
SevenDaysMaxValidOrderCnt int `json:"sevenDaysMaxValidOrderCnt"`
ThirtyDaysMinValidOrderCnt int `json:"thirtyDaysMinValidOrderCnt"`
ThirtyDaysMaxValidOrderCnt int `json:"thirtyDaysMaxValidOrderCnt"`
SevenDaysMinTotalAmt string `json:"sevenDaysMinTotalAmt"`
SevenDaysMaxTotalAmt string `json:"sevenDaysMaxTotalAmt"`
ThirtyDaysMinTotalAmt string `json:"thirtyDaysMinTotalAmt"`
ThirtyDaysMaxTotalAmt string `json:"thirtyDaysMaxTotalAmt"`
SevenDaysMinPrice int `json:"sevenDaysMinPrice"`
FifteenDaysMinPrice int `json:"fifteenDaysMinPrice"`
Type interface{} `json:"type"`
MinCommodityStocks int `json:"minCommodityStocks"`
MaxCommodityStocks int `json:"maxCommodityStocks"`
SkuCategorySource int `json:"skuCategorySource"`
} `json:"rule"`
Status struct {
Value string `json:"value"`
Reason string `json:"reason"`
} `json:"status"`
CityAgentAllow bool `json:"cityAgentAllow"`
UploadedBefore bool `json:"uploadedBefore"`
}
//饿百平台流量活动详情
//https://ebai-zs.ele.me/api/activities/get-sub-activity-detail?id=6134599001&isMobile=0
func (a *API) GetSubActivityDetail(actID int) (getSubActivityDetailResult *GetSubActivityDetailResult, err error) {
result, err := a.AccessStorePage("api/activities/get-sub-activity-detail", "https://ebai-zs.ele.me", map[string]interface{}{
"id": actID,
}, false)
if err == nil {
utils.Map2StructByJson(result["data"].(map[string]interface{}), &getSubActivityDetailResult, false)
}
return getSubActivityDetailResult, err
}
//饿百修改门店
//https://ebai-zs.ele.me/api/activities/get-sub-activity-detail?id=6134599001&isMobile=0
func (a *API) ModifyShop() (err error) {
_, err = a.AccessStorePage("h5/mtop.eleme.newretail.shop.admin.ebai.pc.store.modifyshop/1.0/?jsv=2.6.1&appKey=12574478&t=1629193871490&sign=c98e4f2e874ce2300ac77810ca86b1ad&api=mtop.eleme.newretail.shop.admin.ebai.pc.store.modifyShop&v=1.0&H5Request=true&type=originaljson&dataType=json",
"https://nrshop.ele.me", map[string]interface{}{
"data": `{"wid":"32267358118","name":"好菜鲜生(龙宫市场店)","categoryId":277,"categoryName":"厨房生鲜","businessFormId":1917869373,"provinceName":"福建省","provinceId":10013,"cityName":"泉州市","cityId":102,"countyName":"鲤城区","countyId":5416,"address":"福建省泉州市鲤城区鲤中街道百源社区龙宫市场内","longitude":"118.5950827921","latitude":"24.903530599638","baiduTakeoutLogo":"https://image-star.elemecdn.com/pb/b79d499b9b0be5deb3ee3ce71bf29ad0a8"}`,
}, true)
return err
}