更新随机任务
This commit is contained in:
parent
0aa9bc9f66
commit
cf19393862
@ -103,7 +103,7 @@ func logLifecycle(a fyne.App) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func setupPtt() (err error) {
|
func setupPtt() (err error) {
|
||||||
pttService = service.NewPttService(connService)
|
pttService = service.NewPttService(connService, obs)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,7 +80,7 @@ func (c *ConnServiceImpl) HttpConnect(url string) ([]byte, error) {
|
|||||||
func (c *ConnServiceImpl) ListenerPush() {
|
func (c *ConnServiceImpl) ListenerPush() {
|
||||||
go func() {
|
go func() {
|
||||||
for {
|
for {
|
||||||
time.Sleep(time.Millisecond * 200)
|
// time.Sleep(time.Millisecond * 200)
|
||||||
msg := &pb.UserMessage{}
|
msg := &pb.UserMessage{}
|
||||||
_, data, err := c.ws.ReadMessage()
|
_, data, err := c.ws.ReadMessage()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -12,4 +12,6 @@ const (
|
|||||||
EVENT_REQ_RSP Event = "response"
|
EVENT_REQ_RSP Event = "response"
|
||||||
// 清空 ui数据事件
|
// 清空 ui数据事件
|
||||||
EVENT_UI_CLEAN Event = "uiclean"
|
EVENT_UI_CLEAN Event = "uiclean"
|
||||||
|
// 请求响应计时
|
||||||
|
EVENT_RST = "ctime"
|
||||||
)
|
)
|
||||||
|
@ -2,9 +2,11 @@ package service
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"go_dreamfactory/cmd/v2/lib/common"
|
"go_dreamfactory/cmd/v2/lib/common"
|
||||||
|
"go_dreamfactory/cmd/v2/service/observer"
|
||||||
"go_dreamfactory/comm"
|
"go_dreamfactory/comm"
|
||||||
"go_dreamfactory/modules/user"
|
"go_dreamfactory/modules/user"
|
||||||
"go_dreamfactory/pb"
|
"go_dreamfactory/pb"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
"google.golang.org/protobuf/proto"
|
"google.golang.org/protobuf/proto"
|
||||||
@ -25,6 +27,7 @@ type PttService interface {
|
|||||||
type PttServiceImpl struct {
|
type PttServiceImpl struct {
|
||||||
connService ConnService
|
connService ConnService
|
||||||
user *UserInfo
|
user *UserInfo
|
||||||
|
obs observer.Observer
|
||||||
}
|
}
|
||||||
|
|
||||||
type UserInfo struct {
|
type UserInfo struct {
|
||||||
@ -32,9 +35,10 @@ type UserInfo struct {
|
|||||||
DbUserExpand *pb.DBUserExpand
|
DbUserExpand *pb.DBUserExpand
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewPttService(connService ConnService) PttService {
|
func NewPttService(connService ConnService, obs observer.Observer) PttService {
|
||||||
ptt = &PttServiceImpl{
|
ptt = &PttServiceImpl{
|
||||||
connService: connService,
|
connService: connService,
|
||||||
|
obs: obs,
|
||||||
}
|
}
|
||||||
return ptt
|
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) {
|
func (p *PttServiceImpl) SendToClient(mainType, subType string, rsp proto.Message) (err error) {
|
||||||
msg := &pb.UserMessage{MainType: mainType, SubType: subType}
|
msg := &pb.UserMessage{MainType: mainType, SubType: subType}
|
||||||
msg.Sec = common.BuildSecStr(p.user.DbUser.Sid, p.user.DbUser.Binduid)
|
msg.Sec = common.BuildSecStr(p.user.DbUser.Sid, p.user.DbUser.Binduid)
|
||||||
|
now := time.Now()
|
||||||
if err = p.connService.SendMsg(msg, rsp); err != nil {
|
if err = p.connService.SendMsg(msg, rsp); err != nil {
|
||||||
logrus.WithField("err", err).Error(err)
|
logrus.WithField("err", err).Error(err)
|
||||||
}
|
}
|
||||||
|
p.obs.Notify(observer.EVENT_RST, now)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,6 +6,7 @@ import (
|
|||||||
"go_dreamfactory/cmd/v2/model"
|
"go_dreamfactory/cmd/v2/model"
|
||||||
"go_dreamfactory/cmd/v2/service/observer"
|
"go_dreamfactory/cmd/v2/service/observer"
|
||||||
"go_dreamfactory/pb"
|
"go_dreamfactory/pb"
|
||||||
|
"time"
|
||||||
|
|
||||||
"fyne.io/fyne/v2"
|
"fyne.io/fyne/v2"
|
||||||
"fyne.io/fyne/v2/container"
|
"fyne.io/fyne/v2/container"
|
||||||
@ -44,8 +45,10 @@ func (a *appTester) LazyInit(obs observer.Observer) error {
|
|||||||
content.Objects = []fyne.CanvasObject{}
|
content.Objects = []fyne.CanvasObject{}
|
||||||
|
|
||||||
if view, ok := viewRegister[viewKey]; ok {
|
if view, ok := viewRegister[viewKey]; ok {
|
||||||
|
timeLbl := widget.NewLabel("time")
|
||||||
view.Init(obs, globalWin.w)
|
view.Init(obs, globalWin.w)
|
||||||
resLog := widget.NewMultiLineEntry()
|
resLog := widget.NewMultiLineEntry()
|
||||||
|
|
||||||
obs.AddListener(observer.EVENT_REQ_RSP, observer.Listener{
|
obs.AddListener(observer.EVENT_REQ_RSP, observer.Listener{
|
||||||
OnNotify: func(data interface{}, args ...interface{}) {
|
OnNotify: func(data interface{}, args ...interface{}) {
|
||||||
if data == nil {
|
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
|
resLog.Wrapping = fyne.TextWrapBreak
|
||||||
formReq := view.CreateView(t)
|
formReq := view.CreateView(t)
|
||||||
// required! Refresh updates the widget
|
// 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() {
|
clearBtn := widget.NewButtonWithIcon(common.APP_TESTCASE_BTN_CLEARLOG, theme.DeleteIcon(), func() {
|
||||||
resLog.SetText("")
|
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(
|
panel := container.NewVSplit(
|
||||||
formCard,
|
formCard,
|
||||||
|
@ -5,7 +5,6 @@ import (
|
|||||||
"go_dreamfactory/pb"
|
"go_dreamfactory/pb"
|
||||||
"go_dreamfactory/utils"
|
"go_dreamfactory/utils"
|
||||||
|
|
||||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
|
||||||
"google.golang.org/protobuf/proto"
|
"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 {
|
if len(conf.ChooseId) == 0 {
|
||||||
frtaskArr.RtaskIds = append(frtaskArr.RtaskIds, req.RtaskId)
|
frtaskArr.RtaskIds = append(frtaskArr.RtaskIds, req.RtaskId)
|
||||||
|
rtask.FrtaskIds[conf.Group] = frtaskArr
|
||||||
|
|
||||||
_id := primitive.NewObjectID().Hex()
|
update := map[string]interface{}{
|
||||||
rtask := &pb.DBRtask{
|
"frtaskIds": rtask.FrtaskIds,
|
||||||
Id: _id,
|
|
||||||
Uid: session.GetUserId(),
|
|
||||||
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
|
code = pb.ErrorCode_SystemError
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20,16 +20,14 @@ func (this *apiComp) List(session comm.IUserSession, req *pb.RtasklistReq) (code
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
var rtaskIds []int32
|
ids := make([]int32, 0)
|
||||||
|
|
||||||
if v, ok := rtask.FrtaskIds[req.GroupId]; ok {
|
if v, ok := rtask.FrtaskIds[req.GroupId]; ok {
|
||||||
for _, id := range v.RtaskIds {
|
ids = v.RtaskIds
|
||||||
rtaskIds = append(rtaskIds, id)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
rsp := &pb.RtasklistResp{
|
rsp := &pb.RtasklistResp{
|
||||||
RtaskIds: rtaskIds,
|
RtaskIds: ids,
|
||||||
}
|
}
|
||||||
if err := session.SendMsg(string(this.moduleRtask.GetType()), RtaskSubTypeList, rsp); err != nil {
|
if err := session.SendMsg(string(this.moduleRtask.GetType()), RtaskSubTypeList, rsp); err != nil {
|
||||||
code = pb.ErrorCode_SystemError
|
code = pb.ErrorCode_SystemError
|
||||||
|
@ -75,18 +75,6 @@ func (this *configureComp) getRtaskChoose() (data *cfg.GameRdtaskChoose, err err
|
|||||||
return
|
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 {
|
func (this *configureComp) getRtaskChooseCfg(id int32) *cfg.GameRdtaskChooseData {
|
||||||
cfg, err := this.getRtaskChoose()
|
cfg, err := this.getRtaskChoose()
|
||||||
@ -127,19 +115,3 @@ func (this *configureComp) getRtaskById(taskId int32) (data *cfg.GameRdtaskData)
|
|||||||
}
|
}
|
||||||
return nil
|
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
|
|
||||||
}
|
|
||||||
|
@ -11,6 +11,7 @@ import (
|
|||||||
"go_dreamfactory/utils"
|
"go_dreamfactory/utils"
|
||||||
|
|
||||||
"github.com/spf13/cast"
|
"github.com/spf13/cast"
|
||||||
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||||
"go.mongodb.org/mongo-driver/mongo"
|
"go.mongodb.org/mongo-driver/mongo"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -34,6 +35,8 @@ func (this *ModelRtask) GetRtask(uid string) *pb.DBRtask {
|
|||||||
err := this.Get(uid, rtask)
|
err := this.Get(uid, rtask)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err == redis.RedisNil || err == mongo.ErrNoDocuments {
|
if err == redis.RedisNil || err == mongo.ErrNoDocuments {
|
||||||
|
_id := primitive.NewObjectID().Hex()
|
||||||
|
rtask.Id = _id
|
||||||
if err := this.Add(uid, rtask); err != nil {
|
if err := this.Add(uid, rtask); err != nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@ -42,14 +45,6 @@ func (this *ModelRtask) GetRtask(uid string) *pb.DBRtask {
|
|||||||
return rtask
|
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) {
|
func (this *ModelRtask) checkHandle(uid string, frtaskIds []int32, conf *cfg.GameRdtaskData) (code pb.ErrorCode, ok bool) {
|
||||||
//判断前置任务状态
|
//判断前置任务状态
|
||||||
|
@ -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
|
|
||||||
// }
|
|
||||||
|
Loading…
Reference in New Issue
Block a user