Implement more endpoints & overhaul [2/n]
Drop LevelDB and move all the things to SQLite. Implemented endpoints: /api <unit, accessoryMaterialAll> /api <unit, accessoryTab> /live/continue /live/partyList /unit/favoriteAccessory (WIP) /unit/sale Signed-off-by: Sean Du <do4suki@gmail.com>
This commit is contained in:
@@ -2,7 +2,7 @@ package account
|
||||
|
||||
import (
|
||||
"honoka-chan/internal/router"
|
||||
"honoka-chan/internal/schema/ghome"
|
||||
ghomeschema "honoka-chan/internal/schema/ghome"
|
||||
"honoka-chan/internal/session"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
@@ -12,10 +12,10 @@ func active(ctx *gin.Context) {
|
||||
ss := session.New(ctx)
|
||||
defer ss.Finalize()
|
||||
|
||||
ss.Respond(ghome.ActiveResp{
|
||||
ss.Respond(ghomeschema.ActiveResp{
|
||||
Code: 0,
|
||||
Msg: "ok",
|
||||
Data: ghome.ActiveData{
|
||||
Data: ghomeschema.ActiveData{
|
||||
Message: "ok",
|
||||
Result: 0,
|
||||
},
|
||||
|
||||
@@ -4,7 +4,7 @@ import (
|
||||
"encoding/base64"
|
||||
"encoding/json"
|
||||
"honoka-chan/internal/router"
|
||||
"honoka-chan/internal/schema/ghome"
|
||||
ghomeschema "honoka-chan/internal/schema/ghome"
|
||||
"honoka-chan/internal/session"
|
||||
"strings"
|
||||
|
||||
@@ -16,7 +16,7 @@ func initialize(ctx *gin.Context) {
|
||||
ss := session.New(ctx)
|
||||
defer ss.Finalize()
|
||||
|
||||
initData := ghome.InitializeData{
|
||||
initData := ghomeschema.InitializeData{
|
||||
BrandLogo: "http://gskd.sdo.com/ghome/ztc/logo/og/logo_xhdpi.png",
|
||||
BrandName: "盛趣游戏",
|
||||
ForceShowAgreement: 1,
|
||||
@@ -38,7 +38,7 @@ func initialize(ctx *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
ss.Respond(ghome.InitializeResp{
|
||||
ss.Respond(ghomeschema.InitializeResp{
|
||||
Code: 0,
|
||||
Msg: "ok",
|
||||
Data: base64.StdEncoding.EncodeToString(encryptedData),
|
||||
|
||||
@@ -4,13 +4,13 @@ import (
|
||||
"encoding/base64"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"honoka-chan/internal/model/user"
|
||||
unitmodel "honoka-chan/internal/model/unit"
|
||||
usermodel "honoka-chan/internal/model/user"
|
||||
"honoka-chan/internal/router"
|
||||
"honoka-chan/internal/schema/api/profile"
|
||||
"honoka-chan/internal/schema/api/unit"
|
||||
unitapischema "honoka-chan/internal/schema/api/unit"
|
||||
ghomeschema "honoka-chan/internal/schema/ghome"
|
||||
"honoka-chan/internal/session"
|
||||
honokautils "honoka-chan/pkg/utils"
|
||||
"honoka-chan/pkg/utils"
|
||||
"net/url"
|
||||
"strconv"
|
||||
"strings"
|
||||
@@ -62,10 +62,10 @@ func login(ctx *gin.Context) {
|
||||
userID, _ = checkUserID(ss, int(loginTime))
|
||||
|
||||
pass = openssl.Md5ToString(password)
|
||||
autoKey = "AUTO" + strings.ToUpper(honokautils.RandomStr(32))
|
||||
autoKey = "AUTO" + strings.ToUpper(utils.RandomStr(32))
|
||||
ticket = fmt.Sprintf("9999999%d%d", userID, userID)
|
||||
|
||||
userData := user.Users{
|
||||
userData := usermodel.Users{
|
||||
Phone: phone,
|
||||
Password: pass,
|
||||
Autokey: autoKey,
|
||||
@@ -80,7 +80,7 @@ func login(ctx *gin.Context) {
|
||||
|
||||
// 方便起见初始化 userid 和 key 一样
|
||||
// 注意:user_key 表中的 key 是上文生成的用于登录的 userid,而 userid 则是用于 Authorize Token 生成用的
|
||||
userKey := user.UserKey{
|
||||
userKey := usermodel.UserKey{
|
||||
UserID: userID,
|
||||
Key: userID,
|
||||
}
|
||||
@@ -96,20 +96,59 @@ func login(ctx *gin.Context) {
|
||||
}
|
||||
|
||||
if !exists {
|
||||
// 默认中心成员
|
||||
var unitOwningUserID int
|
||||
_, err = ss.MainEng.Table("common_unit_m").Cols("unit_owning_user_id").Where("unit_id = ?", 31).Get(&unitOwningUserID)
|
||||
// 生成用于卡片
|
||||
var unitData []unitmodel.CommonUnitData
|
||||
err = ss.UserEng.Table(new(unitmodel.CommonUnitData)).Find(&unitData)
|
||||
if ss.CheckErr(err) {
|
||||
return
|
||||
}
|
||||
|
||||
userPref := user.UserPref{
|
||||
checked := false
|
||||
for _, u := range unitData {
|
||||
userUnit := usermodel.UserUnitData{
|
||||
UnitID: u.UnitID,
|
||||
FavoriteFlag: false,
|
||||
DisplayRank: u.MaxRank,
|
||||
UserID: userID,
|
||||
InsertDate: time.Now().Unix(),
|
||||
UpdateDate: time.Now().Unix(),
|
||||
}
|
||||
|
||||
// 检查表里是否已经有数据
|
||||
if !checked {
|
||||
ct, err := ss.UserEng.Table(new(usermodel.UserUnitData)).Count()
|
||||
if ss.CheckErr(err) {
|
||||
return
|
||||
}
|
||||
|
||||
if ct == 0 {
|
||||
userUnit.UnitOwningUserID = 38383
|
||||
}
|
||||
|
||||
checked = true
|
||||
}
|
||||
|
||||
_, err = ss.UserEng.Table(new(usermodel.UserUnitData)).Insert(&userUnit)
|
||||
if ss.CheckErr(err) {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// 默认中心成员
|
||||
var unitOwningUserID int
|
||||
_, err = ss.UserEng.Table(new(usermodel.UserUnitData)).
|
||||
Cols("unit_owning_user_id").Where("unit_id = ?", 31).Get(&unitOwningUserID)
|
||||
if ss.CheckErr(err) {
|
||||
return
|
||||
}
|
||||
|
||||
userPref := usermodel.UserPref{
|
||||
UserID: userID,
|
||||
AwardID: 1, // 音乃木坂学生
|
||||
BackgroundID: 1, // 初始背景
|
||||
UnitOwningUserID: unitOwningUserID,
|
||||
UserName: "音乃木坂学生",
|
||||
UserLevel: 1,
|
||||
UserLevel: 1028,
|
||||
UserDesc: "你好。",
|
||||
InviteCode: strconv.Itoa(userID),
|
||||
UpdateTime: time.Now().Unix(),
|
||||
@@ -128,7 +167,7 @@ func login(ctx *gin.Context) {
|
||||
|
||||
if !exists {
|
||||
// 默认队伍
|
||||
userDeck := unit.UserDeckData{
|
||||
userDeck := unitapischema.UserDeckData{
|
||||
DeckID: 1,
|
||||
MainFlag: 1,
|
||||
DeckName: "队伍A",
|
||||
@@ -139,44 +178,37 @@ func login(ctx *gin.Context) {
|
||||
userDeckID := userDeck.ID
|
||||
|
||||
// 默认卡组 - 仆光
|
||||
unitID := []int{}
|
||||
err = ss.MainEng.Table("unit_m").Cols("unit_id").Where("album_series_id = ?", 615).Find(&unitID)
|
||||
unitID := []int{3465, 3466, 3467, 3468, 3469, 3470, 3471, 3472, 3473}
|
||||
var unitData []unitmodel.UnitDataMap
|
||||
err = ss.GetBasicUnitInfo().In("a.unit_id", unitID).Find(&unitData)
|
||||
if ss.CheckErr(err) {
|
||||
return
|
||||
}
|
||||
|
||||
unitData := []profile.UnitData{}
|
||||
err = ss.MainEng.Table("common_unit_m").In("unit_id", unitID).Find(&unitData)
|
||||
if ss.CheckErr(err) {
|
||||
return
|
||||
}
|
||||
|
||||
position := 1
|
||||
for _, u := range unitData {
|
||||
unitDeckData := unit.UnitDeckData{
|
||||
for i, u := range unitData {
|
||||
unitDeckData := usermodel.UserDeckUnit{
|
||||
UserDeckID: userDeckID,
|
||||
UnitOwningUserID: u.UnitOwningUserID,
|
||||
UnitID: u.UnitID,
|
||||
Position: position,
|
||||
Level: 100,
|
||||
LevelLimitID: 1,
|
||||
DisplayRank: 2,
|
||||
Love: 1000,
|
||||
UnitSkillLevel: 8,
|
||||
IsRankMax: true,
|
||||
IsLoveMax: true,
|
||||
IsLevelMax: true,
|
||||
Position: i + 1,
|
||||
Level: u.Level,
|
||||
LevelLimitID: u.LevelLimitID,
|
||||
DisplayRank: u.DisplayRank,
|
||||
Love: u.MaxLove,
|
||||
UnitSkillLevel: u.UnitSkillLevel,
|
||||
IsRankMax: u.IsRankMax,
|
||||
IsLoveMax: u.IsLoveMax,
|
||||
IsLevelMax: u.IsLevelMax,
|
||||
IsSigned: u.IsSigned,
|
||||
BeforeLove: 1000,
|
||||
MaxLove: 1000,
|
||||
InsertData: time.Now().Unix(),
|
||||
BeforeLove: u.MaxLove,
|
||||
MaxLove: u.MaxLove,
|
||||
UserID: userID,
|
||||
InsertDate: time.Now().Unix(),
|
||||
}
|
||||
_, err = ss.UserEng.Table("user_deck_unit").Insert(&unitDeckData)
|
||||
if ss.CheckErr(err) {
|
||||
return
|
||||
}
|
||||
|
||||
position++
|
||||
}
|
||||
}
|
||||
|
||||
@@ -193,7 +225,7 @@ func login(ctx *gin.Context) {
|
||||
loginCode = 31
|
||||
loginMsg = "账号不存在或者密码有误!"
|
||||
} else {
|
||||
userData := user.Users{
|
||||
userData := usermodel.Users{
|
||||
Autokey: autoKey,
|
||||
Ticket: ticket,
|
||||
LastLoginTime: loginTime,
|
||||
|
||||
@@ -3,10 +3,12 @@ package account
|
||||
import (
|
||||
"encoding/base64"
|
||||
"encoding/json"
|
||||
usermodel "honoka-chan/internal/model/user"
|
||||
"honoka-chan/internal/router"
|
||||
"honoka-chan/internal/schema/ghome"
|
||||
ghomeschema "honoka-chan/internal/schema/ghome"
|
||||
"honoka-chan/internal/session"
|
||||
"net/url"
|
||||
"strconv"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/go-think/openssl"
|
||||
@@ -36,27 +38,27 @@ func loginAuto(ctx *gin.Context) {
|
||||
params, _ := url.ParseQuery(queryStr)
|
||||
autoKey := params.Get("autokey")
|
||||
|
||||
var uid, ticket string
|
||||
_, err = ss.UserEng.Table("users").Cols("user_id,ticket").Where("autokey = ?", autoKey).Get(&uid, &ticket)
|
||||
var userData usermodel.Users
|
||||
exists, err := ss.UserEng.Table("users").Where("autokey = ?", autoKey).Get(&userData)
|
||||
if ss.CheckErr(err) {
|
||||
return
|
||||
}
|
||||
|
||||
loginAutoData := ghome.LoginAutoData{}
|
||||
loginAutoData := ghomeschema.LoginAutoData{}
|
||||
loginAutoCode := 0
|
||||
loginAutoMsg := "ok"
|
||||
if uid != "" {
|
||||
loginAutoData = ghome.LoginAutoData{
|
||||
if exists {
|
||||
loginAutoData = ghomeschema.LoginAutoData{
|
||||
Result: loginAutoCode,
|
||||
Message: loginAutoMsg,
|
||||
Autokey: autoKey,
|
||||
UserId: uid,
|
||||
Ticket: ticket,
|
||||
UserId: strconv.Itoa(userData.UserID),
|
||||
Ticket: userData.Ticket,
|
||||
}
|
||||
} else {
|
||||
loginAutoCode = 31
|
||||
loginAutoMsg = "账号不存在或者登陆状态已过期!"
|
||||
loginAutoData = ghome.LoginAutoData{
|
||||
loginAutoData = ghomeschema.LoginAutoData{
|
||||
Result: loginAutoCode,
|
||||
Message: loginAutoMsg,
|
||||
}
|
||||
@@ -71,7 +73,7 @@ func loginAuto(ctx *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
ss.Respond(ghome.LoginAutoResp{
|
||||
ss.Respond(ghomeschema.LoginAutoResp{
|
||||
Code: loginAutoCode,
|
||||
Msg: loginAutoMsg,
|
||||
Data: base64.StdEncoding.EncodeToString(encryptedData),
|
||||
|
||||
@@ -3,7 +3,7 @@ package account
|
||||
import (
|
||||
"encoding/base64"
|
||||
"honoka-chan/internal/router"
|
||||
"honoka-chan/internal/schema/ghome"
|
||||
ghomeschema "honoka-chan/internal/schema/ghome"
|
||||
"honoka-chan/internal/session"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
@@ -21,7 +21,7 @@ func reportRole(ctx *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
ss.Respond(ghome.ReportRoleResp{
|
||||
ss.Respond(ghomeschema.ReportRoleResp{
|
||||
Code: 0,
|
||||
Msg: "ok",
|
||||
Data: base64.StdEncoding.EncodeToString(encryptedToken),
|
||||
|
||||
@@ -3,7 +3,7 @@ package basic
|
||||
import (
|
||||
"encoding/json"
|
||||
"honoka-chan/internal/router"
|
||||
"honoka-chan/internal/schema/ghome"
|
||||
ghomeschema "honoka-chan/internal/schema/ghome"
|
||||
"honoka-chan/internal/session"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
@@ -20,7 +20,7 @@ func getCode(ctx *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
ss.Respond(ghome.GetCodeResp{
|
||||
ss.Respond(ghomeschema.GetCodeResp{
|
||||
Code: 0,
|
||||
Msg: "ok",
|
||||
Data: getCodeData,
|
||||
|
||||
@@ -2,7 +2,7 @@ package basic
|
||||
|
||||
import (
|
||||
"honoka-chan/internal/router"
|
||||
"honoka-chan/internal/schema/ghome"
|
||||
ghomeschema "honoka-chan/internal/schema/ghome"
|
||||
"honoka-chan/internal/session"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
@@ -12,12 +12,12 @@ func getProductList(ctx *gin.Context) {
|
||||
ss := session.New(ctx)
|
||||
defer ss.Finalize()
|
||||
|
||||
getProductListData := ghome.GetProductListData{
|
||||
getProductListData := ghomeschema.GetProductListData{
|
||||
Message: []string{},
|
||||
Result: 0,
|
||||
}
|
||||
|
||||
ss.Respond(ghome.GetProductListResp{
|
||||
ss.Respond(ghomeschema.GetProductListResp{
|
||||
Code: 1,
|
||||
Msg: "ok",
|
||||
Data: getProductListData,
|
||||
|
||||
@@ -4,9 +4,8 @@ import (
|
||||
"encoding/base64"
|
||||
"fmt"
|
||||
"honoka-chan/internal/router"
|
||||
"honoka-chan/internal/schema/ghome"
|
||||
ghomeschema "honoka-chan/internal/schema/ghome"
|
||||
"honoka-chan/internal/session"
|
||||
"honoka-chan/pkg/db"
|
||||
"honoka-chan/pkg/encrypt"
|
||||
honokautils "honoka-chan/pkg/utils"
|
||||
"net/url"
|
||||
@@ -34,21 +33,16 @@ func handshake(ctx *gin.Context) {
|
||||
|
||||
params, _ := url.ParseQuery(string(decryptedData))
|
||||
|
||||
randKey := []byte(params.Get("randkey"))
|
||||
deviceID := ss.GetDeviceID()
|
||||
|
||||
err = db.Ldb.Set([]byte(deviceID), randKey)
|
||||
if ss.CheckErr(err) {
|
||||
return
|
||||
}
|
||||
randKey := params.Get("randkey")
|
||||
ss.SetRandKey(randKey)
|
||||
|
||||
token := fmt.Sprintf(`{"message":"ok","result":0,"token":"%s"}`, strings.ToUpper(honokautils.RandomStr(33)))
|
||||
encryptedToken, err := openssl.Des3ECBEncrypt([]byte(token), randKey[0:24], openssl.PKCS7_PADDING)
|
||||
encryptedToken, err := openssl.Des3ECBEncrypt([]byte(token), []byte(randKey)[0:24], openssl.PKCS7_PADDING)
|
||||
if ss.CheckErr(err) {
|
||||
return
|
||||
}
|
||||
|
||||
ss.Respond(ghome.HandshakeResp{
|
||||
ss.Respond(ghomeschema.HandshakeResp{
|
||||
Code: 0,
|
||||
Msg: "ok",
|
||||
Data: base64.StdEncoding.EncodeToString(encryptedToken),
|
||||
|
||||
@@ -2,7 +2,7 @@ package basic
|
||||
|
||||
import (
|
||||
"honoka-chan/internal/router"
|
||||
"honoka-chan/internal/schema/ghome"
|
||||
ghomeschema "honoka-chan/internal/schema/ghome"
|
||||
"honoka-chan/internal/session"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
@@ -12,10 +12,10 @@ func loginArea(ctx *gin.Context) {
|
||||
ss := session.New(ctx)
|
||||
defer ss.Finalize()
|
||||
|
||||
ss.Respond(ghome.LoginAreaResp{
|
||||
ss.Respond(ghomeschema.LoginAreaResp{
|
||||
Code: 0,
|
||||
Msg: "ok",
|
||||
Data: ghome.LoginAreaData{
|
||||
Data: ghomeschema.LoginAreaData{
|
||||
UserID: ctx.PostForm("userid"),
|
||||
},
|
||||
})
|
||||
|
||||
@@ -5,7 +5,7 @@ import (
|
||||
"encoding/pem"
|
||||
"honoka-chan/config"
|
||||
"honoka-chan/internal/router"
|
||||
"honoka-chan/internal/schema/ghome"
|
||||
ghomeschema "honoka-chan/internal/schema/ghome"
|
||||
"honoka-chan/internal/session"
|
||||
honokautils "honoka-chan/pkg/utils"
|
||||
|
||||
@@ -18,7 +18,7 @@ func publicKey(ctx *gin.Context) {
|
||||
|
||||
publicKeyCode := 0
|
||||
publicKeyMsg := "ok"
|
||||
publicKeyData := ghome.PublicKeyData{
|
||||
publicKeyData := ghomeschema.PublicKeyData{
|
||||
Result: publicKeyCode,
|
||||
Message: publicKeyMsg,
|
||||
}
|
||||
@@ -33,7 +33,7 @@ func publicKey(ctx *gin.Context) {
|
||||
publicKeyData.Method = "rsa"
|
||||
}
|
||||
|
||||
ss.Respond(ghome.PublicKeyResp{
|
||||
ss.Respond(ghomeschema.PublicKeyResp{
|
||||
Code: publicKeyCode,
|
||||
Msg: publicKeyMsg,
|
||||
Data: publicKeyData,
|
||||
|
||||
@@ -2,7 +2,7 @@ package guest
|
||||
|
||||
import (
|
||||
"honoka-chan/internal/router"
|
||||
"honoka-chan/internal/schema/ghome"
|
||||
ghomeschema "honoka-chan/internal/schema/ghome"
|
||||
"honoka-chan/internal/session"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
@@ -12,10 +12,10 @@ func status(ctx *gin.Context) {
|
||||
ss := session.New(ctx)
|
||||
defer ss.Finalize()
|
||||
|
||||
ss.Respond(ghome.GuestStatusResp{
|
||||
ss.Respond(ghomeschema.GuestStatusResp{
|
||||
Code: 0,
|
||||
Msg: "ok",
|
||||
Data: ghome.GuestStatusData{
|
||||
Data: ghomeschema.GuestStatusData{
|
||||
Disablead: 1,
|
||||
Loginswitch: 1,
|
||||
Message: "ok",
|
||||
|
||||
@@ -2,7 +2,7 @@ package misc
|
||||
|
||||
import (
|
||||
"honoka-chan/internal/router"
|
||||
"honoka-chan/internal/schema/ghome"
|
||||
ghomeschema "honoka-chan/internal/schema/ghome"
|
||||
"honoka-chan/internal/session"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
@@ -12,11 +12,11 @@ func agreement(ctx *gin.Context) {
|
||||
ss := session.New(ctx)
|
||||
defer ss.Finalize()
|
||||
|
||||
ss.Respond(ghome.AgreementResp{
|
||||
ss.Respond(ghomeschema.AgreementResp{
|
||||
ReturnCode: 0,
|
||||
ErrorType: 0,
|
||||
ReturnMessage: "",
|
||||
Data: ghome.AgreementData{},
|
||||
Data: ghomeschema.AgreementData{},
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ package misc
|
||||
|
||||
import (
|
||||
"honoka-chan/internal/router"
|
||||
"honoka-chan/internal/schema/ghome"
|
||||
ghomeschema "honoka-chan/internal/schema/ghome"
|
||||
"honoka-chan/internal/session"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
@@ -12,10 +12,10 @@ func appReport(ctx *gin.Context) {
|
||||
ss := session.New(ctx)
|
||||
defer ss.Finalize()
|
||||
|
||||
ss.Respond(ghome.AppReportResp{
|
||||
ss.Respond(ghomeschema.AppReportResp{
|
||||
Code: 0,
|
||||
Msg: "",
|
||||
Data: ghome.AppReportData{
|
||||
Data: ghomeschema.AppReportData{
|
||||
NeedReport: 0,
|
||||
},
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user