package task import ( "go_dreamfactory/comm" "go_dreamfactory/lego/sys/log" "go_dreamfactory/pb" cfg "go_dreamfactory/sys/configure/structs" ) // 活跃度领取 func (this *apiComp) ActiveReceiveCheck(session comm.IUserSession, req *pb.TaskActiveReceiveReq) (code pb.ErrorCode) { if req.Id == 0 { code = pb.ErrorCode_TaskIdEmpty } else if req.TaskTag <= 0 || req.TaskTag > 2 { code = pb.ErrorCode_TaskTagEmpty } return } func (this *apiComp) ActiveReceive(session comm.IUserSession, req *pb.TaskActiveReceiveReq) (code pb.ErrorCode, data *pb.ErrorData) { if code = this.ActiveReceiveCheck(session, req); code != pb.ErrorCode_Success { return } uid := session.GetUserId() ue, err := this.moduleTask.ModuleUser.GetUserExpand(uid) if err != nil { code = pb.ErrorCode_DBError return } if ue == nil { code = pb.ErrorCode_UserExpandNull return } var rewards []*cfg.Gameatn var flag bool update := map[string]interface{}{} // 玩家的 activeList := this.moduleTask.modelTaskActive.getActiveList(uid) // var activityData *pb.ActivityData for _, v := range activeList { if v.TaskId == req.Id { if v.Received != 1 { conf := this.moduleTask.configure.getTaskActiveById(v.TaskId) if conf == nil { code = pb.ErrorCode_ConfigNoFound return } if req.TaskTag == int32(comm.TASK_DAILY) { if ue.Activeday < conf.Active { code = pb.ErrorCode_TaskActiveNoenough return } } else if req.TaskTag == int32(comm.TASK_WEEKLY) { if ue.Activeweek < conf.Active { code = pb.ErrorCode_TaskActiveNoenough return } } v.Received = 1 flag = true rewards = append(rewards, conf.Reword...) } break } } if flag { update["activityList"] = activeList if err := this.moduleTask.modelTaskActive.Change(session.GetUserId(), update); err != nil { this.moduleTask.Errorf("updateReceive err %v", err) code = pb.ErrorCode_DBError return } } if len(rewards) > 0 { //派发奖励 if code = this.moduleTask.DispenseRes(session, rewards, true); code != pb.ErrorCode_Success { this.moduleTask.Error("活跃度奖励", log.Field{Key: "uid", Value: uid}, log.Field{Key: "rewards", Value: rewards}, log.Field{Key: "code", Value: code}, ) } go this.moduleTask.ModuleRtask.TriggerTask(uid, comm.GettaskParam(comm.Rtype171, 1)) } resp := &pb.TaskActiveReceiveResp{ TaskTag: req.TaskTag, Id: req.Id, } err = session.SendMsg(string(this.moduleTask.GetType()), TaskSubTypeActiveReceive, resp) if err != nil { code = pb.ErrorCode_SystemError } return }