<?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; } }