76 lines
1.2 KiB
Go
76 lines
1.2 KiB
Go
|
|
package service
|
||
|
|
|
||
|
|
import (
|
||
|
|
"blazing/cool"
|
||
|
|
"blazing/modules/player/model"
|
||
|
|
|
||
|
|
"github.com/gogf/gf/v2/frame/g"
|
||
|
|
"github.com/samber/lo"
|
||
|
|
)
|
||
|
|
|
||
|
|
type TitleService struct {
|
||
|
|
BaseService
|
||
|
|
}
|
||
|
|
|
||
|
|
func (s *TitleService) Get() []uint32 {
|
||
|
|
m1 := s.TestModel(s.Model)
|
||
|
|
|
||
|
|
var talks *model.Title
|
||
|
|
|
||
|
|
m1.Scan(&talks)
|
||
|
|
if talks == nil {
|
||
|
|
return []uint32{}
|
||
|
|
}
|
||
|
|
return talks.AvailableTitle
|
||
|
|
}
|
||
|
|
|
||
|
|
func (s *TitleService) Can(id uint32) bool {
|
||
|
|
m1 := s.TestModel(s.Model)
|
||
|
|
|
||
|
|
var talks *model.Title
|
||
|
|
|
||
|
|
m1.Scan(&talks)
|
||
|
|
if talks == nil {
|
||
|
|
return false
|
||
|
|
}
|
||
|
|
_, ok := lo.Find(talks.AvailableTitle, func(item uint32) bool {
|
||
|
|
return item == id
|
||
|
|
|
||
|
|
})
|
||
|
|
return ok
|
||
|
|
}
|
||
|
|
|
||
|
|
func (s *TitleService) Give(id uint32) bool {
|
||
|
|
m1 := s.TestModel(s.Model)
|
||
|
|
|
||
|
|
var talks *model.Title
|
||
|
|
|
||
|
|
m1.Scan(&talks)
|
||
|
|
|
||
|
|
if talks == nil {
|
||
|
|
m := s.TestModel(s.Model)
|
||
|
|
data := g.Map{
|
||
|
|
"player_id": s.userid,
|
||
|
|
"available_title": []uint32{id},
|
||
|
|
"is_vip": cool.Config.ServerInfo.IsVip,
|
||
|
|
}
|
||
|
|
|
||
|
|
m.Data(data).Insert()
|
||
|
|
return true
|
||
|
|
}
|
||
|
|
talks.AvailableTitle = append(talks.AvailableTitle, id)
|
||
|
|
m1.Save()
|
||
|
|
return true
|
||
|
|
}
|
||
|
|
|
||
|
|
func NewTitleService(id uint32) *TitleService {
|
||
|
|
return &TitleService{
|
||
|
|
|
||
|
|
BaseService: BaseService{userid: id,
|
||
|
|
|
||
|
|
Service: &cool.Service{Model: model.NewPlayerTitle()},
|
||
|
|
},
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|