Code cleanup

Signed-off-by: Yuan Si <do4suki@gmail.com>
This commit is contained in:
2023-04-24 17:50:39 +08:00
parent e1e0e8c27d
commit 327b4a222b
56 changed files with 907 additions and 1610 deletions
+14 -26
View File
@@ -13,7 +13,12 @@ import (
_ "github.com/mattn/go-sqlite3"
)
func AlbumSeriesAllHandler(ctx *gin.Context) {
type AlbumSearchResult struct {
UnitId int `xorm:"unit_id"`
Rarity int `xorm:"rarity"`
}
func AlbumSeriesAll(ctx *gin.Context) {
var albumIds []int
err := MainEng.Table("album_series_m").Select("album_series_id").Find(&albumIds)
CheckErr(err)
@@ -21,21 +26,14 @@ func AlbumSeriesAllHandler(ctx *gin.Context) {
albumSeriesAllRes := []model.AlbumSeriesRes{}
for _, albumId := range albumIds {
AlbumStmt, err := MainEng.DB().Prepare("SELECT unit_id,rarity FROM unit_m WHERE album_series_id = ?")
CheckErr(err)
defer AlbumStmt.Close()
rows, err := AlbumStmt.Query(albumId)
unitList := []AlbumSearchResult{}
err = MainEng.Table("unit_m").Where("album_series_id = ?", albumId).Cols("unit_id,rarity").Find(&unitList)
CheckErr(err)
albumSeriesAll := []model.AlbumResult{}
for rows.Next() {
var unitId, rarity int
err = rows.Scan(&unitId, &rarity)
CheckErr(err)
for _, unit := range unitList {
albumSeries := model.AlbumResult{
UnitID: unitId,
UnitID: unit.UnitId,
RankMaxFlag: true,
LoveMaxFlag: true,
RankLevelMaxFlag: true,
@@ -44,8 +42,8 @@ func AlbumSeriesAllHandler(ctx *gin.Context) {
FavoritePoint: 1000,
}
if rarity != 4 {
switch rarity {
if unit.Rarity != 4 {
switch unit.Rarity {
case 1:
// N
albumSeries.HighestLovePerUnit = 50
@@ -64,19 +62,9 @@ func AlbumSeriesAllHandler(ctx *gin.Context) {
albumSeries.HighestLovePerUnit = 1000
// IsSigned
signStmt, err := MainEng.DB().Prepare("SELECT COUNT(*) AS ct FROM unit_sign_asset_m WHERE unit_id = ?")
exists, err := MainEng.Table("unit_sign_asset_m").Where("unit_id = ?", unit.UnitId).Exist()
CheckErr(err)
defer signStmt.Close()
var count int
err = signStmt.QueryRow(unitId).Scan(&count)
CheckErr(err)
if count > 0 {
albumSeries.SignFlag = true
} else {
albumSeries.SignFlag = false
}
albumSeries.SignFlag = exists
}
albumSeriesAll = append(albumSeriesAll, albumSeries)
+2 -2
View File
@@ -13,14 +13,14 @@ import (
"github.com/gin-gonic/gin"
)
func AnnounceIndexHandler(ctx *gin.Context) {
func AnnounceIndex(ctx *gin.Context) {
ctx.HTML(http.StatusOK, "announce.tmpl", gin.H{
"title": "Love Live! 学园偶像祭 非官方服务器",
"content": template.HTML("目前开发完毕的功能包括:登录、相册、Live、个人信息。<br>其他功能仍在开发中,有报错属于正常现象。"),
})
}
func AnnounceCheckStateHandler(ctx *gin.Context) {
func AnnounceCheckState(ctx *gin.Context) {
announceResp := model.AnnounceResp{
ResponseData: model.AnnounceRes{
HasUnreadAnnounce: false,
+89 -147
View File
@@ -17,29 +17,26 @@ import (
"github.com/gin-gonic/gin"
)
func ApiHandler(ctx *gin.Context) {
userId, err := strconv.Atoi(ctx.GetString("userid"))
CheckErr(err)
var formdata []model.SifApi
err = json.Unmarshal([]byte(ctx.GetString("request_data")), &formdata)
func Api(ctx *gin.Context) {
apiReq := []model.ApiReq{}
err := json.Unmarshal([]byte(ctx.GetString("request_data")), &apiReq)
if err != nil {
fmt.Println(err)
return
}
var results []interface{}
for _, v := range formdata {
results := []interface{}{}
for _, v := range apiReq {
var res []byte
var err error
// fmt.Println(v)
fmt.Println(v.Module, v.Action)
// fmt.Println(v.Module, v.Action)
switch v.Module {
case "login":
if v.Action == "topInfo" {
// key = "login_topinfo_result"
topInfoResp := model.TopInfoResp{
Result: model.TopInfoResult{
Result: model.TopInfoRes{
FriendActionCnt: 0,
FriendGreetCnt: 0,
FriendVarietyCnt: 0,
@@ -76,7 +73,7 @@ func ApiHandler(ctx *gin.Context) {
} else if v.Action == "topInfoOnce" {
// key = "login_topinfo_once_result"
topInfoOnceResp := model.TopInfoOnceResp{
Result: model.TopInfoOnceResult{
Result: model.TopInfoOnceRes{
NewAchievementCnt: 0,
UnaccomplishedAchievementCnt: 0,
LiveDailyRewardExist: false,
@@ -109,18 +106,13 @@ func ApiHandler(ctx *gin.Context) {
case "live":
if v.Action == "liveStatus" {
// key = "live_status_result"
var liveDifficultyId int
var liveDifficultyId []int
normalLives := []model.NormalLiveStatusList{}
sql := `SELECT live_difficulty_id FROM normal_live_m ORDER BY live_difficulty_id ASC`
rows, err := MainEng.DB().Query(sql)
err = MainEng.Table("normal_live_m").Cols("live_difficulty_id").OrderBy("live_difficulty_id ASC").Find(&liveDifficultyId)
CheckErr(err)
defer rows.Close()
for rows.Next() {
err = rows.Scan(&liveDifficultyId)
CheckErr(err)
for _, id := range liveDifficultyId {
normalLive := model.NormalLiveStatusList{
LiveDifficultyID: liveDifficultyId,
LiveDifficultyID: id,
Status: 1,
HiScore: 0,
HiComboCount: 0,
@@ -131,16 +123,11 @@ func ApiHandler(ctx *gin.Context) {
}
specialLives := []model.SpecialLiveStatusList{}
sql = `SELECT live_difficulty_id FROM special_live_m ORDER BY live_difficulty_id ASC`
rows, err = MainEng.DB().Query(sql)
err = MainEng.Table("special_live_m").Cols("live_difficulty_id").OrderBy("live_difficulty_id ASC").Find(&liveDifficultyId)
CheckErr(err)
defer rows.Close()
for rows.Next() {
err = rows.Scan(&liveDifficultyId)
CheckErr(err)
for _, id := range liveDifficultyId {
specialLive := model.SpecialLiveStatusList{
LiveDifficultyID: liveDifficultyId,
LiveDifficultyID: id,
Status: 1,
HiScore: 0,
HiComboCount: 0,
@@ -151,7 +138,7 @@ func ApiHandler(ctx *gin.Context) {
}
LiveStatusResp := model.LiveStatusResp{
Result: model.LiveStatusResult{
Result: model.LiveStatusRes{
NormalLiveStatusList: normalLives,
SpecialLiveStatusList: specialLives,
TrainingLiveStatusList: []model.TrainingLiveStatusList{},
@@ -167,18 +154,13 @@ func ApiHandler(ctx *gin.Context) {
CheckErr(err)
} else if v.Action == "schedule" {
// key = "live_list_result"
var liveDifficultyId int
var liveDifficultyId []int
specialLives := []model.SpecialLiveStatusList{}
sql := `SELECT live_difficulty_id FROM special_live_m ORDER BY live_difficulty_id ASC`
rows, err := MainEng.DB().Query(sql)
err = MainEng.Table("special_live_m").Cols("live_difficulty_id").OrderBy("live_difficulty_id ASC").Find(&liveDifficultyId)
CheckErr(err)
defer rows.Close()
for rows.Next() {
err = rows.Scan(&liveDifficultyId)
CheckErr(err)
for _, id := range liveDifficultyId {
specialLive := model.SpecialLiveStatusList{
LiveDifficultyID: liveDifficultyId,
LiveDifficultyID: id,
Status: 1,
HiScore: 0,
HiComboCount: 0,
@@ -198,7 +180,7 @@ func ApiHandler(ctx *gin.Context) {
})
}
liveListResp := model.LiveScheduleResp{
Result: model.LiveScheduleResult{
Result: model.LiveScheduleRes{
EventList: []interface{}{},
LiveList: livesList,
LimitedBonusList: []interface{}{},
@@ -229,11 +211,10 @@ func ApiHandler(ctx *gin.Context) {
if err != nil {
panic(err)
}
unitsData = append(unitsData, userUnits...)
unitListResp := model.UnitAllResp{
Result: model.UnitAllResult{
Result: model.UnitAllRes{
Active: unitsData,
Waiting: []model.Waiting{},
},
@@ -246,10 +227,10 @@ func ApiHandler(ctx *gin.Context) {
case "deckInfo":
// key = "unit_deck_result"
userDeck := []tools.UserDeckData{}
err = UserEng.Table("user_deck_m").Where("user_id = ?", userId).Asc("deck_id").Find(&userDeck)
err = UserEng.Table("user_deck_m").Where("user_id = ?", ctx.GetString("userid")).Asc("deck_id").Find(&userDeck)
CheckErr(err)
unitDeckInfo := []model.UnitDeckInfo{}
unitDeckInfo := []model.UnitDeckInfoRes{}
for _, deck := range userDeck {
deckUnit := []tools.UnitDeckData{}
err = UserEng.Table("deck_unit_m").Where("user_deck_id = ?", deck.ID).Asc("position").Find(&deckUnit)
@@ -267,7 +248,7 @@ func ApiHandler(ctx *gin.Context) {
if deck.MainFlag == 1 {
mainFlag = true
}
unitDeckInfo = append(unitDeckInfo, model.UnitDeckInfo{
unitDeckInfo = append(unitDeckInfo, model.UnitDeckInfoRes{
UnitDeckID: deck.DeckID,
MainFlag: mainFlag,
DeckName: deck.DeckName,
@@ -285,7 +266,7 @@ func ApiHandler(ctx *gin.Context) {
case "supporterAll":
// key = "unit_support_result"
unitSupportResp := model.UnitSupportResp{
Result: model.UnitSupportResult{
Result: model.UnitSupportRes{
UnitSupportList: []model.UnitSupportList{},
}, // 练习道具
Status: 200,
@@ -322,10 +303,6 @@ func ApiHandler(ctx *gin.Context) {
owingInfo = append(owingInfo, info)
}
// equipInfo := []model.SkillEquip{}
// err = UserEng.Table("skill_equip_m").Where("user_id = ?", ctx.GetString("userid")).Cols("unit_removable_skill_id,unit_owning_user_id").Find(&equipInfo)
// CheckErr(err)
var unitOwningIds []int
err = UserEng.Table("skill_equip_m").Where("user_id = ?", ctx.GetString("userid")).Cols("unit_owning_user_id").GroupBy("unit_owning_user_id").Find(&unitOwningIds)
CheckErr(err)
@@ -344,7 +321,7 @@ func ApiHandler(ctx *gin.Context) {
}
rmSkillResp := model.RemovableSkillResp{
Result: model.RemovableSkillResult{
Result: model.RemovableSkillRes{
OwningInfo: owingInfo,
EquipmentInfo: equipInfo,
}, // 宝石
@@ -390,7 +367,7 @@ func ApiHandler(ctx *gin.Context) {
case "costume":
// key = "costume_list_result"
costumeListResp := model.CostumeListResp{
Result: model.CostumeListResult{
Result: model.CostumeListRes{
CostumeList: []model.CostumeList{},
},
Status: 200,
@@ -402,11 +379,10 @@ func ApiHandler(ctx *gin.Context) {
case "album":
// key = "album_unit_result"
albumLists := []model.AlbumResult{}
sql := `SELECT unit_id,rarity FROM unit_m ORDER BY unit_id ASC`
rows, err := MainEng.DB().Query(sql)
unitList := []AlbumSearchResult{}
err = MainEng.Table("unit_m").Cols("unit_id,rarity").OrderBy("unit_id ASC").Find(&unitList)
CheckErr(err)
defer rows.Close()
for rows.Next() {
for _, unit := range unitList {
albumList := model.AlbumResult{
RankMaxFlag: true,
LoveMaxFlag: true,
@@ -414,22 +390,19 @@ func ApiHandler(ctx *gin.Context) {
AllMaxFlag: true,
FavoritePoint: 1000,
}
var uid, rit int
err = rows.Scan(&uid, &rit)
CheckErr(err)
albumList.UnitID = uid
if rit != 4 {
albumList.UnitID = unit.UnitId
if unit.Rarity != 4 {
albumList.SignFlag = false
if rit == 1 {
if unit.Rarity == 1 {
albumList.HighestLovePerUnit = 50
albumList.TotalLove = 50
} else if rit == 2 {
} else if unit.Rarity == 2 {
albumList.HighestLovePerUnit = 200
albumList.TotalLove = 200
} else if rit == 3 {
} else if unit.Rarity == 3 {
albumList.HighestLovePerUnit = 500
albumList.TotalLove = 500
} else if rit == 5 {
} else if unit.Rarity == 5 {
albumList.HighestLovePerUnit = 750
albumList.TotalLove = 750
}
@@ -437,19 +410,10 @@ func ApiHandler(ctx *gin.Context) {
albumList.HighestLovePerUnit = 1000
albumList.TotalLove = 1000
stmt, err := MainEng.DB().Prepare("SELECT COUNT(*) AS ct FROM unit_sign_asset_m WHERE unit_id = ?")
// IsSigned
exists, err := MainEng.Table("unit_sign_asset_m").Where("unit_id = ?", unit.UnitId).Exist()
CheckErr(err)
defer stmt.Close()
var count int
err = stmt.QueryRow(uid).Scan(&count)
CheckErr(err)
if count > 0 {
albumList.SignFlag = true
} else {
albumList.SignFlag = false
}
albumList.SignFlag = exists
}
albumLists = append(albumLists, albumList)
}
@@ -464,22 +428,18 @@ func ApiHandler(ctx *gin.Context) {
CheckErr(err)
case "scenario":
// key = "scenario_status_result"
sql := `SELECT scenario_id FROM scenario_m ORDER BY scenario_id ASC`
rows, err := MainEng.DB().Query(sql)
CheckErr(err)
defer rows.Close()
var scenarioIds []int
scenarioLists := []model.ScenarioStatusList{}
for rows.Next() {
var sid int
err = rows.Scan(&sid)
CheckErr(err)
err = MainEng.Table("scenario_m").Cols("scenario_id").OrderBy("scenario_id ASC").Find(&scenarioIds)
CheckErr(err)
for _, id := range scenarioIds {
scenarioLists = append(scenarioLists, model.ScenarioStatusList{
ScenarioID: sid,
ScenarioID: id,
Status: 2,
})
}
scenarioResp := model.ScenarioStatusResp{
Result: model.ScenarioStatusResult{
Result: model.ScenarioStatusRes{
ScenarioStatusList: scenarioLists,
},
Status: 200,
@@ -490,22 +450,18 @@ func ApiHandler(ctx *gin.Context) {
CheckErr(err)
case "subscenario":
// key = "subscenario_status_result"
sql := `SELECT subscenario_id FROM subscenario_m ORDER BY subscenario_id ASC`
rows, err := MainEng.DB().Query(sql)
CheckErr(err)
defer rows.Close()
var subScenarioIds []int
subScenarioLists := []model.SubscenarioStatusList{}
for rows.Next() {
var sid int
err = rows.Scan(&sid)
CheckErr(err)
err = MainEng.Table("subscenario_m").Cols("subscenario_id").OrderBy("subscenario_id ASC").Find(&subScenarioIds)
CheckErr(err)
for _, id := range subScenarioIds {
subScenarioLists = append(subScenarioLists, model.SubscenarioStatusList{
SubscenarioID: sid,
SubscenarioID: id,
Status: 2,
})
}
subScenarioResp := model.SubscenarioStatusResp{
Result: model.SubscenarioStatusResult{
Result: model.SubscenarioStatusRes{
SubscenarioStatusList: subScenarioLists,
UnlockedSubscenarioIds: []interface{}{},
},
@@ -517,18 +473,13 @@ func ApiHandler(ctx *gin.Context) {
CheckErr(err)
case "eventscenario":
// key = "event_scenario_result"
var eventIds []int
eventsList := []model.EventScenarioList{}
sql := `SELECT event_id FROM event_scenario_m GROUP BY event_id ORDER BY event_id DESC`
rows, err := MainEng.DB().Query(sql)
err = MainEng.Table("event_scenario_m").Cols("event_id").GroupBy("event_id").OrderBy("event_id DESC").Find(&eventIds)
CheckErr(err)
defer rows.Close()
for rows.Next() {
var eventId int
err = rows.Scan(&eventId)
CheckErr(err)
sql = `SELECT event_scenario_id,chapter,chapter_asset,open_date FROM event_scenario_m WHERE event_id = ? ORDER BY chapter DESC`
chaps, err := MainEng.DB().Query(sql, eventId)
for _, id := range eventIds {
sql := `SELECT event_scenario_id,chapter,chapter_asset,open_date FROM event_scenario_m WHERE event_id = ? ORDER BY chapter DESC`
chaps, err := MainEng.DB().Query(sql, id)
CheckErr(err)
defer chaps.Close()
chapsList := []model.EventScenarioChapterList{}
@@ -556,24 +507,24 @@ func ApiHandler(ctx *gin.Context) {
}
eventList := model.EventScenarioList{
EventID: eventId,
EventID: id,
OpenDate: strings.ReplaceAll(open_date, "/", "-"),
ChapterList: chapsList,
}
// HACK event_scenario_btn_asset
if eventId == 10001 {
if id == 10001 {
eventList.EventScenarioBtnAsset = "assets/image/ui/eventscenario/38_se_ba_t.png"
} else if eventId == 221 {
} else if id == 221 {
eventList.EventScenarioBtnAsset = "assets/image/ui/eventscenario/215_se_ba_t.png"
} else {
eventList.EventScenarioBtnAsset = fmt.Sprintf("assets/image/ui/eventscenario/%d_se_ba_t.png", eventId)
eventList.EventScenarioBtnAsset = fmt.Sprintf("assets/image/ui/eventscenario/%d_se_ba_t.png", id)
}
eventsList = append(eventsList, eventList)
}
eventScenarioResp := model.EventScenarioStatusResp{
Result: model.EventScenarioStatusResult{
Result: model.EventScenarioStatusRes{
EventScenarioList: eventsList, //
},
Status: 200,
@@ -584,18 +535,13 @@ func ApiHandler(ctx *gin.Context) {
CheckErr(err)
case "multiunit":
// key = "multi_unit_scenario_result"
sql := `SELECT multi_unit_id FROM multi_unit_scenario_m GROUP BY multi_unit_id ORDER BY multi_unit_id ASC`
rows, err := MainEng.DB().Query(sql)
CheckErr(err)
defer rows.Close()
var mId int
var multiIds []int
multiUnitsList := []model.MultiUnitScenarioStatusList{}
for rows.Next() {
err = rows.Scan(&mId)
CheckErr(err)
sql = `SELECT multi_unit_scenario_btn_asset,open_date,multi_unit_scenario_id,chapter FROM multi_unit_scenario_m a LEFT JOIN multi_unit_scenario_open_m b ON a.multi_unit_id = b.multi_unit_id WHERE a.multi_unit_id = ?`
units, err := MainEng.DB().Query(sql, mId)
err = MainEng.Table("multi_unit_scenario_m").Cols("multi_unit_id").GroupBy("multi_unit_id").OrderBy("multi_unit_id ASC").Find(&multiIds)
CheckErr(err)
for _, id := range multiIds {
sql := `SELECT multi_unit_scenario_btn_asset,open_date,multi_unit_scenario_id,chapter FROM multi_unit_scenario_m a LEFT JOIN multi_unit_scenario_open_m b ON a.multi_unit_id = b.multi_unit_id WHERE a.multi_unit_id = ?`
units, err := MainEng.DB().Query(sql, id)
CheckErr(err)
defer units.Close()
var multi_unit_scenario_id, chapter int
@@ -606,7 +552,7 @@ func ApiHandler(ctx *gin.Context) {
}
multiUnitsList = append(multiUnitsList, model.MultiUnitScenarioStatusList{
MultiUnitID: mId,
MultiUnitID: id,
Status: 2,
MultiUnitScenarioBtnAsset: multi_unit_scenario_btn_asset,
OpenDate: strings.ReplaceAll(open_date, "/", "-"),
@@ -620,7 +566,7 @@ func ApiHandler(ctx *gin.Context) {
})
}
unitsResp := model.MultiUnitScenarioStatusResp{
Result: model.MultiUnitScenarioStatusResult{
Result: model.MultiUnitScenarioStatusRes{
MultiUnitScenarioStatusList: multiUnitsList,
UnlockedMultiUnitScenarioIds: []interface{}{},
},
@@ -633,7 +579,7 @@ func ApiHandler(ctx *gin.Context) {
case "payment":
// key = "product_result"
productResp := model.ProductListResp{
Result: model.ProductListResult{
Result: model.ProductListRes{
RestrictionInfo: model.RestrictionInfo{
Restricted: false,
},
@@ -657,7 +603,7 @@ func ApiHandler(ctx *gin.Context) {
case "banner":
// key = "banner_result"
bannerResp := model.BannerListResp{
Result: model.BannerListResult{
Result: model.BannerListRes{
TimeLimit: "2037-12-31 23:59:59",
BannerList: []model.BannerList{
{
@@ -693,7 +639,7 @@ func ApiHandler(ctx *gin.Context) {
case "notice":
// key = "item_marquee_result"
marqueeResp := model.NoticeMarqueeResp{
Result: model.NoticeMarqueeResult{
Result: model.NoticeMarqueeRes{
ItemCount: 0,
MarqueeList: []interface{}{},
},
@@ -709,7 +655,7 @@ func ApiHandler(ctx *gin.Context) {
_, err := UserEng.Table("user_preference_m").Where("user_id = ?", ctx.GetString("userid")).Cols("user_id,unit_owning_user_id").Get(&uId, &oId)
CheckErr(err)
userIntroResp := model.UserNaviResp{
Result: model.UserNaviResult{
Result: model.UserNaviRes{
User: model.User{
UserID: uId,
UnitOwningUserID: oId,
@@ -724,7 +670,7 @@ func ApiHandler(ctx *gin.Context) {
case "navigation":
// key = "special_cutin_result"
cutinResp := model.SpecialCutinResp{
Result: model.SpecialCutinResult{
Result: model.SpecialCutinRes{
SpecialCutinList: []interface{}{},
},
Status: 200,
@@ -756,7 +702,7 @@ func ApiHandler(ctx *gin.Context) {
}
awardResp := model.AwardInfoResp{
Result: model.AwardInfoResult{
Result: model.AwardInfoRes{
AwardInfo: awardsList,
},
Status: 200,
@@ -788,7 +734,7 @@ func ApiHandler(ctx *gin.Context) {
}
backgroundResp := model.BackgroundInfoResp{
Result: model.BackgroundInfoResult{
Result: model.BackgroundInfoRes{
BackgroundInfo: backgroundsList,
},
Status: 200,
@@ -807,22 +753,18 @@ func ApiHandler(ctx *gin.Context) {
CheckErr(err)
case "exchange":
// key = "exchange_point_result"
sql := `SELECT exchange_point_id FROM exchange_point_m ORDER BY exchange_point_id ASC`
rows, err := MainEng.DB().Query(sql)
CheckErr(err)
defer rows.Close()
var exchangeIds []int
exPointsList := []model.ExchangePointList{}
for rows.Next() {
var eId int
err = rows.Scan(&eId)
CheckErr(err)
err = MainEng.Table("exchange_point_m").Cols("exchange_point_id").OrderBy("exchange_point_id ASC").Find(&exchangeIds)
CheckErr(err)
for _, id := range exchangeIds {
exPointsList = append(exPointsList, model.ExchangePointList{
Rarity: eId,
Rarity: id,
ExchangePoint: 9999,
})
}
exPointsResp := model.ExchangePointResp{
Result: model.ExchangePointResult{
Result: model.ExchangePointRes{
ExchangePointList: exPointsList,
},
Status: 200,
@@ -834,7 +776,7 @@ func ApiHandler(ctx *gin.Context) {
case "livese":
// key = "live_se_result"
liveSeResp := model.LiveSeInfoResp{
Result: model.LiveSeInfoResult{
Result: model.LiveSeInfoRes{
LiveSeList: []int{1, 2, 3},
},
Status: 200,
@@ -846,7 +788,7 @@ func ApiHandler(ctx *gin.Context) {
case "liveicon":
// key = "live_icon_result"
liveIconResp := model.LiveIconInfoResp{
Result: model.LiveIconInfoResult{
Result: model.LiveIconInfoRes{
LiveNotesIconList: []int{1, 2, 3},
},
Status: 200,
@@ -902,9 +844,9 @@ func ApiHandler(ctx *gin.Context) {
}
museumInfoResp := model.MuseumInfoResp{
Result: model.MuseumInfoResult{
MuseumInfo: model.MuseumInfo{
Parameter: model.MuseumInfoParameter{
Result: model.MuseumInfoRes{
MuseumInfo: model.Museum{
Parameter: model.MuseumParameter{
Smile: smileBuf,
Pure: pureBuf,
Cool: coolBuf,
@@ -1139,7 +1081,7 @@ func ApiHandler(ctx *gin.Context) {
// fmt.Println(results)
b, err := json.Marshal(results)
CheckErr(err)
rp := model.Response{
rp := model.ApiResp{
ResponseData: b,
ReleaseInfo: []interface{}{},
StatusCode: 200,
+16 -15
View File
@@ -4,6 +4,7 @@ import (
"encoding/base64"
"encoding/json"
"fmt"
"honoka-chan/config"
"honoka-chan/encrypt"
"honoka-chan/model"
"net/http"
@@ -21,12 +22,12 @@ type PkgInfo struct {
Size int `xorm:"pkg_size"`
}
func DownloadAdditionalHandler(ctx *gin.Context) {
func DownloadAdditional(ctx *gin.Context) {
downloadReq := model.AdditionalReq{}
if err := json.Unmarshal([]byte(ctx.PostForm("request_data")), &downloadReq); err != nil {
panic(err)
}
pkgList := []model.AdditionalResult{}
pkgList := []model.AdditionalRes{}
if CdnUrl != "" {
pkgType, pkgId := downloadReq.PackageType, downloadReq.PackageID
var pkgInfo []PkgInfo
@@ -36,7 +37,7 @@ func DownloadAdditionalHandler(ctx *gin.Context) {
CheckErr(err)
for _, pkg := range pkgInfo {
pkgList = append(pkgList, model.AdditionalResult{
pkgList = append(pkgList, model.AdditionalRes{
Size: pkg.Size,
URL: fmt.Sprintf("%s/%s/archives/%d_%d_%d.zip", CdnUrl, downloadReq.TargetOs, pkgType, pkg.Id, pkg.Order),
})
@@ -61,13 +62,13 @@ func DownloadAdditionalHandler(ctx *gin.Context) {
ctx.String(http.StatusOK, string(resp))
}
func DownloadBatchHandler(ctx *gin.Context) {
func DownloadBatch(ctx *gin.Context) {
downloadReq := model.BatchReq{}
if err := json.Unmarshal([]byte(ctx.PostForm("request_data")), &downloadReq); err != nil {
panic(err)
}
pkgList := []model.BatchResult{}
if downloadReq.ClientVersion == PackageVersion && CdnUrl != "" {
pkgList := []model.BatchRes{}
if downloadReq.ClientVersion == config.PackageVersion && CdnUrl != "" {
pkgType := downloadReq.PackageType
var pkgInfo []PkgInfo
err := MainEng.Table("download_m").Where(builder.NotIn("pkg_id", downloadReq.ExcludedPackageIds)).Where("pkg_type = ? AND pkg_os = ?", pkgType, downloadReq.Os).
@@ -76,7 +77,7 @@ func DownloadBatchHandler(ctx *gin.Context) {
CheckErr(err)
for _, pkg := range pkgInfo {
pkgList = append(pkgList, model.BatchResult{
pkgList = append(pkgList, model.BatchRes{
Size: pkg.Size,
URL: fmt.Sprintf("%s/%s/archives/%d_%d_%d.zip", CdnUrl, downloadReq.Os, pkgType, pkg.Id, pkg.Order),
})
@@ -101,13 +102,13 @@ func DownloadBatchHandler(ctx *gin.Context) {
ctx.String(http.StatusOK, string(resp))
}
func DownloadUpdateHandler(ctx *gin.Context) {
func DownloadUpdate(ctx *gin.Context) {
downloadReq := model.UpdateReq{}
if err := json.Unmarshal([]byte(ctx.PostForm("request_data")), &downloadReq); err != nil {
panic(err)
}
pkgList := []model.UpdateResult{}
if downloadReq.ExternalVersion != PackageVersion && CdnUrl != "" {
pkgList := []model.UpdateRes{}
if downloadReq.ExternalVersion != config.PackageVersion && CdnUrl != "" {
pkgType := 99
var pkgInfo []PkgInfo
err := MainEng.Table("download_m").Where("pkg_type = ? AND pkg_os = ?", pkgType, downloadReq.TargetOs).
@@ -116,10 +117,10 @@ func DownloadUpdateHandler(ctx *gin.Context) {
CheckErr(err)
for _, pkg := range pkgInfo {
pkgList = append(pkgList, model.UpdateResult{
pkgList = append(pkgList, model.UpdateRes{
Size: pkg.Size,
URL: fmt.Sprintf("%s/%s/archives/%d_%d_%d.zip", CdnUrl, downloadReq.TargetOs, pkgType, pkg.Id, pkg.Order),
Version: PackageVersion,
Version: config.PackageVersion,
})
}
}
@@ -142,7 +143,7 @@ func DownloadUpdateHandler(ctx *gin.Context) {
ctx.String(http.StatusOK, string(resp))
}
func DownloadUrlHandler(ctx *gin.Context) {
func DownloadUrl(ctx *gin.Context) {
// Extract SQL: SELECT CAST(pkg_type AS TEXT) || '_' || CAST(pkg_id AS TEXT) || '_' || CAST(pkg_order AS TEXT) || '.zip' AS zip_name FROM download_m ORDER BY pkg_type ASC,pkg_id ASC, pkg_order ASC;
// Extract Cmd: cat list.txt | while read line; do; unzip -o $line; done
downloadReq := model.UrlReq{}
@@ -154,7 +155,7 @@ func DownloadUrlHandler(ctx *gin.Context) {
urlList = append(urlList, fmt.Sprintf("%s/%s/extracted/%s", CdnUrl, downloadReq.Os, strings.ReplaceAll(v, "\\", "")))
}
urlResp := model.UrlResp{
ResponseData: model.UrlResult{
ResponseData: model.UrlRes{
UrlList: urlList,
},
ReleaseInfo: []interface{}{},
@@ -173,7 +174,7 @@ func DownloadUrlHandler(ctx *gin.Context) {
ctx.String(http.StatusOK, string(resp))
}
func DownloadEventHandler(ctx *gin.Context) {
func DownloadEvent(ctx *gin.Context) {
eventResp := model.EventResp{
ResponseData: []interface{}{},
ReleaseInfo: []interface{}{},
+1 -1
View File
@@ -12,7 +12,7 @@ import (
"github.com/gin-gonic/gin"
)
func EventListHandler(ctx *gin.Context) {
func EventList(ctx *gin.Context) {
targets := []model.TargetList{}
for i := 0; i < 6; i++ {
targets = append(targets, model.TargetList{
+1 -1
View File
@@ -12,7 +12,7 @@ import (
"github.com/gin-gonic/gin"
)
func GdprHandler(ctx *gin.Context) {
func Gdpr(ctx *gin.Context) {
gdprResp := model.GdprResp{
ResponseData: model.GdprRes{
EnableGdpr: true,
+4 -6
View File
@@ -7,12 +7,10 @@ import (
)
var (
// nonce = 0
PackageVersion = "97.4.6"
CdnUrl string
ErrorMsg = `{"code":20001,"message":""}`
MainEng *xorm.Engine
UserEng *xorm.Engine
CdnUrl string
ErrorMsg = `{"code":20001,"message":""}`
MainEng *xorm.Engine
UserEng *xorm.Engine
)
func init() {
+2 -2
View File
@@ -12,7 +12,7 @@ import (
"github.com/gin-gonic/gin"
)
func LBonusExecuteHandler(ctx *gin.Context) {
func LBonusExecute(ctx *gin.Context) {
weeks := map[string]int{
"Monday": 1,
"Tuesday": 2,
@@ -142,7 +142,7 @@ func LBonusExecuteHandler(ctx *gin.Context) {
},
},
LimitedEffortBox: []interface{}{},
MuseumInfo: model.MuseumInfo{},
MuseumInfo: model.Museum{},
ServerTimestamp: time.Now().Unix(),
PresentCnt: 0,
},
+183 -207
View File
@@ -18,13 +18,7 @@ import (
"github.com/tidwall/gjson"
)
type GameOverResp struct {
ResponseData []interface{} `json:"response_data"`
ReleaseInfo []interface{} `json:"release_info"`
StatusCode int `json:"status_code"`
}
func PartyListHandler(ctx *gin.Context) {
func PartyList(ctx *gin.Context) {
resp := utils.ReadAllText("assets/partylist.json")
nonce := ctx.GetInt("nonce")
@@ -37,7 +31,7 @@ func PartyListHandler(ctx *gin.Context) {
ctx.String(http.StatusOK, resp)
}
func PlayLiveHandler(ctx *gin.Context) {
func PlayLive(ctx *gin.Context) {
playReq := model.PlayReq{}
err := json.Unmarshal([]byte(ctx.GetString("request_data")), &playReq)
CheckErr(err)
@@ -402,44 +396,38 @@ func PlayLiveHandler(ctx *gin.Context) {
},
})
resp := model.PlayResponseData{
RankInfo: ranks,
EnergyFullTime: "2023-03-20 01:28:55",
OverMaxEnergy: 0,
AvailableLiveResume: false,
LiveList: lives,
IsMarathonEvent: false,
MarathonEventID: nil,
NoSkill: false,
CanActivateEffect: true,
ServerTimestamp: time.Now().Unix(),
playResp := model.PlayResp{
ResponseData: model.PlayRes{
RankInfo: ranks,
EnergyFullTime: "2023-03-20 01:28:55",
OverMaxEnergy: 0,
AvailableLiveResume: false,
LiveList: lives,
IsMarathonEvent: false,
MarathonEventID: nil,
NoSkill: false,
CanActivateEffect: true,
ServerTimestamp: time.Now().Unix(),
},
ReleaseInfo: []interface{}{},
StatusCode: 200,
}
m, err := json.Marshal(resp)
resp, err := json.Marshal(playResp)
CheckErr(err)
res := model.Response{
ResponseData: m,
ReleaseInfo: []interface{}{},
StatusCode: 200,
}
mm, err := json.Marshal(res)
CheckErr(err)
// fmt.Println(string(mm))
nonce := ctx.GetInt("nonce")
nonce++
ctx.Header("user_id", ctx.GetString("userid"))
ctx.Header("authorize", fmt.Sprintf("consumerKey=lovelive_test&timeStamp=%d&version=1.1&token=%s&nonce=%d&user_id=%s&requestTimeStamp=%d", time.Now().Unix(), ctx.GetString("token"), nonce, ctx.GetString("userid"), ctx.GetInt64("req_time")))
ctx.Header("X-Message-Sign", base64.StdEncoding.EncodeToString(encrypt.RSA_Sign_SHA1(mm, "privatekey.pem")))
ctx.Header("X-Message-Sign", base64.StdEncoding.EncodeToString(encrypt.RSA_Sign_SHA1(resp, "privatekey.pem")))
ctx.String(http.StatusOK, string(mm))
ctx.String(http.StatusOK, string(resp))
}
func GameOverHandler(ctx *gin.Context) {
overResp := GameOverResp{
func GameOver(ctx *gin.Context) {
overResp := model.GameOverResp{
ResponseData: []interface{}{},
ReleaseInfo: []interface{}{},
StatusCode: 200,
@@ -457,7 +445,7 @@ func GameOverHandler(ctx *gin.Context) {
ctx.String(http.StatusOK, string(resp))
}
func PlayScoreHandler(ctx *gin.Context) {
func PlayScore(ctx *gin.Context) {
playScoreReq := model.PlayScoreReq{}
err := json.Unmarshal([]byte(ctx.GetString("request_data")), &playScoreReq)
CheckErr(err)
@@ -506,56 +494,50 @@ func PlayScoreHandler(ctx *gin.Context) {
RankMax: 0,
})
resp := model.PlayScoreResponseData{
On: model.On{
HasRecord: false,
LiveInfo: model.LiveInfo{
LiveDifficultyID: difficultyId,
IsRandom: false,
AcFlag: ac_flag,
SwingFlag: swing_flag,
NotesList: notes,
playResp := model.PlayScoreResp{
ResponseData: model.PlayScoreRes{
On: model.On{
HasRecord: false,
LiveInfo: model.LiveInfo{
LiveDifficultyID: difficultyId,
IsRandom: false,
AcFlag: ac_flag,
SwingFlag: swing_flag,
NotesList: notes,
},
},
},
Off: model.Off{
HasRecord: false,
LiveInfo: model.LiveInfo{
LiveDifficultyID: difficultyId,
IsRandom: false,
AcFlag: ac_flag,
SwingFlag: swing_flag,
NotesList: notes,
Off: model.Off{
HasRecord: false,
LiveInfo: model.LiveInfo{
LiveDifficultyID: difficultyId,
IsRandom: false,
AcFlag: ac_flag,
SwingFlag: swing_flag,
NotesList: notes,
},
},
RankInfo: ranks,
CanActivateEffect: true,
ServerTimestamp: int(time.Now().Unix()),
},
RankInfo: ranks,
CanActivateEffect: true,
ServerTimestamp: int(time.Now().Unix()),
ReleaseInfo: []interface{}{},
StatusCode: 200,
}
m, err := json.Marshal(resp)
resp, err := json.Marshal(playResp)
CheckErr(err)
res := model.Response{
ResponseData: m,
ReleaseInfo: []interface{}{},
StatusCode: 200,
}
mm, err := json.Marshal(res)
CheckErr(err)
// fmt.Println(string(mm))
nonce := ctx.GetInt("nonce")
nonce++
ctx.Header("user_id", ctx.GetString("userid"))
ctx.Header("authorize", fmt.Sprintf("consumerKey=lovelive_test&timeStamp=%d&version=1.1&token=%s&nonce=%d&user_id=%s&requestTimeStamp=%d", time.Now().Unix(), ctx.GetString("token"), nonce, ctx.GetString("userid"), ctx.GetInt64("req_time")))
ctx.Header("X-Message-Sign", base64.StdEncoding.EncodeToString(encrypt.RSA_Sign_SHA1(mm, "privatekey.pem")))
ctx.Header("X-Message-Sign", base64.StdEncoding.EncodeToString(encrypt.RSA_Sign_SHA1(resp, "privatekey.pem")))
ctx.String(http.StatusOK, string(mm))
ctx.String(http.StatusOK, string(resp))
}
func PlayRewardHandler(ctx *gin.Context) {
func PlayReward(ctx *gin.Context) {
playRewardReq := model.PlayRewardReq{}
err := json.Unmarshal([]byte(ctx.GetString("request_data")), &playRewardReq)
CheckErr(err)
@@ -578,172 +560,166 @@ func PlayRewardHandler(ctx *gin.Context) {
CheckErr(err)
totalScore := playRewardReq.ScoreSmile + playRewardReq.ScoreCool + playRewardReq.ScoreCute
resp := model.RewardResponseData{
LiveInfo: []model.RewardLiveInfo{
{
LiveDifficultyID: difficultyId,
IsRandom: false,
AcFlag: ac_flag,
SwingFlag: swing_flag,
playResp := model.RewardResp{
ResponseData: model.RewardRes{
LiveInfo: []model.RewardLiveInfo{
{
LiveDifficultyID: difficultyId,
IsRandom: false,
AcFlag: ac_flag,
SwingFlag: swing_flag,
},
},
},
TotalLove: 0,
IsHighScore: true,
HiScore: totalScore,
BaseRewardInfo: model.BaseRewardInfo{
PlayerExp: 830,
PlayerExpUnitMax: model.PlayerExpUnitMax{
Before: 900,
After: 900,
TotalLove: 0,
IsHighScore: true,
HiScore: totalScore,
BaseRewardInfo: model.BaseRewardInfo{
PlayerExp: 830,
PlayerExpUnitMax: model.PlayerExpUnitMax{
Before: 900,
After: 900,
},
PlayerExpFriendMax: model.PlayerExpFriendMax{
Before: 99,
After: 99,
},
PlayerExpLpMax: model.PlayerExpLpMax{
Before: 417,
After: 417,
},
GameCoin: 4500,
GameCoinRewardBoxFlag: false,
SocialPoint: 10,
},
PlayerExpFriendMax: model.PlayerExpFriendMax{
Before: 99,
After: 99,
RewardUnitList: model.RewardUnitList{
LiveClear: []model.LiveClear{},
LiveRank: []model.LiveRank{},
LiveCombo: []interface{}{},
},
PlayerExpLpMax: model.PlayerExpLpMax{
Before: 417,
After: 417,
UnlockedSubscenarioIds: []interface{}{},
UnlockedMultiUnitScenarioIds: []interface{}{},
EffortPoint: []model.EffortPoint{},
IsEffortPointVisible: false,
LimitedEffortBox: []interface{}{},
UnitList: unitsList,
BeforeUserInfo: model.BeforeUserInfo{
Level: 1028,
Exp: 28823566,
PreviousExp: 27734700,
NextExp: 28941885,
GameCoin: 86505544,
SnsCoin: 49,
FreeSnsCoin: 48,
PaidSnsCoin: 1,
SocialPoint: 1438165,
UnitMax: 5000,
WaitingUnitMax: 1000,
CurrentEnergy: 392,
EnergyMax: 417,
TrainingEnergy: 9,
TrainingEnergyMax: 10,
EnergyFullTime: "2023-03-20 01:28:55",
LicenseLiveEnergyRecoverlyTime: 60,
FriendMax: 99,
TutorialState: -1,
OverMaxEnergy: 0,
UnlockRandomLiveMuse: 1,
UnlockRandomLiveAqours: 1,
},
GameCoin: 4500,
GameCoinRewardBoxFlag: false,
SocialPoint: 10,
},
RewardUnitList: model.RewardUnitList{
LiveClear: []model.LiveClear{},
LiveRank: []model.LiveRank{},
LiveCombo: []interface{}{},
},
UnlockedSubscenarioIds: []interface{}{},
UnlockedMultiUnitScenarioIds: []interface{}{},
EffortPoint: []model.EffortPoint{},
IsEffortPointVisible: false,
LimitedEffortBox: []interface{}{},
UnitList: unitsList,
BeforeUserInfo: model.BeforeUserInfo{
Level: 1028,
Exp: 28823566,
PreviousExp: 27734700,
NextExp: 28941885,
GameCoin: 86505544,
SnsCoin: 49,
FreeSnsCoin: 48,
PaidSnsCoin: 1,
SocialPoint: 1438165,
UnitMax: 5000,
WaitingUnitMax: 1000,
CurrentEnergy: 392,
EnergyMax: 417,
TrainingEnergy: 9,
TrainingEnergyMax: 10,
EnergyFullTime: "2023-03-20 01:28:55",
LicenseLiveEnergyRecoverlyTime: 60,
FriendMax: 99,
TutorialState: -1,
OverMaxEnergy: 0,
UnlockRandomLiveMuse: 1,
UnlockRandomLiveAqours: 1,
},
AfterUserInfo: model.AfterUserInfo{
Level: 1028,
Exp: 28824396,
PreviousExp: 27734700,
NextExp: 28941885,
GameCoin: 86520044,
SnsCoin: 50,
FreeSnsCoin: 49,
PaidSnsCoin: 1,
SocialPoint: 1438375,
UnitMax: 5000,
WaitingUnitMax: 1000,
CurrentEnergy: 392,
EnergyMax: 417,
TrainingEnergy: 9,
TrainingEnergyMax: 10,
EnergyFullTime: "2023-03-20 01:28:55",
LicenseLiveEnergyRecoverlyTime: 60,
FriendMax: 99,
TutorialState: -1,
OverMaxEnergy: 0,
UnlockRandomLiveMuse: 1,
UnlockRandomLiveAqours: 1,
},
NextLevelInfo: []model.NextLevelInfo{
{
Level: 1028,
FromExp: 28823566,
AfterUserInfo: model.AfterUserInfo{
Level: 1028,
Exp: 28824396,
PreviousExp: 27734700,
NextExp: 28941885,
GameCoin: 86520044,
SnsCoin: 50,
FreeSnsCoin: 49,
PaidSnsCoin: 1,
SocialPoint: 1438375,
UnitMax: 5000,
WaitingUnitMax: 1000,
CurrentEnergy: 392,
EnergyMax: 417,
TrainingEnergy: 9,
TrainingEnergyMax: 10,
EnergyFullTime: "2023-03-20 01:28:55",
LicenseLiveEnergyRecoverlyTime: 60,
FriendMax: 99,
TutorialState: -1,
OverMaxEnergy: 0,
UnlockRandomLiveMuse: 1,
UnlockRandomLiveAqours: 1,
},
},
GoalAccompInfo: model.GoalAccompInfo{
AchievedIds: []interface{}{},
Rewards: []interface{}{},
},
SpecialRewardInfo: []interface{}{},
EventInfo: []interface{}{},
DailyRewardInfo: []interface{}{},
CanSendFriendRequest: false,
UsingBuffInfo: []interface{}{},
ClassSystem: model.ClassSystem{
RankInfo: model.RewardRankInfo{
BeforeClassRankID: 10,
AfterClassRankID: 10,
RankUpDate: "2020-02-12 11:57:15",
NextLevelInfo: []model.NextLevelInfo{
{
Level: 1028,
FromExp: 28823566,
},
},
CompleteFlag: false,
IsOpened: true,
IsVisible: true,
GoalAccompInfo: model.GoalAccompInfo{
AchievedIds: []interface{}{},
Rewards: []interface{}{},
},
SpecialRewardInfo: []interface{}{},
EventInfo: []interface{}{},
DailyRewardInfo: []interface{}{},
CanSendFriendRequest: false,
UsingBuffInfo: []interface{}{},
ClassSystem: model.ClassSystem{
RankInfo: model.RewardRankInfo{
BeforeClassRankID: 10,
AfterClassRankID: 10,
RankUpDate: "2020-02-12 11:57:15",
},
CompleteFlag: false,
IsOpened: true,
IsVisible: true,
},
AccomplishedAchievementList: []model.AccomplishedAchievementList{},
UnaccomplishedAchievementCnt: 15,
AddedAchievementList: []interface{}{},
MuseumInfo: model.Museum{},
UnitSupportList: []model.RewardUnitSupportList{},
ServerTimestamp: 1679238066,
PresentCnt: 2159,
},
AccomplishedAchievementList: []model.AccomplishedAchievementList{},
UnaccomplishedAchievementCnt: 15,
AddedAchievementList: []interface{}{},
MuseumInfo: model.RewardMuseumInfo{},
UnitSupportList: []model.RewardUnitSupportList{},
ServerTimestamp: 1679238066,
PresentCnt: 2159,
ReleaseInfo: []interface{}{},
StatusCode: 200,
}
if playRewardReq.MaxCombo > s_rank_combo {
resp.ComboRank = 1
playResp.ResponseData.ComboRank = 1
} else if playRewardReq.MaxCombo > a_rank_combo {
resp.ComboRank = 2
playResp.ResponseData.ComboRank = 2
} else if playRewardReq.MaxCombo > b_rank_combo {
resp.ComboRank = 3
playResp.ResponseData.ComboRank = 3
} else if playRewardReq.MaxCombo > c_rank_combo {
resp.ComboRank = 4
playResp.ResponseData.ComboRank = 4
} else {
resp.ComboRank = 5
playResp.ResponseData.ComboRank = 5
}
if totalScore > s_rank_score {
resp.Rank = 1
playResp.ResponseData.Rank = 1
} else if totalScore > a_rank_score {
resp.Rank = 2
playResp.ResponseData.Rank = 2
} else if totalScore > b_rank_score {
resp.Rank = 3
playResp.ResponseData.Rank = 3
} else if totalScore > c_rank_score {
resp.Rank = 4
playResp.ResponseData.Rank = 4
} else {
resp.Rank = 5
playResp.ResponseData.Rank = 5
}
m, err := json.Marshal(resp)
resp, err := json.Marshal(playResp)
CheckErr(err)
res := model.Response{
ResponseData: m,
ReleaseInfo: []interface{}{},
StatusCode: 200,
}
mm, err := json.Marshal(res)
CheckErr(err)
// fmt.Println(string(mm))
nonce := ctx.GetInt("nonce")
nonce++
ctx.Header("user_id", ctx.GetString("userid"))
ctx.Header("authorize", fmt.Sprintf("consumerKey=lovelive_test&timeStamp=%d&version=1.1&token=%s&nonce=%d&user_id=%s&requestTimeStamp=%d", time.Now().Unix(), ctx.GetString("token"), nonce, ctx.GetString("userid"), ctx.GetInt64("req_time")))
ctx.Header("X-Message-Sign", base64.StdEncoding.EncodeToString(encrypt.RSA_Sign_SHA1(mm, "privatekey.pem")))
ctx.Header("X-Message-Sign", base64.StdEncoding.EncodeToString(encrypt.RSA_Sign_SHA1(resp, "privatekey.pem")))
ctx.String(http.StatusOK, string(mm))
ctx.String(http.StatusOK, string(resp))
}
+1 -1
View File
@@ -32,7 +32,7 @@ type MultiUnitStartUpReq struct {
CommandNum string `json:"commandNum"`
}
func MultiUnitStartUpHandler(ctx *gin.Context) {
func MultiUnitStartUp(ctx *gin.Context) {
startReq := MultiUnitStartUpReq{}
err := json.Unmarshal([]byte(ctx.PostForm("request_data")), &startReq)
CheckErr(err)
+3 -3
View File
@@ -12,7 +12,7 @@ import (
"github.com/gin-gonic/gin"
)
func NoticeFriendVarietyHandler(ctx *gin.Context) {
func NoticeFriendVariety(ctx *gin.Context) {
noticeResp := model.NoticeFriendVarietyResp{
ResponseData: model.NoticeFriendVarietyRes{
ItemCount: 1,
@@ -35,7 +35,7 @@ func NoticeFriendVarietyHandler(ctx *gin.Context) {
ctx.String(http.StatusOK, string(resp))
}
func NoticeFriendGreetingHandler(ctx *gin.Context) {
func NoticeFriendGreeting(ctx *gin.Context) {
noticeResp := model.NoticeFriendGreetingResp{
ResponseData: model.NoticeFriendGreetingRes{
NextId: 0,
@@ -58,7 +58,7 @@ func NoticeFriendGreetingHandler(ctx *gin.Context) {
ctx.String(http.StatusOK, string(resp))
}
func NoticeUserGreetingHandler(ctx *gin.Context) {
func NoticeUserGreeting(ctx *gin.Context) {
noticeResp := model.NoticeUserGreetingResp{
ResponseData: model.NoticeUserGreetingRes{
ItemCount: 0,
+1 -1
View File
@@ -35,7 +35,7 @@ type ProductData struct {
ServerTimestamp int64 `json:"server_timestamp"`
}
func ProductListHandler(ctx *gin.Context) {
func ProductList(ctx *gin.Context) {
prodReesp := ProductResp{
ResponseData: ProductData{
RestrictionInfo: RestrictionInfo{
+1 -1
View File
@@ -12,7 +12,7 @@ import (
"github.com/gin-gonic/gin"
)
func PersonalNoticeHandler(ctx *gin.Context) {
func PersonalNotice(ctx *gin.Context) {
noticeResp := model.PersonalNoticeResp{
ResponseData: model.PersonalNoticeRes{
HasNotice: false,
+12 -12
View File
@@ -88,7 +88,7 @@ type InitializeResp struct {
WeixinKey string `json:"weixin_key"`
}
func ActiveHandler(ctx *gin.Context) {
func Active(ctx *gin.Context) {
// body, err := io.ReadAll(ctx.Request.Body)
// CheckErr(err)
// defer ctx.Request.Body.Close()
@@ -98,7 +98,7 @@ func ActiveHandler(ctx *gin.Context) {
ctx.String(http.StatusOK, `{ "code": 0, "msg": "ok", "data": { "message": "ok", "result": 0 } }`)
}
func PublicKeyHandler(ctx *gin.Context) {
func PublicKey(ctx *gin.Context) {
publicKey := utils.ReadAllText("publickey.pem")
publicKey = strings.ReplaceAll(publicKey, "\n", "")
publicKey = strings.ReplaceAll(publicKey, "-----BEGIN PUBLIC KEY-----", "")
@@ -110,7 +110,7 @@ func PublicKeyHandler(ctx *gin.Context) {
ctx.String(http.StatusOK, resp)
}
func HandshakeHandler(ctx *gin.Context) {
func Handshake(ctx *gin.Context) {
body, err := io.ReadAll(ctx.Request.Body)
CheckErr(err)
defer ctx.Request.Body.Close()
@@ -148,7 +148,7 @@ func HandshakeHandler(ctx *gin.Context) {
ctx.String(http.StatusOK, resp)
}
func InitializeHandler(ctx *gin.Context) {
func Initialize(ctx *gin.Context) {
// body, err := io.ReadAll(ctx.Request.Body)
// CheckErr(err)
// defer ctx.Request.Body.Close()
@@ -191,13 +191,13 @@ func InitializeHandler(ctx *gin.Context) {
ctx.String(http.StatusOK, resp)
}
func GetCodeHandler(ctx *gin.Context) {
func GetCode(ctx *gin.Context) {
resp := `{ "code": 0, "msg": "ok", "data": { "codeArray": [ { "btntext": "好的", "code": "-10264022", "msg_from": 2, "text": "", "title": "短信验证码被阻止", "type": 1 }, { "btntext": " ", "code": "-10869623", "msg_from": 2, "text": "", "title": "网络连接失败,无法一键登录", "type": 2 }, { "btntext": " ", "code": "10298300", "msg_from": 2, "text": "", "title": " ", "type": 3 }, { "btntext": "", "code": "10298311", "msg_from": 2, "text": "", "title": "", "type": 3 }, { "btntext": " ", "code": "10298312", "msg_from": 2, "text": "", "title": " ", "type": 3 }, { "btntext": " ", "code": "10298313", "msg_from": 2, "text": "", "title": " ", "type": 1 }, { "btntext": " ", "code": "10298321", "msg_from": 2, "text": "", "title": " ", "type": 3 }, { "btntext": " ", "code": "10298322", "msg_from": 2, "text": "", "title": " ", "type": 3 } ], "codeVersion": "1.0.5" } }`
ctx.Header("Content-Type", "text/html;charset=utf-8")
ctx.String(http.StatusOK, resp)
}
func LoginAutoHandler(ctx *gin.Context) {
func LoginAuto(ctx *gin.Context) {
body, err := io.ReadAll(ctx.Request.Body)
CheckErr(err)
defer ctx.Request.Body.Close()
@@ -265,7 +265,7 @@ func LoginAutoHandler(ctx *gin.Context) {
ctx.String(http.StatusOK, resp)
}
func LoginAreaHandler(ctx *gin.Context) {
func LoginArea(ctx *gin.Context) {
userId := ctx.PostForm("userid")
if userId != "" {
// fmt.Println(userId)
@@ -275,7 +275,7 @@ func LoginAreaHandler(ctx *gin.Context) {
}
}
func AccountLoginHandler(ctx *gin.Context) {
func AccountLogin(ctx *gin.Context) {
body, err := io.ReadAll(ctx.Request.Body)
CheckErr(err)
defer ctx.Request.Body.Close()
@@ -434,7 +434,7 @@ func AccountLoginHandler(ctx *gin.Context) {
ctx.String(http.StatusOK, resp)
}
func ReportRoleHandler(ctx *gin.Context) {
func ReportRole(ctx *gin.Context) {
// body, err := io.ReadAll(ctx.Request.Body)
// CheckErr(err)
// defer ctx.Request.Body.Close()
@@ -469,13 +469,13 @@ func ReportRoleHandler(ctx *gin.Context) {
ctx.String(http.StatusOK, resp)
}
func GetProductListHandler(ctx *gin.Context) {
func GetProductList(ctx *gin.Context) {
resp := `{ "code": 0, "msg": "ok", "data": { "message": [ ], "result": 0 } }`
ctx.Header("Content-Type", "text/html;charset=utf-8")
ctx.String(http.StatusOK, resp)
}
func GuestStatusHandler(ctx *gin.Context) {
func GuestStatus(ctx *gin.Context) {
resp := `{"code":0,"msg":"ok","data":{"disablead":1,"loginswitch":1,"message":"ok","result":0}}`
ctx.Header("Content-Type", "text/html;charset=utf-8")
ctx.String(http.StatusOK, resp)
@@ -500,7 +500,7 @@ func ReportApp(ctx *gin.Context) {
ctx.String(http.StatusOK, resp)
}
func AgreementHandler(ctx *gin.Context) {
func Agreement(ctx *gin.Context) {
resp := `{ "return_code": 0, "error_type": 0, "return_message": "", "data": { } }`
ctx.Header("Content-Type", "text/html;charset=utf-8")
ctx.String(http.StatusOK, resp)
+2 -2
View File
@@ -33,7 +33,7 @@ type ScenarioReq struct {
ScenarioID int `json:"scenario_id"`
}
func ScenarioStartupHandler(ctx *gin.Context) {
func ScenarioStartup(ctx *gin.Context) {
startReq := ScenarioReq{}
err := json.Unmarshal([]byte(ctx.PostForm("request_data")), &startReq)
CheckErr(err)
@@ -62,7 +62,7 @@ func ScenarioStartupHandler(ctx *gin.Context) {
ctx.String(http.StatusOK, string(resp))
}
func ScenarioRewardHandler(ctx *gin.Context) {
func ScenarioReward(ctx *gin.Context) {
resp := utils.ReadAllText("assets/reward.json")
nonce := ctx.GetInt("nonce")
+2 -2
View File
@@ -33,7 +33,7 @@ type SubScenarioReq struct {
CommandNum string `json:"commandNum"`
}
func SubScenarioStartupHandler(ctx *gin.Context) {
func SubScenarioStartup(ctx *gin.Context) {
startReq := SubScenarioReq{}
err := json.Unmarshal([]byte(ctx.PostForm("request_data")), &startReq)
CheckErr(err)
@@ -60,7 +60,7 @@ func SubScenarioStartupHandler(ctx *gin.Context) {
ctx.String(http.StatusOK, string(resp))
}
func SubScenarioRewardHandler(ctx *gin.Context) {
func SubScenarioReward(ctx *gin.Context) {
resp := utils.ReadAllText("assets/subreward.json")
nonce := ctx.GetInt("nonce")
+1 -1
View File
@@ -12,7 +12,7 @@ import (
"github.com/gin-gonic/gin"
)
func TosCheckHandler(ctx *gin.Context) {
func TosCheck(ctx *gin.Context) {
tosResp := model.TosResp{
ResponseData: model.TosRes{
TosID: 1,
+13 -52
View File
@@ -4,12 +4,9 @@ import (
"encoding/base64"
"encoding/json"
"fmt"
"honoka-chan/config"
"honoka-chan/database"
"honoka-chan/encrypt"
"honoka-chan/model"
"honoka-chan/tools"
"honoka-chan/utils"
"net/http"
"strconv"
"time"
@@ -17,62 +14,26 @@ import (
"github.com/gin-gonic/gin"
)
type SetDisplayRankResp struct {
ResponseData []interface{} `json:"response_data"`
ReleaseInfo []interface{} `json:"release_info"`
StatusCode int `json:"status_code"`
}
func SetDisplayRankHandler(ctx *gin.Context) {
reqTime := time.Now().Unix()
authorizeStr := ctx.Request.Header["Authorize"]
authToken, err := utils.GetAuthorizeToken(authorizeStr)
if err != nil {
ctx.String(http.StatusForbidden, ErrorMsg)
return
}
userId := ctx.Request.Header[http.CanonicalHeaderKey("User-ID")]
if len(userId) == 0 {
ctx.String(http.StatusForbidden, ErrorMsg)
return
}
if !database.MatchTokenUid(authToken, userId[0]) {
ctx.String(http.StatusForbidden, ErrorMsg)
return
}
nonce, err := utils.GetAuthorizeNonce(authorizeStr)
if err != nil {
fmt.Println(err)
ctx.String(http.StatusForbidden, ErrorMsg)
return
}
nonce++
respTime := time.Now().Unix()
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)
dispResp := SetDisplayRankResp{
func SetDisplayRank(ctx *gin.Context) {
dispResp := model.SetDisplayRankResp{
ResponseData: []interface{}{},
ReleaseInfo: []interface{}{},
StatusCode: 200,
}
resp, err := json.Marshal(dispResp)
CheckErr(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)
nonce := ctx.GetInt("nonce")
nonce++
ctx.Header("user_id", ctx.GetString("userid"))
ctx.Header("authorize", fmt.Sprintf("consumerKey=lovelive_test&timeStamp=%d&version=1.1&token=%s&nonce=%d&user_id=%s&requestTimeStamp=%d", time.Now().Unix(), ctx.GetString("token"), nonce, ctx.GetString("userid"), ctx.GetInt64("req_time")))
ctx.Header("X-Message-Sign", base64.StdEncoding.EncodeToString(encrypt.RSA_Sign_SHA1(resp, "privatekey.pem")))
ctx.String(http.StatusOK, string(resp))
}
func SetDeckHandler(ctx *gin.Context) {
func SetDeck(ctx *gin.Context) {
userId, err := strconv.Atoi(ctx.GetString("userid"))
CheckErr(err)
@@ -197,7 +158,7 @@ func SetDeckHandler(ctx *gin.Context) {
panic(err)
}
dispResp := SetDisplayRankResp{
dispResp := model.SetDeckResp{
ResponseData: []interface{}{},
ReleaseInfo: []interface{}{},
StatusCode: 200,
@@ -215,7 +176,7 @@ func SetDeckHandler(ctx *gin.Context) {
ctx.String(http.StatusOK, string(resp))
}
func SetDeckNameHandler(ctx *gin.Context) {
func SetDeckName(ctx *gin.Context) {
userId, err := strconv.Atoi(ctx.GetString("userid"))
CheckErr(err)
@@ -239,7 +200,7 @@ func SetDeckNameHandler(ctx *gin.Context) {
})
CheckErr(err)
dispResp := SetDisplayRankResp{
dispResp := model.SetDeckResp{
ResponseData: []interface{}{},
ReleaseInfo: []interface{}{},
StatusCode: 200,
+3 -3
View File
@@ -20,7 +20,7 @@ type NotificationResp struct {
StatusCode int `json:"status_code"`
}
func SetNotificationTokenHandler(ctx *gin.Context) {
func SetNotificationToken(ctx *gin.Context) {
notifResp := NotificationResp{
ResponseData: []interface{}{},
ReleaseInfo: []interface{}{},
@@ -39,7 +39,7 @@ func SetNotificationTokenHandler(ctx *gin.Context) {
ctx.String(http.StatusOK, string(resp))
}
func ChangeNaviHandler(ctx *gin.Context) {
func ChangeNavi(ctx *gin.Context) {
req := gjson.Parse(ctx.PostForm("request_data"))
pref := tools.UserPref{
UnitOwningUserID: int(req.Get("unit_owning_user_id").Int()),
@@ -64,7 +64,7 @@ func ChangeNaviHandler(ctx *gin.Context) {
ctx.String(http.StatusOK, string(resp))
}
func ChangeNameHandler(ctx *gin.Context) {
func ChangeName(ctx *gin.Context) {
req := gjson.Parse(ctx.PostForm("request_data"))
var oldName string
exists, err := UserEng.Table("user_preference_m").Where("user_id = ?", ctx.GetString("userid")).Cols("user_name").Get(&oldName)
+1 -1
View File
@@ -13,7 +13,7 @@ import (
"github.com/gin-gonic/gin"
)
func UserInfoHandler(ctx *gin.Context) {
func UserInfo(ctx *gin.Context) {
userId, err := strconv.Atoi(ctx.GetString("userid"))
CheckErr(err)