This commit is contained in:
苏尹岚
2021-03-29 15:09:15 +08:00
parent 824aabbfa7
commit 5d06658b5f
7 changed files with 503 additions and 17 deletions

View File

@@ -36,9 +36,9 @@ func init() {
// 京西果园
// api = New("35957", "10013fbb7c2ddad7")
api.SetCookie("PASSPORT_DELIMONT_TOKEN", "PBE_2.0_5cd1c6141c127d4188f026ac01fc93656266683e8dfb3127c2fdf894259e9034125ff3bdd2a997a385802ee3ef1802ba93a04acea34fde2d2b6e802c5dcd4ec6e3f4ad909a1d806e3ceeb349ed726b03d60ed1fe7010d4140aa338d9c5f05e3fec172c78d3d7f0ca579d61b7015af1bf99aa46b04d2b8a64aa50646dc09afe94b6b60e0ba9a933635db5e8b2a035e9b6d693b289acf1b256d5b9a3f8478c87b0b009115bfd1394f20bb5a0dc2c07b8d013a25f286ec6bf7f2d86010d65507e31358834b7a6b58fbd88cb3f1a12cf71c997b91c1527f6f3c10693f7c2bd6073da8633a98cd2dc1114dfa5be5ee0e60b02cf7e4a94d0fb563a8c01717e7c050f02249117219c07a2eb211577c208ba77f4d536fa25139bc249be93b38d6fc495ef67a32aa206835d177db402bc534de1d29caf4f6b4fbcd912c13f167d00d1732222744c336a5189728f72fb5e153c4b1164171cfb0c811f34f4c2fedd43f721b8706b43f8d631251c")
api.SetCookie("WMUSS", "4AAPQCAAB5PF0aUGcBVzoRTCEkOFhFIhx-Yk9vN2EfPHYoLlROKBEsQmAUQjhNUgRt0ADAP5x-RFklwAAdjxGO11iOj8xKXYSSDIJb2BcPghsaklNfQwGS10JOVRFfhAiYElhEXFXIzoJKyloCGdwdFE6Qk9FRxojUFN3FVEHNjJPZJu4Bt9nxQ13cwoMbjA")
api.SetCookie("WMSTOKEN", "AcAANQZAABbC04rUBZFc2UYanlocDAaP0dcfzZCeS1SHQ1qJ15ExgAA13A2dGLjdbcitBZJu4Bn6B_g6cZAAA0tyyFm8cdBaNAQAAwug8HTG0xRjwt1UZzbcAAN7ofRO")
// api.SetCookie("PASSPORT_DELIMONT_TOKEN", "PBE_2.0_5cd1c6141c127d4188f026ac01fc93656266683e8dfb3127c2fdf894259e9034125ff3bdd2a997a385802ee3ef1802ba93a04acea34fde2d2b6e802c5dcd4ec6e3f4ad909a1d806e3ceeb349ed726b03d60ed1fe7010d4140aa338d9c5f05e3fec172c78d3d7f0ca579d61b7015af1bf99aa46b04d2b8a64aa50646dc09afe94b6b60e0ba9a933635db5e8b2a035e9b6d693b289acf1b256d5b9a3f8478c87b0b009115bfd1394f20bb5a0dc2c07b8d013a25f286ec6bf7f2d86010d65507e31358834b7a6b58fbd88cb3f1a12cf71c997b91c1527f6f3c10693f7c2bd6073da8633a98cd2dc1114dfa5be5ee0e60b02cf7e4a94d0fb563a8c01717e7c050f02249117219c07a2eb211577c208ba77f4d536fa25139bc249be93b38d6fc495ef67a32aa206835d177db402bc534de1d29caf4f6b4fbcd912c13f167d00d1732222744c336a5189728f72fb5e153c4b1164171cfb0c811f34f4c2fedd43f721b8706b43f8d631251c")
api.SetCookie("WMUSS", "OGEXYTMTAwMDAyNzYxNzAwOTEyTmEyYjVodzNQ")
api.SetCookie("WMSTOKEN", "OGEXYTMTAwMDAyNzYxNzAwOTEyTmEyYjVodzNQ")
// api.SetCookieWithStr(`
// PASSPORT_DELIMONT_TOKEN=PBE_2.0_5cd1c6141c127d4188f026ac01fc93656266683e8dfb3127c2fdf894259e9034125ff3bdd2a997a385802ee3ef1802ba93a04acea34fde2d2b6e802c5dcd4ec6e3f4ad909a1d806e3ceeb349ed726b03d60ed1fe7010d4140aa338d9c5f05e3fec172c78d3d7f0ca579d61b7015af1bf99aa46b04d2b8a64aa50646dc09afe94b6b60e0ba9a933635db5e8b2a035e9b6d693b289acf1b256d5b9a3f8478c87b0b009115bfd1394f20bb5a0dc2c07b8d013a25f286ec6bf7f2d86010d65507e31358834b7a6b58fbd88cb3f1a12cf71c997b91c1527f6f3c10693f7c2bd6073da8633a98cd2dc1114dfa5be5ee0e60b02cf7e4a94d0fb563a8c01717e7c050f02249117219c07a2eb211577c208ba77f4d536fa25139bc249be93b38d6fc495ef67a32aa206835d177db402bc534de1d29caf4f6b4fbcd912c13f167d00d1732222744c336a5189728f72fb5e153c4b1164171cfb0c811f34f4c2fedd43f721b8706b43f8d631251c
// `)

View File

@@ -640,15 +640,15 @@ func (a *API) AccessStorePage2(subURL, storeURL2 string, params map[string]inter
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)
}
}
}
// 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 {
@@ -1148,3 +1148,330 @@ func (a *API) GetEbaiShopShareInfo() (err error) {
}
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"`
}
//饿百平台流量活动详情
//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
}

View File

@@ -201,3 +201,27 @@ func TestGetEbaiShopShareInfo(t *testing.T) {
}
// t.Log(utils.Format4Output(result, false))
}
func TestGetMainActivityList(t *testing.T) {
result, err := api.GetMainActivityList(2233065879)
if err != nil {
t.Fatal(err)
}
t.Log(utils.Format4Output(result, false))
}
func TestGetMainActivityDetail(t *testing.T) {
result, err := api.GetMainActivityDetail(8134513001)
if err != nil {
t.Fatal(err)
}
t.Log(utils.Format4Output(result, false))
}
func TestGetSubActivityDetail(t *testing.T) {
result, err := api.GetSubActivityDetail(6134599001)
if err != nil {
t.Fatal(err)
}
t.Log(utils.Format4Output(result, false))
}

View File

@@ -34,8 +34,8 @@ func init() {
// api.SetJdCookie(cookieValue)
// api.SetCookie("user", "VCQUVHVJI4ELNGFZOYMCDYDUSHEJMPXZRZXSNBRB4MVBNENP72REAAZR3R4SGDJ5ZI4FLYLLN5EGBBMTFCWHZVESIWBNLKZPLHWD6UIBTPXOF5IXM6AVA3V6TUNZD5UJS43AROJ2IRPZWEN5AGZYBUEGD3MSKKBKBSRP3DSEQXLITYNBLFZCHXCA7L4KGOSJRMM7R5IQP7QGLGRQB27AOE4YMLRJ3UPTZADPWJOYB3UZ7UZHLBVZRREEX647O3WQUU4BYXUOFZPIPRR77W3PQV543E")
api.SetCookieWithStr(`
lsp-store1.jddj.com=LZSN2D4HNL7VHORO6VYPUBXBW33EQX2RQK5RL67NL62WPT7YDRVO3IZPU2644VM3AF245ANGSYECBFWQWT23NCMR4PSPSYIB2DE4AEG3C54CJ3IVE4NT772Y2ZXOXVHV6MXMGEQMTUA77SWSPFSKHWSL46U5QMM63EFG7M4X6LTPQTVXUQEFGS4MN4SASUJXKO3H5VAYNYSHYPQFRWX33CS3V7ZFZJG5TJBH3ASTKUTN4B27RGRU7M7KEKNI4UAHGIZX33RF2MHCF76BF2KB2Q3HTNXN7FSC2NHYJWBRIIRMP6W44EDED2ZMUGIFYVUY5JBXDO6GUFM74; josl-privilege1.jddj.com=LZSN2D4HNL7VHORO6VYPUBXBW33EQX2RQK5RL67NL62WPT7YDRVO3IZPU2644VM3AF245ANGSYECBFWQWT23NCMR4PSPSYIB2DE4AEG3C54CJ3IVE4NT772Y2ZXOXVHV6MXMGEQMTUA77SWSPFSKHWSL446BI2GZ76YICKHNQQE7LANVONY2SAVICNPUYL3EC2WOWZGHBIBFL2YASQA4SIPT7U327WMVWVWNW7STKUTN4B27RGRU7M7KEKNI4UAHP4BS6QGR22RJNP36KSPH3CWW7B5LYP3Q7XIQACN34TM6JCBC3BWLILQOALXSO3ZBU5Q2RZJH2BMPIU3CGHF22D5GNS3U7O2AN3PH5TI; o2o-pms1.jddj.com=LZSN2D4HNL7VHORO6VYPUBXBW33EQX2RQK5RL67NL62WPT7YDRVO3IZPU2644VM3AF245ANGSYECBFWQWT23NCMR4PSPSYIB2DE4AEG3C54CJ3IVE4NT772Y2ZXOXVHV6MXMGEQMTUA77SWSPFSKHWSL446BI2GZ76YICKHNQQE7LANVONYZR2KMLOWLHCAFI2P76M5DAFNZUD7V5LW3HQ6SB2ZHOMAEFZSUGDFJS2PVBZCSMSBXBXIJ6YFLJLKPH52G7I62SDF5RHGRTVGRAGFPLM; o2o-stock1.jddj.com=LZSN2D4HNL7VHORO6VYPUBXBW33EQX2RQK5RL67NL62WPT7YDRVO3IZPU2644VM3AF245ANGSYECBFWQWT23NCMR4PSPSYIB2DE4AEG3C54CJ3IVE4NT772Y2ZXOXVHV6MXMGEQMTUA77SWSPFSKHWSL446BI2GZ76YICKHNQQE7LANVONYZPQ63PZY7AT3AV3NFZUW43OVQTBSSIABQF7LPHTNYYSJ2LCKKUA5JS2PVBZCSMSBXBXIJ6YFLJLKPSHZBQN5H3C4TCLUKVQGVYJFI7A; store_deviceid=89a38e81dfbb776fa5f866f74ed437a3; store_session=%231616491340877; UM_distinctid=1785e64face506-0d40b0789ccacd-43734711-15f900-1785e64facfd5; jdO2OOpenPortalSessionId=891154C098C60F80008BAEFD62FA1D76.s1; JSESSIONID=D8C44B9F4593E0B675B45112F5ADCBF1.s1
lsp-store1.jddj.com=LSQNGFCHHF25J36CP5K7IVZ7GQ3IGPWLA3UFJDLOGRJ7D5JSEQY63IZPU2644VM3AF245ANGSYECBX4YHWF7LQNI46AL3RNJUBNL46ZJP6APMSIB5S2IL44UFTUXD4ES7NJGTRND64MSP5YAUIRCUGXTR3DP2X4QGGUXUZMYYZDPZYNHFSZ2WADBZSSJK5NTIGIQPPKWULCZTFMODOZQIP3QS74RQ25D3XYAYGWXTHOKBSRIYFDGFS4MIBIGXPL4JOU24WJL4PVF3PPYDNTOLLXDABUFAZSE6C6CNOMI6L2TAK43JJIJQRQAQUQSU537ZFLVPGBYFDJYY; store_deviceid=f8dc2505cd85d22da78edb86122bead7; jdO2OOpenPortalSessionId=D8F6FF9EE5D52F16E828FA7C3E6E0F25.s1; JSESSIONID=8DD77790D60936A8C0DA05C8F032CDF0.s1
`)
}

View File

@@ -302,9 +302,10 @@ func TestPeiZhiJdZhangHao(t *testing.T) {
}
}
}
api.SaveCheckedInters()
time.Sleep(time.Second * 2)
api.ToOnline()
if err := api.SaveCheckedInters(); err == nil {
time.Sleep(time.Second * 2)
api.ToOnline()
}
}
func TestSecond(t *testing.T) {

View File

@@ -0,0 +1,104 @@
package mtunionapi
import (
"crypto/md5"
"fmt"
"net/http"
"sort"
"strings"
"git.rosy.net.cn/baseapi"
"git.rosy.net.cn/baseapi/platformapi"
"git.rosy.net.cn/baseapi/utils"
)
const (
prodURL = "https://runion.meituan.com"
sigKey = "sign"
)
type API struct {
appKey string
appSecret string
client *http.Client
config *platformapi.APIConfig
}
func New(appKey, appSecret string, config ...*platformapi.APIConfig) *API {
curConfig := platformapi.DefAPIConfig
if len(config) > 0 {
curConfig = *config[0]
}
return &API{
appKey: appKey,
appSecret: appSecret,
client: &http.Client{Timeout: curConfig.ClientTimeout},
config: &curConfig,
}
}
func (a *API) signParam(params map[string]interface{}) (sig string) {
var valueList []string
for k, v := range params {
if k != sigKey {
if str := fmt.Sprint(v); str != "" {
valueList = append(valueList, fmt.Sprintf("%s%s", k, str))
}
}
}
sort.Sort(sort.StringSlice(valueList))
valueList = append(valueList, fmt.Sprintf("%s", a.appSecret))
var valueList2 = make([]string, len(valueList)+1)
at := copy(valueList2, valueList[:0])
at += copy(valueList2[at:], []string{a.appSecret})
copy(valueList2[at:], valueList[0:])
sig = strings.Join(valueList2, "")
binSig := md5.Sum([]byte(sig))
sig = fmt.Sprintf("%x", binSig)
return sig
}
func (a *API) AccessAPI(action string, isPost bool, bizParams map[string]interface{}) (retVal map[string]interface{}, err error) {
params := make(map[string]interface{})
params["key"] = a.appKey
params = utils.MergeMaps(params, bizParams)
signStr := a.signParam(params)
params[sigKey] = signStr
fullURL := utils.GenerateGetURL(prodURL, action, nil)
err = platformapi.AccessPlatformAPIWithRetry(a.client,
func() *http.Request {
var request *http.Request
if !isPost {
request, _ = http.NewRequest(http.MethodGet, utils.GenerateGetURL(fullURL, "", params), nil)
} else {
request, _ = http.NewRequest(http.MethodPost, fullURL, strings.NewReader(utils.Map2URLValues(params).Encode()))
}
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")
}
if err == nil {
if utils.MustInterface2Int64(jsonResult1["status"]) != 0 {
errLevel = platformapi.ErrLevelGeneralFail
err = utils.NewErrorCode(jsonResult1["des"].(string), utils.Int64ToStr(utils.MustInterface2Int64(jsonResult1["status"])))
baseapi.SugarLogger.Debugf("jdeclp AccessAPI failed, jsonResult1:%s", utils.Format4Output(jsonResult1, true))
}
retVal = jsonResult1
}
return errLevel, err
})
return retVal, err
}
//https://union.meituan.com/v2/apiDetail?id=8
//https://runion.meituan.com/generateLink
func (a *API) GenerateLink(actID int, userID string) (url string, err error) {
_, err = a.AccessAPI("miniCode", false, map[string]interface{}{
"sid": userID,
"actId": actID,
})
return url, err
}

View File

@@ -0,0 +1,30 @@
package mtunionapi
import (
"strings"
"testing"
"git.rosy.net.cn/baseapi"
"go.uber.org/zap"
)
var (
api *API
sugarLogger *zap.SugaredLogger
)
func init() {
logger, _ := zap.NewDevelopment()
sugarLogger = logger.Sugar()
baseapi.Init(sugarLogger)
api = New("b6481f92b47918cd6e42e7ea4fae6084", "84d390777ddf691ff092e744ba26bfdd")
}
func TestGenerateLink(t *testing.T) {
_, err := api.GenerateLink(2, strings.ToLower("EFA9876238FC11EB9101525400C36BDA"))
if err != nil {
t.Fatal(err)
}
// t.Log(utils.Format4Output(result, false))
}