ImportController.class.php
2.58 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
<?php
/**
* Created by IntelliJ IDEA.
* User: zhuxun37
* Date: 2017/5/17
* Time: 下午1:42
*/
namespace Apicp\Controller\Department;
use Common\Common\Department;
use Common\Service\DepartmentService;
use Common\Service\DeptRightService;
use Common\Service\ImportDataService;
class ImportController extends AbstractController
{
public function Index_post()
{
try {
$departmentService = new DepartmentService();
$department = array();
$departmentService->prepareImport($this->_result, $department, I('post.'));
if (!$this->_managePower()) {
E('_ERR_ADMIN_PERMISSION_DENIED');
}
$role = $this->_login->role;
if (!empty($role['writeDpIdList'])) {
$dpServ = &Department::instance();
$allow_dp_ids = $dpServ->list_childrens_by_cdid($role['writeDpIdList'], true);
// 用于首次导入时验证
if (!isset($department['dpId']) && !in_array($department['dpParentid'], $allow_dp_ids)) {
E('2001:上级部门不在可管理的权限内');
}
// 用于修改组织时验证
if (isset($department['dpId']) && !in_array($department['dpId'], $allow_dp_ids)) {
E('2002:本部门不在可管理的权限内');
}
}
$department['isAll'] = 1;
$department['isDept'] = 1;
$department['dpIds'] = array();
$department['departmentExtJson'] = rjson_encode($department['extList'], JSON_FORCE_OBJECT);
if (empty($department['dpName'])) {
E('_ERR_EXCEL_DEP_NAME');
}
// 部门数据入库
$dpRightServ = new DeptRightService();
if (empty($department['dpId'])) {
$dpRightServ->createDp($department);
} else {
$dpRightServ->updateDp($department['dpId'], $department, false);
}
$this->clearDepartmentCache();
} catch (\Exception $e) {
$errMsg = $e->getMessage();
// 如果读取数据正常, 则抛错
if (!empty($this->_result['data'])) {
$importDataService = new ImportDataService();
$importDataService->update((int)I('post.index'), array('is_error' => 1, 'fail_message' => $errMsg));
// 错误列表新增失败原因
$this->_result['data'][] = $errMsg;
}
E($e->getCode() . ":" . $errMsg);
}
return true;
}
}