Files
bl/modules/config/service/task.go
昔念 f95fd49efd
All checks were successful
ci/woodpecker/push/my-first-workflow Pipeline was successful
```
feat(fight): 新增疲惫状态并优化睡眠状态机制

- 实现疲惫状态(StatusTired),仅限制攻击技能,允许属性技能正常使用
- 重构睡眠状态,改为在被攻击且未miss时立即解除,而非技能使用后
- 修复寄生种子效果触发时机,改为回合开始时触发
- 调整寄生效果的目标为技能施放者而非
2026-04-13 21:06:45 +08:00

91 lines
1.9 KiB
Go

package service
import (
"blazing/cool"
"blazing/modules/config/model"
"github.com/gogf/gf/v2/database/gdb"
)
type TaskService struct {
*cool.Service
}
func NewTaskService() *TaskService {
return &TaskService{
&cool.Service{
Model: model.NewTaskConfig(),
PageQueryOp: &cool.QueryOp{
FieldEQ: []string{"task_type", "task_id"},
KeyWordField: []string{"remark"},
},
//UniqueKey: map[string]string{"task_id": "索引不能重复"},
},
}
}
func (s *TaskService) Get(id, os int) *model.TaskConfig {
var res *model.TaskConfig
dbm_enable(s.Model).Where("task_id", id).Where("out_state", os).Scan(&res)
if res == nil {
dbm_notenable(s.Model).Where("task_id", id).Where("out_state", os).Scan(&res)
}
// var res *model.TaskConfig
// for _, v := range item {
// if v.OutState == os {
// res = &v
// }
// }
return res
}
func (s *TaskService) GetDaily() []model.TaskConfig {
var item []model.TaskConfig
dbm_enable(s.Model).Where("task_type", 1).Scan(&item)
if len(item) == 0 {
dbm_notenable(s.Model).Where("task_type", 1).Scan(&item)
}
return item
}
func (s *TaskService) GetWeek() []model.TaskConfig {
var item []model.TaskConfig
dbm_enable(s.Model).Where("task_type", 2).Scan(&item)
if len(item) == 0 {
dbm_notenable(s.Model).Where("task_type", 2).Scan(&item)
}
return item
}
func (s *TaskService) IsDaily(id, os int) bool {
var item *model.TaskConfig
dbm_enable(s.Model).Where("task_id", id).Where("out_state", os).Scan(&item)
if item == nil {
dbm_notenable(s.Model).Where("task_id", id).Where("out_state", os).Scan(&item)
}
if item == nil {
return false
}
if item.TaskType == 1 {
return true
}
return false
}
func (s *TaskService) IsAcceptable(taskid uint32) (out *model.TaskConfig) {
cool.DBM(s.Model).Where("is_acceptable", 1).Where("task_id", taskid).
Cache(gdb.CacheOption{
// Duration: time.Hour,
Force: false,
}).Scan(&out)
return
}