AddController.class.php
7.12 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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
<?php
/**
* 【销售活动-手机端】发布回帖接口
*
* User: daijun
* Date: 2017-11-02
*/
namespace Api\Controller\Comment;
use Common\Common\Helper;
use Common\Service\CommentService;
use Common\Service\ActivityService;
use Common\Service\RightService;
class AddController extends \Api\Controller\AbstractController
{
public function Index_post()
{
if (empty($this->uid)) {
// 判断是否外部人员
E('_EMPTY_USER_ID');
}
// 获取参数
$params = I('post.');
// 活动id不能为空
if (empty($params['ac_id'])) {
E('_ERR_AC_ID_EMPTY');
}
// 实例化活动Service
$activity_s = new ActivityService();
// 获取活动详情
$activity = $activity_s->get($params['ac_id']);
// 活动数据不存在
if (empty($activity) || ActivityService::DRAFT_STATUS == $activity['activity_status']
|| ActivityService::OPEN_ACTIVITY_HIDE == $activity['is_hide']) {
E('_ERR_DATA_NOT_EXIST');
}
// 验证扩展字段数据
$this->check_ext_fields($params, $activity);
// 判断活动回帖权限
if ($activity['is_all'] != RightService::IS_ALL) {
// 实例化权限表
$right_s = new RightService();
// 如果不是全公司,查询活动的回帖权限
$right = $right_s->list_by_conds(
[
'ac_id' => $params['ac_id'],
'r_type' => RightService::RIGHT_TYPE_ACTIVITY
]
);
// 验证当前用户是否有权限
if (!empty($right) && !$right_s->check_get_quit($right, $this->_login->user)) {
// 如果无权限,抛错
E('_ERR_COMMENT_QUIT');
}
}
// 如果活动已经结束或者提前终止,则无法回帖
if ($activity['end_time'] <= MILLI_TIME || ActivityService::STOP_ACTIVITY == $activity['activity_status']) {
E('_ERR_ACTIVITY_HAS_END');
}
// 评论回复信息表Service
$comment_s = new CommentService();
// 发布回帖
$id = $comment_s->publish_comment($params, $activity, $this->_login->user);
// 发帖失败
if (!$id) {
E('_ERR_ADD_DATA');
}
$this->_result = ['comment_id' => rintval($id)];
}
/**
* 验证扩展字段格式
*
* @param array $params 参数
* @param array $activity 活动详情
*
* @return bool
*/
protected function check_ext_fields($params = [], $activity = [])
{
// 扩展字段
$ext_fields = isset($params['ext_fields']) ? $params['ext_fields'] : '';
// 如果手机端数据和后台字段数据都是空
if (empty($ext_fields) && empty($activity['ext_fields'])) {
return true;
}
// 验证手机端参数是否合法
if ((!empty($activity['ext_fields']) && empty($ext_fields))
|| (empty($activity['ext_fields'] && !empty($ext_fields)))) {
// 扩展字段里面为空或者没有数据
E('_EMPTY_EXT_FIELDS');
}
// 数据库中自定义字段
$activity_ext_fields = unserialize($activity['ext_fields']);
$activity_ext_fields = array_combine_by_key($activity_ext_fields, 'name');
// 扩展字段验证
foreach ($ext_fields as $value) {
// 获取当前字段是否必填
$is_required = intval($activity_ext_fields[$value['name']]['is_required']);
$type = intval($activity_ext_fields[$value['name']]['type']);
// 文本验证合法性
if (Helper::EXT_FIELD_TEXT_TYPE == $type) {
if (ActivityService::IS_REQUIRE_TRUE == $is_required && !isset($value['text'])) {
// 必填的文本类型,内容不能为空
E('_EMPTY_EXT_FIELDS_TEXT');
}
continue;
}
// 数字验证合法性
if (Helper::EXT_FIELD_NUMBER_TYPE == $type) {
if (ActivityService::IS_REQUIRE_TRUE == $is_required && !isset($value['text'])) {
// 必填的数字类型,数字不能为空
E('_EMPTY_EXT_FIELDS_NUM');
}
if (!is_numeric($value['text'])) {
// 必填的数字类型,所填必须为数字
E('_ERR_EXT_FIELDS_NUM_TYPE');
}
continue;
}
// 单选验证合法性
if ((Helper::EXT_FIELD_RADIO_TYPE == $type)
&& (ActivityService::IS_REQUIRE_TRUE == $is_required)) {
// 初始化选择的选项数量
$count = 0;
foreach ($value['options'] as $val) {
// 查看所有选项
if (Helper::EXT_FIELD_CHECK == $val['value']) {
// 看看选中的有几个
$count++;
}
}
if ($count != 1) {
// 必填的单选类型,选项数目不正确
E('_ERR_EXT_FIELDS_SINGLE');
}
continue;
}
// 多选验证合法性
if ((Helper::EXT_FIELD_MULTI_SELECT_TYPE == $type)
&& (ActivityService::IS_REQUIRE_TRUE == $is_required)) {
$count = 0;
foreach ($value['options'] as $val) {
// 查看所有选项
if (Helper::EXT_FIELD_CHECK == $val['value']) {
// 看看选中的有几个
$count++;
}
}
if ($count < 2) {
// 必填的单选类型,选项数目至少为两个
E('_ERR_EXT_FIELDS_MULTIPLE');
}
continue;
}
// 时分验证合法性
if (Helper::EXT_FIELD_TIME_HI_TYPE == $type) {
if ((ActivityService::IS_REQUIRE_TRUE == $is_required)
&&
(!preg_match(Helper::HOUR_MIN_REGULAR, $value['text']))
) {
E('_ERR_EXT_FIELDS_H_I');
}
continue;
}
// 年月日验证合法性
if (Helper::EXT_FIELD_TIME_YMD_TYPE == $type) {
if ((ActivityService::IS_REQUIRE_TRUE == $is_required)
&&
(!preg_match(Helper::YEAR_MONTH_DAY_REGULAR, $value['text']))
) {
E('_ERR_EXT_FIELDS_Y_M_D');
}
continue;
}
// 年月日时分验证合法性
if ((Helper::EXT_FIELD_TIME_YMD_HI_TYPE == $type)
&& (ActivityService::IS_REQUIRE_TRUE == $is_required)
&& (!preg_match(Helper::YEAR_MONTH_DAY_HOUR_MIN_REGULAR, $value['text']))) {
E('_ERR_EXT_FIELDS_Y_M_D_H_I');
}
}
return true;
}
}