Files
bl/modules/config/service/server.go
昔念 cde64b1898 ```
feat(config): 添加服务器screen参数字段

添加OldScreen字段用于存储服务器的screen会话名称

---

fix(fight): 修复攻击值结构体格式

格式化AttackValue结构体字段对齐,并添加Offensive字段用于存储攻击力

---

feat(fight): 计算并存储技能攻击力

在技能计算过程中添加攻击力计算并存储到AttackValue结构体中

---

fix(base): 修正JWT密钥配置

将JWT密钥从
2026-01-09 08:31:30 +08:00

138 lines
3.0 KiB
Go

package service
import (
"blazing/cool"
"blazing/modules/config/model"
"context"
"sort"
"github.com/gogf/gf/v2/database/gdb"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/util/gconv"
"github.com/qiniu/go-sdk/v7/auth/qbox"
"github.com/qiniu/go-sdk/v7/storage"
)
type ServerService struct {
*cool.Service
manager *storage.BucketManager
bucket string
}
func NewServerService() *ServerService {
cf := &ServerService{
Service: &cool.Service{
Model: model.NewServerList(),
PageQueryOp: &cool.QueryOp{
ModifyResult: func(ctx g.Ctx, data interface{}) interface{} {
var rr []g.MapStrAny
r, _ := gconv.Map(data)["list"].(gdb.Result)
for i := 0; i < len(r); i++ {
t, ok := cool.GetClient(gconv.Uint16(r[i].Map()["port"]))
// tt.Friends = v.Friends
subm := r[i].GMap()
if ok {
cool.Logger.Info(context.TODO(), "服务器假踢人")
err := t.KickPerson(0) //实现指定服务器踢人
if err == nil {
subm.Set("isonline", 1)
}
}
rr = append(rr, subm.MapStrAny())
}
data.(map[string]interface{})["list"] = rr
return data
},
},
},
}
cfg := storage.Config{
Zone: &storage.ZoneHuadong,
UseHTTPS: true,
UseCdnDomains: true,
}
mac := qbox.NewMac("DzMpomnPxqBHkIcvxTbC-hl_8LjVB0LXZuhCky_u", "bhoxrpG1s7MBmSS2I1k5t9zMpuiderpBDZoIPQKU")
cf.bucket = "blazingt"
cf.manager = storage.NewBucketManager(mac, &cfg)
return cf
}
func (s *ServerService) GetPort() []model.ServerList {
var item []model.ServerList
cool.DBM(s.Model).Fields("ip", "port").Scan(&item)
return item
}
func (s *ServerService) GetServer() []model.ServerList {
var item []model.ServerList
dbm(s.Model).Scan(&item)
return item
}
func (s *ServerService) GetServerByID(id uint32) model.ServerList {
var item model.ServerList
dbm(s.Model).Where("online_id", id).Scan(&item)
return item
}
func (s *ServerService) SetServerScreen(id uint16, name string) {
dbm(s.Model).Where("online_id", id).Data("old_screen", name).Update()
}
func (s *ServerService) GetFile() string {
var files []File
prefix := "logic"
delimiter := "" // 用于分隔目录
marker := "" // 初始标记为空
for {
entries, _, nextMarker, hasNext, err := s.manager.ListFiles(s.bucket, prefix, delimiter, marker, 100)
if err != nil {
return ""
}
// 添加文件到结果列表
for _, entry := range entries {
files = append(files, File{
Name: entry.Key,
Size: entry.Fsize,
Path: entry.Key,
Time: entry.PutTime,
})
}
// 如果没有更多文件,结束循环
if !hasNext {
break
}
// 更新标记,继续下一页
marker = nextMarker
}
sort.Slice(files, func(i, j int) bool {
return files[i].Time > files[j].Time
})
return "http://sun.72wo.cn/" + files[0].Name
}
type File struct {
Name string `json:"name"`
Path string `json:"path"`
Url string `json:"url"`
Size int64 `json:"size"`
Modified string `json:"modified"`
Time int64 `json:"time"`
}