diff --git a/bin/json/game_testflow.json b/bin/json/game_testflow.json
new file mode 100644
index 000000000..f17e592c7
--- /dev/null
+++ b/bin/json/game_testflow.json
@@ -0,0 +1,44 @@
+[
+ {
+ "id": 1,
+ "msg": "功能列表",
+ "route": "sys.funclist",
+ "params": "{}"
+ },
+ {
+ "id": 2,
+ "msg": "",
+ "route": "",
+ "params": ""
+ },
+ {
+ "id": 3,
+ "msg": "",
+ "route": "",
+ "params": ""
+ },
+ {
+ "id": 4,
+ "msg": "",
+ "route": "",
+ "params": ""
+ },
+ {
+ "id": 5,
+ "msg": "",
+ "route": "",
+ "params": ""
+ },
+ {
+ "id": 6,
+ "msg": "",
+ "route": "",
+ "params": ""
+ },
+ {
+ "id": 7,
+ "msg": "",
+ "route": "",
+ "params": ""
+ }
+]
\ No newline at end of file
diff --git a/comm/imodule.go b/comm/imodule.go
index 2d178134f..7e8c7b304 100644
--- a/comm/imodule.go
+++ b/comm/imodule.go
@@ -167,12 +167,8 @@ type (
ChangeCondi(uid string, data map[int32]*pb.RtaskData) error
//任务触发
SendToRtask(session IUserSession, rtaskType TaskType, params ...int32) (code pb.ErrorCode)
- // 初始化条件数据
- InitCondiData(uid string) error
// 获取任务条件记录
GetCondiData(uid string) *pb.DBRtaskRecord
- // bingo任务
- BingoRtask(session IUserSession, groupId, rtaskId int32) error
}
//好友
diff --git a/modules/gateway/module.go b/modules/gateway/module.go
index d3b11cba2..4c679fd58 100644
--- a/modules/gateway/module.go
+++ b/modules/gateway/module.go
@@ -62,7 +62,7 @@ func (this *Gateway) Init(service core.IService, module core.IModule, options co
// Start 模块启动函数 注册rpc服务接口提供用户相关的rpc接口服务
func (this *Gateway) Start() (err error) {
- log.Debugf("dddd")
+
_name2Func := map[string]any{
// 注册用户绑定uid接口 登录成功后触发
string(comm.Rpc_GatewayAgentBind): this.agentMgr.Bind,
diff --git a/modules/hero/module.go b/modules/hero/module.go
index 6191b7e06..e333180c3 100644
--- a/modules/hero/module.go
+++ b/modules/hero/module.go
@@ -244,7 +244,7 @@ func (this *Hero) GetSpecifiedHero(session comm.IUserSession, heroConfId string,
//Event-------------------------------------------------------------------------------------------------玩家离线
func (this *Hero) EventUserOffline(session comm.IUserSession) {
err := this.modelHero.RemoveUserHeroInfo(session)
- this.Debugf("EventUserOffline:%s err:%v", session, err)
+ this.Debugf("EventUserOffline:%s err:%v", session.ToString(), err)
}
// 批量创建多个英雄
diff --git a/modules/mgolog/db_comp.go b/modules/mgolog/db_comp.go
index 340b9c5d5..001954bd1 100644
--- a/modules/mgolog/db_comp.go
+++ b/modules/mgolog/db_comp.go
@@ -40,7 +40,7 @@ func (this *DB_Comp) Start() (err error) {
}
func (this *DB_Comp) run() {
- timer := time.NewTicker(time.Second * 2)
+ timer := time.NewTicker(time.Second * 1)
defer timer.Stop()
for {
select {
diff --git a/modules/rtask/api_apply.go b/modules/rtask/api_apply.go
deleted file mode 100644
index 8a53a85d6..000000000
--- a/modules/rtask/api_apply.go
+++ /dev/null
@@ -1,98 +0,0 @@
-package rtask
-
-import (
- "go_dreamfactory/comm"
- "go_dreamfactory/lego/sys/log"
- "go_dreamfactory/pb"
- "go_dreamfactory/utils"
-
- "google.golang.org/protobuf/proto"
-)
-
-// 做任务
-func (this *apiComp) ApplyCheck(session comm.IUserSession, req *pb.RtaskApplyReq) (code pb.ErrorCode) {
- if req.RtaskId == 0 || req.RtaskSubId == 0 {
- code = pb.ErrorCode_ReqParameterError
- }
- return
-}
-
-func (this *apiComp) Apply(session comm.IUserSession, req *pb.RtaskApplyReq) (code pb.ErrorCode, data proto.Message) {
- if code = this.ApplyCheck(session, req); code != pb.ErrorCode_Success {
- return
- }
-
- // 获取当前玩家任务
- rtask := this.moduleRtask.modelRtask.GetRtask(session.GetUserId())
- if rtask == nil {
- code = pb.ErrorCode_RtaskNoRtask
- return
- }
-
- // 获取当前任务配置
- conf := this.moduleRtask.configure.getRtaskById(req.RtaskId)
- if conf == nil {
- code = pb.ErrorCode_ConfigNoFound
- log.Errorf("rdtask %v no found", req.RtaskId)
- return
- }
-
- var (
- frtaskArr *pb.FrtaskIds
- ok bool
- )
-
- // 获取当前组下已完成的任务
- if frtaskArr, ok = rtask.FrtaskIds[conf.Group]; !ok {
- frtaskArr = &pb.FrtaskIds{}
- }
-
- //验证该任务是否已完成
- if _, ok := utils.Findx(frtaskArr.RtaskIds, req.RtaskId); ok {
- code = pb.ErrorCode_RtaskFinished
- return
- }
-
- sideConf := this.moduleRtask.configure.getRtaskSidById(req.RtaskSubId)
- if sideConf == nil {
- code = pb.ErrorCode_ConfigNoFound
- log.Errorf("rdtask_side %v no found", req.RtaskSubId)
- return
- }
-
- if len(sideConf.EndTid) == 0 {
- code = pb.ErrorCode_ConfigurationException
- return
- }
-
- // 没有设置选项,表示任务完成
- if sideConf.EndTid[0] == -1 && len(sideConf.ChooseId) == 0 {
- frtaskArr.RtaskIds = append(frtaskArr.RtaskIds, req.RtaskId)
- if rtask.FrtaskIds == nil {
- rtask.FrtaskIds = make(map[int32]*pb.FrtaskIds)
- }
- rtask.FrtaskIds[conf.Group] = frtaskArr
-
- update := map[string]interface{}{
- "frtaskIds": rtask.FrtaskIds,
- }
-
- if err := this.moduleRtask.modelRtask.Change(session.GetUserId(), update); err != nil {
- code = pb.ErrorCode_SystemError
- return
- }
-
- if err := this.moduleRtask.modelRtask.updateUserRtaskId(session.GetUserId(), req.RtaskId); err != nil {
- this.moduleRtask.Errorf("update rtaskId err: %v", err)
- }
-
- }
-
-
- if err := session.SendMsg(string(this.moduleRtask.GetType()), RtaskSubTypeApply, &pb.RtaskApplyResp{
- RtaskId: req.RtaskId,
- }); err != nil {
- code = pb.ErrorCode_SystemError
- }
- return
-}
diff --git a/modules/rtask/api_battlefinish.go b/modules/rtask/api_battlefinish.go
deleted file mode 100644
index beea13896..000000000
--- a/modules/rtask/api_battlefinish.go
+++ /dev/null
@@ -1,123 +0,0 @@
-package rtask
-
-import (
- "go_dreamfactory/comm"
- "go_dreamfactory/pb"
- "go_dreamfactory/utils"
-
- "google.golang.org/protobuf/proto"
-)
-
-func (this *apiComp) BattleFinishCheck(session comm.IUserSession, req *pb.RtaskBattleFinishReq) (code pb.ErrorCode) {
- if req.RtaskId == 0 || req.RtaskSubId == 0 {
- code = pb.ErrorCode_ReqParameterError
- }
- return
-}
-
-func (this *apiComp) BattleFinish(session comm.IUserSession, req *pb.RtaskBattleFinishReq) (code pb.ErrorCode, data proto.Message) {
- if code = this.BattleFinishCheck(session, req); code != pb.ErrorCode_Success {
- return
- }
-
- this.moduleRtask.Debugf("随机任务请求 rtaskID:%v 完成 subtaskID:%v chooseID:%v", req.RtaskId, req.RtaskSubId, req.ChooseId)
-
- // 获取当前任务配置
- conf := this.moduleRtask.configure.getRtaskById(req.RtaskId)
- if conf == nil {
- code = pb.ErrorCode_ConfigNoFound
- return
- }
-
- // 获取支线任务配置
- sideConf := this.moduleRtask.configure.getRtaskSidById(req.RtaskSubId)
- if sideConf == nil {
- code = pb.ErrorCode_ConfigNoFound
- return
- }
-
- // 获取玩家的任务
- rtask := &pb.DBRtask{}
- if err := this.moduleRtask.modelRtask.Get(session.GetUserId(), rtask); err != nil {
- return
- }
-
- var (
- frtaskArr *pb.FrtaskIds //完成的任务
- ok bool
- )
-
- // 查找任务组
- if frtaskArr, ok = rtask.FrtaskIds[conf.Group]; !ok {
- frtaskArr = &pb.FrtaskIds{}
- }
-
- //验证该任务是否已完成
- if _, ok := utils.Findx(frtaskArr.RtaskIds, req.RtaskId); ok {
- code = pb.ErrorCode_RtaskFinished
- return
- }
-
- // 校验完成条件
- var checkCondi bool
- for _, v := range sideConf.EndTid {
- if err, ok := this.moduleRtask.modelRtask.checkCondi(session.GetUserId(), v); !ok {
- if err != nil {
- this.moduleRtask.Errorln(err.Error())
- }
- this.moduleRtask.Debugf("条件未达成 condiID:%v rtaskId:%v subRtaskId:%v chooseID:%v", v, req.RtaskId, req.RtaskSubId, req.ChooseId)
- break
- }
- checkCondi = true
- }
-
- if !checkCondi {
- code = pb.ErrorCode_RtaskCondiNoReach
- return
- }
-
- // 更新完成的任务
- frtaskArr.RtaskIds = append(frtaskArr.RtaskIds, req.RtaskId)
- if rtask.FrtaskIds == nil {
- rtask.FrtaskIds = make(map[int32]*pb.FrtaskIds)
- }
- rtask.FrtaskIds[conf.Group] = frtaskArr
-
- update := map[string]interface{}{
- "frtaskIds": rtask.FrtaskIds,
- }
- if err := this.moduleRtask.modelRtask.Change(session.GetUserId(), update); err != nil {
- code = pb.ErrorCode_SystemError
- return
- }
-
- // userexpand update
- if err := this.moduleRtask.modelRtask.updateUserRtaskId(session.GetUserId(), req.RtaskId); err != nil {
- this.moduleRtask.Errorf("update user rtaskId err %v", err)
- }
-
- // 发奖
- for _, v := range sideConf.Reward {
- if v.ChooseId == req.ChooseId {
- this.moduleRtask.DispenseRes(session, v.Reward, true)
- }
- }
-
- if err := session.SendMsg(string(this.moduleRtask.GetType()), RtaskSubTypeBattleFinish,
- &pb.RtaskBattleFinishResp{
- RtaskId: req.RtaskId,
- RtaskSubId: req.RtaskSubId,
- }); err != nil {
- code = pb.ErrorCode_SystemError
- }
-
- rsp := &pb.RtaskFinishPush{
- RtaskId: req.RtaskId,
- }
- if err := session.SendMsg(string(this.moduleRtask.GetType()), "finish", rsp); err != nil {
- code = pb.ErrorCode_SystemError
- }
- this.moduleRtask.Debugf("随机任务完成 rtaskID:%v subtaskID:%v chooseID:%v", req.RtaskId, req.RtaskSubId, req.ChooseId)
-
- return
-}
diff --git a/modules/rtask/api_battlestart.go b/modules/rtask/api_battlestart.go
deleted file mode 100644
index 40cffb61e..000000000
--- a/modules/rtask/api_battlestart.go
+++ /dev/null
@@ -1,73 +0,0 @@
-package rtask
-
-import (
- "go_dreamfactory/comm"
- "go_dreamfactory/lego/sys/log"
- "go_dreamfactory/pb"
-
- "google.golang.org/protobuf/proto"
-)
-
-func (this *apiComp) BattleStartCheck(session comm.IUserSession, req *pb.RtaskBattleStartReq) (code pb.ErrorCode) {
- if req.BattleConfId == 0 {
- code = pb.ErrorCode_ReqParameterError
- }
- return
-}
-
-func (this *apiComp) BattleStart(session comm.IUserSession, req *pb.RtaskBattleStartReq) (code pb.ErrorCode, data proto.Message) {
- if code = this.BattleStartCheck(session, req); code != pb.ErrorCode_Success {
- return
- }
-
- battleConf := this.moduleRtask.configure.getRtaskBattleById(req.BattleConfId)
- if battleConf == nil {
- code = pb.ErrorCode_ConfigNoFound
- log.Errorf("rdtask_battle %v no found", req.BattleConfId)
- return
- }
-
- iBattle, err := this.moduleRtask.modelRtask.service.GetModule(comm.ModuleBattle)
- if err != nil {
- code = pb.ErrorCode_SystemError
- return
- }
-
- if b, y := iBattle.(comm.IBattle); y {
- var (
- record *pb.DBBattleRecord
- resp *pb.RtaskBattleStartResp
- )
- code, record = b.CreatePveBattle(session, &pb.BattlePVEReq{
- Ptype: pb.PlayType_rtask,
- Format: &pb.BattleFormation{
- Leadpos: req.Leadpos,
- Format: req.Teamids,
- },
- Mformat: battleConf.FormatList,
- })
-
- if code != pb.ErrorCode_Success {
- return
- }
-
- if record != nil {
- resp = &pb.RtaskBattleStartResp{
- Info: &pb.BattleInfo{
- Id: record.Id,
- Btype: record.Btype,
- Ptype: record.Ptype,
- RedCompId: record.RedCompId,
- Redflist: record.Redflist,
- BlueCompId: record.BlueCompId,
- Buleflist: record.Buleflist,
- },
- }
- }
-
- if err := session.SendMsg(string(this.moduleRtask.GetType()), RtaskSubTypeBattleStart, resp); err != nil {
- code = pb.ErrorCode_SystemError
- }
- }
- return
-}
diff --git a/modules/rtask/api_choose.go b/modules/rtask/api_choose.go
deleted file mode 100644
index 1106752a4..000000000
--- a/modules/rtask/api_choose.go
+++ /dev/null
@@ -1,31 +0,0 @@
-package rtask
-
-import (
- "go_dreamfactory/comm"
- "go_dreamfactory/pb"
-
- "google.golang.org/protobuf/proto"
-)
-
-func (this *apiComp) ChooseCheck(session comm.IUserSession, req *pb.RtaskChooseReq) (code pb.ErrorCode) {
- if req.ChooseId == 0 || req.RtaskId == 0 {
- code = pb.ErrorCode_ReqParameterError
- }
- return
-}
-
-// Deprecated: Use
-func (this *apiComp) Choose(session comm.IUserSession, req *pb.RtaskChooseReq) (code pb.ErrorCode, data proto.Message) {
- if code = this.ChooseCheck(session, req); code != pb.ErrorCode_Success {
- return
- }
-
- rsp := &pb.RtaskChooseResp{
- RtaskId: req.RtaskId,
- ChooseId: req.ChooseId,
- }
- if err := session.SendMsg(string(this.moduleRtask.GetType()), RtaskSubTypeChoose, rsp); err != nil {
- code = pb.ErrorCode_SystemError
- }
- return
-}
diff --git a/modules/rtask/api_list.go b/modules/rtask/api_list.go
deleted file mode 100644
index 883e77bb6..000000000
--- a/modules/rtask/api_list.go
+++ /dev/null
@@ -1,39 +0,0 @@
-package rtask
-
-import (
- "go_dreamfactory/comm"
- "go_dreamfactory/pb"
-
- "google.golang.org/protobuf/proto"
-)
-
-func (this *apiComp) ListCheck(session comm.IUserSession, req *pb.RtasklistReq) (code pb.ErrorCode) {
- return
-}
-
-func (this *apiComp) List(session comm.IUserSession, req *pb.RtasklistReq) (code pb.ErrorCode, data proto.Message) {
- // 获取当前玩家随机任务
- rtask := this.moduleRtask.modelRtask.GetRtask(session.GetUserId())
- if rtask == nil {
- code = pb.ErrorCode_RtaskNoRtask
- return
- }
-
- ids := make([]int32, 0)
-
- // 查询分组ID对应的任务
- if v, ok := rtask.FrtaskIds[req.GroupId]; ok {
- ids = v.RtaskIds
- }
-
- rsp := &pb.RtasklistResp{
- RtaskIds: ids,
- GroupId: req.GroupId,
- }
-
- if err := session.SendMsg(string(this.moduleRtask.GetType()), RtaskSubTypeList, rsp); err != nil {
- code = pb.ErrorCode_SystemError
- }
-
- return
-}
diff --git a/modules/rtask/api_reward.go b/modules/rtask/api_reward.go
deleted file mode 100644
index 85845e30c..000000000
--- a/modules/rtask/api_reward.go
+++ /dev/null
@@ -1,71 +0,0 @@
-package rtask
-
-import (
- "go_dreamfactory/comm"
- "go_dreamfactory/pb"
-
- "google.golang.org/protobuf/proto"
-)
-
-func (this *apiComp) GetRewardCheck(session comm.IUserSession, req *pb.RtaskGetRewardReq) (code pb.ErrorCode) {
- if req.RtaskId == 0 {
- code = pb.ErrorCode_ReqParameterError
- }
- return
-}
-
-func (this *apiComp) GetReward(session comm.IUserSession, req *pb.RtaskGetRewardReq) (code pb.ErrorCode, data proto.Message) {
- if code = this.GetRewardCheck(session, req); code != pb.ErrorCode_Success {
- return
- }
-
- // 获取支线任务配置
- sideConf := this.moduleRtask.configure.getRtaskSidById(req.RtaskSubId)
- if sideConf == nil {
- code = pb.ErrorCode_ConfigNoFound
- this.moduleRtask.Errorf("uid:%v rdtask_side:%v config no found", session.GetUserId(), req.RtaskSubId)
- return
- }
-
- //校验是否最后一个任务
- if sideConf.NextTid != 0 {
- code = pb.ErrorCode_RtaskNoLastOne
- return
- }
-
- // 获取当前玩家
- rtask := this.moduleRtask.modelRtask.GetRtask(session.GetUserId())
- if rtask == nil {
- code = pb.ErrorCode_RtaskNoRtask
- return
- }
-
- // 是否已领取奖励
- if rtask.IsReward {
- code = pb.ErrorCode_RtaskRewarded
- return
- }
-
- //发奖励
- for _, v := range sideConf.Reward {
- code = this.moduleRtask.DispenseRes(session, v.Reward, true)
- this.moduleRtask.Infof("uid:%v 发奖励:%v code:%v", session.GetUserId(), v.Reward, code)
- }
-
- // 更新奖励领取状态
- update := map[string]interface{}{
- "isReward": true,
- }
- if err := this.moduleRtask.modelRtask.Change(session.GetUserId(), update); err != nil {
- code = pb.ErrorCode_SystemError
- return
- }
-
- rsp := &pb.RtaskGetRewardResp{
- RtaskId: req.RtaskId,
- }
- if err := session.SendMsg(string(this.moduleRtask.GetType()), RtaskSubTypeReward, rsp); err != nil {
- code = pb.ErrorCode_SystemError
- }
- return
-}
diff --git a/modules/rtask/config.go b/modules/rtask/config.go
index de0d69b73..68fbf78c3 100644
--- a/modules/rtask/config.go
+++ b/modules/rtask/config.go
@@ -8,11 +8,7 @@ import (
)
const (
- gameRtask = "game_rdtask.json"
- gameRtaskChoose = "game_rdtaskchoose.json"
gameTaskCond = "game_rdtaskcondi.json"
- gameRtaskSide = "game_rdtaskside.json"
- gameRtaskBattle = "game_rdtaskbattle.json"
)
type configureComp struct {
@@ -22,31 +18,11 @@ type configureComp struct {
func (this *configureComp) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
err = this.MCompConfigure.Init(service, module, comp, options)
err = this.LoadMultiConfigure(map[string]interface{}{
- gameRtask: cfg.NewGameRdtask,
- gameRtaskChoose: cfg.NewGameRdtaskChoose,
gameTaskCond: cfg.NewGameRdtaskCondi,
- gameRtaskSide: cfg.NewGameRdtaskSide,
- gameRtaskBattle: cfg.NewGameRdtaskBattle,
})
return
}
-func (this *configureComp) getRtaskCfg() (data *cfg.GameRdtask, err error) {
- var (
- v interface{}
- ok bool
- )
- if v, err = this.GetConfigure(gameRtask); err != nil {
- return
- } else {
- if data, ok = v.(*cfg.GameRdtask); !ok {
- err = fmt.Errorf("%T no is *cfg.GameRdtaskAll", v)
- return
- }
- }
- return
-}
-
func (this *configureComp) getRtaskCondiCfg() (data *cfg.GameRdtaskCondi, err error) {
var (
v interface{}
@@ -63,78 +39,6 @@ func (this *configureComp) getRtaskCondiCfg() (data *cfg.GameRdtaskCondi, err er
return
}
-func (this *configureComp) getRtaskChoose() (data *cfg.GameRdtaskChoose, err error) {
- var (
- v interface{}
- ok bool
- )
- if v, err = this.GetConfigure(gameRtaskChoose); err != nil {
- return
- } else {
- if data, ok = v.(*cfg.GameRdtaskChoose); !ok {
- err = fmt.Errorf("%T is *cfg.getRtaskChoose", v)
- return
- }
- }
- return
-}
-
-func (this *configureComp) getRtaskSide() (data *cfg.GameRdtaskSide, err error) {
- var (
- v interface{}
- ok bool
- )
- if v, err = this.GetConfigure(gameRtaskSide); err != nil {
- return
- } else {
- if data, ok = v.(*cfg.GameRdtaskSide); !ok {
- err = fmt.Errorf("%T is *cfg.GameRdtaskSide", v)
- return
- }
- }
- return
-}
-
-func (this *configureComp) getRtaskBattle() (data *cfg.GameRdtaskBattle, err error) {
- var (
- v interface{}
- ok bool
- )
- if v, err = this.GetConfigure(gameRtaskBattle); err != nil {
- return
- } else {
- if data, ok = v.(*cfg.GameRdtaskBattle); !ok {
- err = fmt.Errorf("%T is *cfg.GameRdtaskBattle", v)
- return
- }
- }
- return
-}
-
-// 获取选项配置
-func (this *configureComp) getRtaskChooseCfg(id int32) *cfg.GameRdtaskChooseData {
- cfg, err := this.getRtaskChoose()
- if err != nil {
- return nil
- }
-
- if data, ok := cfg.GetDataMap()[id]; ok {
- return data
- }
- return nil
-}
-
-func (this *configureComp) getRtaskSidById(id int32) *cfg.GameRdtaskSideData {
- cfg, err := this.getRtaskSide()
- if err != nil {
- return nil
- }
-
- if data, ok := cfg.GetDataMap()[id]; ok {
- return data
- }
- return nil
-}
// 查询任务类型
func (this *configureComp) getRtaskTypeById(typeId int32) (data *cfg.GameRdtaskCondiData, err error) {
@@ -165,30 +69,3 @@ func (this *configureComp) getRtaskCondis(typeId int32) (list []*cfg.GameRdtaskC
return
}
-// 任务
-func (this *configureComp) getRtaskById(taskId int32) (data *cfg.GameRdtaskData) {
- cfg, err := this.getRtaskCfg()
- if err != nil {
- return
- }
- if cfg != nil {
- if data, ok := cfg.GetDataMap()[taskId]; ok {
- return data
- }
- }
- return nil
-}
-
-// 战斗配置
-func (this *configureComp) getRtaskBattleById(id int32) (data *cfg.GameRdtaskBattleData) {
- cfg, err := this.getRtaskBattle()
- if err != nil {
- return
- }
- if cfg != nil {
- if data, ok := cfg.GetDataMap()[id]; ok {
- return data
- }
- }
- return nil
-}
diff --git a/modules/rtask/model_rtask.go b/modules/rtask/model_rtask.go
index 422ebf0ef..7b9be748b 100644
--- a/modules/rtask/model_rtask.go
+++ b/modules/rtask/model_rtask.go
@@ -87,7 +87,12 @@ func (this *ModelRtask) checkCondi(uid string, condiId int32) (err error, ok boo
errors.Errorf("condiID: %v", condiId)
return
}
- if ok, err = condi.verify(uid, condi.cfg); !ok {
+ conf, err:= this.moduleRtask.configure.getRtaskTypeById(condiId)
+ if err!= nil {
+ errors.Errorf("conf not found condiID: %v", condiId)
+ return
+ }
+ if ok, err = condi.verify(uid, conf); !ok {
err = errors.WithMessagef(err, "uid: %v do rtask [condiId:%v] condition not reach", uid, condiId)
return
}
diff --git a/modules/rtask/module.go b/modules/rtask/module.go
index 3a3056e59..8922e9259 100644
--- a/modules/rtask/module.go
+++ b/modules/rtask/module.go
@@ -15,7 +15,6 @@ import (
cfg "go_dreamfactory/sys/configure/structs"
"go_dreamfactory/sys/db"
"go_dreamfactory/utils"
- "sort"
"github.com/pkg/errors"
)
@@ -24,7 +23,7 @@ var _ comm.IRtask = (*ModuleRtask)(nil)
// 限定条件
type rtaskCondi struct {
- cfg *cfg.GameRdtaskCondiData
+ condId int32 //任务条件配置ID
verify verifyHandle //校验任务条件
find condiFindHandle //检索任务条件
update updateDataHandle //更新任务数据
@@ -94,77 +93,66 @@ func (this *ModuleRtask) initRtaskVerifyHandle() {
switch comm.TaskType(typeCfg.Type) {
case comm.Rtype1:
this.registerVerifyHandle(v.Id, &rtaskCondi{
- cfg: typeCfg,
find: this.modelRtaskRecord.equalFirstParam,
verify: this.modelRtask.verfiyRtype1,
update: this.modelRtaskRecord.overrideUpdate,
})
case comm.Rtype2:
this.registerVerifyHandle(v.Id, &rtaskCondi{
- cfg: typeCfg,
find: this.modelRtaskRecord.equalFirstParam,
verify: this.modelRtask.verifyRtype2,
update: this.modelRtaskRecord.overrideUpdate,
})
case comm.Rtype3:
this.registerVerifyHandle(v.Id, &rtaskCondi{
- cfg: typeCfg,
find: this.modelRtaskRecord.equalFirstParam,
verify: this.modelRtask.verifyRtype3,
update: this.modelRtaskRecord.overrideUpdate,
})
case comm.Rtype4:
this.registerVerifyHandle(v.Id, &rtaskCondi{
- cfg: typeCfg,
find: this.modelRtaskRecord.equalFirstParam,
verify: this.modelRtask.verifyRtype4,
update: this.modelRtaskRecord.overrideUpdate,
})
case comm.Rtype5:
this.registerVerifyHandle(v.Id, &rtaskCondi{
- cfg: typeCfg,
find: this.modelRtaskRecord.equalFirstParam,
verify: this.modelRtask.verifyRtype5,
update: this.modelRtaskRecord.overrideUpdate,
})
case comm.Rtype6:
this.registerVerifyHandle(v.Id, &rtaskCondi{
- cfg: typeCfg,
find: this.modelRtaskRecord.equalFirstParam,
verify: this.modelRtask.verifyRtype6,
update: this.modelRtaskRecord.overrideUpdate,
})
case comm.Rtype8:
this.registerVerifyHandle(v.Id, &rtaskCondi{
- cfg: typeCfg,
find: this.modelRtaskRecord.equalFirstParam,
verify: this.modelRtask.verfiyRtype8,
update: this.modelRtaskRecord.overrideUpdate,
})
case comm.Rtype9:
this.registerVerifyHandle(v.Id, &rtaskCondi{
- cfg: typeCfg,
find: this.modelRtaskRecord.equalFirstParam,
verify: this.modelRtask.verfiyRtype9,
update: this.modelRtaskRecord.overrideUpdate,
})
case comm.Rtype10:
this.registerVerifyHandle(v.Id, &rtaskCondi{
- cfg: typeCfg,
find: this.modelRtaskRecord.equalFirstParam,
verify: this.modelRtask.verfiyRtype10,
update: this.modelRtaskRecord.overrideUpdate,
})
case comm.Rtype11, comm.Rtype84, comm.Rtype85:
this.registerVerifyHandle(v.Id, &rtaskCondi{
- cfg: typeCfg,
find: this.modelRtaskRecord.lessEqualFirstParam,
verify: this.modelRtaskRecord.verifyFirstGreatEqualParam,
update: this.modelRtaskRecord.overrideUpdate,
})
case comm.Rtype18:
this.registerVerifyHandle(v.Id, &rtaskCondi{
- cfg: typeCfg,
find: this.modelRtaskRecord.greatEqualFirstParam,
verify: this.modelRtaskRecord.verifyFirstGreatEqualParam,
update: this.modelRtaskRecord.addUpdate,
@@ -177,35 +165,30 @@ func (this *ModuleRtask) initRtaskVerifyHandle() {
comm.Rtype62, comm.Rtype64, comm.Rtype69, comm.Rtype72, comm.Rtype88, comm.Rtype104,
comm.Rtype96, comm.Rtype105, comm.Rtype128, comm.Rtype130, comm.Rtype131:
this.registerVerifyHandle(v.Id, &rtaskCondi{
- cfg: typeCfg,
find: this.modelRtaskRecord.lessEqualFirstParam,
verify: this.modelRtaskRecord.verifyFirstGreatEqualParam,
update: this.modelRtaskRecord.addUpdate,
})
case comm.Rtype20:
this.registerVerifyHandle(v.Id, &rtaskCondi{
- cfg: typeCfg,
find: this.modelRtaskRecord.equalFirstParam,
verify: this.modelRtask.verifyRtype20,
update: this.modelRtaskRecord.overrideUpdate,
})
case comm.Rtype22, comm.Rtype109:
this.registerVerifyHandle(v.Id, &rtaskCondi{
- cfg: typeCfg,
find: this.modelRtaskRecord.equalFirstParam,
verify: this.modelRtaskRecord.verifyFirstEqualParam,
update: this.modelRtaskRecord.overrideUpdate,
})
case comm.Rtype63:
this.registerVerifyHandle(v.Id, &rtaskCondi{
- cfg: typeCfg,
verify: this.modelRtask.verifyRtype63,
})
case comm.Rtype16, comm.Rtype17,
comm.Rtype35, comm.Rtype44,
comm.Rtype59, comm.Rtype61, comm.Rtype70:
this.registerVerifyHandle(v.Id, &rtaskCondi{
- cfg: typeCfg,
find: this.modelRtaskRecord.equalParams,
verify: this.modelRtaskRecord.verifyFromDb,
update: this.modelRtaskRecord.overrideUpdate,
@@ -218,7 +201,6 @@ func (this *ModuleRtask) initRtaskVerifyHandle() {
comm.Rtype52, comm.Rtype55, comm.Rtype56,
comm.Rtype65, comm.Rtype66, comm.Rtype67, comm.Rtype68, comm.Rtype140:
this.registerVerifyHandle(v.Id, &rtaskCondi{
- cfg: typeCfg,
find: this.modelRtaskRecord.lessThanParams,
verify: this.modelRtaskRecord.verifyFromDb,
update: this.modelRtaskRecord.addUpdate,
@@ -255,24 +237,25 @@ func (this *ModuleRtask) SendToRtask(session comm.IUserSession, rtaskType comm.T
condis []*rtaskCondi
)
- for _, codi := range this.configure.getRtaskCondis(int32(rtaskType)) {
- v, ok := this.handleMap[codi.Id]
+ for _, codiConf := range this.configure.getRtaskCondis(int32(rtaskType)) {
+ v, ok := this.handleMap[codiConf.Id]
if !ok {
- this.Warn("未注册事件处理器", log.Fields{"uid": uid, "condiId": codi.Id})
+ this.Warn("未注册事件处理器", log.Fields{"uid": uid, "condiId": codiConf.Id})
code = pb.ErrorCode_RtaskCondiNoFound
return
}
if v.find == nil {
- this.Warn("未设置find Handle", log.Fields{"uid": uid, "condiId": codi.Id})
+ this.Warn("未设置find Handle", log.Fields{"uid": uid, "condiId": codiConf.Id})
return
}
- if condiId, err = v.find(v.cfg, params...); condiId == 0 {
+ if condiId, err = v.find(codiConf, params...); condiId == 0 {
if err != nil {
this.Warnln(errors.WithMessage(err, uid).Error())
}
} else {
+ v.condId = codiConf.Id
condis = append(condis, v)
}
@@ -280,18 +263,25 @@ func (this *ModuleRtask) SendToRtask(session comm.IUserSession, rtaskType comm.T
// update
for _, v := range condis {
+ conf, err:= this.configure.getRtaskTypeById(v.condId)
+ if err!= nil {
+ this.Errorln(err)
+ code = pb.ErrorCode_RtaskCondiNoFound
+ return
+ }
+
if v.update != nil {
- if err := v.update(uid, v.cfg, params...); err != nil {
+ if err := v.update(uid, conf, params...); err != nil {
code = pb.ErrorCode_DBError
}
}
//任务完成则推送
- if code := this.CheckCondi(uid, v.cfg.Id); code == pb.ErrorCode_Success {
+ if code := this.CheckCondi(uid, conf.Id); code == pb.ErrorCode_Success {
module, err := this.service.GetModule(comm.ModuleWorldtask)
if err == nil {
if worldtask, ok := module.(comm.IWorldtask); ok {
- if err := worldtask.TaskcondNotify(session, v.cfg.Id); err != nil {
+ if err := worldtask.TaskcondNotify(session, conf.Id); err != nil {
var customErr = new(comm.CustomError)
if errors.As(err, &customErr) {
notifyErr := &pb.NotifyErrorNotifyPush{
@@ -307,7 +297,7 @@ func (this *ModuleRtask) SendToRtask(session comm.IUserSession, rtaskType comm.T
notifyErr.Code = pb.ErrorCode_UserSessionNobeing
session.SendMsg(string(comm.ModuleWorldtask), "finish", notifyErr)
} else {
- log.Error("任务条件达成通知", log.Fields{"uid": uid, "condId": v.cfg.Id, "err": err.Error()})
+ log.Error("任务条件达成通知", log.Fields{"uid": uid, "condId": conf.Id, "err": err.Error()})
}
}
}
@@ -335,75 +325,11 @@ func (this *ModuleRtask) RemoveCondi(uid string, condiId int32) (err error) {
return
}
-// 初始化任务条件数据
-// Deprecated
-func (this *ModuleRtask) InitCondiData(uid string) error {
- return this.modelRtaskRecord.initCondiData(uid)
-}
-
// 获取玩家任务条件记录
func (this *ModuleRtask) GetCondiData(uid string) *pb.DBRtaskRecord {
return this.modelRtaskRecord.getRecord(uid)
}
-// Bingo命令更新随机任务
-func (this *ModuleRtask) BingoRtask(session comm.IUserSession, groupId, rtaskId int32) error {
- rtask := &pb.DBRtask{}
- if err := this.modelRtask.Get(session.GetUserId(), rtask); err != nil {
- return err
- }
-
- var (
- frtaskArr *pb.FrtaskIds //完成的任务
- ok bool
- )
-
- // 查找任务组
- if frtaskArr, ok = rtask.FrtaskIds[groupId]; !ok {
- frtaskArr = &pb.FrtaskIds{}
- }
-
- gr, err := this.configure.getRtaskCfg()
- if err != nil {
- return err
- }
-
- var rgs []*cfg.GameRdtaskData
- for _, v := range gr.GetDataList() {
- if v.Group == groupId {
- rgs = append(rgs, v)
- }
- }
- sort.SliceStable(rgs, func(i, j int) bool {
- return rgs[i].Id < rgs[j].Id
- })
-
- for _, v := range rgs {
- if v.Id <= rtaskId {
- if _, ok := utils.Findx(frtaskArr.RtaskIds, v.Id); !ok {
- frtaskArr.RtaskIds = append(frtaskArr.RtaskIds, v.Id)
- }
- }
- }
-
- if rtask.FrtaskIds == nil {
- rtask.FrtaskIds = make(map[int32]*pb.FrtaskIds)
- }
- rtask.FrtaskIds[groupId] = frtaskArr
- update := map[string]interface{}{
- "frtaskIds": rtask.FrtaskIds,
- }
- if err := this.modelRtask.Change(session.GetUserId(), update); err != nil {
- return err
- }
-
- if err := session.SendMsg(string(this.GetType()), "finishids",
- &pb.RtaskFinishIdsPush{RtaskId: frtaskArr.RtaskIds, GroupId: groupId}); err != nil {
- return err
- }
- return nil
-}
-
// 远程条件校验
func (this *ModuleRtask) RemoteCheckCondi(uid string, condiId int32, rsp *pb.DBRtaskRecord) error {
if rsp == nil {
diff --git a/modules/task/model_active.go b/modules/task/model_active.go
index 046c9bb15..d51a450e4 100644
--- a/modules/task/model_active.go
+++ b/modules/task/model_active.go
@@ -7,6 +7,8 @@ import (
"go_dreamfactory/pb"
"go.mongodb.org/mongo-driver/bson/primitive"
+ "go.mongodb.org/mongo-driver/mongo"
+ "go.mongodb.org/mongo-driver/x/bsonx"
)
type ModelTaskActive struct {
@@ -18,6 +20,10 @@ func (this *ModelTaskActive) Init(service core.IService, module core.IModule, co
this.TableName = comm.TableTaskActive
err = this.MCompModel.Init(service, module, comp, options)
this.moduleTask = module.(*ModuleTask)
+ // 加索引
+ this.DB.CreateIndex(core.SqlTable(this.TableName), mongo.IndexModel{
+ Keys: bsonx.Doc{{Key: "uid", Value: bsonx.Int32(1)}},
+ })
return
}
@@ -62,7 +68,7 @@ func (this *ModelTaskActive) noReceiveTaskActive(uid string, taskTag comm.TaskTa
list := []*pb.DBTaskActive{}
if err := this.GetList(uid, &list); err != nil {
this.moduleTask.Errorf("getUserActiveList err:%v", err)
- return false,err
+ return false, err
}
for _, v := range list {
if v.Tag == int32(taskTag) && v.Received == 0 {
diff --git a/modules/task/model_task.go b/modules/task/model_task.go
index a335ad27a..04a86248d 100644
--- a/modules/task/model_task.go
+++ b/modules/task/model_task.go
@@ -12,6 +12,8 @@ import (
"github.com/pkg/errors"
"go.mongodb.org/mongo-driver/bson/primitive"
+ "go.mongodb.org/mongo-driver/mongo"
+ "go.mongodb.org/mongo-driver/x/bsonx"
)
type ModelTask struct {
@@ -26,6 +28,9 @@ func (this *ModelTask) Init(service core.IService, module core.IModule, comp cor
this.moduleTask = module.(*ModuleTask)
this.EventApp = event_v2.NewApp()
this.EventApp.Listen(comm.EventTaskChanged, this.doTaskHandle)
+ this.DB.CreateIndex(core.SqlTable(this.TableName), mongo.IndexModel{
+ Keys: bsonx.Doc{{Key: "uid", Value: bsonx.Int32(1)}},
+ })
return
}
diff --git a/modules/user/model_expand.go b/modules/user/model_expand.go
index bc51df2fa..6b4c7a99e 100644
--- a/modules/user/model_expand.go
+++ b/modules/user/model_expand.go
@@ -10,6 +10,7 @@ import (
"go_dreamfactory/utils"
"go.mongodb.org/mongo-driver/mongo"
+ "go.mongodb.org/mongo-driver/x/bsonx"
)
// 记录一些扩展数据
@@ -22,6 +23,9 @@ func (this *ModelExpand) Init(service core.IService, module core.IModule, comp c
this.TableName = comm.TableUserExpand
err = this.MCompModel.Init(service, module, comp, options)
this.module = module.(*User)
+ this.DB.CreateIndex(core.SqlTable(this.TableName), mongo.IndexModel{
+ Keys: bsonx.Doc{{Key: "uid", Value: bsonx.Int32(1)}},
+ })
return
}
@@ -35,7 +39,7 @@ func (this *ModelExpand) GetUserExpand(uid string) (result *pb.DBUserExpand, err
} else {
if err = model.Get(uid, result); err != nil && mongo.ErrNoDocuments != err {
this.module.Error("Cross Get", log.Fields{"uid": uid})
- return result,err
+ return result, err
}
}
} else {
diff --git a/modules/user/model_setting.go b/modules/user/model_setting.go
index bc12aafd9..28b943d26 100644
--- a/modules/user/model_setting.go
+++ b/modules/user/model_setting.go
@@ -12,6 +12,8 @@ import (
"time"
"github.com/spf13/cast"
+ "go.mongodb.org/mongo-driver/mongo"
+ "go.mongodb.org/mongo-driver/x/bsonx"
)
type ModelSetting struct {
@@ -23,6 +25,9 @@ func (this *ModelSetting) Init(service core.IService, module core.IModule, comp
this.TableName = comm.TableSetting
err = this.MCompModel.Init(service, module, comp, options)
this.module = module.(*User)
+ this.DB.CreateIndex(core.SqlTable(this.TableName), mongo.IndexModel{
+ Keys: bsonx.Doc{{Key: "uid", Value: bsonx.Int32(1)}},
+ })
return
}
diff --git a/modules/user/model_sign.go b/modules/user/model_sign.go
index 15d462c76..96cd180af 100644
--- a/modules/user/model_sign.go
+++ b/modules/user/model_sign.go
@@ -11,6 +11,7 @@ import (
"go.mongodb.org/mongo-driver/bson/primitive"
"go.mongodb.org/mongo-driver/mongo"
+ "go.mongodb.org/mongo-driver/x/bsonx"
)
// 签到
@@ -23,6 +24,9 @@ func (this *ModelSign) Init(service core.IService, module core.IModule, comp cor
this.TableName = comm.TableSign
err = this.MCompModel.Init(service, module, comp, options)
this.module = module.(*User)
+ this.DB.CreateIndex(core.SqlTable(this.TableName), mongo.IndexModel{
+ Keys: bsonx.Doc{{Key: "uid", Value: bsonx.Int32(1)}},
+ })
return
}
diff --git a/modules/user/model_user.go b/modules/user/model_user.go
index cf145d411..e8a19e91c 100644
--- a/modules/user/model_user.go
+++ b/modules/user/model_user.go
@@ -17,6 +17,7 @@ import (
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/bson/primitive"
"go.mongodb.org/mongo-driver/mongo"
+ "go.mongodb.org/mongo-driver/x/bsonx"
)
type ModelUser struct {
@@ -32,6 +33,14 @@ func (this *ModelUser) Init(service core.IService, module core.IModule, comp cor
this.EventApp = event_v2.NewApp()
this.EventApp.Listen(comm.EventUserChanged, this.ChangeExp)
this.EventApp.Listen(comm.EventUserChanged, this.ChangeLevel)
+ // 通过uid创建索引
+ this.DB.CreateIndex(core.SqlTable(this.TableName), mongo.IndexModel{
+ Keys: bsonx.Doc{{Key: "uid", Value: bsonx.Int32(1)}},
+ })
+
+ this.DB.CreateIndex(core.SqlTable(this.TableName), mongo.IndexModel{
+ Keys: bsonx.Doc{{Key: "name", Value: bsonx.Int32(1)}},
+ })
return
}
@@ -113,7 +122,7 @@ func (this *ModelUser) updateUserAttr(uid string, data map[string]interface{}) e
func (this *ModelUser) isLoginFirst(timestamp int64) bool {
now := configure.Now()
if timestamp == 0 || timestamp > now.Unix() {
- this.module.Debugf("lastlogin time great now")
+ //this.module.Debugf("lastlogin time great now")
return false
}
tt := time.Unix(timestamp, 0)
diff --git a/stress/robot/robot.go b/stress/robot/robot.go
index 3b61fb6c3..6d3a04f8e 100644
--- a/stress/robot/robot.go
+++ b/stress/robot/robot.go
@@ -2,16 +2,15 @@ package robot
import (
"bytes"
- "crypto/rand"
"encoding/json"
"fmt"
"go_dreamfactory/comm"
+ "go_dreamfactory/pb"
"io"
- "math/big"
+ "math/rand"
"os"
"strconv"
-
- "go_dreamfactory/pb"
+ "time"
"github.com/gorilla/websocket"
"github.com/sirupsen/logrus"
@@ -203,6 +202,13 @@ func (r *Robot) MessageRsp(mainType, subType string) (bool, int64) {
return false, byteLen
}
//fmt.Printf("接收消息=====loginData:%v,userExpand:%v\n", resp.Data, resp.Ex)
+ return true, byteLen
+ } else if msg.MainType == "goutmet" && msg.SubType == "getranduser" {
+ resp := &pb.GourmetGetRandUserResp{}
+ if !comm.ProtoUnmarshal(msg, resp) {
+ return false, byteLen
+ }
+
return true, byteLen
}
return false, byteLen
@@ -235,13 +241,38 @@ func (r *Robot) Login() error {
return nil
}
+func (r Robot) GetRandUser() bool {
+ mainType := "goutmet"
+ subType := "getlist"
+ msg := &pb.UserMessage{MainType: mainType, SubType: subType}
+
+ rsp := &pb.GourmetGetRandUserReq{
+ People: 3,
+ }
+ msg.Sec = r.BuildSecStr()
+ if comm.ProtoMarshal(rsp, msg) {
+ data, _ := proto.Marshal(msg)
+ err := r.ws.WriteMessage(websocket.BinaryMessage, data)
+ if err != nil {
+ fmt.Printf("WriteMessage err:%v", err)
+ }
+ }
+
+ for i := 0; i < 100; i++ {
+ if b, _ := r.MessageRsp(mainType, subType); b {
+ return true
+ }
+ }
+ return true
+}
func (r *Robot) Create() bool {
mainType := "user"
subType := "create"
msg := &pb.UserMessage{MainType: mainType, SubType: subType}
- n2, _ := rand.Int(rand.Reader, big.NewInt(1000000))
+ rand.Seed(time.Now().UnixNano())
+ n2 := rand.Int63n(9000000)
- name := strconv.Itoa(int(n2.Int64() + 100000))
+ name := strconv.Itoa(int(n2) + 100000)
rsp := &pb.UserCreateReq{
NickName: name,
Figure: 100,
@@ -256,10 +287,70 @@ func (r *Robot) Create() bool {
}
}
- for {
+ for i := 0; i < 100; i++ { // 防止丢包
if b, _ := r.MessageRsp(mainType, subType); b {
return true
}
}
-
+ return false
+}
+
+// 获取美食家信息列表数据
+func (r Robot) GetGourmetList() int64 {
+ var byteLen int64
+ mainType := "goutmet"
+ subType := "getranduser"
+ msg := &pb.UserMessage{MainType: mainType, SubType: subType}
+
+ rsp := &pb.GourmetGetRandUserReq{
+ People: 3,
+ }
+ msg.Sec = r.BuildSecStr()
+ if comm.ProtoMarshal(rsp, msg) {
+ data, _ := proto.Marshal(msg)
+ err := r.ws.WriteMessage(websocket.BinaryMessage, data)
+ if err != nil {
+ fmt.Printf("WriteMessage err:%v", err)
+ }
+ }
+
+ for i := 0; i < 100; i++ {
+ var msg *pb.UserMessage = &pb.UserMessage{}
+ _, data, err := r.ws.ReadMessage()
+ if err != nil {
+ fmt.Printf("readMessage err:%v", err)
+ continue
+ }
+ byteLen += int64(len(data))
+ if err = proto.Unmarshal(data, msg); err != nil {
+ fmt.Printf("unmarshal err:%v", err)
+ }
+ if msg.MainType == "goutmet" && msg.SubType == "getlist" {
+ resp := &pb.GourmetGetListResp{}
+ if !comm.ProtoUnmarshal(msg, resp) { //反序列化失败
+ break
+ }
+ break
+ }
+ }
+ return byteLen
+}
+
+// addItem
+func (r Robot) AddGrormetItem() {
+ mainType := "gm"
+ subType := "cmd"
+ msg := &pb.UserMessage{MainType: mainType, SubType: subType}
+
+ rsp := &pb.GMCmdReq{
+ Cmod: "bingo:item,50001,100",
+ }
+ msg.Sec = r.BuildSecStr()
+ if comm.ProtoMarshal(rsp, msg) {
+ data, _ := proto.Marshal(msg)
+ err := r.ws.WriteMessage(websocket.BinaryMessage, data)
+ if err != nil {
+ fmt.Printf("WriteMessage err:%v", err)
+ }
+ }
}
diff --git a/stress/server/golink/websocket_link.go b/stress/server/golink/websocket_link.go
index 26fe27e5c..a06f86093 100644
--- a/stress/server/golink/websocket_link.go
+++ b/stress/server/golink/websocket_link.go
@@ -23,7 +23,7 @@ var (
)
func init() {
- keepAlive = true
+ keepAlive = false
}
// WebSocket webSocket go link
@@ -61,6 +61,8 @@ end:
// 保持连接
chWaitFor := make(chan int, 0)
<-chWaitFor
+ //time.Sleep(15 * time.Millisecond)
+ //return
}
return
}
@@ -69,7 +71,6 @@ end:
func webSocketRequest(chanID uint64, ch chan<- *model.RequestResults, i uint64, request *model.Request,
r *robot.Robot) {
var (
- startTime = time.Now()
isSucceed = false
errCode = model.HTTPOk
byteLen int64 // 协议传输字节数
@@ -78,16 +79,20 @@ func webSocketRequest(chanID uint64, ch chan<- *model.RequestResults, i uint64,
head := &pb.UserMessage{MainType: "user", SubType: "login"}
r.SendToClient(head, &pb.UserLoginReq{})
- for {
-
- if b, len := r.MessageRsp("user", "login"); b {
- byteLen += len
- isSucceed = true
- //errCode, isSucceed = request.GetVerifyWebSocket()(request, "webSocket.pb", r.GetMessagedata())
- break
- }
- }
- r.Create()
+ // 美食馆增加道具
+ r.AddGrormetItem()
+ // for {
+ // if b, len := r.MessageRsp("user", "login"); b {
+ // byteLen += len
+ // isSucceed = true
+ // //errCode, isSucceed = request.GetVerifyWebSocket()(request, "webSocket.pb", r.GetMessagedata())
+ // break
+ // }
+ // }
+ // r.Create()
+ startTime := time.Now()
+ // r.GetRandUser() // 获取随机在线玩家数据
+ byteLen = r.GetGourmetList()
requestTime := uint64(helper.DiffNano(startTime))
requestResults := &model.RequestResults{
ID: "",
diff --git a/stress/server/statistics/statistics.go b/stress/server/statistics/statistics.go
index 97b092dc5..53ddbfcb3 100644
--- a/stress/server/statistics/statistics.go
+++ b/stress/server/statistics/statistics.go
@@ -52,7 +52,7 @@ func InitLog() {
if err := log.OnInit(op.Setting.Sys["log"]); err != nil {
panic(fmt.Sprintf("Sys log Init err:%v", err))
} else {
- log.Infof("ddddd Sys log Init success !")
+ log.Infof("stress Sys log Init success !")
}
}
@@ -71,6 +71,7 @@ func ReceivingResults(concurrent uint64, ch <-chan *model.RequestResults, wg *sy
requestTime uint64 // 请求总时间
maxTime uint64 // 最大时长
minTime uint64 // 最小时长
+ curTime uint64 // 当前消耗时常
successNum uint64 // 成功处理数,code为0
failureNum uint64 // 处理失败数,code不为0 0
chanIDLen int // 并发数
@@ -90,8 +91,9 @@ func ReceivingResults(concurrent uint64, ch <-chan *model.RequestResults, wg *sy
endTime := uint64(time.Now().UnixNano())
mutex.Lock()
go calculateData(concurrent, processingTime, endTime-statTime, maxTime, minTime, successNum, failureNum,
- chanIDLen, errCode, receivedBytes)
+ chanIDLen, errCode, receivedBytes, curTime)
mutex.Unlock()
+
case <-stopChan:
// 处理完成
return
@@ -102,6 +104,7 @@ func ReceivingResults(concurrent uint64, ch <-chan *model.RequestResults, wg *sy
for data := range ch {
mutex.Lock()
// fmt.Println("处理一条数据", data.ID, data.Time, data.IsSucceed, data.ErrCode)
+ curTime = data.Time
processingTime = processingTime + data.Time
if maxTime <= data.Time {
maxTime = data.Time
@@ -131,22 +134,21 @@ func ReceivingResults(concurrent uint64, ch <-chan *model.RequestResults, wg *sy
}
requestTimeList = append(requestTimeList, data.Time)
mutex.Unlock()
+
}
// 数据全部接受完成,停止定时输出统计数据
stopChan <- true
endTime := uint64(time.Now().UnixNano())
requestTime = endTime - statTime
calculateData(concurrent, processingTime, requestTime, maxTime, minTime, successNum, failureNum, chanIDLen, errCode,
- receivedBytes)
+ receivedBytes, curTime)
log.Infof("\n\n")
log.Infof("************************* 结果 stat ****************************")
- log.Infof("处理协程数量:", concurrent)
+ log.Infof("处理协程数量:%d", concurrent)
// fmt.Println("处理协程数量:", concurrent, "程序处理总时长:", log("%.3f", float64(processingTime/concurrent)/1e9), "秒")
- log.Infof("请求总数(并发数*请求数 -c * -n):", successNum+failureNum, "总请求时间:",
- fmt.Sprintf("%.3f", float64(requestTime)/1e9),
- "秒", "successNum:", successNum, "failureNum:", failureNum)
+ log.Infof(fmt.Sprintf("请求总数(并发数*请求数 -c * -n):%d, 总请求时间:%s,秒, successNum:%d,failureNum:%d", successNum+failureNum, fmt.Sprintf("%.3f", float64(requestTime)/1e9), successNum, failureNum))
printTop(requestTimeList)
log.Infof("************************* 结果 end ****************************")
log.Infof("\n\n")
@@ -160,15 +162,15 @@ func printTop(requestTimeList []uint64) {
all := tools.MyUint64List{}
all = requestTimeList
sort.Sort(all)
- log.Infof("tp90:", fmt.Sprintf("%.3f", float64(all[int(float64(len(all))*0.90)]/1e6)))
- log.Infof("tp95:", fmt.Sprintf("%.3f", float64(all[int(float64(len(all))*0.95)]/1e6)))
- log.Infof("tp99:", fmt.Sprintf("%.3f", float64(all[int(float64(len(all))*0.99)]/1e6)))
+ // log.Infof("tp90:", fmt.Sprintf("%.3f", float64(all[int(float64(len(all))*0.90)]/1e6)))
+ // log.Infof("tp95:", fmt.Sprintf("%.3f", float64(all[int(float64(len(all))*0.95)]/1e6)))
+ // log.Infof("tp99:", fmt.Sprintf("%.3f", float64(all[int(float64(len(all))*0.99)]/1e6)))
}
// calculateData 计算数据
func calculateData(concurrent, processingTime, requestTime, maxTime, minTime, successNum, failureNum uint64,
- chanIDLen int, errCode *sync.Map, receivedBytes int64) {
+ chanIDLen int, errCode *sync.Map, receivedBytes int64, curTime uint64) {
if processingTime == 0 {
processingTime = 1
}
@@ -190,7 +192,7 @@ func calculateData(concurrent, processingTime, requestTime, maxTime, minTime, su
// 纳秒=>毫秒
maxTimeFloat = float64(maxTime) / 1e6
minTimeFloat = float64(minTime) / 1e6
- requestTimeFloat = float64(requestTime) / 1e9
+ requestTimeFloat = float64(curTime) / 1e6 // float64(requestTime) / 1e9
// 打印的时长都为毫秒
table(successNum, failureNum, errCode, qps, averageTime, maxTimeFloat, minTimeFloat, requestTimeFloat, chanIDLen,
receivedBytes)
@@ -200,10 +202,11 @@ func calculateData(concurrent, processingTime, requestTime, maxTime, minTime, su
func header() {
log.Infof("\n\n")
// 打印的时长都为毫秒 总请数
- log.Infof("─────┬───────┬───────┬───────┬────────┬────────┬────────┬────────┬────────┬────────┬────────")
- log.Infof(" 耗时│ 并发数│ 成功数│ 失败数│ qps │最长耗时│最短耗时│平均耗时│下载字节│字节每秒│ 状态码")
- log.Infof("─────┼───────┼───────┼───────┼────────┼────────┼────────┼────────┼────────┼────────┼────────")
+ log.Infof(" ─────┬───────┬───────┬───────┬────────┬────────┬────────┬────────┬────────┬────────┬────────")
+ log.Infof(" 耗时│ 并发数│ 成功数│ 失败数│ qps │最长耗时 │最短耗时│平均耗时│下载字节│字节每秒 │ 状态码")
+ log.Infof(" ─────┼───────┼───────┼───────┼────────┼────────┼────────┼────────┼────────┼────────┼────────")
return
+
}
// table 打印表格
@@ -212,8 +215,8 @@ func table(successNum, failureNum uint64, errCode *sync.Map,
var (
speed int64
)
- if requestTimeFloat > 0 {
- speed = int64(float64(receivedBytes) / requestTimeFloat)
+ if averageTime > 0 {
+ speed = int64(float64(receivedBytes) / averageTime * 1e6 / 8 / 1024)
} else {
speed = 0
}
diff --git a/stress/stress.go b/stress/stress.go
index 3dfa4b5fb..457f9f058 100644
--- a/stress/stress.go
+++ b/stress/stress.go
@@ -9,12 +9,8 @@ import (
"go_dreamfactory/stress/model"
"go_dreamfactory/stress/server"
"go_dreamfactory/stress/server/statistics"
- "io/ioutil"
- "runtime"
"strings"
"time"
-
- "gopkg.in/yaml.v2"
)
// array 自定义数组参数
@@ -77,37 +73,16 @@ type Options struct {
Setting core.ServiceSttings //服务参数配置
}
-func newOptions(path string) *Options {
- options := &Options{}
-
- yamlFile, err := ioutil.ReadFile(path)
- if err != nil {
- panic(fmt.Sprintf("读取服务配置【%s】文件失败err:%v:", options.ConfPath, err))
- }
- err = yaml.Unmarshal(yamlFile, &options.Setting)
- if err != nil {
- panic(fmt.Sprintf("读取服务配置【%s】文件失败err:%v:", options.ConfPath, err))
- }
- return options
-}
-
//go:generate go build main.go
func main() {
- runtime.GOMAXPROCS(cpuNumber)
+ //runtime.GOMAXPROCS(cpuNumber)
flag.Parse()
statistics.InitLog()
- // op := newOptions("./conf/stress_1.yaml")
- // if err := log.OnInit(op.Setting.Sys["log"]); err != nil {
- // panic(fmt.Sprintf("Sys log Init err:%v", err))
- // } else {
- // log.Infof("Sys log Init success !")
- // }
- // log.Debugf("ddddd")
- //go run .\main.go -c 10 -n 10 -u ws://10.0.5.101:7891/gateway
- concurrency = 1
+
+ concurrency = 12
totalNumber = 1
debugStr = "false"
- requestURL = "ws://10.0.0.9:7891/gateway"
+ requestURL = "ws://10.0.0.85:7891/gateway"
verify = "pb"
if concurrency == 0 || totalNumber == 0 || (requestURL == "" && path == "") {
fmt.Printf("示例: go run main.go -c 1 -n 1 -u https://www.baidu.com/ \n")
diff --git a/sys/configure/structs/Game.TestFlow.go b/sys/configure/structs/Game.TestFlow.go
new file mode 100644
index 000000000..b8946f191
--- /dev/null
+++ b/sys/configure/structs/Game.TestFlow.go
@@ -0,0 +1,42 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+package cfg
+
+type GameTestFlow struct {
+ _dataMap map[int32]*GameTestFlowData
+ _dataList []*GameTestFlowData
+}
+
+func NewGameTestFlow(_buf []map[string]interface{}) (*GameTestFlow, error) {
+ _dataList := make([]*GameTestFlowData, 0, len(_buf))
+ dataMap := make(map[int32]*GameTestFlowData)
+ for _, _ele_ := range _buf {
+ if _v, err2 := DeserializeGameTestFlowData(_ele_); err2 != nil {
+ return nil, err2
+ } else {
+ _dataList = append(_dataList, _v)
+ dataMap[_v.Id] = _v
+ }
+ }
+ return &GameTestFlow{_dataList:_dataList, _dataMap:dataMap}, nil
+}
+
+func (table *GameTestFlow) GetDataMap() map[int32]*GameTestFlowData {
+ return table._dataMap
+}
+
+func (table *GameTestFlow) GetDataList() []*GameTestFlowData {
+ return table._dataList
+}
+
+func (table *GameTestFlow) Get(key int32) *GameTestFlowData {
+ return table._dataMap[key]
+}
+
+
diff --git a/sys/configure/structs/Game.TestFlowData.go b/sys/configure/structs/Game.TestFlowData.go
new file mode 100644
index 000000000..c41d92c1a
--- /dev/null
+++ b/sys/configure/structs/Game.TestFlowData.go
@@ -0,0 +1,41 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+package cfg
+
+import "errors"
+
+type GameTestFlowData struct {
+ Id int32
+ Msg string
+ Route string
+ Params string
+}
+
+const TypeId_GameTestFlowData = -1087831770
+
+func (*GameTestFlowData) GetTypeId() int32 {
+ return -1087831770
+}
+
+func (_v *GameTestFlowData)Deserialize(_buf map[string]interface{}) (err error) {
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["id"].(float64); !_ok_ { err = errors.New("id error"); return }; _v.Id = int32(_tempNum_) }
+ { var _ok_ bool; if _v.Msg, _ok_ = _buf["msg"].(string); !_ok_ { err = errors.New("msg error"); return } }
+ { var _ok_ bool; if _v.Route, _ok_ = _buf["route"].(string); !_ok_ { err = errors.New("route error"); return } }
+ { var _ok_ bool; if _v.Params, _ok_ = _buf["params"].(string); !_ok_ { err = errors.New("params error"); return } }
+ return
+}
+
+func DeserializeGameTestFlowData(_buf map[string]interface{}) (*GameTestFlowData, error) {
+ v := &GameTestFlowData{}
+ if err := v.Deserialize(_buf); err == nil {
+ return v, nil
+ } else {
+ return nil, err
+ }
+}
diff --git a/sys/configure/structs/Tables.go b/sys/configure/structs/Tables.go
index 91958249d..ea07ab5ae 100644
--- a/sys/configure/structs/Tables.go
+++ b/sys/configure/structs/Tables.go
@@ -58,17 +58,14 @@ type Tables struct {
Playerlv *GamePlayerlv
Facemod *GameFacemod
Msgdistrib *GameMsgdistrib
+ TestFlow *GameTestFlow
Opencond *GameOpencond
Stroy *GameStroy
Pagoda *GamePagoda
PagodaTaskReward *GamePagodaTaskReward
SeasonLoop *GameSeasonLoop
PagodaSeasonReward *GamePagodaSeasonReward
- Rdtask *GameRdtask
RdtaskCondi *GameRdtaskCondi
- RdtaskChoose *GameRdtaskChoose
- RdtaskSide *GameRdtaskSide
- RdtaskBattle *GameRdtaskBattle
KungfuUnlock *GameKungfuUnlock
KungfuMasterworker *GameKungfuMasterworker
Gourmet *GameGourmet
@@ -135,8 +132,6 @@ type Tables struct {
PrivilegeCard *GamePrivilegeCard
Privilege *GamePrivilege
WorldTask *GameWorldTask
- TaskCond *GameTaskCond
- TaskType *GameTaskType
Teaching *GameTeaching
HeroStrategy *GameHeroStrategy
FightGlobalEvent *GameFightGlobalEvent
@@ -440,6 +435,12 @@ func NewTables(loader JsonLoader) (*Tables, error) {
if tables.Msgdistrib, err = NewGameMsgdistrib(buf) ; err != nil {
return nil, err
}
+ if buf, err = loader("game_testflow") ; err != nil {
+ return nil, err
+ }
+ if tables.TestFlow, err = NewGameTestFlow(buf) ; err != nil {
+ return nil, err
+ }
if buf, err = loader("game_opencond") ; err != nil {
return nil, err
}
@@ -476,36 +477,12 @@ func NewTables(loader JsonLoader) (*Tables, error) {
if tables.PagodaSeasonReward, err = NewGamePagodaSeasonReward(buf) ; err != nil {
return nil, err
}
- if buf, err = loader("game_rdtask") ; err != nil {
- return nil, err
- }
- if tables.Rdtask, err = NewGameRdtask(buf) ; err != nil {
- return nil, err
- }
if buf, err = loader("game_rdtaskcondi") ; err != nil {
return nil, err
}
if tables.RdtaskCondi, err = NewGameRdtaskCondi(buf) ; err != nil {
return nil, err
}
- if buf, err = loader("game_rdtaskchoose") ; err != nil {
- return nil, err
- }
- if tables.RdtaskChoose, err = NewGameRdtaskChoose(buf) ; err != nil {
- return nil, err
- }
- if buf, err = loader("game_rdtaskside") ; err != nil {
- return nil, err
- }
- if tables.RdtaskSide, err = NewGameRdtaskSide(buf) ; err != nil {
- return nil, err
- }
- if buf, err = loader("game_rdtaskbattle") ; err != nil {
- return nil, err
- }
- if tables.RdtaskBattle, err = NewGameRdtaskBattle(buf) ; err != nil {
- return nil, err
- }
if buf, err = loader("game_kungfuunlock") ; err != nil {
return nil, err
}
@@ -902,18 +879,6 @@ func NewTables(loader JsonLoader) (*Tables, error) {
if tables.WorldTask, err = NewGameWorldTask(buf) ; err != nil {
return nil, err
}
- if buf, err = loader("game_taskcond") ; err != nil {
- return nil, err
- }
- if tables.TaskCond, err = NewGameTaskCond(buf) ; err != nil {
- return nil, err
- }
- if buf, err = loader("game_tasktype") ; err != nil {
- return nil, err
- }
- if tables.TaskType, err = NewGameTaskType(buf) ; err != nil {
- return nil, err
- }
if buf, err = loader("game_teaching") ; err != nil {
return nil, err
}