src/Biz/UserLearnStatistics/Job/SyncTotalJob.php
(开头部分) 2KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
<?php
namespace Biz\UserLearnStatistics\Job;
use Codeages\Biz\Framework\Scheduler\AbstractJob;
use Codeages\Biz\Framework\Util\ArrayToolkit;
class SyncTotalJob extends AbstractJob
{
public function execute()
{
//生成用户总量学习数据
try {
$lastUserId = $this->getLastUserId();
$magic = $this->getSettingService()->get('magic');
$limit = empty($magic['user_sync_learn_total_data_limit']) ? 30 : $magic['user_sync_learn_total_data_limit'];
$users = $this->getUserService()->searchUsers(array('id_GT' => $lastUserId), array('id' => 'asc'), 0, $limit);
$learnSetting = $this->getLearnStatisticsService()->getStatisticsSetting();
if (empty($users)) {
$this->setTotalDataStatus($learnSetting);
$this->getSchedulerService()->disabledJob($this->id);
return;
}
$this->biz['db']->beginTransaction();
$userIds = ArrayToolkit::column($users, 'id');
/*
skipSyncCourseSetNum,跳过同步 加入课程数和退出课程数
退出课程数: 退出课程的最后一个计划
加入班级数: 加入的课程第一个计划
历史数据统计不了,故,user_learn_statistics_total初始化时,这两个数据不同步
*/
$conditions = array(
'createdTime_GE' => 0,
'createdTime_LT' => $learnSetting['currentTime'],
'userIds' => $userIds,
'skipSyncCourseSetNum' => true,
'event_EQ' => 'doing',
);
$this->getLearnStatisticsService()->batchCreateTotalStatistics($conditions);
$endUser = end($users);
$jobArgs['lastUserId'] = $endUser['id'];
$this->getJobDao()->update($this->id, array('args' => $jobArgs));
$this->biz['db']->commit();
} catch (\Exception $e) {
$this->biz['db']->rollback();
}
}
private function getLastUserId()
{
$jobArgs = $this->args;
if (empty($jobArgs)) {
$jobArgs = array();
}
return empty($jobArgs['lastUserId']) ? 0 : $jobArgs['lastUserId'];
}
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。