RangeController.class.php 4.28 KB
<?php
/**
 * 可见范围接口
 * Created by PhpStorm.
 * User: mr.song
 * Date: 2016/7/22
 * Time: 16:49
 */
namespace Apicp\Controller\ChooseMem;

use VcySDK\Department;
use VcySDK\Member;
use VcySDK\Service;
use VcySDK\Tag;


class RangeController extends AbstractController
{

    /**
     * VcySDK 附件操作类
     *
     * @type Member
     */
    protected $_member;

    /**
     * VcySDK 部门操作类
     *
     * @type Department
     */
    protected $_department;

    /**
     * VcySDK 标签操作类
     *
     * @type Tag
     */
    protected $_tag;

    public function before_action($action = '')
    {

        if (! parent::before_action($action)) {
            return false;
        }

        $serv = &Service::instance();
        $this->_member = new Member($serv);
        $this->_department = new Department($serv);
        $this->_tag = new Tag($serv);

        return true;
    }

    public function Index()
    {

        $data = I("post.data");
        // 获取用户信息
        $member = $this->member($data);
        // 初始化部门
        $depatments = array();

        // 判断人员部门是否查询全部
        if (! empty($data['department'])) {
            // 查询部分指定部门
            $depatments = $this->partdp($data['department']);
        } else {
            // 获取全部部门
            $depatments = $this->alldp();
        }

        // 获取标签列表
        $tags = $this->taglist($data);
        $this->_result = array(
            'member' => $member,
            'department' => $depatments,
            'tag' => $tags
        );

        return true;
    }

    /**
     * 获取指定部门信息
     *
     * @param array $list 部门ID列表
     *
     * @return array
     */
    private function partdp($list)
    {

        // 初始化
        $data = array();

        // 遍历用户部门ID
        foreach ($list as $key => $v) {
            // 获取部门详情
            $list = $this->_department->detail(array('dpId' => $v['dpId']));
            $data[] = array(
                'dpId' => $list['data']['dpId'],
                'dpName' => $list['data']['dpName'],
            );
        }

        return $data;
    }

    /**
     * 获取全部部门信息
     *
     * @return array
     */
    private function alldp()
    {

        // 初始化
        $data = array();
        // 获取全部部门
        $list = $this->_department->listAll();
        // 遍历全部部门
        foreach ($list['list'] as $key => $item) {
            $data[] = array(
                'dpId' => $item['dpId'],
                'dpName' => $item['dpName']
            );
        }

        return $data;
    }

    /**
     * 获取人员信息
     *
     * @param array $list POST数组
     *
     * @return array
     */
    private function member($list)
    {

        // 初始化
        $data = array();
        // 获取所有用户UIDS
        $uids = array_column($list['member'], 'memUid');
        // 初始化用户
        $member = array();
        // 初始化查询人员条件
        $condition = ! empty($list['member']) ? array('memUids' => $uids) : array();
        // 获取人员
        $member = $this->_member->listAll($condition);
        // 循环输出人员列表
        foreach ($member['list'] as $key => $v) {
            $data[] = array(
                'memUid' => $v['memUid'],
                'memFace' => $v['memFace'] ? $v['memFace'] : '',
                'memUsername' => $v['memUsername']
            );
        }

        return $data;
    }

    /**
     * 获取标签详情
     *
     * @param array $list POST 列表数据
     *
     * @return array
     */
    public function taglist($list)
    {

        // 初始化
        $data = array();
        // 获取所有用户标签ID
        $tags = array_column($list['tag'], 'tagid');
        // 如果标签ID不存在
        if (empty($tags)) {
            return $data;
        }

        // 获取标签列表
        $result = $this->_tag->listAll(['tagIds' => $tags, 'pageSize' => 1000]);
        // 循环遍历
        foreach ($result['list'] as $item) {
            $data[] = array(
                'tagId' => $item['tagId'],
                'tagName' => $item['tagName'] ? $item['tagName'] : '',
            );
        }

        return $data;
    }

}