ParticipateService.class.php 6.09 KB
<?php
/**
 * 直播参与表
 * @author: houyingcai
 * @email:    594609175@qq.com
 * @date :  2018-01-08 16:05:17
 * @version $Id$
 */

namespace Common\Service;

use Common\Common\Constant;
use Common\Common\User;
use Common\Model\ParticipateModel;

class ParticipateService extends AbstractService
{
    // 构造方法
    public function __construct()
    {
        $this->_d = new ParticipateModel();

        parent::__construct();
    }

    /**
     * @desc 获取已观看人员信息
     * @author houyingcai
     * @param array $postData 参数数组
     * @return array|bool
     */
    public function getWatchedData($postData)
    {
        // 分页默认值
        $postData['page'] = isset($postData['page']) ? $postData['page'] : Constant::PAGING_DEFAULT_PAGE;
        $postData['limit'] = isset($postData['limit']) ? $postData['limit'] : Constant::PAGING_DEFAULT_LIMIT;
        list($start, $limit) = page_limit($postData['page'], $postData['limit']);

        // 条件
        $conds = [
            'lm_id' => $postData['lm_id'],
        ];

        // 排序
        $orderOption = ['created' => 'DESC'];
        // 查询字段
        $fields = 'obj_id,created,updated';

        $watched_list = $this->_d->list_by_conds($conds, [$start, $limit], $orderOption, $fields);
        $uids = array_column($watched_list, 'obj_id');

        $userServ = &User::instance();
        $user_list = $userServ->listByUid($uids);

        $list = [];
        foreach ($watched_list as $watch_k => $watch_v) {
            // 获取用户信息
            $user_info = $user_list[$watch_v['obj_id']];
            // 获取被删除的用户信息
            if (empty($user_info)) {

                $user_info = $userServ->getByUid($watch_v['obj_id']);
            }

            $list[$watch_k]['memUid'] = $watch_v['obj_id'];
            $list[$watch_k]['memUsername'] = $user_info['memUsername'];
            $list[$watch_k]['dpName'] = $user_info['dpName'][0]['dpName'];
            $list[$watch_k]['roleName'] = $user_info['memRole'];
            $list[$watch_k]['tagName'] = $user_info['memTag'];
            $list[$watch_k]['jobName'] = $user_info['memJob'];
            $list[$watch_k]['telephone'] = $user_info['memMobile'];
            $list[$watch_k]['last_watched_time'] = $watch_v['updated'] ? $watch_v['updated'] : $watch_v['created'];
        }

        return $list;
    }

    /**
     * @desc 获取围观看人员信息
     * @author houyingcai
     * @param array $postData 参数数组
     * @param array $uids_unwatch 围观看人员UID列表
     * @return array
     */
    public function getUnwatchData($postData, $uids_unwatch)
    {
        // 数组分页
        $postData['page'] = isset($postData['page']) ? $postData['page'] : Constant::PAGING_DEFAULT_PAGE;
        $postData['limit'] = isset($postData['limit']) ? $postData['limit'] : Constant::PAGING_DEFAULT_LIMIT;

        list($start, $limit) = page_limit($postData['page'], $postData['limit']);

        $uids = array_slice($uids_unwatch, $start, $limit);

        // 查询用户信息
        $userServ = &User::instance();
        $user_list = $userServ->listByUid($uids);

        $unwatch_list = [];
        foreach ($user_list as $user_v) {

            $unwatch_list[] = [
                'memUid' => $user_v['memUid'],
                'memUsername' => $user_v['memUsername'],
                'dpName' => $user_v['dpName'][0]['dpName'],
                'roleName' => $user_v['memRole'],
                'tagName' => $user_v['memTag'],
                'jobName' => $user_v['memJob'],
                'telephone' => $user_v['memMobile'],
            ];
        }

        return $unwatch_list;
    }

    /**
     * @desc 下载已观看人员信息
     * @author caijianhua
     * @param array $postData 参数数组
     * @return array|bool
     */
    public function DownWatchedData($postData)
    {
        // 条件
        $conds = [
            'lm_id' => $postData['lm_id'],
        ];

        // 排序
        $orderOption = ['created' => 'DESC'];
        // 查询字段
        $fields = 'obj_id,created,updated';

        $watched_list = $this->_d->list_by_conds($conds,null, $orderOption, $fields);
        $uids = array_column($watched_list, 'obj_id');

        $userServ = &User::instance();
        $user_list = $userServ->listByUid($uids);

        $list = [];
        foreach ($watched_list as $watch_k => $watch_v) {
            // 获取用户信息
            $user_info = $user_list[$watch_v['obj_id']];
            // 获取被删除的用户信息
            if (empty($user_info)) {

                $user_info = $userServ->getByUid($watch_v['obj_id']);
            }

            $list[$watch_k]['memUid'] = $watch_v['obj_id'];
            $list[$watch_k]['memUsername'] = $user_info['memUsername'];
            $list[$watch_k]['dpName'] = $user_info['dpName'][0]['dpName'];
            $list[$watch_k]['roleName'] = $user_info['memRole'];
            $list[$watch_k]['tagName'] = $user_info['memTag'];
            $list[$watch_k]['jobName'] = $user_info['memJob'];
            $list[$watch_k]['telephone'] = $user_info['memMobile'];
            $list[$watch_k]['last_watched_time'] = $watch_v['updated'] ? $watch_v['updated'] : $watch_v['created'];
        }

        return $list;
    }

    /**
     * @desc 下载围观看人员信息
     * @author caijianhua
     * @param array $uids_unwatch 围观看人员UID列表
     * @return array
     */
    public function DownUnwatchData($uids_unwatch)
    {
        $uids = $uids_unwatch;

        // 查询用户信息
        $userServ = &User::instance();
        $user_list = $userServ->listByUid($uids);

        $unwatch_list = [];
        foreach ($user_list as $user_v) {

            $unwatch_list[] = [
                'memUid' => $user_v['memUid'],
                'memUsername' => $user_v['memUsername'],
                'dpName' => $user_v['dpName'][0]['dpName'],
                'roleName' => $user_v['memRole'],
                'tagName' => $user_v['memTag'],
                'jobName' => $user_v['memJob'],
                'telephone' => $user_v['memMobile'],
            ];
        }

        return $unwatch_list;
    }
}