ReadLinkController.class.php 3.17 KB
<?php
/**
 * Created by IntelliJ IDEA.
 * User: zhuxun37
 * Date: 2017/5/23
 * Time: 下午5:56
 */

namespace Api\Controller\Invite;

use Common\Common\Cache;
use Common\Common\Department;
use Common\Model\InviteSettingModel;
use Common\Service\AttrService;
use Common\Service\InviteSettingService;

class ReadLinkController extends AbstractController
{
    public function Index_post()
    {
        // 检查管理权限
        $this->checkCurrentInvitePower($this->_login->user);

        // 获取邀请配置
        $settingService = new InviteSettingService();
        $data = $settingService->get_by_conds([]);
        if (empty($data)) {
            E('_ERR_MISS_INVITE_CONFIG');
        }
        // 获取字段配置
        $attrService = new AttrService();
        $fields = $attrService->getAttrList(true, array(), false, false);
        $fields = array_combine_by_key($fields, 'field_name');
        // 获取通讯录配置
        $settings = Cache::instance()->get('Common.AppSetting');
        // 获取企业信息
        $enterprise = Cache::instance()->get(
            'Common.EnterpriseDetail',
            '',
            ['expire' => cfg('ENTERPRISE_DETAIL_CACHE_EXPIRE')]
        );
        // 邀请方式: 直接邀请
        $assignDepartment = $this->getAssignDepartment($data);

        $this->_result = [
            // 邀请方式
            'type' => $data['type'],
            // 岗位填写方式
            'jobMode' => $settings['jobMode']['value'],
            // 角色填写方式
            'roleMode' => $settings['roleMode']['value'],
            // 企业名称
            'qyName' => $enterprise['epName'],
            'qyLogo' => $enterprise['corpSquareLogo'],
            // 岗位数据
            'jobField' => $fields['memJob'],
            // 角色数据
            'roleField' => $fields['memRole'],
            // 邀请人填写字段
            'inviter_write' => empty($data['inviter_write']) ? [] : unserialize($data['inviter_write']),
            // 进入指定组织邀请 类型的 指定组织
            'assignDepartment' => $assignDepartment
        ];

        return true;
    }

    /**
     * 邀请方式为直接邀请, 获取指定进入的组织 包括 进入邀请人所在组织
     * @param $data array 邀请设置
     * @return array
     */
    protected function getAssignDepartment($data)
    {
        $assignDepartment = [];
        if ($data['type'] == InviteSettingModel::TYPE_DIRECT) {
            // 进入指定组织
            if (!empty($data['departments'])) {
                $assignDpId = unserialize($data['departments']);
                $depServ = new Department();
                $assignDepartment = $depServ->getById($assignDpId[0]);
                if (empty($assignDepartment)) {
                    E('_ERR_MISS_DIRECT_INVITE_DEPARTMENT');
                }
                $assignDepartment = [array_intersect_key_reserved($assignDepartment, ['dpId', 'dpName'], true)];
                // 进入邀请人所在组织
            } else {
                $assignDepartment = array_intersect_key_reserved($this->_login->user['dpName'], ['dpId', 'dpName']);
            }
        }

        return $assignDepartment;
    }
}