refactor(login): 重构登录重置逻辑,使用 defer 替代 goroutine

将每日任务重置逻辑从 goroutine 改为 defer 执行,确保在函数结束时正确重置任务状态。
同时将 TaskInfo 中的 Info 字段重命名为 Data,保持结构一致性。

refactor(task): 统一任务数据字段名为 Data

将 task 相关结构体中的 Info 字段统一
This commit is contained in:
2025-09-23 13:24:40 +08:00
parent 1ee43e1319
commit ea1148039e
10 changed files with 56 additions and 49 deletions

View File

@@ -56,6 +56,11 @@ type Pet struct {
Data string `gorm:"type:text;not null;comment:'精灵全部数据'" json:"data"`
}
type PetS struct {
Pet
Data []PetInfo `orm:"data" dc:"资源规格"`
}
func LastFourElements[T any](s []T) []T {
n := len(s)
if n <= 4 {

View File

@@ -17,10 +17,11 @@ type Task struct {
// TaskInfo 单个任务的详细信息,包含任务步骤状态和整体状态
type TaskInfo struct {
Task
// TaskInfo 任务步骤信息,
// struc:"[20]byte" 确保二进制序列化时固定20字节长度json标签指定JSON字段名
//TaskID uint32 `json:"task_id"` //区分是每日任务还是常规任务,常规为0,每日为1
Info []uint32 `struc:"[20]byte" json:"task_info"`
Data []uint32 `orm:"data" struc:"[20]byte" json:"task_info"`
//LastResetTime time.Time `gorm:"not null;comment:'上次重置时间UTC'" json:"last_reset_time"` //这里是每天重置
// Status 任务整体状态0-未接受1-已接受2-已完成未领取3-已完成已领取
// json标签指定JSON字段名与业务状态说明保持一致

View File

@@ -8,19 +8,15 @@ import (
// 获取精灵信息 0是仓库,1是背包,2是放生
func (s *UserService) GetPetList(flag int) (ret []model.PetInfo) {
ret = make([]model.PetInfo, 0)
m := cool.DBM(s.pet.Model).Where("player_id", s.userid).Where("in_bag", flag)
var tt []model.Pet
m.Scan(&tt)
for _, v := range tt {
var ret11 model.PetInfo
json.Unmarshal([]byte(v.Data), &ret11)
ret = append(ret, ret11)
var tt model.PetS
err := m.Scan(&tt)
if err != nil {
panic(err)
}
return
return tt.Data
}