src/AppBundle/Extensions/DataTag/HotThreadsDataTag.php

(开头部分) 1KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

<?php

namespace AppBundle\Extensions\DataTag;

use AppBundle\Common\ArrayToolkit;
use Biz\Group\Service\ThreadService;

class HotThreadsDataTag extends BaseDataTag implements DataTag
{
    /**
     * 获取最热话题.
     *
     * 可传入的参数:
     *
     *   count 必需 话题数量,取值不能超过100
     *
     * @param array $arguments 参数
     *
     * @return array 最热话题
     */
    public function getData(array $arguments)
    {
        $groupSetting = $this->getSettingService()->get('group', array());
        $timeRange = 7 * 24 * 60 * 60;
        if (isset($groupSetting['threadTime_range'])) {
            $timeRange = $groupSetting['threadTime_range'] * 24 * 60 * 60;
        }

        $hotThreads = $this->getThreadService()->searchThreads(
            array(
                'createdTime' => time() - $timeRange,
                'status' => 'open',
            ),
            array(
                'isStick' => 'DESC',
                'postNum' => 'DESC',
                'createdTime' => 'DESC',
            ),
            0,
            $arguments['count']
        );

        $ownerIds = ArrayToolkit::column($hotThreads, 'userId');
        $groupIds = ArrayToolkit::column($hotThreads, 'groupId');
        $userIds = ArrayToolkit::column($hotThreads, 'lastPostMemberId');

        $lastPostMembers = $this->getUserService()->findUsersByIds($userIds);

        $owners = $this->getUserService()->findUsersByIds($ownerIds);

        $groups = $this->getGroupService()->getGroupsByids($groupIds);

        foreach ($hotThreads as $key => $thread) {
            if ($thread['userId'] == $owners[$thread['userId']]['id']) {
                $hotThreads[$key]['user'] = $owners[$thread['userId']];
            }

            if ($thread['lastPostMemberId'] > 0 && $thread['lastPostMemberId'] == $lastPostMembers[$thread['lastPostMemberId']]['id']) {
                $hotThreads[$key]['lastPostMember'] = $lastPostMembers[$thread['lastPostMemberId']];
            }

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。