feat(logic): 实现地图刷怪功能并优化数据库查询

- 在玩家结构中添加 StopChan 通道,用于停止刷怪协程
- 优化 MapEnter 和 MapLeave 函数,支持刷怪功能
- 新增 spawnMonsters 函数实现具体刷怪逻辑
- 优化多个模块的数据库查询语句,提高查询效率
- 调整 PlayerService 中的 Reg 函数,优化数据插入操作
This commit is contained in:
2025-08-23 17:44:12 +08:00
parent bc4bd7eba6
commit b6164f3b9e
11 changed files with 131 additions and 26 deletions

View File

@@ -40,7 +40,7 @@ func (s *PlayerService) IsReg(accountID uint) bool {
// 实现注册,id+昵称+颜色
func (s *PlayerService) Reg(accountID uint, nick string, color uint32) {
nick = strings.TrimSpace(nick)
nick = strings.Trim(nick, "\x00")
t := model.NewPlayer()
t.PlayerID = uint64(accountID)
@@ -54,8 +54,9 @@ func (s *PlayerService) Reg(accountID uint, nick string, color uint32) {
if err != nil {
return
}
t.Data = string(t22)
_, err = cool.DBM(s.Model).Data(t).Insert()
_, err = cool.DBM(s.Model).Data(t).FieldsEx("id").Insert()
if err != nil {
glog.Error(context.Background(), err)
return

View File

@@ -0,0 +1,41 @@
package service
import (
"blazing/cool"
"blazing/modules/blazing/model"
)
type MonsterService struct {
*cool.Service
}
func NewMonsterService() *MonsterService {
return &MonsterService{
&cool.Service{
Model: model.NewMonsterRefresh(),
PageQueryOp: &cool.QueryOp{
FieldEQ: []string{"status", "type"},
},
UniqueKey: map[string]string{
"name": "任务名称不能重复",
},
},
}
}
func (s *MonsterService) GetId(mapid uint32) uint32 {
m := cool.DBM(s.Model).Where("map_id", mapid)
var tt []model.MonsterRefresh
m.Scan(&tt)
for _, v := range tt {
if v.MapID == int32(mapid) {
return uint32(v.MonsterID)
}
}
return 0
}