老张小站

  1. 欢迎光临

    感谢访问老张的博客!

  • 1
2,058

Discuz! X3.* 红包任务限制用户积分低于多少时才能领取

分类 网站技术/村民张先生 发布于 2015-04-15 08:46
0

应用场景:在版块A发帖时需要支付金币,普通用户靠每日登录、签到、充值等方式获得金币,而VIP用户本身是付费的,我们可以给予他一定频率的免费领金币权限。在站点任务中添加一个红包任务,设置每X天可以领取X个金币。但问题来了,如果某些VIP用户一直领金币但没有使用,不是会积存下很多金币吗?我们可以额外限制领取条件:当该用户的金币少于多少时才能领取,这样很好避免了用户积存过多金币。

修改方法很简单,只用改一处!

打开 source/class/class_task.php 文件,
查找:

		C::t('common_mytask')->insert(array(
			'uid' => $_G['uid'],
			'username' => $_G['username'],
			'taskid' => $this->task['taskid'],
			'csc' => '0\t'.$_G['timestamp'],
			'dateline' => $_G['timestamp']
		), false, true);
		C::t('common_task')->update_applicants($this->task['taskid'], 1);

在前面加上:

		if($id == 指定红包任务的ID号 && getuserprofile(extcredits扩展积分编号) >= 大于多少时不能领取) {
		showmessage('很抱歉,只有在金币低于XX时才能免费申领。', 'home.php?mod=task&item=new');
		} else {

在后面加上:

		}

2015/06/21新增:添加更多条件判断。参考以下代码:

		$posts = DB::result_first("SELECT posts FROM ".DB::table('common_member_count')." where uid=".$_G['uid']);
		$oltime = DB::result_first("SELECT oltime FROM ".DB::table('common_member_count')." where uid=".$_G['uid']);			
		if(in_array($id, array(48,17))&& getuserprofile(extcredits6) >= 30) {
			showmessage('很抱歉,您当前活力值高于30,无法领取此礼包。', 'home.php?mod=task&item=new');
		} elseif($id == 17 && !($posts >= 10 || $oltime >= 2)) {
			showmessage('很抱歉,此帐号活跃度极低,请使用一段时间后再试。', 'home.php?mod=task&do=view&id=17');
		}

说明:第一行为从数据库读取用户的发帖数量,第二行为读取用户的在线时间。之后第一个 if 同前文,第二个 if 表示当发帖量大于等于10或在线时间大于等于2小时这两个条件都不满足时,任务申请失败。

欢迎转载分享,转载请注明 来源:大张小站 https://www.zhang.cq.cn/20151387.html
若您喜欢这篇文章,欢迎订阅老张小站以获得最新内容。 / 欢迎交流探讨,请发电子邮件至 mail[at]vdazhang.com 。


欢迎谈谈你的看法(无须登录) *正文中请勿包含"http://"否则将被拦截