From a6d674cf1edf9f354fb75c1668ef5f5131295c4f Mon Sep 17 00:00:00 2001 From: zhaocy Date: Mon, 18 Jul 2022 13:39:00 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/cmd.go | 1 + cmd/robot/assistant.go | 4 ++- cmd/robot/db.go | 38 +++++++++++++++++++++++ cmd/robot/hero.go | 59 +++++++++++++----------------------- cmd/robot/task.go | 50 +++++++++++++++++------------- modules/task/api_receive.go | 16 ++++++++-- modules/task/model_active.go | 5 ++- pb/proto/errorcode.proto | 1 + 8 files changed, 111 insertions(+), 63 deletions(-) create mode 100644 cmd/robot/db.go diff --git a/cmd/cmd.go b/cmd/cmd.go index d18bbb67b..68dfd101a 100644 --- a/cmd/cmd.go +++ b/cmd/cmd.go @@ -30,6 +30,7 @@ func Execute() { func init() { RootCmd.AddCommand(runCmd) initLog() + robot.InitDb() } var account = flag.String("account", "", "登录账号") diff --git a/cmd/robot/assistant.go b/cmd/robot/assistant.go index 3920422aa..e30b2739c 100644 --- a/cmd/robot/assistant.go +++ b/cmd/robot/assistant.go @@ -6,7 +6,9 @@ package robot // 理这类问题,这个助手可以返回合适的数据,作为输入参数。 type assistant struct { - //TODO } +func NewAssistant() *assistant { + return &assistant{} +} diff --git a/cmd/robot/db.go b/cmd/robot/db.go new file mode 100644 index 000000000..c734c29a6 --- /dev/null +++ b/cmd/robot/db.go @@ -0,0 +1,38 @@ +package robot + +import ( + "context" + "log" + "sync" + + "go.mongodb.org/mongo-driver/mongo" + "go.mongodb.org/mongo-driver/mongo/options" +) + +var dbOnce sync.Once +var mgoCli *mongo.Client +var mgoDb *mongo.Database + +func InitDb() { + dbOnce.Do(func() { + var err error + // Set client options + clientOptions := options.Client().ApplyURI("mongodb://admin:123456@10.0.0.9:27018") + + // Connect to MongoDB + mgoCli, err = mongo.Connect(context.TODO(), clientOptions) + + if err != nil { + log.Fatal(err) + } + + // Check the connection + err = mgoCli.Ping(context.TODO(), nil) + + if err != nil { + log.Fatal(err) + } + + mgoDb = mgoCli.Database("dreamfactory") + }) +} diff --git a/cmd/robot/hero.go b/cmd/robot/hero.go index 460bc5409..41a7f2ec4 100644 --- a/cmd/robot/hero.go +++ b/cmd/robot/hero.go @@ -42,21 +42,7 @@ var ( // r := rsp.(*pb.HeroInfoResp) // fmt.Printf("%v\n", r) // }, - next: func(robot *Robot, rsp proto.Message) { - tcs := []*TestCase{ - { - desc: "觉醒", - mainType: string(comm.ModuleHero), - subType: hero.Awaken, - req: &pb.HeroAwakenReq{ - HeroObjID: heroId, - }, - rsp: &pb.HeroAwakenResp{}, - //enabled: true, - }, - } - robot.addBuilders(tcs) - }, + } tcs = append(tcs, tc) } @@ -104,40 +90,37 @@ var ( }, }, }, - rsp: &pb.HeroStrengthenUpStarResp{}, - enabled: true, + rsp: &pb.HeroStrengthenUpStarResp{}, + // enabled: true, } tcs = append(tcs, tc) - } - robot.addBuilders(tcs) - } - }, - }, { - desc: "英雄列表", - mainType: string(comm.ModuleHero), - subType: hero.HeroSubTypeList, - req: &pb.HeroListReq{}, - rsp: &pb.HeroListResp{}, - enabled: true, - next: func(robot *Robot, rsp proto.Message) { - if r, ok := rsp.(*pb.HeroListResp); ok { - tcs := []*TestCase{} - // selHero := r.List[0] //选中的英雄 - for _, v := range r.List { - heroId := v.Id - tc := &TestCase{ + + tc2 := &TestCase{ desc: "英雄升级", mainType: string(comm.ModuleHero), subType: hero.StrengthenUplv, req: &pb.HeroStrengthenUplvReq{ HeroObjID: heroId, - ExpCardID: "62d124700625e43054ba307d", - Amount: 1, + ExpCards: map[string]int32{ + "62d124700625e43054ba307d": 1, + }, }, rsp: &pb.HeroStrengthenUplvResp{}, enabled: true, } - tcs = append(tcs, tc) + tcs = append(tcs, tc2) + + tc3 := &TestCase{ + desc: "觉醒", + mainType: string(comm.ModuleHero), + subType: hero.Awaken, + req: &pb.HeroAwakenReq{ + HeroObjID: heroId, + }, + rsp: &pb.HeroAwakenResp{}, + //enabled: true, + } + tcs = append(tcs, tc3) } robot.addBuilders(tcs) } diff --git a/cmd/robot/task.go b/cmd/robot/task.go index cf37b7c6f..59976fe8d 100644 --- a/cmd/robot/task.go +++ b/cmd/robot/task.go @@ -1,6 +1,7 @@ package robot import ( + "fmt" "go_dreamfactory/comm" "go_dreamfactory/modules/task" "go_dreamfactory/pb" @@ -15,32 +16,39 @@ var ( mainType: string(comm.ModuleTask), subType: task.TaskSubTypeList, req: &pb.TaskListReq{ - TaskTag: int32(comm.TASK_DAILY), + //设置任务类型 + TaskTag: int32(comm.TASK_DAILY), //每天任务 + // TaskTag: int32(comm.TASK_WEEKLY), //周任务 + // TaskTag: int32(comm.TASK_ACHIEVE), }, rsp: &pb.TaskListResp{}, - // print: func(rsp proto.Message) { - // out := rsp.(*pb.TaskListResp) - // for _, v := range out.List { - // fmt.Printf("%v \n", v) - // } - // }, - // enabled: true, + print: func(rsp proto.Message) { + out := rsp.(*pb.TaskListResp) + for _, v := range out.List { + fmt.Printf("%v \n", v) + } + }, + enabled: true, next: func(robot *Robot, rsp proto.Message) { tcs := []*TestCase{} - if _, ok := rsp.(*pb.TaskListResp); ok { + if v, ok := rsp.(*pb.TaskListResp); ok { + for _, tt := range v.List { + tc := &TestCase{ + desc: "领取任务奖励", + mainType: string(comm.ModuleTask), + subType: task.TaskSubTypeReceive, + req: &pb.TaskReceiveReq{ + TaskTag: int32(comm.TASK_DAILY), + Id: tt.Id, + }, + rsp: &pb.TaskReceiveResp{}, + enabled: true, + } + tcs = append(tcs, tc) + } + robot.addBuilders(tcs) } - robot.addBuilders(tcs) }, - }, { - desc: "领取任务奖励", - mainType: string(comm.ModuleTask), - subType: task.TaskSubTypeReceive, - req: &pb.TaskReceiveReq{ - TaskTag: int32(comm.TASK_DAILY), - Id: "62c5681374c83911207fa265", - }, - rsp: &pb.TaskReceiveResp{}, - // enabled: true, }, { desc: "活跃度", mainType: string(comm.ModuleTask), @@ -55,7 +63,7 @@ var ( mainType: string(comm.ModuleTask), subType: task.TaskSubTypeActiveReceive, req: &pb.TaskActiveReceiveReq{ - Id: "62c676d57deea8b9af8884fb", + Id: "62d4c90c3ccfe7787f317975", TaskTag: int32(comm.TASK_DAILY), }, rsp: &pb.TaskActiveReceiveResp{}, diff --git a/modules/task/api_receive.go b/modules/task/api_receive.go index 6b0b1ba84..b39312e77 100644 --- a/modules/task/api_receive.go +++ b/modules/task/api_receive.go @@ -24,19 +24,31 @@ func (this *apiComp) Receive(session comm.IUserSession, req *pb.TaskReceiveReq) resp := &pb.TaskReceiveResp{} defer func() { - err := session.SendMsg(string(this.moduleTask.GetType()), TaskSubTypeList, resp) + err := session.SendMsg(string(this.moduleTask.GetType()), TaskSubTypeReceive, resp) if err != nil { code = pb.ErrorCode_SystemError } - utils.TraceFunc(session.GetUserId(), string(this.moduleTask.GetType()), TaskSubTypeList, req, resp) + utils.TraceFunc(session.GetUserId(), string(this.moduleTask.GetType()), TaskSubTypeReceive, req, resp) }() userTask := this.moduleTask.modelTask.getUserTask(session.GetUserId(), comm.TaskTag(req.TaskTag), req.Id) if userTask != nil { + //判断是否完成 + if userTask.Status == 0{ + code = pb.ErrorCode_TaskHandle + return + } + //判断任务是否领取 + if userTask.Received == 1 { + code = pb.ErrorCode_TaskReceived + return + } + conf, err := this.moduleTask.configure.getTaskById(userTask.TaskId) if err != nil { log.Errorf("get task config err:%v", err) return } + //奖励 if code = this.moduleTask.CheckConsumeRes(session.GetUserId(), conf.Reword, true); code != pb.ErrorCode_Success { return diff --git a/modules/task/model_active.go b/modules/task/model_active.go index a2a8bf780..b52abb95a 100644 --- a/modules/task/model_active.go +++ b/modules/task/model_active.go @@ -70,7 +70,10 @@ func (this *ModelTaskActive) getUserActive(uid, id string, taskTag comm.TaskTag) return nil } -func (this *ModelTaskActive) updateReceive(uid, id string, taskTag comm.TaskTag, data map[string]interface{}) error { +func (this *ModelTaskActive) updateReceive(uid, id string, taskTag comm.TaskTag, data map[string]interface{}) (err error) { + if len(data) == 0 { + return + } return this.moduleTask.modelTaskActive.ChangeList(swapKey(uid, taskTag), id, data) } diff --git a/pb/proto/errorcode.proto b/pb/proto/errorcode.proto index e9bc637ef..63175fa68 100644 --- a/pb/proto/errorcode.proto +++ b/pb/proto/errorcode.proto @@ -87,4 +87,5 @@ enum ErrorCode { TaskActiveInit = 1606; //初始化活跃度失败 TaskActiveNofound = 1604; //未找到用户活跃度配置 TaskActiveNoenough = 1605; //活跃值未达标 + TaskNoFinished = 1606; //任务未完成 } \ No newline at end of file