From 5d06658b5f33521c3a84313ac12c8fc4e2785ed7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Mon, 29 Mar 2021 15:09:15 +0800 Subject: [PATCH] aa --- platformapi/ebaiapi/ebaiapi_test.go | 6 +- platformapi/ebaiapi/store_page.go | 345 +++++++++++++++++++++- platformapi/ebaiapi/store_page_test.go | 24 ++ platformapi/jdapi/jdapi_test.go | 4 +- platformapi/jdapi/store_page_test.go | 7 +- platformapi/mtunionapi/mtunionapi.go | 104 +++++++ platformapi/mtunionapi/mtunionapi_test.go | 30 ++ 7 files changed, 503 insertions(+), 17 deletions(-) create mode 100644 platformapi/mtunionapi/mtunionapi.go create mode 100644 platformapi/mtunionapi/mtunionapi_test.go diff --git a/platformapi/ebaiapi/ebaiapi_test.go b/platformapi/ebaiapi/ebaiapi_test.go index 71ca3195..7b4a67f2 100644 --- a/platformapi/ebaiapi/ebaiapi_test.go +++ b/platformapi/ebaiapi/ebaiapi_test.go @@ -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 // `) diff --git a/platformapi/ebaiapi/store_page.go b/platformapi/ebaiapi/store_page.go index 7c914d59..2dcea18a 100644 --- a/platformapi/ebaiapi/store_page.go +++ b/platformapi/ebaiapi/store_page.go @@ -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 +} diff --git a/platformapi/ebaiapi/store_page_test.go b/platformapi/ebaiapi/store_page_test.go index 99705ff7..95266e24 100644 --- a/platformapi/ebaiapi/store_page_test.go +++ b/platformapi/ebaiapi/store_page_test.go @@ -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)) +} diff --git a/platformapi/jdapi/jdapi_test.go b/platformapi/jdapi/jdapi_test.go index 5ffd3e86..0f7c93f4 100644 --- a/platformapi/jdapi/jdapi_test.go +++ b/platformapi/jdapi/jdapi_test.go @@ -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 + `) } diff --git a/platformapi/jdapi/store_page_test.go b/platformapi/jdapi/store_page_test.go index 2593fc91..4595e7a5 100644 --- a/platformapi/jdapi/store_page_test.go +++ b/platformapi/jdapi/store_page_test.go @@ -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) { diff --git a/platformapi/mtunionapi/mtunionapi.go b/platformapi/mtunionapi/mtunionapi.go new file mode 100644 index 00000000..f1043fd9 --- /dev/null +++ b/platformapi/mtunionapi/mtunionapi.go @@ -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 +} diff --git a/platformapi/mtunionapi/mtunionapi_test.go b/platformapi/mtunionapi/mtunionapi_test.go new file mode 100644 index 00000000..9cad95b1 --- /dev/null +++ b/platformapi/mtunionapi/mtunionapi_test.go @@ -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)) +}