package sociaty import ( "go_dreamfactory/comm" "go_dreamfactory/lego/sys/log" "go_dreamfactory/pb" ) // 公会BOSS 积分奖励领取 func (this *apiComp) BreceiveCheck(session comm.IUserSession, req *pb.SociatyBReceiveReq) (errdata *pb.ErrorData) { if req.TaskId <= 0 { errdata = &pb.ErrorData{ Code: pb.ErrorCode_ReqParameterError, Title: pb.ErrorCode_ReqParameterError.ToString(), } } return } func (this *apiComp) Breceive(session comm.IUserSession, req *pb.SociatyBReceiveReq) (errdata *pb.ErrorData) { if errdata = this.BreceiveCheck(session, req); errdata != nil { return } uid := session.GetUserId() sociaty := this.module.modelSociaty.getUserSociaty(uid) if sociaty == nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_SociatyNoFound, Title: pb.ErrorCode_SociatyNoFound.ToString(), } this.module.Error("当前玩家所在的公会未找到", log.Field{Key: "uid", Value: uid}) return } taskConf := this.module.configure.getBossTask(req.TaskId) if taskConf == nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_ConfigNoFound, Title: pb.ErrorCode_ConfigNoFound.ToString(), } return } dbr := this.module.modelSociatyBoss.getChallengeRecord(uid) var taskId int32 for _, task := range dbr.Tasks { if task.TaskId == req.TaskId { taskId = task.TaskId if task.Status == 2 { //已领取 errdata = &pb.ErrorData{ Code: pb.ErrorCode_SociatyTaskReceived, Title: pb.ErrorCode_SociatyTaskReceived.ToString(), } return } else if taskId == 0 { //未完成 errdata = &pb.ErrorData{ Code: pb.ErrorCode_SociatyTaskNoFinished, Title: pb.ErrorCode_SociatyTaskNoFinished.ToString(), } return } else if taskId == 1 { //可领取 task.Status = 2 } break } } //更新任务状态 update := map[string]interface{}{ "tasks": dbr.Tasks, } if err := this.module.modelSociatyBoss.Change(uid, update); err != nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_DBError, Title: pb.ErrorCode_DBError.ToString(), Message: err.Error(), } return } // 奖励 if errdata := this.module.DispenseRes(session, taskConf.Reward, true); errdata != nil { this.module.Error("积分任务奖励领取", log.Field{Key: "uid", Value: uid}, log.Field{Key: "taskId", Value: taskId}, log.Field{Key: "reward", Value: taskConf.Reward}) } rsp := &pb.SociatyBReceiveResp{ SociatyId: sociaty.Id, TaskId: req.TaskId, } session.SendMsg(string(this.module.GetType()), SociatySubTypeBreceive, rsp) return }