From fb4c5009e2841580195745741882d8d02d639b19 Mon Sep 17 00:00:00 2001 From: Yuan Si Date: Wed, 5 Apr 2023 21:08:05 +0800 Subject: [PATCH] Fix lbonus api Signed-off-by: Yuan Si --- assets/lbonus.json | 681 --------------------------------------------- handler/lbonus.go | 148 +++++++++- model/lbonus.go | 72 +++++ 3 files changed, 217 insertions(+), 684 deletions(-) delete mode 100644 assets/lbonus.json create mode 100644 model/lbonus.go diff --git a/assets/lbonus.json b/assets/lbonus.json deleted file mode 100644 index 3cd9357..0000000 --- a/assets/lbonus.json +++ /dev/null @@ -1,681 +0,0 @@ -{ - "response_data": { - "sheets": [], - "calendar_info": { - "current_date": "2023-04-03", - "current_month": { - "year": 2023, - "month": 4, - "days": [ - { - "day": 1, - "day_of_the_week": 3, - "special_day": false, - "special_image_asset": "assets\/image\/ui\/login_bonus\/loge_icon_01.png", - "received": true, - "ad_received": false, - "item": { - "item_id": 3, - "add_type": 3000, - "amount": 250000 - } - }, - { - "day": 2, - "day_of_the_week": 4, - "special_day": false, - "special_image_asset": "", - "received": true, - "ad_received": false, - "item": { - "item_id": 2, - "add_type": 3002, - "amount": 1000 - } - }, - { - "day": 3, - "day_of_the_week": 5, - "special_day": false, - "special_image_asset": "", - "received": false, - "ad_received": false, - "item": { - "item_id": 2, - "add_type": 3006, - "amount": 1 - } - }, - { - "day": 4, - "day_of_the_week": 6, - "special_day": false, - "special_image_asset": "assets\/image\/ui\/login_bonus\/loge_icon_01.png", - "received": false, - "ad_received": false, - "item": { - "unit_id": 382, - "add_type": 1001, - "amount": 1, - "is_rank_max": false, - "is_signed": false - } - }, - { - "day": 5, - "day_of_the_week": 0, - "special_day": false, - "special_image_asset": "", - "received": false, - "ad_received": false, - "item": { - "item_id": 4, - "add_type": 3001, - "amount": 2 - } - }, - { - "day": 6, - "day_of_the_week": 1, - "special_day": false, - "special_image_asset": "", - "received": false, - "ad_received": false, - "item": { - "item_id": 3, - "add_type": 3000, - "amount": 50000 - } - }, - { - "day": 7, - "day_of_the_week": 2, - "special_day": false, - "special_image_asset": "", - "received": false, - "ad_received": false, - "item": { - "item_id": 2, - "add_type": 3002, - "amount": 1000 - } - }, - { - "day": 8, - "day_of_the_week": 3, - "special_day": false, - "special_image_asset": "", - "received": false, - "ad_received": false, - "item": { - "item_id": 2, - "add_type": 3006, - "amount": 1 - } - }, - { - "day": 9, - "day_of_the_week": 4, - "special_day": false, - "special_image_asset": "", - "received": false, - "ad_received": false, - "item": { - "unit_id": 382, - "add_type": 1001, - "amount": 1, - "is_rank_max": false, - "is_signed": false - } - }, - { - "day": 10, - "day_of_the_week": 5, - "special_day": false, - "special_image_asset": "", - "received": false, - "ad_received": false, - "item": { - "item_id": 4, - "add_type": 3001, - "amount": 2 - } - }, - { - "day": 11, - "day_of_the_week": 6, - "special_day": false, - "special_image_asset": "", - "received": false, - "ad_received": false, - "item": { - "item_id": 3, - "add_type": 3000, - "amount": 50000 - } - }, - { - "day": 12, - "day_of_the_week": 0, - "special_day": false, - "special_image_asset": "", - "received": false, - "ad_received": false, - "item": { - "item_id": 2, - "add_type": 3002, - "amount": 1000 - } - }, - { - "day": 13, - "day_of_the_week": 1, - "special_day": false, - "special_image_asset": "", - "received": false, - "ad_received": false, - "item": { - "item_id": 2, - "add_type": 3006, - "amount": 1 - } - }, - { - "day": 14, - "day_of_the_week": 2, - "special_day": false, - "special_image_asset": "", - "received": false, - "ad_received": false, - "item": { - "unit_id": 382, - "add_type": 1001, - "amount": 1, - "is_rank_max": false, - "is_signed": false - } - }, - { - "day": 15, - "day_of_the_week": 3, - "special_day": false, - "special_image_asset": "assets\/image\/ui\/login_bonus\/loge_icon_01.png", - "received": false, - "ad_received": false, - "item": { - "item_id": 4, - "add_type": 3001, - "amount": 2 - } - }, - { - "day": 16, - "day_of_the_week": 4, - "special_day": false, - "special_image_asset": "", - "received": false, - "ad_received": false, - "item": { - "item_id": 3, - "add_type": 3000, - "amount": 50000 - } - }, - { - "day": 17, - "day_of_the_week": 5, - "special_day": false, - "special_image_asset": "", - "received": false, - "ad_received": false, - "item": { - "item_id": 2, - "add_type": 3002, - "amount": 1000 - } - }, - { - "day": 18, - "day_of_the_week": 6, - "special_day": false, - "special_image_asset": "", - "received": false, - "ad_received": false, - "item": { - "item_id": 2, - "add_type": 3006, - "amount": 1 - } - }, - { - "day": 19, - "day_of_the_week": 0, - "special_day": false, - "special_image_asset": "", - "received": false, - "ad_received": false, - "item": { - "unit_id": 382, - "add_type": 1001, - "amount": 1, - "is_rank_max": false, - "is_signed": false - } - }, - { - "day": 20, - "day_of_the_week": 1, - "special_day": false, - "special_image_asset": "", - "received": false, - "ad_received": false, - "item": { - "item_id": 4, - "add_type": 3001, - "amount": 2 - } - }, - { - "day": 21, - "day_of_the_week": 2, - "special_day": false, - "special_image_asset": "", - "received": false, - "ad_received": false, - "item": { - "item_id": 3, - "add_type": 3000, - "amount": 50000 - } - }, - { - "day": 22, - "day_of_the_week": 3, - "special_day": false, - "special_image_asset": "", - "received": false, - "ad_received": false, - "item": { - "item_id": 2, - "add_type": 3002, - "amount": 1000 - } - }, - { - "day": 23, - "day_of_the_week": 4, - "special_day": false, - "special_image_asset": "", - "received": false, - "ad_received": false, - "item": { - "item_id": 2, - "add_type": 3006, - "amount": 1 - } - }, - { - "day": 24, - "day_of_the_week": 5, - "special_day": false, - "special_image_asset": "", - "received": false, - "ad_received": false, - "item": { - "unit_id": 382, - "add_type": 1001, - "amount": 1, - "is_rank_max": false, - "is_signed": false - } - }, - { - "day": 25, - "day_of_the_week": 6, - "special_day": false, - "special_image_asset": "", - "received": false, - "ad_received": false, - "item": { - "item_id": 4, - "add_type": 3001, - "amount": 2 - } - }, - { - "day": 26, - "day_of_the_week": 0, - "special_day": false, - "special_image_asset": "", - "received": false, - "ad_received": false, - "item": { - "item_id": 3, - "add_type": 3000, - "amount": 50000 - } - }, - { - "day": 27, - "day_of_the_week": 1, - "special_day": false, - "special_image_asset": "", - "received": false, - "ad_received": false, - "item": { - "item_id": 2, - "add_type": 3002, - "amount": 1000 - } - }, - { - "day": 28, - "day_of_the_week": 2, - "special_day": false, - "special_image_asset": "", - "received": false, - "ad_received": false, - "item": { - "item_id": 2, - "add_type": 3006, - "amount": 1 - } - }, - { - "day": 29, - "day_of_the_week": 3, - "special_day": false, - "special_image_asset": "", - "received": false, - "ad_received": false, - "item": { - "unit_id": 382, - "add_type": 1001, - "amount": 1, - "is_rank_max": false, - "is_signed": false - } - }, - { - "day": 30, - "day_of_the_week": 4, - "special_day": false, - "special_image_asset": "", - "received": false, - "ad_received": false, - "item": { - "item_id": 3, - "add_type": 3000, - "amount": 50000 - } - }, - { - "day": 31, - "day_of_the_week": 5, - "special_day": false, - "special_image_asset": "", - "received": false, - "ad_received": false, - "item": { - "item_id": 4, - "add_type": 3001, - "amount": 2 - } - } - ] - }, - "next_month": { - "year": 2023, - "month": 4, - "days": [ - { - "day": 1, - "day_of_the_week": 6, - "special_day": false, - "special_image_asset": "", - "received": false, - "ad_received": false, - "item": { - "item_id": 3, - "add_type": 3000, - "amount": 250000 - } - }, - { - "day": 2, - "day_of_the_week": 0, - "special_day": false, - "special_image_asset": "", - "received": false, - "ad_received": false, - "item": { - "item_id": 2, - "add_type": 3002, - "amount": 1000 - } - }, - { - "day": 3, - "day_of_the_week": 1, - "special_day": false, - "special_image_asset": "", - "received": false, - "ad_received": false, - "item": { - "item_id": 2, - "add_type": 3006, - "amount": 1 - } - }, - { - "day": 4, - "day_of_the_week": 2, - "special_day": false, - "special_image_asset": "", - "received": false, - "ad_received": false, - "item": { - "unit_id": 382, - "add_type": 1001, - "amount": 1, - "is_rank_max": false, - "is_signed": false - } - }, - { - "day": 5, - "day_of_the_week": 3, - "special_day": false, - "special_image_asset": "", - "received": false, - "ad_received": false, - "item": { - "item_id": 2, - "add_type": 3002, - "amount": 1000 - } - }, - { - "day": 6, - "day_of_the_week": 4, - "special_day": false, - "special_image_asset": "", - "received": false, - "ad_received": false, - "item": { - "item_id": 3, - "add_type": 3000, - "amount": 50000 - } - }, - { - "day": 7, - "day_of_the_week": 5, - "special_day": false, - "special_image_asset": "", - "received": false, - "ad_received": false, - "item": { - "item_id": 4, - "add_type": 3001, - "amount": 2 - } - }, - { - "day": 8, - "day_of_the_week": 6, - "special_day": false, - "special_image_asset": "", - "received": false, - "ad_received": false, - "item": { - "item_id": 2, - "add_type": 3006, - "amount": 1 - } - }, - { - "day": 9, - "day_of_the_week": 0, - "special_day": false, - "special_image_asset": "", - "received": false, - "ad_received": false, - "item": { - "unit_id": 382, - "add_type": 1001, - "amount": 1, - "is_rank_max": false, - "is_signed": false - } - }, - { - "day": 10, - "day_of_the_week": 1, - "special_day": false, - "special_image_asset": "", - "received": false, - "ad_received": false, - "item": { - "item_id": 3, - "add_type": 3000, - "amount": 50000 - } - }, - { - "day": 11, - "day_of_the_week": 2, - "special_day": false, - "special_image_asset": "", - "received": false, - "ad_received": false, - "item": { - "item_id": 4, - "add_type": 3001, - "amount": 2 - } - }, - { - "day": 12, - "day_of_the_week": 3, - "special_day": false, - "special_image_asset": "", - "received": false, - "ad_received": false, - "item": { - "item_id": 2, - "add_type": 3002, - "amount": 1000 - } - }, - { - "day": 13, - "day_of_the_week": 4, - "special_day": false, - "special_image_asset": "", - "received": false, - "ad_received": false, - "item": { - "item_id": 2, - "add_type": 3006, - "amount": 1 - } - }, - { - "day": 14, - "day_of_the_week": 5, - "special_day": false, - "special_image_asset": "", - "received": false, - "ad_received": false, - "item": { - "unit_id": 382, - "add_type": 1001, - "amount": 1, - "is_rank_max": false, - "is_signed": false - } - } - ] - } - }, - "total_login_info": { - "login_count": 2626, - "remaining_count": 74, - "reward": [ - { - "item_id": 5, - "add_type": 1000, - "amount": 5 - } - ] - }, - "license_lbonus_list": [], - "class_system": { - "rank_info": { - "before_class_rank_id": 10, - "after_class_rank_id": 10, - "rank_up_date": "2020-02-12 11:57:15" - }, - "complete_flag": false, - "is_opened": true, - "is_visible": true - }, - "start_dash_sheets": [], - "effort_point": [ - { - "live_effort_point_box_spec_id": 5, - "capacity": 4000000, - "before": 1400116, - "after": 1400116, - "rewards": [] - } - ], - "limited_effort_box": [], - "museum_info": { - "parameter": { - "smile": 228, - "pure": 300, - "cool": 372 - }, - "contents_id_list": [ - 1597, - 1598, - 1599, - 1600, - 1601, - 1694, - 1695, - 1696, - 1697, - 1699, - 1700, - 1701 - ] - }, - "server_timestamp": 1679360063, - "present_cnt": 0 - }, - "release_info": [], - "status_code": 200 -} \ No newline at end of file diff --git a/handler/lbonus.go b/handler/lbonus.go index 4006407..55c7f27 100644 --- a/handler/lbonus.go +++ b/handler/lbonus.go @@ -2,10 +2,12 @@ package handler import ( "encoding/base64" + "encoding/json" "fmt" "honoka-chan/config" "honoka-chan/database" "honoka-chan/encrypt" + "honoka-chan/model" "honoka-chan/utils" "net/http" "time" @@ -45,13 +47,153 @@ func LBonusExecuteHandler(ctx *gin.Context) { newAuthorizeStr := fmt.Sprintf("consumerKey=lovelive_test&timeStamp=%d&version=1.1&token=%s&nonce=%d&user_id=%s&requestTimeStamp=%d", respTime, authToken, nonce, userId[0], reqTime) // fmt.Println(newAuthorizeStr) - resp := utils.ReadAllText("assets/lbonus.json") - xms := encrypt.RSA_Sign_SHA1([]byte(resp), "privatekey.pem") + weeks := map[string]int{ + "Monday": 1, + "Tuesday": 2, + "Wednesday": 3, + "Thursday": 4, + "Friday": 5, + "Saturday": 6, + "Sunday": 7, + } + + // 本月日历 + y, m, d := time.Now().Local().Date() + cm := m + + d1 := time.Date(y, m, 1, 0, 0, 0, 0, time.Local) + // fmt.Println(d1) + // fmt.Println(weeks[d1.Weekday().String()]) + + d2 := d1.AddDate(0, 1, -1) + // fmt.Println(d2) + + weeksList := []model.LbDays{} + for c := d1; ; c = c.AddDate(0, 0, 1) { + _, _, rd := c.Date() + received := false + if rd <= d { + received = true + } + rw := weeks[c.Weekday().String()] + weeksList = append(weeksList, model.LbDays{ + Day: rd, + DayOfTheWeek: rw, + SpecialDay: false, + SpecialImageAsset: "", + Received: received, + AdReceived: false, + Item: model.LbDayItem{ + ItemID: 4, + AddType: 3001, + Amount: 1, + }, + }) + if c == d2 { + break + } + } + + // 下月日历 + y, m, _ = time.Now().AddDate(0, 1, 0).Date() + // fmt.Println(y, m, d) + + d1 = time.Date(y, m, 1, 0, 0, 0, 0, time.Local) + // fmt.Println(d1) + // fmt.Println(weeks[d1.Weekday().String()]) + + d2 = d1.AddDate(0, 1, -1) + // fmt.Println(d2) + + nextWeeksList := []model.LbDays{} + for c := d1; ; c = c.AddDate(0, 0, 1) { + _, _, rd := c.Date() + rw := weeks[c.Weekday().String()] + nextWeeksList = append(nextWeeksList, model.LbDays{ + Day: rd, + DayOfTheWeek: rw, + SpecialDay: false, + SpecialImageAsset: "", + Received: false, + AdReceived: false, + Item: model.LbDayItem{ + ItemID: 4, + AddType: 3001, + Amount: 1, + }, + }) + if c == d2 { + break + } + } + + res := model.LbResp{ + ResponseData: model.LbRes{ + Sheets: []interface{}{}, + CalendarInfo: model.CalendarInfo{ + CurrentDate: time.Now().Format("2006-01-02 03:04:05"), + CurrentMonth: model.LbMonth{ + Year: y, + Month: int(cm), + Days: weeksList, + }, + NextMonth: model.LbMonth{ + Year: y, + Month: int(m), + Days: nextWeeksList, + }, + }, + TotalLoginInfo: model.TotalLoginInfo{ + LoginCount: 2626, + RemainingCount: 74, + Reward: []model.Reward{ + { + ItemID: 5, + AddType: 1000, + Amount: 5, + }, + }, + }, + LicenseLbonusList: []interface{}{}, + ClassSystem: model.LbClassSystem{ + RankInfo: model.LbRankInfo{ + BeforeClassRankID: 10, + AfterClassRankID: 10, + RankUpDate: "2020-02-12 11:57:15", + }, + CompleteFlag: false, + IsOpened: true, + IsVisible: true, + }, + StartDashSheets: []interface{}{}, + EffortPoint: []model.EffortPoint{ + { + LiveEffortPointBoxSpecID: 5, + Capacity: 4000000, + Before: 1400116, + After: 1400116, + Rewards: []model.Rewards{}, + }, + }, + LimitedEffortBox: []interface{}{}, + MuseumInfo: model.MuseumInfo{}, + ServerTimestamp: time.Now().Unix(), + PresentCnt: 0, + }, + ReleaseInfo: []interface{}{}, + StatusCode: 200, + } + + resp, err := json.Marshal(res) + if err != nil { + panic(err) + } + xms := encrypt.RSA_Sign_SHA1(resp, "privatekey.pem") xms64 := base64.RawStdEncoding.EncodeToString(xms) ctx.Header("Server-Version", config.Conf.Server.VersionNumber) ctx.Header("user_id", userId[0]) ctx.Header("authorize", newAuthorizeStr) ctx.Header("X-Message-Sign", xms64) - ctx.String(http.StatusOK, resp) + ctx.String(http.StatusOK, string(resp)) } diff --git a/model/lbonus.go b/model/lbonus.go new file mode 100644 index 0000000..d22c2c4 --- /dev/null +++ b/model/lbonus.go @@ -0,0 +1,72 @@ +package model + +type LbDayItem struct { + ItemID int `json:"item_id"` + AddType int `json:"add_type"` + Amount int `json:"amount"` +} + +type LbDays struct { + Day int `json:"day"` + DayOfTheWeek int `json:"day_of_the_week"` + SpecialDay bool `json:"special_day"` + SpecialImageAsset string `json:"special_image_asset"` + Received bool `json:"received"` + AdReceived bool `json:"ad_received"` + Item LbDayItem `json:"item"` +} + +type LbMonth struct { + Year int `json:"year"` + Month int `json:"month"` + Days []LbDays `json:"days"` +} + +type CalendarInfo struct { + CurrentDate string `json:"current_date"` + CurrentMonth LbMonth `json:"current_month"` + NextMonth LbMonth `json:"next_month"` +} + +type Reward struct { + ItemID int `json:"item_id"` + AddType int `json:"add_type"` + Amount int `json:"amount"` +} +type TotalLoginInfo struct { + LoginCount int `json:"login_count"` + RemainingCount int `json:"remaining_count"` + Reward []Reward `json:"reward"` +} + +type LbRankInfo struct { + BeforeClassRankID int `json:"before_class_rank_id"` + AfterClassRankID int `json:"after_class_rank_id"` + RankUpDate string `json:"rank_up_date"` +} +type LbClassSystem struct { + RankInfo LbRankInfo `json:"rank_info"` + CompleteFlag bool `json:"complete_flag"` + IsOpened bool `json:"is_opened"` + IsVisible bool `json:"is_visible"` +} + +type LbRes struct { + Sheets []interface{} `json:"sheets"` + CalendarInfo CalendarInfo `json:"calendar_info"` + TotalLoginInfo TotalLoginInfo `json:"total_login_info"` + LicenseLbonusList []interface{} `json:"license_lbonus_list"` + ClassSystem LbClassSystem `json:"class_system"` + StartDashSheets []interface{} `json:"start_dash_sheets"` + EffortPoint []EffortPoint `json:"effort_point"` + LimitedEffortBox []interface{} `json:"limited_effort_box"` + MuseumInfo MuseumInfo `json:"museum_info"` + ServerTimestamp int64 `json:"server_timestamp"` + PresentCnt int `json:"present_cnt"` +} + +type LbResp struct { + ResponseData LbRes `json:"response_data"` + ReleaseInfo []interface{} `json:"release_info"` + StatusCode int `json:"status_code"` +}