diff --git a/agent/admin/controllers/api/organization/User.php b/agent/admin/controllers/api/organization/User.php index 71e1a673..9ab249ff 100644 --- a/agent/admin/controllers/api/organization/User.php +++ b/agent/admin/controllers/api/organization/User.php @@ -6,13 +6,14 @@ require_once COMMPATH . '/third_party/PHPExcel/IOFactory.php'; class User extends BaseController { - + const DEFAULT_ORG_TEAM_ID = 3; //默认机构团队id public function __construct() { parent::__construct(); $this->load->model('agent/pingan/pingan_users_model', 'pinganUsers'); $this->load->model('agent/organization/Organization_model', 'mdOrganization'); $this->load->model('area_model'); + $this->load->model('agent/pingan/Pingan_sys_role_model', 'mdSysRole'); } public function page_get() @@ -25,6 +26,8 @@ class User extends BaseController $teamId = $this->input_param('teamId'); $groupType = $this->input_param('groupType'); $centerNumber = $this->input_param('centerNumber'); + $orgName = $this->input_param('orgName'); + $citys = $this->input_param('citys'); $sort = $this->input_param('sort'); $order = $this->input_param('order'); !$page && $page = 1; @@ -41,6 +44,8 @@ class User extends BaseController $teamId && $where['orgTeamId'] = $teamId; $centerNumber && $where['centerNumber'] = $centerNumber; strlen($groupType) && $where['groupType'] = $groupType; + $citys && $where['cityId'] = $citys[1]; + $orgName && $where['orgName'] = $orgName; $count = $this->pinganUsers->count($where); if ($count) { $res = $this->pinganUsers->select($where, $sort_order, $page, $limit); @@ -48,20 +53,33 @@ class User extends BaseController $orgTeamId = array_column($res, 'orgTeamId'); $orgIdArray = array_merge($orgId, $orgTeamId); $orgMap = $this->mdOrganization->get_map_by_ids($orgIdArray, '', 'id', 'title'); + $areaIdArray = array_column($res, 'areaId'); + $depIdArray = array_column($res, 'depId'); + $teamIdArray = array_column($res, 'teamId'); + $userIdArray = array_merge($areaIdArray, $depIdArray, $teamIdArray); + $userIds = implode(',', $userIdArray); + $mapUsers = []; + if ($userIds) { + $where = ["id in ({$userIds})" => null]; + $mapUsers = $this->pinganUsers->map('id', '', $where, '', 0, 0, 'id,username,userCode'); + } foreach ($res as $v) { $status = intval($v['status']); - $orgName = $orgMap[$v['orgId']] ?: ''; +// $orgName = $orgMap[$v['orgId']] ?: ''; $orgTeamName = $orgMap[$v['orgTeamId']] ?: ''; $city = $this->area_model->get(['city_id' => $v['cityId']]); - + $areaUser = $mapUsers[$v['areaId']] ? $mapUsers[$v['areaId']][0] : []; + $depUser = $mapUsers[$v['depId']] ? $mapUsers[$v['depId']][0] : []; + $teamUser = $mapUsers[$v['teamId']] ? $mapUsers[$v['teamId']][0] : []; $list[] = [ 'id' => $v['id'], 'mobile' => $v['mobile'], 'username' => $v['username'], 'userCode' => $v['userCode'], 'status' => $status, 'updateTime' => $v['updateTime'], - 'orgName' => $orgName, 'orgTeamName' => $orgTeamName, + 'orgName' => $v['orgName'] ?: '', 'orgTeamName' => $orgTeamName, 'typeCn' => Pingan_users_model::TYPE_CN[$v['groupType']], - 'groupType' => $v['groupType'],'cityName' => $city['city_name'], - 'centerNumber' => Pingan_users_model::TYPE_CENTER[$v['centerNumber']] + 'groupType' => $v['groupType'], 'cityName' => $city['city_name'], + 'centerNumber' => Pingan_users_model::TYPE_CENTER[$v['centerNumber']], + 'areaUser' => $areaUser, 'depUser' => $depUser, 'teamUser' => $teamUser ]; } } @@ -80,6 +98,10 @@ class User extends BaseController $res = Pingan_users_model::TYPE_CENTER; $this->return_response($res); } + public function orgNameList_get() + { + $this->return_response(Pingan_users_model::orgNameList); + } public function index_put() { @@ -180,6 +202,7 @@ class User extends BaseController public function import_post() { + $log_file = 'import_user.log'; try { $allowedExtensions = ['xlsx', 'xls']; $file = $_FILES['file']; @@ -215,7 +238,10 @@ class User extends BaseController $rowCnt = $objWorksheet->getHighestRow(); //获取总行数 $col_max = $objWorksheet->getHighestColumn();//最大列 $data = []; - $successNum = 0; + $successNum = 0; //新增用户数量 + $updateNum = 0; //更新用户数量 + $orgTeamId = $_SESSION['orgTeamId'] ?: self::DEFAULT_ORG_TEAM_ID; + $org = $this->mdOrganization->get(['id' => $orgTeamId]); for ($i = 2; $i <= $rowCnt; $i++) { //读取内容 $name = $objWorksheet->getCell('A' . $i)->getValue(); $userCode = $objWorksheet->getCell('B' . $i)->getValue(); @@ -227,15 +253,20 @@ class User extends BaseController $areaCode = $objWorksheet->getCell('H' . $i)->getValue(); $number = $objWorksheet->getCell('I' . $i)->getValue(); $cityId = $objWorksheet->getCell('J' . $i)->getValue(); - $orgTeamId = $objWorksheet->getCell('K' . $i)->getValue(); + $cityName = $objWorksheet->getCell('K' . $i)->getValue(); $groupType = $objWorksheet->getCell('L' . $i)->getValue(); - $user = $this->pinganUsers->get(['userCode' => $userCode]); - if ($user) { + if (!$userCode) { continue; } - $org = $this->mdOrganization->get(['id' => $orgTeamId]); - $cityRow = $this->area_model->get(['city_id' => $cityId]); + $importData = [ + $name, $userCode, $teamName, $teamCode, $depName, $depCode, + $areaName, $areaCode, $number, $cityId, $cityName, $groupType + ]; + debug_log("导入数据:" . json_encode($importData, JSON_UNESCAPED_UNICODE), $log_file); + $centerNumber = Pingan_users_model::TYPE_CENTER_CODE[$number] ?: ''; + $cityRow = $this->area_model->get(["city_name like '%{$cityId}%'" => null]); $teamUserId = $depUserId = $areaUserId = ''; + $role = $this->mdSysRole->map('roleCode', 'roleId', ['status' => 0], '', '', '', 'roleId,roleCode'); if ($areaCode) { //获取区域用户id $areaRow = $this->pinganUsers->get(['userCode' => $areaCode]); if ($areaRow) { @@ -245,48 +276,60 @@ class User extends BaseController 'username' => $areaName, 'userCode' => $areaCode, 'groupType' => Pingan_users_model::GROUP_TYPE_AREA, - 'orgTeamId' => $orgTeamId + 'orgTeamId' => $orgTeamId, + 'centerNumber' => $centerNumber, + 'orgName' => $cityName ]; $org && $areaAddData['orgId'] = $org['parentId']; $cityRow && $areaAddData['cityId'] = $cityRow['city_id']; $cityRow && $areaAddData['provinceId'] = $cityRow['province_id']; + $roleCode = "role-{$areaAddData['groupType']}"; + $role[$roleCode] && $areaAddData['roleId'] = $role[$roleCode]; $areaUserId = $this->pinganUsers->add($areaAddData); } } if ($depCode) { //获取部门用户uid $depRow = $this->pinganUsers->get(['userCode' => $depCode]); if ($depRow) { - $depUserId = $areaRow['id']; + $depUserId = $depRow['id']; } else { $depAddData = [ 'username' => $depName, 'userCode' => $depCode, 'groupType' => Pingan_users_model::GROUP_TYPE_DEP, - 'orgTeamId' => $orgTeamId + 'orgTeamId' => $orgTeamId, + 'centerNumber' => $centerNumber, + 'orgName' => $cityName ]; $org && $depAddData['orgId'] = $org['parentId']; $cityRow && $depAddData['cityId'] = $cityRow['city_id']; $cityRow && $depAddData['provinceId'] = $cityRow['province_id']; $areaUserId && $depAddData['areaId'] = $areaUserId; + $roleCode = "role-{$depAddData['groupType']}"; + $role[$roleCode] && $depAddData['roleId'] = $role[$roleCode]; $depUserId = $this->pinganUsers->add($depAddData); } } if ($teamCode) { //获取团队用户id $teamRow = $this->pinganUsers->get(['userCode' => $teamCode]); if ($teamRow) { - $teamUserId = $areaRow['id']; + $teamUserId = $teamRow['id']; } else { $teamAddData = [ 'username' => $teamName, 'userCode' => $teamCode, 'groupType' => Pingan_users_model::GROUP_TYPE_TEAM, - 'orgTeamId' => $orgTeamId + 'orgTeamId' => $orgTeamId, + 'centerNumber' => $centerNumber, + 'orgName' => $cityName ]; $org && $teamAddData['orgId'] = $org['parentId']; $cityRow && $teamAddData['cityId'] = $cityRow['city_id']; $cityRow && $teamAddData['provinceId'] = $cityRow['province_id']; $areaUserId && $teamAddData['areaId'] = $areaUserId; $depUserId && $teamAddData['depId'] = $depUserId; + $roleCode = "role-{$teamAddData['groupType']}"; + $role[$roleCode] && $teamAddData['roleId'] = $role[$roleCode]; $teamUserId = $this->pinganUsers->add($teamAddData); } } @@ -294,7 +337,9 @@ class User extends BaseController 'username' => $name, 'userCode' => $userCode, 'groupType' => $groupType, - 'orgTeamId' => $orgTeamId + 'orgTeamId' => $orgTeamId, + 'centerNumber' => $centerNumber, + 'orgName' => $cityName ]; $org && $userData['orgId'] = $org['parentId']; $cityRow && $userData['cityId'] = $cityRow['city_id']; @@ -302,17 +347,28 @@ class User extends BaseController $areaUserId && $userData['areaId'] = $areaUserId; $depUserId && $userData['depId'] = $depUserId; $teamUserId && $userData['teamId'] = $teamUserId; - $number && $userData['centerNumber'] = $number; - $result = $this->pinganUsers->add($userData); - if ($result) { - $successNum += 1; + $roleCode = "role-{$userData['groupType']}"; + $role[$roleCode] && $userData['roleId'] = $role[$roleCode]; + $user = $this->pinganUsers->get(['userCode' => $userCode]); + if ($user) { + debug_log("更新数据:" . json_encode($userData, JSON_UNESCAPED_UNICODE), $log_file); + $result = $this->pinganUsers->update($userData, ['id' => $user['id']]); + debug_log("更新结果:" . $result, $log_file); + if (is_numeric($result) && $result) { + $updateNum += 1; + } + } else { + debug_log("新增数据:" . json_encode($userData, JSON_UNESCAPED_UNICODE), $log_file); + $result = $this->pinganUsers->add($userData); + if ($result) { + $successNum += 1; + } } } - $failNum = $rowCnt - 1 - $successNum; - $this->return_response([], "成功导入{$successNum}条数据,失败{$failNum}"); + $message = "新增{$successNum}条数据,更新{$updateNum}"; + $this->return_response([], $message); } catch (Exception $e) { $this->return_json($e->getMessage()); } - } } \ No newline at end of file