Merge branch 'dev' of http://git.legu.cc/liwei_3d/go_dreamfactory into dev
This commit is contained in:
commit
163317542a
@ -252,18 +252,6 @@ type (
|
||||
}
|
||||
//任务
|
||||
ITask interface {
|
||||
//初始化 日常/周常/成就
|
||||
InitTaskAll(uid string)
|
||||
// 初始化指定的任务
|
||||
InitTaskByTag(uid string, taskTag TaskTag)
|
||||
//清空任务
|
||||
ResetTask(uid string, taskTag TaskTag)
|
||||
// 清理玩家任务数据
|
||||
CleanData(uid string)
|
||||
// 获取当前任务
|
||||
GetTaskById(uid string, taskTag, taskId int32) *pb.TaskData
|
||||
// 获取已完成的日任务列表
|
||||
GetTaskDayFinished(uid string) []*pb.TaskData
|
||||
///红点
|
||||
IGetReddot
|
||||
}
|
||||
|
@ -21,6 +21,7 @@ func (this *apiComp) Complete(session comm.IUserSession, req *pb.StorylineComple
|
||||
conf *cfg.GameHeroupstoryChapterData
|
||||
award []*pb.UserAssets
|
||||
ok bool
|
||||
iswin bool
|
||||
err error
|
||||
)
|
||||
if errdata = this.CompleteCheck(session, req); errdata != nil {
|
||||
@ -35,6 +36,7 @@ func (this *apiComp) Complete(session comm.IUserSession, req *pb.StorylineComple
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
if info, err = this.module.modeltask.getUserDTasks(session.GetUserId()); err != nil {
|
||||
errdata = &pb.ErrorData{
|
||||
Code: pb.ErrorCode_DBError,
|
||||
@ -44,6 +46,15 @@ func (this *apiComp) Complete(session comm.IUserSession, req *pb.StorylineComple
|
||||
return
|
||||
}
|
||||
|
||||
if item.Level[req.Level] != 0 {
|
||||
errdata = &pb.ErrorData{
|
||||
Code: pb.ErrorCode_ReqParameterError,
|
||||
Title: pb.ErrorCode_ReqParameterError.ToString(),
|
||||
Message: fmt.Sprintf("%d received", req.Level),
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
if item, ok = info.Item[conf.Hero]; !ok {
|
||||
info.Item[conf.Hero] = &pb.DBStorylineItem{
|
||||
Id: conf.Hero,
|
||||
@ -51,14 +62,22 @@ func (this *apiComp) Complete(session comm.IUserSession, req *pb.StorylineComple
|
||||
}
|
||||
item = info.Item[conf.Hero]
|
||||
}
|
||||
|
||||
if item.Level[req.Level] != 0 {
|
||||
if conf.Leveltype == 1 { //剧情关卡
|
||||
item.Level[req.Level] = req.Story
|
||||
} else if conf.Leveltype == 2 { //战斗管卡
|
||||
if errdata, iswin = this.module.battle.CheckBattleReport(session, req.Report); errdata != nil {
|
||||
return
|
||||
}
|
||||
if !iswin {
|
||||
errdata = &pb.ErrorData{
|
||||
Code: pb.ErrorCode_ReqParameterError,
|
||||
Title: pb.ErrorCode_ReqParameterError.ToString(),
|
||||
Message: fmt.Sprintf("%d received", req.Level),
|
||||
Message: "battle no win!",
|
||||
}
|
||||
return
|
||||
}
|
||||
item.Level[req.Level] = 1
|
||||
} else {
|
||||
item.Level[req.Level] = 1
|
||||
}
|
||||
|
||||
if errdata = this.module.DispenseRes(session, conf.Reward, true); errdata != nil {
|
||||
|
@ -24,6 +24,11 @@ func (this *apiComp) ActiveReceiveCheck(session comm.IUserSession, req *pb.TaskA
|
||||
}
|
||||
|
||||
func (this *apiComp) ActiveReceive(session comm.IUserSession, req *pb.TaskActiveReceiveReq) (errdata *pb.ErrorData) {
|
||||
var (
|
||||
active *pb.DBActivity
|
||||
err error
|
||||
)
|
||||
|
||||
if errdata = this.ActiveReceiveCheck(session, req); errdata != nil {
|
||||
return
|
||||
}
|
||||
@ -51,9 +56,16 @@ func (this *apiComp) ActiveReceive(session comm.IUserSession, req *pb.TaskActive
|
||||
var flag bool
|
||||
update := map[string]interface{}{}
|
||||
// 玩家的
|
||||
activeList := this.module.modelTaskActive.getActiveList(uid)
|
||||
if active, err = this.module.modelTaskActive.getActiveList(uid); err != nil {
|
||||
errdata = &pb.ErrorData{
|
||||
Code: pb.ErrorCode_DBError,
|
||||
Title: pb.ErrorCode_DBError.ToString(),
|
||||
Message: err.Error(),
|
||||
}
|
||||
return
|
||||
}
|
||||
// var activityData *pb.ActivityData
|
||||
for _, v := range activeList {
|
||||
for _, v := range active.ActivityList {
|
||||
if v.TaskId == req.Id {
|
||||
if v.Received != 1 {
|
||||
conf := this.module.configure.getTaskActiveById(v.TaskId)
|
||||
@ -96,7 +108,7 @@ func (this *apiComp) ActiveReceive(session comm.IUserSession, req *pb.TaskActive
|
||||
}
|
||||
|
||||
if flag {
|
||||
update["activityList"] = activeList
|
||||
update["activityList"] = active.ActivityList
|
||||
|
||||
if err := this.module.modelTaskActive.Change(session.GetUserId(), update); err != nil {
|
||||
this.module.Errorf("updateReceive err %v", err)
|
||||
|
@ -30,14 +30,19 @@ func (this *apiComp) ReceiveCheck(session comm.IUserSession, req *pb.TaskReceive
|
||||
}
|
||||
|
||||
func (this *apiComp) Receive(session comm.IUserSession, req *pb.TaskReceiveReq) (errdata *pb.ErrorData) {
|
||||
var (
|
||||
userTask *pb.DBTask
|
||||
taskDataList []*pb.TaskData
|
||||
active *pb.DBActivity
|
||||
err error
|
||||
)
|
||||
|
||||
if errdata = this.ReceiveCheck(session, req); errdata != nil {
|
||||
return
|
||||
}
|
||||
uid := session.GetUserId()
|
||||
// 获取待领取的任务
|
||||
userTask := this.module.modelTask.getUserTask(uid, req.Id)
|
||||
|
||||
if userTask == nil {
|
||||
if userTask, err = this.module.modelTask.getUserTask(uid); err != nil {
|
||||
errdata = &pb.ErrorData{
|
||||
Code: pb.ErrorCode_TaskNotFound,
|
||||
Title: pb.ErrorCode_TaskNotFound.ToString(),
|
||||
@ -45,8 +50,6 @@ func (this *apiComp) Receive(session comm.IUserSession, req *pb.TaskReceiveReq)
|
||||
return
|
||||
}
|
||||
|
||||
var taskDataList []*pb.TaskData
|
||||
|
||||
switch req.TaskTag {
|
||||
case int32(comm.TASK_DAILY):
|
||||
taskDataList = userTask.DayList
|
||||
@ -115,10 +118,12 @@ func (this *apiComp) Receive(session comm.IUserSession, req *pb.TaskReceiveReq)
|
||||
// 周任务 自动领取奖励
|
||||
if comm.TaskTag(req.TaskTag) == comm.TASK_WEEKLY {
|
||||
TaskActive := make(map[string]interface{})
|
||||
activeList := this.module.modelTaskActive.getActiveList(uid)
|
||||
if active, err = this.module.modelTaskActive.getActiveList(uid); err != nil {
|
||||
|
||||
}
|
||||
var rewards []*cfg.Gameatn
|
||||
var maxTaskId int32
|
||||
for _, v := range activeList {
|
||||
for _, v := range active.ActivityList {
|
||||
if v.Received != 1 {
|
||||
conf := this.module.configure.getTaskActiveById(v.TaskId)
|
||||
if conf == nil {
|
||||
@ -141,7 +146,7 @@ func (this *apiComp) Receive(session comm.IUserSession, req *pb.TaskReceiveReq)
|
||||
}
|
||||
|
||||
if len(rewards) > 0 {
|
||||
TaskActive["activityList"] = activeList
|
||||
TaskActive["activityList"] = active.ActivityList
|
||||
|
||||
if err := this.module.modelTaskActive.Change(session.GetUserId(), TaskActive); err != nil {
|
||||
this.module.Errorf("updateReceive err %v", err)
|
||||
|
@ -3,6 +3,7 @@ package task
|
||||
import (
|
||||
"go_dreamfactory/comm"
|
||||
"go_dreamfactory/lego/core"
|
||||
"go_dreamfactory/lego/sys/mgo"
|
||||
"go_dreamfactory/modules"
|
||||
"go_dreamfactory/pb"
|
||||
|
||||
@ -13,13 +14,13 @@ import (
|
||||
|
||||
type ModelTaskActive struct {
|
||||
modules.MCompModel
|
||||
moduleTask *ModuleTask
|
||||
module *ModuleTask
|
||||
}
|
||||
|
||||
func (this *ModelTaskActive) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
|
||||
this.TableName = comm.TableTaskActive
|
||||
err = this.MCompModel.Init(service, module, comp, options)
|
||||
this.moduleTask = module.(*ModuleTask)
|
||||
this.module = module.(*ModuleTask)
|
||||
// 加索引
|
||||
this.DB.CreateIndex(core.SqlTable(this.TableName), mongo.IndexModel{
|
||||
Keys: bsonx.Doc{{Key: "uid", Value: bsonx.Int32(1)}},
|
||||
@ -28,55 +29,40 @@ func (this *ModelTaskActive) Init(service core.IService, module core.IModule, co
|
||||
}
|
||||
|
||||
// 初始化活跃度
|
||||
func (this *ModelTaskActive) initActiveReward(uid string, taskTag comm.TaskTag) {
|
||||
task := &pb.DBActivity{}
|
||||
if err := this.Get(uid, task); err != nil {
|
||||
if err == mongo.ErrNoDocuments {
|
||||
objId := primitive.NewObjectID().Hex()
|
||||
task = &pb.DBActivity{
|
||||
Uid: uid,
|
||||
Id: objId,
|
||||
}
|
||||
this.moduleTask.modelTaskActive.Add(uid, task)
|
||||
} else {
|
||||
this.moduleTask.Errorf("getTaskList err %v", err)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
data := this.moduleTask.configure.getTaskActiveByTag(int32(taskTag))
|
||||
|
||||
func (this *ModelTaskActive) initActiveReward(active *pb.DBActivity, taskTag comm.TaskTag) {
|
||||
data := this.module.configure.getTaskActiveByTag(int32(taskTag))
|
||||
for _, conf := range data {
|
||||
ta := &pb.ActivityData{
|
||||
Tag: int32(taskTag),
|
||||
TaskId: conf.Key,
|
||||
}
|
||||
task.ActivityList = append(task.ActivityList, ta)
|
||||
}
|
||||
update := map[string]interface{}{
|
||||
"activityList": task.ActivityList,
|
||||
}
|
||||
if err := this.moduleTask.modelTaskActive.Change(uid, update); err != nil {
|
||||
this.moduleTask.Errorf("uid:%v tag:%v initActivity err %v", uid, err)
|
||||
return
|
||||
active.ActivityList = append(active.ActivityList, ta)
|
||||
}
|
||||
}
|
||||
|
||||
func (this *ModelTaskActive) getActiveList(uid string) (list []*pb.ActivityData) {
|
||||
task := &pb.DBActivity{}
|
||||
if err := this.Get(uid, task); err != nil {
|
||||
this.moduleTask.Errorf("getTaskList err %v", err)
|
||||
func (this *ModelTaskActive) getActiveList(uid string) (active *pb.DBActivity, err error) {
|
||||
active = &pb.DBActivity{}
|
||||
if err = this.Get(uid, active); err != nil && err != mgo.MongodbNil {
|
||||
this.module.Errorf("getTaskList err %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
return task.ActivityList
|
||||
if err == mongo.ErrNoDocuments {
|
||||
objId := primitive.NewObjectID().Hex()
|
||||
active = &pb.DBActivity{
|
||||
Uid: uid,
|
||||
Id: objId,
|
||||
ActivityList: make([]*pb.ActivityData, 0),
|
||||
}
|
||||
err = this.Add(uid, active)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// 获取玩家活跃度列表
|
||||
func (this *ModelTaskActive) getActiveListByTag(uid string, taskTag comm.TaskTag) (list []*pb.ActivityData) {
|
||||
task := &pb.DBActivity{}
|
||||
if err := this.Get(uid, task); err != nil {
|
||||
this.moduleTask.Errorf("getTaskList err %v", err)
|
||||
this.module.Errorf("getTaskList err %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
@ -90,29 +76,19 @@ func (this *ModelTaskActive) getActiveListByTag(uid string, taskTag comm.TaskTag
|
||||
}
|
||||
|
||||
// 查询完成的且未领取的任务 发现未领取返回true
|
||||
func (this *ModelTaskActive) noReceiveTaskActive(uid string, taskTag comm.TaskTag) (bool, error) {
|
||||
// 获取玩家活跃度
|
||||
expand, err := this.moduleTask.ModuleUser.GetUserExpand(uid)
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
task := &pb.DBActivity{}
|
||||
if err := this.Get(uid, task); err != nil {
|
||||
// this.moduleTask.Warnf("getTaskActivityList err %v", err)
|
||||
return false, err
|
||||
}
|
||||
func (this *ModelTaskActive) noReceiveTaskActive(user *pb.DBUserExpand, activityList []*pb.ActivityData, taskTag comm.TaskTag) (bool, error) {
|
||||
|
||||
for _, v := range task.ActivityList {
|
||||
for _, v := range activityList {
|
||||
if v.Tag == int32(taskTag) && v.Received == 0 {
|
||||
conf := this.moduleTask.configure.getTaskActiveById(v.TaskId)
|
||||
if conf != nil && expand != nil {
|
||||
conf := this.module.configure.getTaskActiveById(v.TaskId)
|
||||
if conf != nil && user != nil {
|
||||
switch taskTag {
|
||||
case comm.TASK_DAILY:
|
||||
if expand.Activeday >= conf.Active {
|
||||
if user.Activeday >= conf.Active {
|
||||
return true, nil
|
||||
}
|
||||
case comm.TASK_WEEKLY:
|
||||
if expand.Activeweek >= conf.Active {
|
||||
if user.Activeweek >= conf.Active {
|
||||
return true, nil
|
||||
}
|
||||
}
|
||||
@ -137,27 +113,34 @@ func (this *ModelTaskActive) updateReceive(uid string, data map[string]interface
|
||||
if len(data) == 0 {
|
||||
return
|
||||
}
|
||||
return this.moduleTask.modelTaskActive.Change(uid, data)
|
||||
return this.module.modelTaskActive.Change(uid, data)
|
||||
}
|
||||
|
||||
// 清空活跃度任务
|
||||
func (this *ModelTaskActive) clearTask(uid string, taskTag ...comm.TaskTag) {
|
||||
if len(taskTag) == 0 {
|
||||
this.moduleTask.Errorf("least one param for taskTag")
|
||||
this.module.Errorf("least one param for taskTag")
|
||||
return
|
||||
}
|
||||
data := this.getActiveList(uid)
|
||||
for i := 0; i < len(data); i++ {
|
||||
if data[i].Tag == int32(taskTag[0]) {
|
||||
data = append(data[:i], data[i+1:]...)
|
||||
var (
|
||||
active *pb.DBActivity
|
||||
err error
|
||||
)
|
||||
if active, err = this.getActiveList(uid); err != nil {
|
||||
this.module.Errorln(err)
|
||||
return
|
||||
}
|
||||
for i := 0; i < len(active.ActivityList); i++ {
|
||||
if active.ActivityList[i].Tag == int32(taskTag[0]) {
|
||||
active.ActivityList = append(active.ActivityList[:i], active.ActivityList[i+1:]...)
|
||||
i--
|
||||
}
|
||||
}
|
||||
update := map[string]interface{}{
|
||||
"activityList": data,
|
||||
"activityList": active.ActivityList,
|
||||
}
|
||||
if err := this.moduleTask.modelTaskActive.Change(uid, update); err != nil {
|
||||
this.moduleTask.Errorf("uid: %v err:%v", uid, err)
|
||||
if err := this.module.modelTaskActive.Change(uid, update); err != nil {
|
||||
this.module.Errorf("uid: %v err:%v", uid, err)
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -6,6 +6,7 @@ import (
|
||||
"go_dreamfactory/lego/core"
|
||||
event_v2 "go_dreamfactory/lego/sys/event/v2"
|
||||
"go_dreamfactory/lego/sys/log"
|
||||
"go_dreamfactory/lego/sys/mgo"
|
||||
"go_dreamfactory/modules"
|
||||
"go_dreamfactory/pb"
|
||||
"sort"
|
||||
@ -18,14 +19,14 @@ import (
|
||||
|
||||
type ModelTask struct {
|
||||
modules.MCompModel
|
||||
moduleTask *ModuleTask
|
||||
module *ModuleTask
|
||||
EventApp *event_v2.App
|
||||
}
|
||||
|
||||
func (this *ModelTask) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
|
||||
this.TableName = comm.TableTask
|
||||
err = this.MCompModel.Init(service, module, comp, options)
|
||||
this.moduleTask = module.(*ModuleTask)
|
||||
this.module = module.(*ModuleTask)
|
||||
this.EventApp = event_v2.NewApp()
|
||||
// this.EventApp.Listen(comm.EventTaskChanged, this.doTaskHandle)
|
||||
this.DB.CreateIndex(core.SqlTable(this.TableName), mongo.IndexModel{
|
||||
@ -35,12 +36,7 @@ func (this *ModelTask) Init(service core.IService, module core.IModule, comp cor
|
||||
}
|
||||
|
||||
// 查询完成的且未领取的任务 发现未领取返回true
|
||||
func (this *ModelTask) noReceiveTask(uid string, taskTag comm.TaskTag) (bool, error) {
|
||||
task := &pb.DBTask{}
|
||||
if err := this.Get(uid, task); err != nil {
|
||||
this.moduleTask.Errorf("getTaskList err %v", err)
|
||||
return false, err
|
||||
}
|
||||
func (this *ModelTask) noReceiveTask(task *pb.DBTask, taskTag comm.TaskTag) (bool, error) {
|
||||
if taskTag == comm.TASK_DAILY {
|
||||
for _, v := range task.DayList {
|
||||
if v.Received == 0 {
|
||||
@ -64,9 +60,9 @@ func (this *ModelTask) checkTaskStatus(uid string, list []*pb.TaskData) []*pb.Ta
|
||||
condIds = append(condIds, v.TypeId)
|
||||
}
|
||||
|
||||
conds, err := this.moduleTask.ModuleBuried.CheckCondition(uid, condIds...)
|
||||
conds, err := this.module.ModuleBuried.CheckCondition(uid, condIds...)
|
||||
if err != nil {
|
||||
this.moduleTask.Error(err.Error())
|
||||
this.module.Error(err.Error())
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -88,7 +84,7 @@ func (this *ModelTask) checkTaskStatus(uid string, list []*pb.TaskData) []*pb.Ta
|
||||
func (this *ModelTask) getTaskListByTag(uid string, taskTag comm.TaskTag) *pb.DBTask {
|
||||
task := &pb.DBTask{}
|
||||
if err := this.Get(uid, task); err != nil {
|
||||
this.moduleTask.Errorf("getTaskList err %v", err)
|
||||
this.module.Errorf("getTaskList err %v", err)
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -120,8 +116,8 @@ func (this *ModelTask) getTaskListByTag(uid string, taskTag comm.TaskTag) *pb.DB
|
||||
update["weekList"] = dataList
|
||||
}
|
||||
|
||||
if err := this.moduleTask.modelTask.Change(uid, update); err != nil {
|
||||
this.moduleTask.Error("change err", log.Field{Key: "uid", Value: uid})
|
||||
if err := this.module.modelTask.Change(uid, update); err != nil {
|
||||
this.module.Error("change err", log.Field{Key: "uid", Value: uid})
|
||||
}
|
||||
|
||||
// 当前玩家成就任务
|
||||
@ -136,7 +132,7 @@ func (this *ModelTask) getTaskListByTag(uid string, taskTag comm.TaskTag) *pb.DB
|
||||
|
||||
// 判断上个成就任务领取了才显示最后一个任务
|
||||
isReceived := func(taskId int32) bool {
|
||||
if preCnf := this.moduleTask.configure.getPreTask(taskId); preCnf != nil {
|
||||
if preCnf := this.module.configure.getPreTask(taskId); preCnf != nil {
|
||||
if preTask := getCurTask(preCnf.Key); preTask != nil {
|
||||
if preTask.Received == 1 {
|
||||
return true
|
||||
@ -151,16 +147,16 @@ func (this *ModelTask) getTaskListByTag(uid string, taskTag comm.TaskTag) *pb.DB
|
||||
|
||||
if taskTag == comm.TASK_ACHIEVE {
|
||||
for _, v := range task.AchieveList {
|
||||
if curTask := this.moduleTask.configure.getTaskById(v.TaskId); curTask != nil {
|
||||
if curTask := this.module.configure.getTaskById(v.TaskId); curTask != nil {
|
||||
if v.Received == 0 {
|
||||
isFirst := this.moduleTask.configure.isFirstTask(curTask.Key)
|
||||
isFirst := this.module.configure.isFirstTask(curTask.Key)
|
||||
if curTask.IdAfter == 0 && isFirst { //未领取和没有下个连续任务的
|
||||
achieveList = append(achieveList, v)
|
||||
continue
|
||||
}
|
||||
|
||||
if isFirst && curTask.IdAfter != 0 { //连续任务的第一个任务
|
||||
next := this.moduleTask.configure.getTaskById(curTask.IdAfter)
|
||||
next := this.module.configure.getTaskById(curTask.IdAfter)
|
||||
if next != nil && v.Received == 0 {
|
||||
achieveList = append(achieveList, v)
|
||||
}
|
||||
@ -176,7 +172,7 @@ func (this *ModelTask) getTaskListByTag(uid string, taskTag comm.TaskTag) *pb.DB
|
||||
achieveList = this.checkTaskStatus(uid, achieveList)
|
||||
|
||||
update["achieveList"] = achieveList
|
||||
if err := this.moduleTask.modelTask.Change(uid, update); err != nil {
|
||||
if err := this.module.modelTask.Change(uid, update); err != nil {
|
||||
log.Error("err", log.Field{Key: "uid", Value: uid})
|
||||
}
|
||||
|
||||
@ -190,7 +186,7 @@ func (this *ModelTask) getTaskListByTag(uid string, taskTag comm.TaskTag) *pb.DB
|
||||
func (this *ModelTask) getTaskById(uid string, taskTag comm.TaskTag, taskId int32) *pb.DBTask {
|
||||
task := &pb.DBTask{}
|
||||
if err := this.Get(uid, task); err != nil {
|
||||
this.moduleTask.Errorf("getTaskById err %v", err)
|
||||
this.module.Errorf("getTaskById err %v", err)
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -220,28 +216,13 @@ func (this *ModelTask) getTaskById(uid string, taskTag comm.TaskTag, taskId int3
|
||||
}
|
||||
|
||||
// 初始化任务
|
||||
func (this *ModelTask) initTask(uid string, taskTag comm.TaskTag) error {
|
||||
task := &pb.DBTask{}
|
||||
if err := this.Get(uid, task); err != nil {
|
||||
if err == mongo.ErrNoDocuments {
|
||||
objId := primitive.NewObjectID().Hex()
|
||||
task = &pb.DBTask{
|
||||
Uid: uid,
|
||||
Id: objId,
|
||||
}
|
||||
if err := this.Add(uid, task); err != nil {
|
||||
this.moduleTask.Errorf("initTask addlists err %v", err)
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
this.moduleTask.Errorf("getTaskList err %v", err)
|
||||
return err
|
||||
}
|
||||
func (this *ModelTask) initTask(opencond map[string]int32, task *pb.DBTask, taskTag comm.TaskTag) error {
|
||||
data := this.module.configure.getTaskByTag(int32(taskTag))
|
||||
for _, cnf := range data {
|
||||
if unlock, ok := opencond[cnf.Open]; !ok || unlock != 2 {
|
||||
continue
|
||||
}
|
||||
|
||||
data := this.moduleTask.configure.getTaskByTag(int32(taskTag))
|
||||
update := map[string]interface{}{}
|
||||
for _, cnf := range data {
|
||||
t := &pb.TaskData{
|
||||
Tag: cnf.IdTag,
|
||||
TypeId: cnf.TypeId,
|
||||
@ -251,59 +232,39 @@ func (this *ModelTask) initTask(uid string, taskTag comm.TaskTag) error {
|
||||
}
|
||||
if taskTag == comm.TASK_DAILY {
|
||||
task.DayList = append(task.DayList, t)
|
||||
update["dayList"] = task.DayList
|
||||
} else if taskTag == comm.TASK_WEEKLY {
|
||||
task.WeekList = append(task.WeekList, t)
|
||||
update["weekList"] = task.WeekList
|
||||
} else if taskTag == comm.TASK_ACHIEVE {
|
||||
task.AchieveList = append(task.AchieveList, t)
|
||||
update["achieveList"] = task.AchieveList
|
||||
}
|
||||
}
|
||||
|
||||
if len(update) > 0 {
|
||||
if err := this.Change(uid, update); err != nil {
|
||||
this.moduleTask.Errorf("initTask err %v", err)
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// 查询用户任务
|
||||
func (this *ModelTask) getUserTask(uid string, taskId int32) *pb.DBTask {
|
||||
task := &pb.DBTask{}
|
||||
if err := this.Get(uid, task); err != nil {
|
||||
this.moduleTask.Errorf("getTaskList err %v", err)
|
||||
return nil
|
||||
func (this *ModelTask) getUserTask(uid string) (task *pb.DBTask, err error) {
|
||||
task = &pb.DBTask{}
|
||||
if err = this.Get(uid, task); err != nil && err != mgo.MongodbNil {
|
||||
return
|
||||
}
|
||||
return task
|
||||
if err == mongo.ErrNoDocuments {
|
||||
objId := primitive.NewObjectID().Hex()
|
||||
task = &pb.DBTask{
|
||||
Uid: uid,
|
||||
Id: objId,
|
||||
}
|
||||
if err = this.Add(uid, task); err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// 获取已完成的(日、周)任务
|
||||
// func (this *ModelTask) getFinishTasks(uid string, taskTag comm.TaskTag) (list []*pb.TaskData) {
|
||||
// task := this.getTaskListByTag(uid, taskTag)
|
||||
// if taskTag == comm.TASK_DAILY {
|
||||
// for _, v := range task.DayList {
|
||||
// if v.Status == 1 {
|
||||
// list = append(list, v)
|
||||
// }
|
||||
// }
|
||||
// } else if taskTag == comm.TASK_WEEKLY {
|
||||
// for _, v := range task.WeekList {
|
||||
// if v.Status == 1 {
|
||||
// list = append(list, v)
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// return
|
||||
// }
|
||||
|
||||
// 获取待处理的(日、周)任务
|
||||
func (this *ModelTask) getUnFinishTasks(uid string, taskId int32) (list []*pb.TaskData) {
|
||||
task := &pb.DBTask{}
|
||||
if err := this.Get(uid, task); err != nil {
|
||||
this.moduleTask.Errorf("getTaskById err %v", err)
|
||||
this.module.Errorf("getTaskById err %v", err)
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -330,23 +291,12 @@ func (this *ModelTask) getUnFinishTasks(uid string, taskId int32) (list []*pb.Ta
|
||||
return
|
||||
}
|
||||
|
||||
// 检查任务状态 返回等待处理的任务
|
||||
func (this *ModelTask) checkTask(uid string, taskId int32) (*pb.TaskData, bool) {
|
||||
taskList := this.getUnFinishTasks(uid, taskId)
|
||||
for _, v := range taskList {
|
||||
if taskId == v.TaskId {
|
||||
return v, true
|
||||
}
|
||||
}
|
||||
return nil, false
|
||||
}
|
||||
|
||||
// 更改用户任务
|
||||
// Deprecated
|
||||
func (this *ModelTask) modifyUserTask(uid string, taskId int32, data map[string]interface{}) error {
|
||||
var task *pb.DBTask
|
||||
if err := this.GetList(uid, &task); err != nil {
|
||||
this.moduleTask.Errorf("getTaskById err %v", err)
|
||||
this.module.Errorf("getTaskById err %v", err)
|
||||
return nil
|
||||
}
|
||||
var err error
|
||||
@ -386,146 +336,15 @@ func (this *ModelTask) modifyUserTask(uid string, taskId int32, data map[string]
|
||||
return err
|
||||
}
|
||||
|
||||
// 清空任务
|
||||
// func (this *ModelTask) clearTask(uid string, taskTag ...comm.TaskTag) {
|
||||
// if len(taskTag) == 0 {
|
||||
// this.moduleTask.Error("TaskTag参数缺失",
|
||||
// log.Field{Key: "uid", Value: uid},
|
||||
// log.Field{Key: "params", Value: taskTag},
|
||||
// )
|
||||
// return
|
||||
// }
|
||||
// var task *pb.DBTask
|
||||
// if err := this.GetList(uid, &task); err != nil {
|
||||
// this.moduleTask.Errorf("getTaskById err %v", err)
|
||||
// return
|
||||
// }
|
||||
|
||||
// if task == nil {
|
||||
// this.moduleTask.Error("任务数据空",
|
||||
// log.Field{Key: "uid", Value: uid},
|
||||
// log.Field{Key: "taskTag", Value: taskTag},
|
||||
// )
|
||||
// return
|
||||
// }
|
||||
|
||||
// dr := this.moduleTask.ModuleRtask.GetCondiData(uid)
|
||||
|
||||
// update := map[string]interface{}{}
|
||||
// if taskTag[0] == comm.TASK_DAILY {
|
||||
// for _, v := range task.DayList {
|
||||
// //删除任务条件数据
|
||||
// if dr != nil && dr.Vals != nil {
|
||||
// delete(dr.Vals, v.TypeId)
|
||||
// }
|
||||
// }
|
||||
// if err := this.moduleTask.ModuleRtask.ChangeCondi(uid, dr.Vals); err != nil {
|
||||
// this.moduleTask.Error("更新任务条件数据", log.Field{Key: "uid", Value: uid})
|
||||
// }
|
||||
// update["dayList"] = make([]*pb.TaskData, 0)
|
||||
// } else if taskTag[0] == comm.TASK_WEEKLY {
|
||||
// for _, v := range task.WeekList {
|
||||
// //删除任务条件数据
|
||||
// if dr != nil && dr.Vals != nil {
|
||||
// delete(dr.Vals, v.TypeId)
|
||||
// }
|
||||
// }
|
||||
// if err := this.moduleTask.ModuleRtask.ChangeCondi(uid, dr.Vals); err != nil {
|
||||
// this.moduleTask.Error("更新任务条件数据", log.Field{Key: "uid", Value: uid})
|
||||
// }
|
||||
// update["weekList"] = make([]*pb.TaskData, 0)
|
||||
// } else if taskTag[0] == comm.TASK_ACHIEVE {
|
||||
// for _, v := range task.AchieveList {
|
||||
// //删除任务条件数据
|
||||
// if dr != nil && dr.Vals != nil {
|
||||
// delete(dr.Vals, v.TypeId)
|
||||
// }
|
||||
// }
|
||||
// if err := this.moduleTask.ModuleRtask.ChangeCondi(uid, dr.Vals); err != nil {
|
||||
// this.moduleTask.Error("更新任务条件数据", log.Field{Key: "uid", Value: uid})
|
||||
// }
|
||||
// update["weekList"] = make([]*pb.TaskData, 0)
|
||||
// }
|
||||
|
||||
// if err := this.moduleTask.modelTask.Change(uid, update); err != nil {
|
||||
// this.moduleTask.Error("清空任务数据", log.Field{Key: "uid", Value: uid})
|
||||
// }
|
||||
|
||||
// }
|
||||
|
||||
// 任务处理
|
||||
// func (this *ModelTask) doTaskHandle(event interface{}, next func(event interface{})) {
|
||||
// tl := event.(*TaskListen)
|
||||
|
||||
// data, err := this.moduleTask.configure.getTasks(int32(tl.TaskType))
|
||||
// if err != nil {
|
||||
// this.moduleTask.Errorf("taskHandle err %v", err)
|
||||
// return
|
||||
// }
|
||||
|
||||
// // 获取玩家的任务条件数据
|
||||
// dr := this.moduleTask.ModuleRtask.GetCondiData(tl.Uid)
|
||||
// if dr == nil {
|
||||
// return
|
||||
// }
|
||||
|
||||
// // 遍历事件列表
|
||||
// for _, conf := range data {
|
||||
// // 从任务条件中查找
|
||||
// ret, ok := dr.Vals[conf.TypeId]
|
||||
// if !ok {
|
||||
// continue
|
||||
// }
|
||||
|
||||
// task, ok := this.checkTask(tl.Uid, conf.Key)
|
||||
// if !ok {
|
||||
// this.moduleTask.Debug("任务已完成", log.Field{Key: "uid", Value: tl.Uid}, log.Field{Key: "任务ID", Value: conf.Key})
|
||||
// continue
|
||||
// }
|
||||
|
||||
// var (
|
||||
// progress int32
|
||||
// update map[string]interface{}
|
||||
// )
|
||||
|
||||
// if code := this.moduleTask.ModuleRtask.CheckCondi(tl.Uid, conf.TypeId); code == nil {
|
||||
// // update data
|
||||
// if ret != nil && len(ret.Data) > 0 {
|
||||
// progress = ret.Data[0]
|
||||
// }
|
||||
// update = map[string]interface{}{
|
||||
// "progress": progress,
|
||||
// "status": 1,
|
||||
// }
|
||||
// } else {
|
||||
// if ret != nil && len(ret.Data) > 0 {
|
||||
// progress = ret.Data[0]
|
||||
// }
|
||||
// update = map[string]interface{}{
|
||||
// "progress": progress,
|
||||
// }
|
||||
// }
|
||||
// if err = this.modifyUserTask(tl.Uid, task.TaskId, update); err != nil {
|
||||
// return
|
||||
// }
|
||||
// this.moduleTask.Debug("更新任务",
|
||||
// log.Field{Key: "uid", Value: tl.Uid}, log.Field{Key: "任务ID", Value: conf.Key},
|
||||
// log.Field{Key: "事件ID", Value: conf.TypeId}, log.Field{Key: "progress", Value: update["progress"]},
|
||||
// log.Field{Key: "status", Value: update["status"]},
|
||||
// )
|
||||
// }
|
||||
// return
|
||||
// }
|
||||
|
||||
// 更新活跃度
|
||||
func (this *ModelTask) updateActive(uid string, cfgId int32) error {
|
||||
// 更新活跃度
|
||||
de, err := this.moduleTask.ModuleUser.GetUserExpand(uid)
|
||||
de, err := this.module.ModuleUser.GetUserExpand(uid)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
conf := this.moduleTask.configure.getTaskById(cfgId)
|
||||
conf := this.module.configure.getTaskById(cfgId)
|
||||
if conf == nil {
|
||||
return errors.New(fmt.Sprintf("%v config nil", cfgId))
|
||||
}
|
||||
@ -542,7 +361,7 @@ func (this *ModelTask) updateActive(uid string, cfgId int32) error {
|
||||
"activeweek": de.Activeweek,
|
||||
}
|
||||
|
||||
return this.moduleTask.ModuleUser.ChangeUserExpand(uid, update)
|
||||
return this.module.ModuleUser.ChangeUserExpand(uid, update)
|
||||
}
|
||||
|
||||
type TaskListen struct {
|
||||
|
@ -51,30 +51,50 @@ func (this *ModuleTask) OnInstallComp() {
|
||||
// 模块启动接口
|
||||
func (this *ModuleTask) Start() (err error) {
|
||||
err = this.ModuleBase.Start()
|
||||
event.RegisterGO(comm.EventUserLogin, this.EventUserLogin)
|
||||
event.RegisterGO(comm.EventUserOffline, this.CleanTask)
|
||||
return
|
||||
}
|
||||
|
||||
// 初始化日常、周常、成就
|
||||
func (this *ModuleTask) InitTaskAll(uid string) {
|
||||
this.modelTask.initTask(uid, comm.TASK_DAILY)
|
||||
this.modelTask.initTask(uid, comm.TASK_WEEKLY)
|
||||
this.modelTask.initTask(uid, comm.TASK_ACHIEVE)
|
||||
this.modelTaskActive.initActiveReward(uid, comm.TASK_DAILY)
|
||||
this.modelTaskActive.initActiveReward(uid, comm.TASK_WEEKLY)
|
||||
func (this *ModuleTask) EventUserLogin(session comm.IUserSession) {
|
||||
var (
|
||||
opencond map[string]int32
|
||||
errdata *pb.ErrorData
|
||||
task *pb.DBTask
|
||||
active *pb.DBActivity
|
||||
err error
|
||||
)
|
||||
if opencond, errdata = this.ModuleSys.QueryOpenCondData(session.GetUserId()); errdata != nil {
|
||||
this.Errorf("getTaskList err %v", errdata)
|
||||
return
|
||||
}
|
||||
|
||||
// 初始化指定的任务
|
||||
func (this *ModuleTask) InitTaskByTag(uid string, taskTag comm.TaskTag) {
|
||||
switch taskTag {
|
||||
case comm.TASK_DAILY:
|
||||
this.modelTask.initTask(uid, comm.TASK_DAILY)
|
||||
this.modelTaskActive.initActiveReward(uid, comm.TASK_DAILY)
|
||||
case comm.TASK_WEEKLY:
|
||||
this.modelTask.initTask(uid, comm.TASK_WEEKLY)
|
||||
this.modelTaskActive.initActiveReward(uid, comm.TASK_WEEKLY)
|
||||
case comm.TASK_ACHIEVE:
|
||||
this.modelTask.initTask(uid, comm.TASK_ACHIEVE)
|
||||
if task, err = this.modelTask.getUserTask(session.GetUserId()); err != nil {
|
||||
this.Errorf("getTaskList err %v", err)
|
||||
return
|
||||
}
|
||||
this.modelTask.initTask(opencond, task, comm.TASK_DAILY)
|
||||
this.modelTask.initTask(opencond, task, comm.TASK_WEEKLY)
|
||||
this.modelTask.initTask(opencond, task, comm.TASK_ACHIEVE)
|
||||
if err = this.modelTask.Change(session.GetUserId(), map[string]interface{}{
|
||||
"dayList": task.DayList,
|
||||
"weekList": task.WeekList,
|
||||
"achieveList": task.AchieveList,
|
||||
}); err != nil {
|
||||
log.Error("err", log.Field{Key: "uid", Value: session.GetUserId()})
|
||||
return
|
||||
}
|
||||
|
||||
if active, err = this.modelTaskActive.getActiveList(session.GetUserId()); err != nil {
|
||||
return
|
||||
}
|
||||
this.modelTaskActive.initActiveReward(active, comm.TASK_DAILY)
|
||||
this.modelTaskActive.initActiveReward(active, comm.TASK_WEEKLY)
|
||||
if err = this.modelTaskActive.Change(session.GetUserId(), map[string]interface{}{
|
||||
"activityList": active.ActivityList,
|
||||
}); err != nil {
|
||||
log.Error("err", log.Field{Key: "uid", Value: session.GetUserId()})
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
@ -97,61 +117,40 @@ func (this *ModuleTask) resetActive(uid string, taskTag comm.TaskTag) {
|
||||
}
|
||||
}
|
||||
|
||||
// 获取玩家指定任务
|
||||
func (this *ModuleTask) GetTaskById(uid string, taskTag, taskId int32) *pb.TaskData {
|
||||
var task *pb.DBTask
|
||||
if err := this.modelTask.GetList(uid, &task); err != nil {
|
||||
log.Errorf("GetTaskById err %v", err)
|
||||
return nil
|
||||
}
|
||||
|
||||
if taskTag == int32(comm.TASK_DAILY) {
|
||||
for _, v := range task.DayList {
|
||||
if v.TaskId == taskId {
|
||||
return v
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// 重置任务
|
||||
func (this *ModuleTask) ResetTask(uid string, taskTag comm.TaskTag) {
|
||||
this.resetActive(uid, taskTag)
|
||||
// this.modelTask.clearTask(uid, taskTag)
|
||||
this.modelTaskActive.clearTask(uid, taskTag)
|
||||
}
|
||||
|
||||
// 清理任务数据
|
||||
func (this *ModuleTask) CleanData(uid string) {
|
||||
// this.modelTask.clearTask(uid)
|
||||
this.modelTaskActive.clearTask(uid)
|
||||
}
|
||||
|
||||
// 任务处理器注册
|
||||
type taskHandle func(uid string, taskId int32, tp *pb.TaskParam) *pb.DBTask
|
||||
|
||||
// 获取每日任务列表
|
||||
// Deprecated
|
||||
func (this *ModuleTask) GetTaskDayFinished(uid string) []*pb.TaskData {
|
||||
return nil //this.modelTask.getFinishTasks(uid, comm.TASK_DAILY)
|
||||
}
|
||||
|
||||
func (this *ModuleTask) Reddot(session comm.IUserSession, rid ...comm.ReddotType) (reddot map[comm.ReddotType]*pb.ReddotItem) {
|
||||
reddot = make(map[comm.ReddotType]*pb.ReddotItem)
|
||||
var (
|
||||
task *pb.DBTask = &pb.DBTask{}
|
||||
active *pb.DBActivity
|
||||
userExpand *pb.DBUserExpand
|
||||
err error
|
||||
)
|
||||
if task, err = this.modelTask.getUserTask(session.GetUserId()); err != nil {
|
||||
this.Errorf("getTaskList err %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
if active, err = this.modelTaskActive.getActiveList(session.GetUserId()); err != nil {
|
||||
return
|
||||
}
|
||||
// 获取玩家活跃度
|
||||
userExpand, err = this.ModuleUser.GetUserExpand(session.GetUserId())
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
for _, v := range rid {
|
||||
|
||||
switch v {
|
||||
case comm.Reddot10101:
|
||||
tf, _ := this.modelTask.noReceiveTask(session.GetUserId(), comm.TASK_DAILY)
|
||||
tf, _ := this.modelTask.noReceiveTask(task, comm.TASK_DAILY)
|
||||
reddot[comm.Reddot10101] = &pb.ReddotItem{
|
||||
Rid: int32(comm.Reddot10101),
|
||||
Activated: tf,
|
||||
Nextchanagetime: 0,
|
||||
}
|
||||
case comm.Reddot10102:
|
||||
tf, _ := this.modelTask.noReceiveTask(session.GetUserId(), comm.TASK_WEEKLY)
|
||||
tf, _ := this.modelTask.noReceiveTask(task, comm.TASK_WEEKLY)
|
||||
reddot[comm.Reddot10102] = &pb.ReddotItem{
|
||||
Rid: int32(comm.Reddot10102),
|
||||
Activated: tf,
|
||||
@ -159,21 +158,21 @@ func (this *ModuleTask) Reddot(session comm.IUserSession, rid ...comm.ReddotType
|
||||
}
|
||||
|
||||
case comm.Reddot10103:
|
||||
tf, _ := this.modelTask.noReceiveTask(session.GetUserId(), comm.TASK_ACHIEVE)
|
||||
tf, _ := this.modelTask.noReceiveTask(task, comm.TASK_ACHIEVE)
|
||||
reddot[comm.Reddot10103] = &pb.ReddotItem{
|
||||
Rid: int32(comm.Reddot10103),
|
||||
Activated: tf,
|
||||
Nextchanagetime: 0,
|
||||
}
|
||||
case comm.Reddot10201:
|
||||
tf, _ := this.modelTaskActive.noReceiveTaskActive(session.GetUserId(), comm.TASK_DAILY)
|
||||
tf, _ := this.modelTaskActive.noReceiveTaskActive(userExpand, active.ActivityList, comm.TASK_DAILY)
|
||||
reddot[comm.Reddot10201] = &pb.ReddotItem{
|
||||
Rid: int32(comm.Reddot10201),
|
||||
Activated: tf,
|
||||
Nextchanagetime: 0,
|
||||
}
|
||||
case comm.Reddot10301:
|
||||
tf, _ := this.modelTaskActive.noReceiveTaskActive(session.GetUserId(), comm.TASK_WEEKLY)
|
||||
tf, _ := this.modelTaskActive.noReceiveTaskActive(userExpand, active.ActivityList, comm.TASK_WEEKLY)
|
||||
reddot[comm.Reddot10301] = &pb.ReddotItem{
|
||||
Rid: int32(comm.Reddot10301),
|
||||
Activated: tf,
|
||||
|
@ -48,10 +48,8 @@ func (this *apiComp) Initdata(session comm.IUserSession, req *pb.UserInitdataReq
|
||||
//验证码验证通过
|
||||
// TODO 检查该用户是否加入过工会
|
||||
// 清除玩家数据
|
||||
this.module.ModuleTask.CleanData(session.GetUserId()) //玩家任务
|
||||
this.module.ModuleHero.CleanData(session.GetUserId()) //英雄数据
|
||||
this.module.modelSetting.cleanData(session.GetUserId()) //用户设置
|
||||
|
||||
this.module.modelUser.delete(session.GetUserId()) //删除用户
|
||||
}
|
||||
} else {
|
||||
|
@ -66,9 +66,6 @@ func (this *apiComp) Login(session comm.IUserSession, req *pb.UserLoginReq) (err
|
||||
log.Errorf("User_CreateUser err %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
//初始化任务
|
||||
go this.module.ModuleTask.InitTaskAll(user.Uid)
|
||||
isNewUser = true
|
||||
} else {
|
||||
// 玩家是否已在线
|
||||
|
@ -53,6 +53,7 @@ import (
|
||||
"go_dreamfactory/modules/smithy"
|
||||
"go_dreamfactory/modules/sociaty"
|
||||
"go_dreamfactory/modules/stonehenge"
|
||||
"go_dreamfactory/modules/storyline"
|
||||
"go_dreamfactory/modules/sys"
|
||||
"go_dreamfactory/modules/task"
|
||||
"go_dreamfactory/modules/tools"
|
||||
@ -119,7 +120,6 @@ func main() {
|
||||
pay.NewModule(),
|
||||
privilege.NewModule(),
|
||||
growtask.NewModule(),
|
||||
// worldtask.NewModule(),
|
||||
academy.NewModule(),
|
||||
reddot.NewModule(),
|
||||
combat.NewModule(),
|
||||
@ -149,6 +149,7 @@ func main() {
|
||||
herotask.NewModule(),
|
||||
shopcenter.NewModule(),
|
||||
addrecharge.NewModule(),
|
||||
storyline.NewModule(),
|
||||
)
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user