64 lines
1.9 KiB
Go
64 lines
1.9 KiB
Go
package multiunit
|
|
|
|
import (
|
|
multiunitapischema "honoka-chan/internal/schema/api/multiunit"
|
|
"honoka-chan/internal/session"
|
|
"net/http"
|
|
"strings"
|
|
"time"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
func MultiUnitScenarioStatus(ctx *gin.Context) (res any, err error) {
|
|
ss := session.Get(ctx)
|
|
|
|
var statusID []int
|
|
multiUnitsList := []multiunitapischema.StatusList{}
|
|
err = ss.MainEng.Table("multi_unit_scenario_m").Cols("multi_unit_id").GroupBy("multi_unit_id").OrderBy("multi_unit_id ASC").Find(&statusID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
for _, id := range statusID {
|
|
var multiRes struct {
|
|
MultiUnitScenarioId int `xorm:"multi_unit_scenario_id"`
|
|
Chapter int `xorm:"chapter"`
|
|
MultiUnitScenarioBtnAsset string `xorm:"multi_unit_scenario_btn_asset"`
|
|
OpenDate string `xorm:"open_date"`
|
|
}
|
|
_, err = ss.MainEng.Table("multi_unit_scenario_m").
|
|
Join("LEFT", "multi_unit_scenario_open_m", "multi_unit_scenario_m.multi_unit_id = multi_unit_scenario_open_m.multi_unit_id").
|
|
Cols("multi_unit_scenario_btn_asset,open_date,multi_unit_scenario_id,chapter").
|
|
Where("multi_unit_scenario_m.multi_unit_id = ?", id).Get(&multiRes)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
multiUnitsList = append(multiUnitsList, multiunitapischema.StatusList{
|
|
MultiUnitID: id,
|
|
Status: 2,
|
|
MultiUnitScenarioBtnAsset: multiRes.MultiUnitScenarioBtnAsset,
|
|
OpenDate: strings.ReplaceAll(multiRes.OpenDate, "/", "-"),
|
|
ChapterList: []multiunitapischema.ChapterList{
|
|
{
|
|
MultiUnitScenarioID: multiRes.MultiUnitScenarioId,
|
|
Chapter: multiRes.Chapter,
|
|
Status: 2,
|
|
},
|
|
},
|
|
})
|
|
}
|
|
res = multiunitapischema.StatusResp{
|
|
Result: multiunitapischema.StatusData{
|
|
MultiUnitScenarioStatusList: multiUnitsList,
|
|
UnlockedMultiUnitScenarioIds: []any{},
|
|
},
|
|
Status: http.StatusOK,
|
|
CommandNum: false,
|
|
TimeStamp: time.Now().Unix(),
|
|
}
|
|
|
|
return res, err
|
|
}
|