```
refactor(service): 统一服务实例调用方式 将多个模块中手动创建服务实例的方式替换为全局单例模式, 包括 PetFusionService、PetFusionMaterialService 和 EffectService。 同时修改了相关调用代码以适配新的服务引用方式。 此外,重构了 talk 模块的数据结构与逻辑实现, 优化了挖矿次数检查及更新机制。 ```
This commit is contained in:
@@ -16,7 +16,7 @@ func init() {
|
||||
&cool.Controller{
|
||||
Prefix: "/admin/pet/fusionmaterial", // 路由前缀(主表路由+子表名,层级清晰)
|
||||
Api: []string{"Add", "Delete", "Update", "Info", "List", "Page"}, // 支持的基础CRUD接口
|
||||
Service: service.NewPetFusionMaterialService(), // 绑定子表Service
|
||||
Service: service.PetFusionMaterialServiceIns, // 绑定子表Service
|
||||
},
|
||||
}
|
||||
// 注册控制器到框架
|
||||
|
||||
@@ -17,11 +17,8 @@ func NewTalk() *Talk {
|
||||
type Talk struct {
|
||||
*cool.Model
|
||||
PlayerID uint64 `gorm:"not null;index:idx_player_resource;comment:'所属玩家ID'" json:"player_id"`
|
||||
Data string `gorm:"type:text;not null;comment:'全部数据'" json:"data"` //map[uint32]uint32
|
||||
}
|
||||
type TalkEX struct {
|
||||
Talk
|
||||
Data map[uint32]uint32 `orm:"data" json:"data"`
|
||||
TalkID uint32 `gorm:"not null;unique;comment:'资源ID'" json:"talk_id"`
|
||||
Count uint32 `gorm:"not null;comment:'采集计数'" json:"count"`
|
||||
}
|
||||
|
||||
// TableName 资源采集表名
|
||||
|
||||
@@ -36,3 +36,5 @@ func NewEffectService() *EffectService {
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
var Effects = NewEffectService()
|
||||
|
||||
@@ -20,6 +20,8 @@ type PetFusionMaterialService struct {
|
||||
*cool.Service // 嵌入通用Service(继承基础CRUD方法)
|
||||
}
|
||||
|
||||
var PetFusionMaterialServiceIns = NewPetFusionMaterialService()
|
||||
|
||||
// NewPetFusionMaterialService 创建PetFusionMaterialService实例
|
||||
func NewPetFusionMaterialService() *PetFusionMaterialService {
|
||||
return &PetFusionMaterialService{
|
||||
|
||||
@@ -18,6 +18,8 @@ type PetFusionService struct {
|
||||
*cool.Service // 嵌入通用Service(继承基础CRUD方法)
|
||||
}
|
||||
|
||||
var PetFusionServiceS = NewPetFusionService()
|
||||
|
||||
// NewPetFusionService 创建PetFusionService实例
|
||||
func NewPetFusionService() *PetFusionService {
|
||||
return &PetFusionService{
|
||||
|
||||
@@ -20,19 +20,53 @@ func NewTalkService(id uint32) *TalkService {
|
||||
|
||||
}
|
||||
|
||||
// TalkCheck 获取玩家当前的Talk数据
|
||||
// todo 待实现xml解析判断是否溢出
|
||||
func (s *TalkService) Exec(t func(map[uint32]uint32) bool) {
|
||||
//实现挖矿次数确认
|
||||
|
||||
func (s *TalkService) Cheak(flag int) bool {
|
||||
|
||||
m1 := s.GModel(s.Model)
|
||||
|
||||
var talks model.TalkEX
|
||||
m1.Scan(&talks)
|
||||
var talks *model.Talk
|
||||
m1.Where("talk_id", flag).Scan(&talks)
|
||||
if talks == nil {
|
||||
return true //如果表里没有记载数据,那么就可以直接挖矿
|
||||
}
|
||||
//因为这个是挖一次更新一次,而且是实时更新的,如果更新日期是今天,那么就可以确认不用再重置,否则就需要重置挖矿记录
|
||||
if !IsToday(talks.UpdateTime) {
|
||||
|
||||
ok := t(talks.Data)
|
||||
if ok {
|
||||
talks.PlayerID = uint64(s.userid)
|
||||
talks.Count = 0
|
||||
m1.Save(talks)
|
||||
return true
|
||||
}
|
||||
|
||||
}
|
||||
func (s *TalkService) Update(flag int) {
|
||||
|
||||
m1 := s.GModel(s.Model)
|
||||
|
||||
var talks model.Talk
|
||||
m1.Scan(&talks)
|
||||
|
||||
talks.PlayerID = uint64(s.userid)
|
||||
talks.TalkID = uint32(flag)
|
||||
talks.Count += 1
|
||||
m1.Save(talks)
|
||||
|
||||
}
|
||||
|
||||
// // TalkCheck 获取玩家当前的Talk数据
|
||||
// // todo 待实现xml解析判断是否溢出
|
||||
// func (s *TalkService) Exec(t func(map[uint32]uint32) bool) {
|
||||
|
||||
// m1 := s.GModel(s.Model)
|
||||
|
||||
// var talks model.Talk
|
||||
// m1.Scan(&talks)
|
||||
|
||||
// ok := t(talks)
|
||||
// if ok {
|
||||
// talks.PlayerID = uint64(s.userid)
|
||||
// m1.Save(talks)
|
||||
// }
|
||||
|
||||
// }
|
||||
|
||||
Reference in New Issue
Block a user