diff --git a/cmd/v2/main.go b/cmd/v2/main.go index c079523a1..60425c150 100644 --- a/cmd/v2/main.go +++ b/cmd/v2/main.go @@ -103,7 +103,7 @@ func logLifecycle(a fyne.App) { } func setupPtt() (err error) { - pttService = service.NewPttService(connService) + pttService = service.NewPttService(connService, obs) return } diff --git a/cmd/v2/service/connService.go b/cmd/v2/service/connService.go index 86a8073c0..14085f485 100644 --- a/cmd/v2/service/connService.go +++ b/cmd/v2/service/connService.go @@ -80,7 +80,7 @@ func (c *ConnServiceImpl) HttpConnect(url string) ([]byte, error) { func (c *ConnServiceImpl) ListenerPush() { go func() { for { - time.Sleep(time.Millisecond * 200) + // time.Sleep(time.Millisecond * 200) msg := &pb.UserMessage{} _, data, err := c.ws.ReadMessage() if err != nil { diff --git a/cmd/v2/service/observer/event.go b/cmd/v2/service/observer/event.go index f3fabe3ce..686c4a8d9 100644 --- a/cmd/v2/service/observer/event.go +++ b/cmd/v2/service/observer/event.go @@ -12,4 +12,6 @@ const ( EVENT_REQ_RSP Event = "response" // 清空 ui数据事件 EVENT_UI_CLEAN Event = "uiclean" + // 请求响应计时 + EVENT_RST = "ctime" ) diff --git a/cmd/v2/service/pttService.go b/cmd/v2/service/pttService.go index 239fc4c98..45c0699ca 100644 --- a/cmd/v2/service/pttService.go +++ b/cmd/v2/service/pttService.go @@ -2,9 +2,11 @@ package service import ( "go_dreamfactory/cmd/v2/lib/common" + "go_dreamfactory/cmd/v2/service/observer" "go_dreamfactory/comm" "go_dreamfactory/modules/user" "go_dreamfactory/pb" + "time" "github.com/sirupsen/logrus" "google.golang.org/protobuf/proto" @@ -25,6 +27,7 @@ type PttService interface { type PttServiceImpl struct { connService ConnService user *UserInfo + obs observer.Observer } type UserInfo struct { @@ -32,9 +35,10 @@ type UserInfo struct { DbUserExpand *pb.DBUserExpand } -func NewPttService(connService ConnService) PttService { +func NewPttService(connService ConnService, obs observer.Observer) PttService { ptt = &PttServiceImpl{ connService: connService, + obs: obs, } return ptt } @@ -54,9 +58,11 @@ func (p *PttServiceImpl) SetUser(dbUser *pb.DBUser, dbUserExpand *pb.DBUserExpan func (p *PttServiceImpl) SendToClient(mainType, subType string, rsp proto.Message) (err error) { msg := &pb.UserMessage{MainType: mainType, SubType: subType} msg.Sec = common.BuildSecStr(p.user.DbUser.Sid, p.user.DbUser.Binduid) + now := time.Now() if err = p.connService.SendMsg(msg, rsp); err != nil { logrus.WithField("err", err).Error(err) } + p.obs.Notify(observer.EVENT_RST, now) return } diff --git a/cmd/v2/ui/app_testcase.go b/cmd/v2/ui/app_testcase.go index 19a1fdd97..309820779 100644 --- a/cmd/v2/ui/app_testcase.go +++ b/cmd/v2/ui/app_testcase.go @@ -6,6 +6,7 @@ import ( "go_dreamfactory/cmd/v2/model" "go_dreamfactory/cmd/v2/service/observer" "go_dreamfactory/pb" + "time" "fyne.io/fyne/v2" "fyne.io/fyne/v2/container" @@ -44,8 +45,10 @@ func (a *appTester) LazyInit(obs observer.Observer) error { content.Objects = []fyne.CanvasObject{} if view, ok := viewRegister[viewKey]; ok { + timeLbl := widget.NewLabel("time") view.Init(obs, globalWin.w) resLog := widget.NewMultiLineEntry() + obs.AddListener(observer.EVENT_REQ_RSP, observer.Listener{ OnNotify: func(data interface{}, args ...interface{}) { if data == nil { @@ -60,6 +63,16 @@ func (a *appTester) LazyInit(obs observer.Observer) error { }, }) + obs.AddListener(observer.EVENT_RST, observer.Listener{ + OnNotify: func(data interface{}, args ...interface{}) { + tm := data.(time.Time) + cost := time.Since(tm) + logrus.WithFields(logrus.Fields{"Main": t.MainType, "Sub": t.SubType, "cost": cost}).Debug("耗时") + timeLbl.Text = fmt.Sprintf("耗时:%v", cost) + timeLbl.Refresh() + }, + }) + resLog.Wrapping = fyne.TextWrapBreak formReq := view.CreateView(t) // required! Refresh updates the widget @@ -69,7 +82,8 @@ func (a *appTester) LazyInit(obs observer.Observer) error { clearBtn := widget.NewButtonWithIcon(common.APP_TESTCASE_BTN_CLEARLOG, theme.DeleteIcon(), func() { resLog.SetText("") }) - resPanel := container.NewBorder(container.NewHBox(clearBtn, layout.NewSpacer()), nil, nil, nil, resLog) + + resPanel := container.NewBorder(container.NewHBox(clearBtn, layout.NewSpacer(), timeLbl), nil, nil, nil, resLog) panel := container.NewVSplit( formCard, diff --git a/modules/rtask/api_dotask.go b/modules/rtask/api_dotask.go index 89019fdbc..854fa72e6 100644 --- a/modules/rtask/api_dotask.go +++ b/modules/rtask/api_dotask.go @@ -5,7 +5,6 @@ import ( "go_dreamfactory/pb" "go_dreamfactory/utils" - "go.mongodb.org/mongo-driver/bson/primitive" "google.golang.org/protobuf/proto" ) @@ -59,15 +58,13 @@ func (this *apiComp) Dotask(session comm.IUserSession, req *pb.RtaskApplyReq) (c // 没有设置选项,表示任务完成 if len(conf.ChooseId) == 0 { frtaskArr.RtaskIds = append(frtaskArr.RtaskIds, req.RtaskId) + rtask.FrtaskIds[conf.Group] = frtaskArr - _id := primitive.NewObjectID().Hex() - rtask := &pb.DBRtask{ - Id: _id, - Uid: session.GetUserId(), - FrtaskIds: rtask.FrtaskIds, + update := map[string]interface{}{ + "frtaskIds": rtask.FrtaskIds, } - if err := this.moduleRtask.modelRtask.Add(session.GetUserId(), rtask); err != nil { + if err := this.moduleRtask.modelRtask.Change(session.GetUserId(), update); err != nil { code = pb.ErrorCode_SystemError } diff --git a/modules/rtask/api_list.go b/modules/rtask/api_list.go index d5eb7e80f..79305cb6d 100644 --- a/modules/rtask/api_list.go +++ b/modules/rtask/api_list.go @@ -20,16 +20,14 @@ func (this *apiComp) List(session comm.IUserSession, req *pb.RtasklistReq) (code return } - var rtaskIds []int32 + ids := make([]int32, 0) if v, ok := rtask.FrtaskIds[req.GroupId]; ok { - for _, id := range v.RtaskIds { - rtaskIds = append(rtaskIds, id) - } + ids = v.RtaskIds } rsp := &pb.RtasklistResp{ - RtaskIds: rtaskIds, + RtaskIds: ids, } if err := session.SendMsg(string(this.moduleRtask.GetType()), RtaskSubTypeList, rsp); err != nil { code = pb.ErrorCode_SystemError diff --git a/modules/rtask/config.go b/modules/rtask/config.go index 5e1597738..240b7f341 100644 --- a/modules/rtask/config.go +++ b/modules/rtask/config.go @@ -75,18 +75,6 @@ func (this *configureComp) getRtaskChoose() (data *cfg.GameRdtaskChoose, err err return } -// 获取随机任务配置 -func (this *configureComp) getRtaskList() (data []*cfg.GameRdtaskData, err error) { - cfg, err := this.getRtaskCfg() - if err != nil { - return - } - if cfg != nil { - data = cfg.GetDataList() - } - return -} - // 获取选项配置 func (this *configureComp) getRtaskChooseCfg(id int32) *cfg.GameRdtaskChooseData { cfg, err := this.getRtaskChoose() @@ -127,19 +115,3 @@ func (this *configureComp) getRtaskById(taskId int32) (data *cfg.GameRdtaskData) } return nil } - -// 首个任务 -func (this *configureComp) getFirstTask() *cfg.GameRdtaskData { - cfg, err := this.getRtaskCfg() - if err != nil { - return nil - } - if cfg != nil { - for _, v := range cfg.GetDataList() { - if v.NextTid == 0 { - return v - } - } - } - return nil -} diff --git a/modules/rtask/model_rtask.go b/modules/rtask/model_rtask.go index 99d1b31ea..4c88ca270 100644 --- a/modules/rtask/model_rtask.go +++ b/modules/rtask/model_rtask.go @@ -11,6 +11,7 @@ import ( "go_dreamfactory/utils" "github.com/spf13/cast" + "go.mongodb.org/mongo-driver/bson/primitive" "go.mongodb.org/mongo-driver/mongo" ) @@ -34,6 +35,8 @@ func (this *ModelRtask) GetRtask(uid string) *pb.DBRtask { err := this.Get(uid, rtask) if err != nil { if err == redis.RedisNil || err == mongo.ErrNoDocuments { + _id := primitive.NewObjectID().Hex() + rtask.Id = _id if err := this.Add(uid, rtask); err != nil { return nil } @@ -42,14 +45,6 @@ func (this *ModelRtask) GetRtask(uid string) *pb.DBRtask { return rtask } -func (this *ModelRtask) setNextTask(uid string, rtaskId int32) error { - update := map[string]interface{}{ - "nextRtaskId": rtaskId, - } - - return this.Change(uid, update) -} - // 做任务之前的校验 func (this *ModelRtask) checkHandle(uid string, frtaskIds []int32, conf *cfg.GameRdtaskData) (code pb.ErrorCode, ok bool) { //判断前置任务状态 diff --git a/modules/rtask/module.go b/modules/rtask/module.go index 0dc8b3462..6cb0b9db5 100644 --- a/modules/rtask/module.go +++ b/modules/rtask/module.go @@ -111,76 +111,4 @@ func (this *ModuleRtask) initRtaskHandle() { } } } - - // if data, err := this.configure.getRtaskList(); err == nil { - // for _, v := range data { - // // var handlers []*rtaskCondi - // // rtask := &rtask{ - // // rtaskId: v.Id, - // // handlers: handlers, - // // } - - // //遍历任务的限定条件 - // for _, rtaskTypeId := range v.Condition { - // // 获取每个限定条件配置 - // if typeCfg, err2 := this.configure.getRtaskTypeById(rtaskTypeId); err2 == nil { - // if typeCfg != nil { - // switch comm.TaskType(typeCfg.GetTypeId()) { - // case comm.RtaskTypeHeroTarget: - // this.register(v.Id, &rtaskCondi{ - // cfg: typeCfg, - // fn: this.modelRtask.HeroTarget, - // }) - // case comm.RtaskTypeHeroLvTarget: - // handlers = append(handlers, &rtaskCondi{ - // cfg: typeCfg, - // fn: this.modelRtask.HeroLvTarget, - // }) - // case comm.RtaskTypeHeroStarTarget: - // handlers = append(handlers, &rtaskCondi{ - // cfg: typeCfg, - // fn: this.modelRtask.HeroStarTarget, - // }) - // case comm.RtaskTypeEquipNum: - // handlers = append(handlers, &rtaskCondi{ - // cfg: typeCfg, - // fn: this.modelRtask.EquipNum, - // }) - // case comm.RtaskTypePoltId: - // handlers = append(handlers, &rtaskCondi{ - // cfg: typeCfg, - // fn: this.modelRtask.PoltId, - // }) - // case comm.RtaskTypeTaskDay: - // handlers = append(handlers, &rtaskCondi{ - // cfg: typeCfg, - // fn: this.modelRtask.TaskDay, - // }) - - // default: - // log.Warnf("%v rtask type not configure", typeCfg.GetTypeId()) - // } - // } - // } - // } - - // this.register(v.Id, rtask) - - // } - // } } - -// 通知随机任务 -// func (this *ModuleRtask) SendToRtask(session comm.IUserSession, param *pb.RtaskParam) (code pb.ErrorCode) { -// if taskId, err := this.modelRtask.doRtaskHandle(session.GetUserId(), param); err != nil { -// code = pb.ErrorCode_TaskHandle -// } else { -// if err := session.SendMsg(string(comm.ModuleRtask), "", &pb.RtaskFinishPush{ -// RtaskId: taskId, -// }); err != nil { -// code = pb.ErrorCode_SystemError -// } -// } - -// return -// }