更新随机任务

This commit is contained in:
wh_zcy 2022-08-24 09:42:33 +08:00
parent 0aa9bc9f66
commit cf19393862
10 changed files with 36 additions and 124 deletions

View File

@ -103,7 +103,7 @@ func logLifecycle(a fyne.App) {
}
func setupPtt() (err error) {
pttService = service.NewPttService(connService)
pttService = service.NewPttService(connService, obs)
return
}

View File

@ -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 {

View File

@ -12,4 +12,6 @@ const (
EVENT_REQ_RSP Event = "response"
// 清空 ui数据事件
EVENT_UI_CLEAN Event = "uiclean"
// 请求响应计时
EVENT_RST = "ctime"
)

View File

@ -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
}

View File

@ -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,

View File

@ -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
}

View File

@ -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

View File

@ -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
}

View File

@ -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) {
//判断前置任务状态

View File

@ -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
// }