feat: 支持每周任务重置和查询
All checks were successful
ci/woodpecker/push/my-first-workflow Pipeline was successful

This commit is contained in:
xinian
2026-03-05 14:56:28 +08:00
committed by cnb
parent 10e1126cd7
commit 2259093790
4 changed files with 61 additions and 19 deletions

View File

@@ -24,16 +24,16 @@ func NewTaskService() *TaskService {
}
}
func (s *TaskService) Get(id, os int) *model.TaskConfig {
var item []model.TaskConfig
dbm_enable(s.Model).Where("task_id", id).Scan(&item)
var res *model.TaskConfig
for _, v := range item {
if v.OutState == os {
res = &v
dbm_enable(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
@@ -44,6 +44,25 @@ func (s *TaskService) GetDaily() []model.TaskConfig {
return item
}
func (s *TaskService) GetWeek() []model.TaskConfig {
var item []model.TaskConfig
dbm_enable(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 {
return false
}
if item.TaskType == 1 {
return true
}
return false
}
func (s *TaskService) IsAcceptable(taskid uint32) (out *model.TaskConfig) {
@@ -57,4 +76,3 @@ func (s *TaskService) IsAcceptable(taskid uint32) (out *model.TaskConfig) {
return
}

View File

@@ -13,9 +13,10 @@ const TableNamePlayerInfo = "player_info"
type Player struct {
*cool.Model
PlayerID uint64 `gorm:"not null;uniqueIndex;index:idx_pet_by_player_id;comment:'所属玩家ID'" json:"player_id"`
LastResetTime *gtime.Time `struc:"skip" json:"last_reset_time"` // 重置时间,比如电池和每日任务
Data PlayerInfo `gorm:"type:jsonb;not null;comment:'全部数据'" json:"data"`
PlayerID uint64 `gorm:"not null;uniqueIndex;index:idx_pet_by_player_id;comment:'所属玩家ID'" json:"player_id"`
LastResetTime *gtime.Time `struc:"skip" json:"last_reset_time"` // 重置时间,比如电池和每日任务
WeekLastResetTime *gtime.Time `struc:"skip" json:"last_week_reset_time"`
Data PlayerInfo `gorm:"type:jsonb;not null;comment:'全部数据'" json:"data"`
}
type Pos struct {

View File

@@ -109,16 +109,24 @@ func (s *InfoService) SetLogin() *model.PlayerInfo {
}
for i := 0; i < 50; i++ { //每日任务区段
tt.Data.DailyResArr[i] = 0 //重置每日任务
// for i := 0; i < 50; i++ { //每日任务区段
// tt.Data.DailyResArr[i] = 0 //重置每日任务
// }
// //defer t.Service.Talk_Reset()
// _, err := s.dbm_fix(s.Model).Save(tt)
// if err != nil {
// panic(err)
// }
}
if !IsWEEK(tt.WeekLastResetTime) {
tt.WeekLastResetTime = gtime.Now()
for _, v := range service.NewTaskService().GetWeek() {
tt.Data.SetTask(int(v.TaskId), model.Unaccepted)
}
//defer t.Service.Talk_Reset()
_, err := s.dbm_fix(s.Model).Save(tt)
if err != nil {
panic(err)
}
}
ret := tt.Data

View File

@@ -51,6 +51,21 @@ func IsToday(t1 *gtime.Time) bool {
t.Month() == now.Month() &&
t.Day() == now.Day()
}
func IsWEEK(t1 *gtime.Time) bool {
if t1 == nil {
return false
}
t := t1.Time
// 获取当前时间
now := time.Now()
_, nweek := now.ISOWeek()
_, tweek := now.ISOWeek()
// 比较年、月、日是否相同
return t.Year() == now.Year() &&
tweek == nweek
}
type TaskService struct {
BaseService