UpdateUserTaskController.class.php 1.66 KB
<?php
/**
 * Created by PhpStorm.
 * User: zhonglei
 * Date: 17/8/21
 * Time: 22:17
 */
namespace Frontend\Controller\Index;

use Think\Log;
use Common\Common\TaskCenter;
use Common\Common\User;
use Common\Common\TaskHelper;

class UpdateUserTaskController extends AbstractController
{
    protected $_require_login = false;

    /**
     * UpdateUserTask
     * @author zhonglei
     * @desc 更新用户常规任务进度接口
     * @return void
     */
    public function Index()
    {
        Log::record('start update user task', Log::INFO);

        // 单次处理总数(500)
        $max_count = 500;
        $taskCenter = &TaskCenter::instance();
        $uids = [];

        // 获取用户ID
        while (count($uids) < $max_count) {
            $uid = $taskCenter->pop(TaskCenter::CACHE_KEY);

            if ($uid === false) {
                break;
            }

            // 去重
            $taskCenter->rem(TaskCenter::CACHE_KEY, $uid);
            $uids[] = $uid;
        }

        if (empty($uids)) {
            Log::record('not found any data, exit', Log::INFO);
            exit;
        }

        Log::record('uids: ' . var_export($uids, true), Log::INFO);
        Log::record('start update user task', Log::INFO);

        $userServ = &User::instance();
        $users = $userServ->listAll(['memUids' => $uids]);
        $taskHelper = &TaskHelper::instance();

        // 更新常规任务进度,检查每日任务进度
        foreach ($users as $user) {
            $taskHelper->updateCustomtaskProgress($user);
            $taskHelper->checkDailytaskProgress($user);
        }

        Log::record('end update user task');
        exit('OK');
    }
}