AbstractService.class.php 3.17 KB
<?php
/**
 * AbstractService.class.php
 * Service 层基类
 * @author: tangxingguo
 * @version: $Id$
 * @copyright: vchangyi.com
 */
namespace Common\Service;

use Common\Common\Constant;
use Common\Common\User;

abstract class AbstractService extends \Com\Service
{

    /**
     * 构造方法
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * 获取多个用户信息
     *
     * @param array $uids
     *
     * @return array|bool
     */
    public function user_list($uids = [])
    {

        if (is_array($uids)) {
            // 根据uid获取用户信息
            $users = $this->get_all_user($uids);
            $users = array_combine_by_key($users, 'memUid');

            return $users;
        }

        return [];
    }

    /**
     * 获取用户信息列表
     *
     * @param array
     *
     * @return array
     */
    public function get_all_user($uids = [])
    {

        // 用户信息初始化
        $user = User::instance();

        $users = $user->listAll();
        $user_list = [];
        foreach ($users as $v) {

            if (Constant::USER_STATUS_FOLLOW_TRUE != $v['memSubscribeStatus']) {
                // 过滤未关注的用户
                continue;
            }

            $user_list[$v['memUid']] = [
                'memUid' => $v['memUid'],
                'memUserid' => $v['memUserid'],
                'memMobile' => $v['memMobile'],
                'memEmail' => $v['memEmail'],
                'memActive' => $v['memActive'],
                'memUsername' => $v['memUsername'],
                'memFace' => $user->avatar($v['memUid'], $v),
                'memSubscribeStatus' => $v['memSubscribeStatus'],
                'memJob' => $v['memJob'],
                'memRole' => $v['memRole'],
                'dpName' => $v['dpName']
            ];
        }

        if (empty($uids)) {

            return $user_list;
        }

        $user_info_list = [];
        foreach ($user_list as $k => $v) {

            if (in_array($k, $uids)) {

                $user_info_list[$v['memUid']] = $v;
            }
        }

        // 获取缓存中不存在的用户信息
        $all_uids = array_filter(array_column($user_list, 'memUid'));
        $no_uids = array_diff($uids, $all_uids);

        // 获取缓存中不存在的或者已被删除的用户信息
        foreach ($no_uids as $_v) {

            $users_info = $user->getByUid($_v);

            $user_info_list[$users_info['memUid']] = [
                'memUid' => $users_info['memUid'],
                'memUserid' => $users_info['memUserid'],
                'memMobile' => $users_info['memMobile'],
                'memEmail' => $users_info['memEmail'],
                'memActive' => $users_info['memActive'],
                'memUsername' => $users_info['memUsername'],
                'memFace' => $user->avatar($users_info['memUid'], $users_info),
                'memSubscribeStatus' => $users_info['memSubscribeStatus'],
                'memJob' => $users_info['memJob'],
                'memRole' => $users_info['memRole'],
                'dpName' => $users_info['dpName']
            ];
        }

        return $user_info_list;
    }
}