EditInviteDetailController.class.php
4.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
<?php
/**
* Created by PhpStorm.
* User: liyifei2012it
* Date: 18/6/5
* Time: 11:43
*/
namespace Api\Controller\Invite;
use Common\Common\Constant;
use Common\Common\Department;
use Common\Service\AttrService;
use Common\Service\InviteUserService;
class EditInviteDetailController extends AbstractController
{
/**
* UserInfo
* @author liyifei
* @desc 被邀请人员详情(编辑用)
* @param Int invite_id 邀请id
* @return Array
array(
'invite_id' => 1, // 邀请id
'is_custom' => 1, // 是否有自定义布局(0=无;1=有)
'form' => array( // 人员属性及数据
array(
'type' => '7', // 属性类型(1=单行文本;2=多行文本;3=数字;4=日期;5=时间;6=日期时间;7=单选;8=多选;9=地址;10=图片;11=下拉框单选;999=部门选人组件)
'field_name' => 'memGender', // 对应UC字段名
'attr_name' => '性别', // 属性名称
'attr_value' => '1', // 属性值
'option' => array( // 属性选项
array(
'name' => '男', // 选项名称
'value' => '1', // 选项值
)
),
'postion' => '1', // 前端显示区域(1=基本信息;2=验证信息;3=身份信息)
)
)
)
*/
public function Index_post()
{
$invite_id = I('post.invite_id', 0, 'intval');
if ($invite_id == 0) {
E('_ERR_PARAM_IS_MISS');
}
$inviteUserServ = new InviteUserService();
$invite = $inviteUserServ->get($invite_id);
if (empty($invite)) {
E('_ERR_INVITE_DATA_IS_NULL');
}
// 属性信息
$attrServ = new AttrService();
$attrs = $attrServ->getAttrList(true, array(), true, false);
$attrs = array_combine_by_key($attrs, 'field_name');
// 格式化用户提交的表单数据
$form = !empty($invite['form']) ? unserialize($invite['form']) : [];
$isCustom = AttrService::ATTR_CUSTOM_IS_FALSE;
if (!empty($form)) {
foreach ($form as $k => $v) {
$field_name = $v['field_name'];
// 过滤多余返回值(管理后台已删除的属性)
if ($field_name === '_mobile_code' || (!isset($attrs[$field_name]) && $field_name !== 'dpIdList')) {
unset($form[$k]);
continue;
}
// 补全返回值
if (!isset($form[$k]['attr_value'])) {
$form[$k]['attr_value'] = '';
}
if (!is_array($v['option'])) {
$form[$k]['option'] = '';
}
$form[$k]['postion'] = isset($attrs[$field_name]['postion']) ? $attrs[$field_name]['postion'] : Constant::AREA_IDENTITY;
// 特殊处理的属性
switch ($field_name) {
// 属性为"组织"时,需增加返回"组织名称",便于前端编辑时显示
case 'dpIdList':
$dp_path = &Department::instance()->listById($invite['dp_id']);
$form[$k]['dp_name'] = $dp_path[$invite['dp_id']]['dpName'];
$form[$k]['dp_wx_id'] = $dp_path[$invite['dp_id']]['dpThirdid'];
break;
// 属性为"岗位"时,更新option
case 'memJob':
$form[$k]['option'] = $attrs[$field_name]['option'];
break;
// 属性为"角色"时,更新option
case 'memRole':
$form[$k]['option'] = $attrs[$field_name]['option'];
break;
}
// 特殊处理"多选"类型属性的值
if ($v['type'] == Constant::ATTR_TYPE_CHECKBOX) {
$form[$k]['attr_value'] = [];
$form[$k]['option'] = $attrs[$field_name]['option'];
$attr_value = array_combine_by_key($v['attr_value'], 'value');
foreach ($form[$k]['option'] as $val) {
$name = $val['name'];
$value = $val['value'];
if (isset($attr_value[$value]) &&
$attr_value[$value]['name'] == $name &&
$attr_value[$value]['value'] == $value
) {
$val['checked'] = true;
}
$form[$k]['attr_value'][] = $val;
}
}
// 是否存在自定义属性(方便前端布局)
if ($form[$k]['postion'] == Constant::AREA_CUSTOM) {
$isCustom = AttrService::ATTR_CUSTOM_IS_TRUE;
}
}
$form = array_values($form);
}
$this->_result = [
'invite_id' => $invite_id,
'is_custom' => $isCustom,
'form' => $form,
];
}
}