Overhaul [1/n]

Signed-off-by: Sean Du <do4suki@gmail.com>
This commit is contained in:
2026-01-29 02:42:28 +08:00
parent 989acd6ff1
commit c77241a883
2267 changed files with 7158 additions and 5583 deletions
+43
View File
@@ -0,0 +1,43 @@
package unit
import (
"honoka-chan/internal/schema/api/unit"
"honoka-chan/internal/session"
"time"
"github.com/gin-gonic/gin"
)
func unitAccessoryAll(ctx *gin.Context) (res any, err error) {
ss := session.Get(ctx)
accessoryList := []unit.AccessoryList{}
err = ss.MainEng.Table("common_accessory_m").Find(&accessoryList)
if ss.CheckErr(err) {
return
}
for k := range accessoryList {
accessoryList[k].NextExp = 0
accessoryList[k].Level = 8
accessoryList[k].MaxLevel = 8
accessoryList[k].RankUpCount = 4
accessoryList[k].FavoriteFlag = true
}
wearingInfo := []unit.WearingInfo{}
err = ss.UserEng.Table("user_accessory_wear").Where("user_id = ?", ss.UserID).Find(&wearingInfo)
if ss.CheckErr(err) {
return
}
res = unit.AccessoryAllResp{
Result: unit.AccessoryAllData{
AccessoryList: accessoryList,
WearingInfo: wearingInfo,
EspecialCreateFlag: false,
},
Status: 200,
CommandNum: false,
TimeStamp: time.Now().Unix(),
}
return res, err
}
+38
View File
@@ -0,0 +1,38 @@
package unit
import (
"honoka-chan/internal/schema/api/unit"
"honoka-chan/internal/session"
"time"
"github.com/gin-gonic/gin"
)
func unitAll(ctx *gin.Context) (res any, err error) {
ss := session.Get(ctx)
unitsData := []unit.Active{}
err = ss.MainEng.Table("common_unit_m").Find(&unitsData)
if ss.CheckErr(err) {
return
}
userUnits := []unit.Active{}
err = ss.UserEng.Table("user_unit").Where("user_id = ?", ss.UserID).Find(&userUnits)
if ss.CheckErr(err) {
return
}
unitsData = append(unitsData, userUnits...)
res = unit.AllResp{
Result: unit.AllData{
Active: unitsData,
Waiting: []unit.Waiting{},
},
Status: 200,
CommandNum: false,
TimeStamp: time.Now().Unix(),
}
return res, err
}
+55
View File
@@ -0,0 +1,55 @@
package unit
import (
"honoka-chan/internal/schema/api/unit"
"honoka-chan/internal/session"
"time"
"github.com/gin-gonic/gin"
)
func unitDeckInfo(ctx *gin.Context) (res any, err error) {
ss := session.Get(ctx)
userDeck := []unit.UserDeckData{}
err = ss.UserEng.Table("user_deck").Where("user_id = ?", ss.UserID).Asc("deck_id").Find(&userDeck)
if ss.CheckErr(err) {
return
}
unitDeckInfo := []unit.DeckInfoData{}
for _, deck := range userDeck {
deckUnit := []unit.UnitDeckData{}
err = ss.UserEng.Table("user_deck_unit").Where("user_deck_id = ?", deck.ID).Asc("position").Find(&deckUnit)
if ss.CheckErr(err) {
return
}
oUID := []unit.UnitOwningUserIds{}
for _, u := range deckUnit {
oUID = append(oUID, unit.UnitOwningUserIds{
Position: u.Position,
UnitOwningUserID: u.UnitOwningUserID,
})
}
mainFlag := false
if deck.MainFlag == 1 {
mainFlag = true
}
unitDeckInfo = append(unitDeckInfo, unit.DeckInfoData{
UnitDeckID: deck.DeckID,
MainFlag: mainFlag,
DeckName: deck.DeckName,
UnitOwningUserIds: oUID,
})
}
res = unit.DeckInfoResp{
Result: unitDeckInfo,
Status: 200,
CommandNum: false,
TimeStamp: time.Now().Unix(),
}
return res, err
}
@@ -0,0 +1,76 @@
package unit
import (
"honoka-chan/internal/schema/api/unit"
"honoka-chan/internal/session"
"time"
"github.com/gin-gonic/gin"
)
func unitRemovableSkillInfo(ctx *gin.Context) (res any, err error) {
ss := session.Get(ctx)
var skillEquipCount []unit.SkillEquipCount
err = ss.UserEng.Table("user_unit_skill_equip").Where("user_id = ?", ss.UserID).Select("unit_removable_skill_id,COUNT(*) AS ct").
GroupBy("unit_removable_skill_id").Find(&skillEquipCount)
if ss.CheckErr(err) {
return
}
var rmSkillIds []int
err = ss.MainEng.Table("unit_removable_skill_m").Where("effect_range = 1").Cols("unit_removable_skill_id").Find(&rmSkillIds)
if ss.CheckErr(err) {
return
}
owingInfo := []unit.OwningInfo{}
for _, id := range rmSkillIds {
info := unit.OwningInfo{
UnitRemovableSkillID: id,
TotalAmount: 9,
EquippedAmount: 0,
InsertDate: "2023-01-01 12:00:00",
}
for _, sk := range skillEquipCount {
if id == sk.UnitRemovableSkillId {
info.EquippedAmount = sk.Count
break
}
}
owingInfo = append(owingInfo, info)
}
var unitOwningIds []int
err = ss.UserEng.Table("user_unit_skill_equip").Where("user_id = ?", ss.UserID).Cols("unit_owning_user_id").GroupBy("unit_owning_user_id").Find(&unitOwningIds)
if ss.CheckErr(err) {
return
}
equipInfo := map[int]any{}
for _, v := range unitOwningIds {
detail := []unit.SkillEquipDetail{}
err = ss.UserEng.Table("user_unit_skill_equip").Where("user_id = ? AND unit_owning_user_id = ?", ss.UserID, v).
Cols("unit_removable_skill_id").Find(&detail)
if ss.CheckErr(err) {
return
}
equipInfo[v] = unit.SkillEquipList{
UnitOwningUserID: v,
Detail: detail,
}
}
res = unit.RemovableSkillInfoResp{
Result: unit.RemovableSkillInfoData{
OwningInfo: owingInfo,
EquipmentInfo: equipInfo,
}, // 宝石
Status: 200,
CommandNum: false,
TimeStamp: time.Now().Unix(),
}
return res, err
}
+19
View File
@@ -0,0 +1,19 @@
package unit
import (
"honoka-chan/internal/schema/api/unit"
"time"
)
func unitSupporterAll() (res any, err error) {
res = unit.SupporterAllResp{
Result: unit.SupporterAllData{
UnitSupportList: []unit.SupporterList{},
}, // 练习道具
Status: 200,
CommandNum: false,
TimeStamp: time.Now().Unix(),
}
return res, err
}
+25
View File
@@ -0,0 +1,25 @@
package unit
import (
"fmt"
"github.com/gin-gonic/gin"
)
func UnitApi(ctx *gin.Context, action string) (res any, err error) {
switch action {
case "accessoryAll":
res, err = unitAccessoryAll(ctx)
case "deckInfo":
res, err = unitDeckInfo(ctx)
case "removableSkillInfo":
res, err = unitRemovableSkillInfo(ctx)
case "supporterAll":
res, err = unitSupporterAll()
case "unitAll":
res, err = unitAll(ctx)
default:
err = fmt.Errorf("unimplemented action: unit: %s", action)
}
return res, err
}