InfoController.class.php 8.03 KB
<?php
/**
 * Created by PhpStorm.
 * User: liyifei2012it
 * Date: 17/9/26
 * Time: 11:22
 */
namespace Apicp\Controller\HomePage;

use Common\Common\HomePage;
use Common\Common\Department;
use Common\Common\Tag;
use Common\Common\User;
use Common\Common\Job;
use Common\Common\Role;

class InfoController extends AbstractController
{
    /**
     * Info
     * @author liyifei
     * @desc 获取个人主页设置
     * @return array
                array(
                    'homepage' => 1, // 是否开启(1=关闭;2=开启)
                    'all_attrs' => array( // 所有字段信息
                        array(
                            'field_name' => 'memUsername',
                            'attr_name' => '姓名',
                        ),
                        array(
                            'field_name' => 'memGender',
                            'attr_name' => '性别',
                        ),
                    ),
                    'attrs' => array( // 全体成员信息显示
                        'username',
                        'face',
                        'mobile'
                    ),
                    'secret' => 2, // 敏感成员信息是否显示(1=不显示;2=显示)
                    'secret_rights' => array( // 敏感成员范围
                        'is_all' => 1, // 是否全公司(1=否,2=是)
                        'tag_list' => array(// 标签
                            array(
                                'tag_id' => '3CDBB2867F0000012C7F8D28432943BB',// 标签ID
                                'tag_name' => 'liyifei001',// 标签名
                            ),
                        ),
                        'dp_list' => array(// 部门
                            array(
                                'dp_id' => 'B65085507F0000017D3965FCB20CA747',// 部门ID
                                'dp_name' => '一飞冲天',// 部门名
                            ),
                        ),
                        'user_list' => array(// 人员
                            array(
                                'uid' => 'B4B3BA5B7F00000173E870DA6ADFEA2A',// 人员UID
                                'username' => '缘来素雅',// 人员姓名
                                'face' => 'http://shp.qpic.cn/bizmp/gdZUibR6BHrmiar6pZ6pLfRyZSVaXJicn2CsvKRdI9gccXRfP2NrDvJ8A/'// 人员头像
                            ),
                        ),
                        'job_list' => array(// 职位
                            array(
                                'job_id' => '62C316437F0000017AE8E6ACC7EFAC22',// 职位ID
                                'job_name' => '攻城狮',// 职位名称
                            ),
                        ),
                        'role_list' => array(// 角色
                            array(
                                'role_id' => '62C354B97F0000017AE8E6AC4FD6F429',// 角色ID
                                'role_name' => '国家元首',// 角色名称
                            ),
                        ),
                    ),
                    'secret_attrs' => array( // 敏感成员信息显示
                        'username',
                        'face',
                    ),
                )
     */
    public function Index()
    {
        // 可用人员属性
        $homepageServ = &HomePage::instance();
        $attrList = $homepageServ->getAttrs();
        $allAttrs = array_keys($attrList);

        // 获取个人主页设置缓存
        $homepageServ = &HomePage::instance();
        $setting = $homepageServ->getSetting();

        // 格式化敏感成员数据
        if (is_array($setting['secret_rights']) && !empty($setting['secret_rights'])) {
            $setting['secret_rights'] = $this->getData($setting['secret_rights']);
        }

        // 所有可用的员工属性
        $setting['all_attrs'] = array_values($attrList);

        // 过滤员工属性中已关闭或不显示的属性
        $setting['attrs'] = array_values(array_intersect($setting['attrs'], $allAttrs));
        $setting['secret_attrs'] = array_values(array_intersect($setting['secret_attrs'], $allAttrs));

        $this->_result = $setting;
    }

    /**
     * 获取格式化后的权限数据
     * @author zhonglei
     * @param array $conds 权限筛选条件
     * @return array
     *          + int is_all               是否全公司(1=否;2=是)
     *          + array dp_list   部门信息
     *                    + string dp_id   部门ID
     *                    + string dp_name 部门名称
     *          + array tag_list  标签信息
     *                    + string tag_id   标签ID
     *                    + string tag_name 标签名称
     *          + array user_list 人员信息
     *                    + string uid      用户ID
     *                    + string username 用户姓名
     *                    + string face     头像
     *          + array job_list  职位信息
     *                    + string job_id   职位ID
     *                    + string job_name 职位名称
     *          + array role_list  角色信息
     *                    + string role_id   角色ID
     *                    + string role_name 角色名称
     */
    public function getData($rights)
    {
        $data = [
            'is_all' => 1,
            'dp_list' => [],
            'tag_list' => [],
            'user_list' => [],
            'job_list' => [],
            'role_list' => [],
        ];

        foreach ($rights as $k => $v) {
            switch ($k) {
                // 全公司
                case 1:
                    $data['is_all'] = 1;
                    break;

                // 部门
                case HomePage::RIGHT_TYPE_DEPARTMENT:
                    $dpServ = &Department::instance();
                    $dps = $dpServ->listById($v);

                    foreach ($dps as $dp) {
                        $data['dp_list'][] = [
                            'dp_id' => $dp['dpId'],
                            'dp_name' => $dp['dpName'],
                        ];
                    }
                    break;

                // 标签
                case HomePage::RIGHT_TYPE_TAG:
                    $tagServ = &Tag::instance();
                    $tags = $tagServ->listAll($v);

                    foreach ($tags as $tag) {
                        $data['tag_list'][] = [
                            'tag_id' => $tag['tagId'],
                            'tag_name' => $tag['tagName'],
                        ];
                    }
                    break;

                // 人员
                case HomePage::RIGHT_TYPE_USER:
                    $userServ = &User::instance();
                    $users = $userServ->listAll(['memUids' => $v]);

                    foreach ($users as $user) {
                        $data['user_list'][] = [
                            'uid' => $user['memUid'],
                            'username' => $user['memUsername'],
                            'face' => $user['memFace'],
                        ];
                    }
                    break;

                // 职位
                case HomePage::RIGHT_TYPE_JOB:
                    $jobServ = &Job::instance();
                    $jobs = $jobServ->listById($v);

                    foreach ($jobs as $job) {
                        $data['job_list'][] = [
                            'job_id' => $job['jobId'],
                            'job_name' => $job['jobName'],
                        ];
                    }
                    break;

                // 角色
                case HomePage::RIGHT_TYPE_ROLE:
                    $roleServ = &Role::instance();
                    $roles = $roleServ->listById($v);

                    foreach ($roles as $role) {
                        $data['role_list'][] = [
                            'role_id' => $role['roleId'],
                            'role_name' => $role['roleName'],
                        ];
                    }
                    break;
            }
        }

        return $data;
    }
}