package task import ( "go_dreamfactory/comm" "go_dreamfactory/lego/sys/log" "go_dreamfactory/pb" cfg "go_dreamfactory/sys/configure/structs" "google.golang.org/protobuf/proto" ) //活跃度领取 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 proto.Message) { 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 // 玩家的 activeList := this.moduleTask.modelTaskActive.getActiveListByTag(uid, comm.TaskTag(req.TaskTag)) var activityData *pb.ActivityData for _, v := range activeList { if v.TaskId == req.Id { activityData = v break } } if activityData == nil { code = pb.ErrorCode_TaskNotFound return } if activityData.Received != 1 { //未领取 conf := this.moduleTask.configure.getTaskActiveById(activityData.TaskId) if conf == nil { code = pb.ErrorCode_ConfigNoFound return } update := make(map[string]interface{}) 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 } } update["received"] = 1 if len(update) > 0 { if err := this.moduleTask.modelTaskActive.updateReceive(session.GetUserId(), update); err != nil { this.moduleTask.Errorf("updateReceive err %v", err) code = pb.ErrorCode_DBError return } } rewards = append(rewards, conf.Reword...) } if len(rewards) > 0 { //派发奖励 if code = this.moduleTask.DispenseRes(session, rewards, true); code != pb.ErrorCode_Success { this.moduleTask.Error("活跃度奖励", log.Fields{"uid": uid, "rewards": rewards, "code": code}) } } 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 }