首页| 版块| 我的| 发帖| 消息
主题:关于原创达人勋章的研究修改及勋章自动回收任务
zhangjingyu 
基本就是上面的这样了。说点儿其它的吧。

lib/user/behaviorservice.class.php
/**
* 记录一个行为
* @param int $uid
* @param string $behavior
* @param int $lasttime
* @param bool $clear 未连续时清零
* @return array($num,$change)
*/
function doBehavior($uid,$behavior,$lasttime=0,$clear = false) {
global $tdtime;
$uid = (int) $uid;
$behavior = $this->_initBehavior($behavior);
if (!$behavior || !$uid) return array(false,'数据有误');
if ($lasttime && $lasttime>$tdtime) array(false,'无需操作');

$statistic = $this->getBehaviorStatistic($uid, $behavior);
if (!$statistic) {
$this->addBehaviorStatistic(array('uid'=>$uid,'behavior'=>$behavior,'lastday'=>$tdtime,'num'=>1));
//$this->addBehaviorLog($uid, $behavior, 1);
return array(1,1);
} else {
if ($statistic['lastday']>=$tdtime) return array($statistic['num'],0);
$changeDay = ($tdtime-$statistic['lastday'])/86400;
$change = $changeDay == 1 ? 1 : 2-$changeDay;
if ($clear) {
$newNum = $changeDay == 1 ? $statistic['num'] + 1 : 1;
} else {
$newNum = $statistic['num'] + $change;
}
if ($newNumupdateBehaviorStatistic(array('lastday'=>$tdtime,'num'=>$newNum), $uid, $behavior);
//if ($change) $this->addBehaviorLog($uid, $behavior, $change);
return array($newNum,$change);
}
}//2021.9.16
$pastday = ($tdtime - $behavior['lastday'])/86400;
$shengyu = $num - $pastday +1;//截止到昨天的剩余天数上面是这个文件最前面的一个完整函数。下面是我自己写的,没有参考其它文件。可以看出$pastday和第23行的代码基本一致,$shengyu和28,24行的代码基本一致——我的“剩余”是累计到昨天,今天是加还是减没有算(取决于有没有发主题),所以是+1。上面的代码中是+2,那是因为“今天”发主题了。这个正好是“勋章回收通知”主题里29楼我写的公式:http://www.vtu425.com/read.php?tid=4123&ds=1&page=3#87302第26行代码就是上面帖子中我说的:“我想,如果这个过去的天数等于1(也就是说昨天发新主题了,今天又发了),就在原来上次的天数上加1;”。
zhangjingyu回帖于2021-09-18 22:43[查看电脑版]
下一楼»:对了,还有一处文字修改,是提示信息“注意:1天不登录,现有连续登录天数会减1”改成了:“注意 ..
«上一楼:本来想在哈罗cq论坛发帖问问关于上面这两个函数显示时间有问题的原因,可想想又算了,也不一定有 ..

查看全部回帖(49)
«返回主帖