ImportController.class.php 2.58 KB
<?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;
    }

}