FormController.class.php 3.46 KB
<?php
/**
 * Created by PhpStorm.
 * User: liyifei2012it
 * Date: 16/9/18
 * Reader: zhoutao 2017-06-13 10:11:48
 * Reader: zhoutao 2017-06-30 10:05:44
 * Time: 11:52
 */

namespace Api\Controller\Invite;

use Common\Common\Cache;
use Common\Model\AttrModel;
use Common\Service\AttrService;
use Common\Service\InviteLinkService;

class FormController extends AbstractController
{
    protected $_require_login = false;

    /**
     * 邀请函表单接口
     * @author liyifei
     */
    public function Index_post()
    {

        $link_id = (int)I('post.link_id');

        // 检查邀请链接是否可用
        $this->_checkLinkId($link_id);

        $inviteLinkService = new InviteLinkService();
        if (empty($link_id) || !($link = $inviteLinkService->get($link_id))) {
            E('1009:邀请连接错误');
            return false;
        }
        $default_data = unserialize($link['default_data']);

        // 获取人员属性表单
        $attrServ = new AttrService();
        $attrs = $attrServ->getAttrList(true, [AttrModel::ATTR_TYPE_SPECIAL, AttrModel::ATTR_TYPE_LEADER]);
        // 读取所有已设置开启的属性详情
        $form = $this->getForm($attrs, $default_data);
        // 获取人员属性设置
        $default = $this->getDefault($attrs, $default_data);
        // 获取企业信息
        $enterpriseInfo = Cache::instance()->get(
            'Common.EnterpriseDetail',
            '',
            ['expire' => cfg('ENTERPRISE_DETAIL_CACHE_EXPIRE')]
        );

        $this->_result = [
            'list' => $form,
            'default_data' => $default,
            'qy_logo' => $enterpriseInfo['corpSquareLogo']
        ];

        return true;
    }

    /**
     * 获取人员属性字段
     * @param $attrs
     * @param $default_data array
     *              + 组织
     *              + 岗位
     *              + 角色
     * @return array
     */
    private function getForm($attrs, $default_data)
    {
        $form = [];
        foreach ($attrs as $k => $attr) {
            $hadMemRole = 'memRole' == $attr['field_name'] && !empty($default_data['role']);
            $hadMemJob = 'memJob' == $attr['field_name'] && !empty($default_data['job']);
            if ($hadMemJob || $hadMemRole) {
                continue;
            }

            $form[$k] = [
                'field_name' => $attr['field_name'],
                'attr_name' => $attr['attr_name'],
                'order' => intval($attr['order']),
                'type' => intval($attr['type']),
                'option' => $attr['option'],
                'is_required' => $attr['is_required'],
                'area' => AttrModel::AREA_PERSONAL,
            ];
        }

        return array_values($form);
    }

    /**
     * 获取人员属性设置
     * @param $default_data
     * @param $attrs
     * @return array
     */
    private function getDefault($attrs, $default_data)
    {
        $attrs = array_combine_by_key($attrs, 'field_name');

        $default = array();
        foreach ($default_data as $_k => $_v) {
            if ('department' == $_k) {
                $default['dpName'] = array('组织', $_v['dpName']);
            } elseif ('job' == $_k) {
                $default[$attrs['memJob']['field_name']] = array($attrs['memJob']['attr_name'], $_v);
            } elseif ('role' == $_k) {
                $default[$attrs['memRole']['field_name']] = array($attrs['memRole']['attr_name'], $_v);
            }
        }

        return $default;
    }
}