package moonlv import ( "go_dreamfactory/comm" "go_dreamfactory/pb" ) //参数校验 func (this *apiComp) AwardCheck(session comm.IUserSession, req *pb.MoonlvAwardReq) (errdata *pb.ErrorData) { if req.Lv == 0 { errdata = &pb.ErrorData{ Code: pb.ErrorCode_ReqParameterError, Title: pb.ErrorCode_ReqParameterError.ToString(), } } return } // 领取等级奖励 func (this *apiComp) Award(session comm.IUserSession, req *pb.MoonlvAwardReq) (errdata *pb.ErrorData) { var ( update map[string]interface{} ) update = make(map[string]interface{}, 0) list, err := this.module.modelMoonlv.getMoonlvList(session.GetUserId()) if err != nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_DBError, Title: pb.ErrorCode_DBError.ToString(), } return } if _, ok := list.Reward[req.Lv]; ok { errdata = &pb.ErrorData{ Code: pb.ErrorCode_TaskRepeatedReward, Title: pb.ErrorCode_TaskRepeatedReward.ToString(), } return } for _, v := range list.Tasks { if v.Received != 2 { // 只要有未领取的就不能升级 errdata = &pb.ErrorData{ Code: pb.ErrorCode_TaskNoFinished, Title: pb.ErrorCode_TaskNoFinished.ToString(), } return } } if _, err := this.module.configure.GetMoonLvConf(list.Lv + 1); err != nil { // 查看能不能继续升级 list.Lv += 1 update["lv"] = list.Lv // 升级了清空当前任务 list.Tasks = nil // 重置任务 var szTaskid []int32 if lvConf, err := this.module.configure.GetMoonLvConf(list.Lv); err != nil { if conf, err := this.module.configure.GetMoonLvTaskConf(lvConf.TaskGroupId); err != nil { for _, v := range conf { szTaskid = append(szTaskid, v.TaskId) // 获取任务id } } } if data, err := this.module.ModuleBuried.CheckCondition(session.GetUserId(), szTaskid...); err == nil { for _, v := range data { tmp := &pb.MoonTask{ TaskId: v.Conid, Received: 0, Cond: v, } if v.State == pb.BuriedItemFinishState_buried_finish { tmp.Received = 1 } list.Tasks = append(list.Tasks, tmp) } } update["tasks"] = list.Tasks } list.Reward[req.Lv] = true update["reward"] = list.Reward if err := this.module.modelMoonlv.modifyMoonlvList(session.GetUserId(), update); err != nil { this.module.Error(err.Error()) errdata = &pb.ErrorData{ Code: pb.ErrorCode_DBError, Title: pb.ErrorCode_DBError.ToString(), Message: err.Error(), } return } session.SendMsg(string(this.module.GetType()), "award", &pb.MoonlvAwardResp{ Data: &pb.DBMoonLv{}, Res: []*pb.UserAssets{}, }) return }