DepartmentMemberController.class.php 5.08 KB
<?php
/**
 * Created by PhpStorm.
 * User: liyifei2012it
 * Date: 16/9/17
 * Time: 23:15
 */

namespace Apicp\Controller\User;

use Common\Common\Integral;
use Common\Common\Tag;
use Common\Common\User;
use Common\Service\TagService;
use \Common\Service\UserService;

class DepartmentMemberController extends AbstractController
{

    /**
     * 【通讯录】部门人员列表、人员搜索
     * @author liyifei
     * @time   2016-09-17 23:15:42
     * FIXME 需要重构 zs_anything 2017-06-21
     */
    public function Index_post()
    {
        $role = $this->_login->role;

        // 接收定义参数
        $dpId = I('post.department_id', '', 'trim');
        $keyword = I('post.keyword', '', 'trim');
        $status = I('post.status', '', 'trim');
        $active = I('post.active', '', 'trim');
        $mobile = I('post.mobile', '', 'trim');
        $email = I('post.email', '', 'trim');
        $page = I('post.page', 1, 'intval');
        $limit = I('post.limit', 30, 'intval');
        $jobIds = I('post.job_ids', '', 'trim');
        $roleIds = I('post.role_ids', '', 'trim');
        $tagIds = I('post.tag_ids', '', 'trim');

        // UC查询条件
        $conds = [
            'departmentChildrenFlag' => UserService::DEPT_CHILDREN_FLAG,
            'memUsername' => $keyword,
            'memSubscribeStatus' => $status,
            'memMobile' => $mobile,
            'memEmail' => $email,
            'memActive' => $active
        ];
        if (!empty($dpId)) {
            $conds['dpIdList'] = (array)$dpId;
        } elseif (!empty($role['readDpIdList'])) {
            $conds['dpIdList'] = $role['readDpIdList'];
        }

        if (!empty($jobIds)) {
            $conds['jobIdList'] = (array)$jobIds;
        }

        if (!empty($roleIds)) {
            $conds['roleIdList'] = (array)$roleIds;
        }
        if (!empty($tagIds)) {
            $conds['tagIdList'] = (array)$tagIds;
            // 只查询标签下的人员
            $conds['tagType'] = 1;
        }

        // UC排序规则(不传排序参数时,UC根据姓名全拼排序,如姓名是英文或中英文混合,则英文优先)
        $orderList = [
            // 'memIndex' => 'ASC',
        ];

        $newUser = new User();
        $result = $newUser->listByConds($conds, $page, $limit, $orderList);

        // 整理返回值
        $list = [
            'page' => $result['pageNum'],
            'limit' => $result['pageSize'],
            'total' => $result['total'],
            'status_list' => [
                [
                    "status" => UserService::USER_STATUS_ALL,
                    "name" => "全部",
                    "user_total" => $result['amount'],
                ],
                [
                    "status" => UserService::USER_STATUS_FOLLOW,
                    "name" => "已加入",
                    "user_total" => $result['alreadyConcerned'],
                ],
                [
                    "status" => UserService::USER_STATUS_DISABLE,
                    "name" => "已禁用",
                    "user_total" => $result['disable'],
                ],
                [
                    "status" => UserService::USER_STATUS_UNFOLLOW,
                    "name" => "未加入",
                    "user_total" => $result['notConcerned'],
                ],
            ]
        ];

        // 获取积分列表
        if (!empty($result['list'])) {
            $integrals = Integral::instance()->listByUid(array_column($result['list'], 'memUid'));
        } else {
            $integrals = array();
        }

        // 获取用户获得的勋章总数
        $rpcUrl = rpcUrl('/Integral/Rpc/Medal/UserMedalTotal');
        $postData = [array_column($result['list'], 'memUid')];
        $memMedalTotals = \Com\Rpc::phprpc($rpcUrl)->invoke('Index', $postData);
        $memMedalTotals = settype($memMedalTotals, 'array');

        // 返回部门成员列表
        $list['list'] = array();
        foreach ($result['list'] as $k => $v) {
            $tags=[];

            $conds['userIds'] = [$v['memUid']];
            $tags = \Common\Common\Tag::instance()->listAll([], $conds);

            $list['list'][$k]['uid'] = $v['memUid'];
            $list['list'][$k]['face'] = $v['memFace'];
            $list['list'][$k]['name'] = $v['memUsername'];
            $list['list'][$k]['sex'] = $v['memGender'];
            $list['list'][$k]['mobile'] = $v['memMobile'];
            $list['list'][$k]['email'] = $v['memEmail'];
            $list['list'][$k]['status'] = $v['memSubscribeStatus'];
            $list['list'][$k]['job'] = $v['memJob'];
            $list['list'][$k]['active'] = $v['memActive'];
            $list['list'][$k]['dp_name'] = $v['dpName'];
            $list['list'][$k]['integral'] = $integrals[$v['memUid']];
            $list['list'][$k]['role_name'] = $v['memRole'];
            $list['list'][$k]['medal_total'] = isset($memMedalTotals[$v['memUid']]) ? $memMedalTotals[$v['memUid']] : 0;
            $list['list'][$k]['wxplugin_status'] = $v['memWxpluginStatus'];
            $list['list'][$k]['tags'] = $tags ? $tags : [];
        }

        $this->_result = $list;
    }
}