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>
100 lines
3.0 KiB
Go
100 lines
3.0 KiB
Go
package live
|
|
|
|
import (
|
|
"errors"
|
|
"honoka-chan/internal/middleware"
|
|
unitmodel "honoka-chan/internal/model/unit"
|
|
usermodel "honoka-chan/internal/model/user"
|
|
"honoka-chan/internal/router"
|
|
liveschema "honoka-chan/internal/schema/live"
|
|
"honoka-chan/internal/session"
|
|
"time"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
func partyList(ctx *gin.Context) {
|
|
ss := session.Get(ctx)
|
|
defer ss.Finalize()
|
|
|
|
pref := usermodel.UserPref{}
|
|
_, err := ss.UserEng.Table("user_pref").Where("user_id = ?", ss.UserID).Get(&pref)
|
|
if ss.CheckErr(err) {
|
|
return
|
|
}
|
|
|
|
// TODO: 好友功能实装前先使用自己的卡组助战
|
|
var unitList []usermodel.UserDeckUnit
|
|
err = ss.UserEng.Table("user_deck_unit").Where("user_id = ? AND position = 5", ss.UserID).Find(&unitList)
|
|
if ss.CheckErr(err) {
|
|
return
|
|
}
|
|
|
|
var partyList []liveschema.PartyList
|
|
for _, u := range unitList {
|
|
var unitInfo unitmodel.UnitDataMap
|
|
has, err := ss.GetBasicUnitInfo().
|
|
Where("unit_owning_user_id = ?", u.UnitOwningUserID).Get(&unitInfo)
|
|
if ss.CheckErr(err) {
|
|
return
|
|
}
|
|
|
|
if !has {
|
|
ss.Abort(errors.New("卡片不存在!"))
|
|
return
|
|
}
|
|
|
|
partyList = append(partyList, liveschema.PartyList{
|
|
UserInfo: ss.GetUserInfo(),
|
|
CenterUnitInfo: liveschema.CenterUnitInfo{
|
|
UnitOwningUserID: u.UnitOwningUserID,
|
|
UnitID: u.UnitID,
|
|
Exp: unitInfo.Exp,
|
|
NextExp: 0,
|
|
Level: u.Level,
|
|
LevelLimitID: u.LevelLimitID,
|
|
MaxLevel: unitInfo.MaxLevel,
|
|
Rank: unitInfo.Rank,
|
|
MaxRank: unitInfo.MaxRank,
|
|
Love: u.Love,
|
|
MaxLove: u.MaxLove,
|
|
UnitSkillLevel: u.UnitSkillLevel,
|
|
MaxHp: unitInfo.MaxHp,
|
|
FavoriteFlag: unitInfo.FavoriteFlag,
|
|
DisplayRank: u.DisplayRank,
|
|
UnitSkillExp: unitInfo.UnitSkillExp,
|
|
UnitRemovableSkillCapacity: unitInfo.UnitRemovableSkillCapacity,
|
|
Attribute: unitInfo.Attribute,
|
|
Smile: unitInfo.Smile,
|
|
Cute: unitInfo.Cute,
|
|
Cool: unitInfo.Cool,
|
|
IsLoveMax: u.IsLoveMax,
|
|
IsLevelMax: u.IsLevelMax,
|
|
IsRankMax: u.IsRankMax,
|
|
IsSigned: u.IsSigned,
|
|
IsSkillLevelMax: unitInfo.IsSkillLevelMax,
|
|
SettingAwardID: pref.AwardID,
|
|
RemovableSkillIds: []int{},
|
|
},
|
|
SettingAwardID: pref.AwardID,
|
|
AvailableSocialPoint: 10,
|
|
FriendStatus: 1,
|
|
})
|
|
}
|
|
|
|
ss.Respond(liveschema.PartyListResp{
|
|
ResponseData: liveschema.PartyListData{
|
|
PartyList: partyList,
|
|
TrainingEnergy: 10,
|
|
TrainingEnergyMax: 10,
|
|
ServerTimestamp: time.Now().Unix(),
|
|
},
|
|
ReleaseInfo: []any{},
|
|
StatusCode: 200,
|
|
})
|
|
}
|
|
|
|
func init() {
|
|
router.AddHandler("main.php", "POST", "/live/partyList", middleware.Common, partyList)
|
|
}
|