SaveController.class.php
3.09 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
<?php
/**
* 保存、编辑分类接口
* User: tangxingguo
* Date: 2017/6/21
* Time: 16:28
*/
namespace Apicp\Controller\AnswerClass;
use Com\PackageValidate;
use Common\Common\Config;
use Common\Service\ClassService;
use Common\Service\ConfigService;
class SaveController extends \Apicp\Controller\AbstractController
{
/**
* Save
*
* @author
* @desc 保存、编辑分类
*
* @param int class_id 分类ID
* @param string class_name:true 分类标题(max:20)
* @param string description 分类描述(max:60)
* @param string manager_id:true 负责人UID
* @param string manager_name:true 负责人姓名
*/
public function Index_post()
{
// 验证规则
$rules = [
'class_id' => 'integer',
'class_name' => 'require|max:20',
'description' => 'max:60',
'manager_id' => 'require',
'manager_name' => 'require',
];
// 验证数据
$validate = new PackageValidate($rules, [], array_keys($rules));
$postData = $validate->postData;
// 分类信息初始化
$classInfo = [
'class_name' => $postData['class_name'],
'description' => isset($postData['description']) ? $postData['description'] : '',
'manager_id' => $postData['manager_id'],
'manager_name' => $postData['manager_name'],
];
// 唯一分类名检查
$classServ = new ClassService();
// 分类名唯一性检查:true=唯一,false=不唯一
$is_unique = $classServ->uniqueName($classInfo['class_name'], $postData['class_id']);
if (!$is_unique) {
// 分类名称重复
E('_ERR_CLASS_NAME_REPEAT');
}
// 分类负责人应用权限检查
$this->_checkManagerRight($postData['manager_id']);
// 保存分类
if (!isset($postData['class_id']) || $postData['class_id'] == 0) {
// 保存
$classServ->insert($classInfo);
} else {
// 修改
$count = $classServ->count($postData['class_id']);
if ($count < 1) {
// 分类数据不存在
E('_ERR_CLASS_DATA_NOT_FOUND');
}
// FIXME 如果分类负责人变更,需更改原负责人为非版主回答、更改负责人回答为版主回答
$classServ->update($postData['class_id'], $classInfo);
}
}
/**
* @desc 检查分类负责人是否有应用使用权限
* @author tangxingguo
*
* @param string $uid 负责人UID
*/
private function _checkManagerRight($uid)
{
// 权限数据获取
$configComm = &Config::instance();
$data = $configComm->getCacheData();
// 根据权限数据获取权限数据内所有UID
$configServ = new ConfigService();
$uids = $configServ->getUidsByRight($data['rights']);
if (!in_array($uid, $uids)) {
// 分类负责人没有应用使用权限
E('_ERR_CLASS_MANAGER_NOT_RIGHT');
}
}
}