Files
honoka-chan/internal/handler/api/unit/removableskillinfo.go
T
YumeMichi c77241a883 Overhaul [1/n]
Signed-off-by: Sean Du <do4suki@gmail.com>
2026-01-29 02:42:28 +08:00

77 lines
1.9 KiB
Go

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
}