ListController.class.php 4.12 KB
<?php
/**
 * 微信端id转服务器端id列表逻辑
 * ListChooseController.class.php
 * $author$ 何岳龙
 * $date$   2016年8月29日16:53:37
 */

namespace Api\Controller\ChooseMem;

use Common\Common\Department;
use Common\Common\Tag;
use Common\Common\User;

class ListController extends AbstractController
{

    public function Index()
    {

        // 获取是否全选
        $selectAll = I('post.selectAll');
        // 初始化人员返回值
        $mems = array();
        // 初始化部门返回值
        $dps = array();
        // 初始化标签返回值
        $tagList = array();

        // 如果是全选
        if ($selectAll == self::SELECT_All) {
            $this->_listAll($mems, $dps, $tagList);
        } else {
            $this->_listBySelect($mems, $dps, $tagList);
        }

        // 人员列表
        $this->filterByKey($mems, array('memUid', 'memUserid', 'memUsername', 'memFace'));
        // 部门列表
        $this->filterByKey($dps, array('dpId', 'dpThirdid', 'dpName'));
        // 标签列表
        $this->filterByKey($tagList, array('tagId', 'tagThirdId', 'tagName'));

        $this->_result = array(
            'isAll' => $selectAll,
            'list' => array(
                'userIds' => $mems,
                'dpIds' => $dps,
                'tagIds' => !empty($tagList) ? $tagList : array()
            )
        );

        return true;
    }

    /**
     * 获取已经选择的用户/部门/标签列表
     *
     * @param array &$memList 用户列表
     * @param array &$dpList  部门列表
     * @param array &$tagList 标签列表
     *
     * @return bool
     */
    protected function _listBySelect(&$memList = array(), &$dpList = array(), &$tagList = array())
    {

        // 获取用户Ids数组
        $userIds = I('post.userIds');
        // 获取部门IDs
        $dpIds = I('post.dpIds');
        // 获取标签IDs
        $tagIds = I('post.tagIds');

        // 判断用户
        if (!empty($userIds) && is_array($userIds)) {
            // 获取指定用列表
            $result = User::instance()->listByConds(array('userids' => $userIds), self::PAGE, count($userIds));
            $memList = $result['list'];
        }

        // 判断部门
        if (!empty($dpIds) && is_array($dpIds)) {
            // 通过条件获取部门列表
            $dpList = Department::instance()->listById($dpIds, array(), true);
        }

        // 判断标签
        if (!empty($tagIds) && is_array($tagIds)) {
            $result = Tag::instance()->listAll(array(
                'tagThirdIds' => $tagIds,
                'pageNum' => self::PAGE,
                'pageSize' => count($tagIds)
            ));
            $tagList = $result['list'];
        }

        return true;
    }

    /**
     * 获取所有用户/部门/标签列表
     *
     * @param array &$memList 用户列表
     * @param array &$dpList  部门列表
     * @param array &$tagList 标签列表
     *
     * @return bool
     */
    protected function _listAll(&$memList = array(), &$dpList = array(), &$tagList = array())
    {

        // 获取全部列表
        $result = User::instance()->listByConds(array(), self::PAGE, self::MAX_LIMIT);
        $memList = $result['list'];
        // 获取全部部门
        $dpList = Department::instance()->listAll();
        // 获取标签列表
        $result = Tag::instance()->listAll(array('pageSize' => self::MAX_LIMIT));
        $tagList = $result['list'];

        return true;
    }

    /**
     * 返回form数组
     *
     * @param array &$list  数据列表
     * @param array $fields 需要的键值
     *
     * @return array
     */

    protected function filterByKey(&$list, $fields = array())
    {

        // 如果列表不是数组或为空,就直接返回空数组
        if (!is_array($list) || empty($list)) {
            return array();
        }

        // 初始化数组
        $data = array();
        $fields = array_fill_keys($fields, '');
        foreach ($list as $key => $_value) {
            $data[$key] = array_intersect_key($_value, $fields);
        }
        $list = array_values($data);

        return $data;
    }

}