调整运营后台用户管理

This commit is contained in:
lcc
2025-08-15 14:10:13 +08:00
parent 32b8397ac8
commit 9e2ed42c5e
@@ -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());
}
}
}