From 334d0e136cc7cefe280e9ca6aa1e98fddfa1e841 Mon Sep 17 00:00:00 2001 From: 1 <1@72wo.cn> Date: Sun, 31 Aug 2025 08:42:53 +0000 Subject: [PATCH] =?UTF-8?q?refactor(task):=20=E9=87=8D=E6=9E=84=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E7=B3=BB=E7=BB=9F=E6=95=B0=E6=8D=AE=E7=BB=93=E6=9E=84?= =?UTF-8?q?=E5=92=8C=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/cool/db.go | 2 +- common/data/socket/player.go | 1 + logic/controller/task.go | 43 ++++++++-------------- modules/blazing/model/task.go | 5 +-- modules/blazing/service/reg.go | 4 +-- modules/blazing/service/task.go | 64 ++++++++++++++++++++++++--------- 6 files changed, 70 insertions(+), 49 deletions(-) diff --git a/common/cool/db.go b/common/cool/db.go index 3e0685f41..f8b3e9821 100644 --- a/common/cool/db.go +++ b/common/cool/db.go @@ -12,5 +12,5 @@ func GDBM(m IModel) *gdb.Model { // DBM 根据model获取 *gdb.Model func DBM(m IModel) *gdb.Model { - return g.DB(m.GroupName()).Model(m.TableName()) + return g.DB(m.GroupName()).Model(m.TableName()).FieldsEx("id") } diff --git a/common/data/socket/player.go b/common/data/socket/player.go index f59c92917..d0a21d717 100644 --- a/common/data/socket/player.go +++ b/common/data/socket/player.go @@ -4,6 +4,7 @@ import ( "blazing/common/utils" "blazing/modules/blazing/model" "blazing/modules/blazing/service" + "context" "fmt" "sync" diff --git a/logic/controller/task.go b/logic/controller/task.go index 65640bc64..930f12edc 100644 --- a/logic/controller/task.go +++ b/logic/controller/task.go @@ -38,18 +38,19 @@ func (h Controller) AddTaskBuf(data *task.AddTaskBufInboundInfo, c *socket.Playe // if data.Head.CMD != 2204 { //判断是每日任务 // isdaliy = true // } - service.NewUserService(c.Info.UserID).TaskExec(func(ttt []model.TaskInfo) []model.TaskInfo { - var ttt2 []model.TaskInfo - for _, v := range ttt { + result = &task.AddTaskBufOutboundInfo{} - v.TaskInfo = data.TaskList + _, ok := service.NewUserService(c.Info.UserID).TaskInfo(data.TaskId) + if ok { + service.NewUserService(c.Info.UserID).TaskSet(data.TaskId, model.TaskInfo{ + Info: data.TaskList, + }) + } else { + service.NewUserService(c.Info.UserID).TaskADD(data.TaskId, model.TaskInfo{ - ttt2 = append(ttt2, v) - - } - - return ttt2 - }) + Info: data.TaskList, + }) + } return &task.AddTaskBufOutboundInfo{}, 0 } @@ -115,24 +116,10 @@ func (h Controller) Complete_Task(data *task.CompleteTaskInboundInfo, c *socket. * 获取任务状态 */ func (h Controller) Get_Task_Buf(data *task.GetTaskBufInboundInfo, c *socket.Player) (result *task.GetTaskBufOutboundInfo, err errorcode.ErrorCode) { - // isdaliy := false - // if data.Head.CMD == 2203 { //判断不是每日任务 - // isdaliy = true - // } - - service.NewUserService(c.Info.UserID).TaskExec(func(ttt []model.TaskInfo) []model.TaskInfo { - var ttt2 = make([]model.TaskInfo, 500) - for _, v := range ttt { - if data.TaskId == v.TaskID { - result = &task.GetTaskBufOutboundInfo{TaskId: data.TaskId, TaskList: v.TaskInfo} - } - - return ttt2 - - } - - return ttt2 - }) + info, _ := service.NewUserService(c.Info.UserID).TaskInfo(data.TaskId) + result = &task.GetTaskBufOutboundInfo{} + result.TaskId = data.TaskId + result.TaskList = info.Info return result, 0 } diff --git a/modules/blazing/model/task.go b/modules/blazing/model/task.go index 78db57c9f..169471afb 100644 --- a/modules/blazing/model/task.go +++ b/modules/blazing/model/task.go @@ -11,6 +11,7 @@ const TableNameTask = "task" type Task struct { *cool.Model PlayerID uint64 `gorm:"not null;index:idx_task_by_player_id;comment:'所属玩家ID'" json:"player_id"` + TaskID uint32 `gorm:"not null;comment:'任务ID'" json:"task_id"` Data string `gorm:"type:text;not null;comment:'全部数据'" json:"data"` } @@ -18,8 +19,8 @@ type Task struct { type TaskInfo struct { // TaskInfo 任务步骤信息,对应Java的@ArraySerialize(FIXED_LENGTH=20)注解 // struc:"[20]byte" 确保二进制序列化时固定20字节长度,json标签指定JSON字段名 - TaskID uint32 `json:"task_id"` //区分是每日任务还是常规任务,常规为0,每日为1 - TaskInfo []uint32 `struc:"[20]byte" json:"task_info"` + //TaskID uint32 `json:"task_id"` //区分是每日任务还是常规任务,常规为0,每日为1 + Info []uint32 `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字段名,与业务状态说明保持一致 diff --git a/modules/blazing/service/reg.go b/modules/blazing/service/reg.go index 29531ad26..8054c551e 100644 --- a/modules/blazing/service/reg.go +++ b/modules/blazing/service/reg.go @@ -45,12 +45,12 @@ func (s *UserService) Reg(nick string, color uint32) { } t.Data = string(t22) - _, err = cool.DBM(s.reg.Model).Data(t).FieldsEx("id").Insert() + _, err = cool.DBM(s.reg.Model).Data(t).Insert() if err != nil { glog.Error(context.Background(), err) return } - go s.InitTask() + //go s.InitTask() } func (s *UserService) Person() (ret *model.PlayerInfo) { diff --git a/modules/blazing/service/task.go b/modules/blazing/service/task.go index 238ae1e8d..62212e0df 100644 --- a/modules/blazing/service/task.go +++ b/modules/blazing/service/task.go @@ -35,27 +35,59 @@ func Exec[T cool.UserModel, F any](userid uint32, s *cool.Service, processFunc f return false } -func (s *UserService) InitTask() { +// func (s *UserService) InitTask() { - tt := model.NewTask() - tt.PlayerID = uint64(s.userid) +// tt := model.NewTask() +// tt.PlayerID = uint64(s.userid) - var ggg []model.TaskInfo +// var ggg []model.TaskInfo - for i := 0; i < 500; i++ { - ggg = append(ggg, model.TaskInfo{ - TaskID: (uint32(i)), - TaskInfo: make([]uint32, 0), - }) +// for i := 0; i < 500; i++ { +// ggg = append(ggg, model.TaskInfo{ +// //TaskID: (uint32(i)), +// TaskIinnfo: make([]uint32, 0), +// }) +// } +// ffgg, _ := json.Marshal(ggg) +// tt.Data = string(ffgg) +// _, err := cool.DBM(s.task.Model).Data(tt).FieldsEx("id").Insert() +// if err != nil { +// panic(err) +// } +// //panic(err) + +// } + +// 获取任务信息 +func (s *UserService) TaskInfo(id uint32) (ret model.TaskInfo, ok bool) { + var gg model.Task + m1 := cool.DBM(s.task.Model).Where("player_id", s.userid) + m1.Scan(&gg) + + if gg.TaskID == 0 { + + return ret, false } - ffgg, _ := json.Marshal(ggg) - tt.Data = string(ffgg) - _, err := cool.DBM(s.task.Model).Data(tt).FieldsEx("id").Insert() - if err != nil { - panic(err) - } - //panic(err) + json.Unmarshal([]byte(gg.Data), &ret) + return ret, true +} +func (s *UserService) TaskSet(id uint32, ret model.TaskInfo) { + var gg model.Task + + tt, _ := json.Marshal(&ret) + gg.Data = string(tt) + //gg.TaskID = id + cool.DBM(s.task.Model).Where("player_id", s.userid).Where("task_id", id).Update(gg) + +} +func (s *UserService) TaskADD(id uint32, ret model.TaskInfo) { + var gg model.Task + + tt, _ := json.Marshal(&ret) + gg.Data = string(tt) + gg.TaskID = id + cool.DBM(s.task.Model).Where("player_id", s.userid).Insert() } func (s *UserService) TaskExec(t func([]model.TaskInfo) []model.TaskInfo) (ret bool) {