添加部门和账号优化

This commit is contained in:
wong
2025-04-18 10:38:50 +08:00
parent b7b606701e
commit bf0bcd6f71
4 changed files with 184 additions and 96 deletions

1
.gitignore vendored
View File

@@ -10,3 +10,4 @@ Server/.specstory/
Store_vue/.specstory/ Store_vue/.specstory/
*.zip *.zip
*.cursorindexingignore *.cursorindexingignore
*.md

View File

@@ -14,7 +14,7 @@ use think\facade\Request;
class AccountController extends BaseController class AccountController extends BaseController
{ {
/************************ 账号管理相关接口 ************************/ /************************ 账号管理相关接口 ************************/
/** /**
* 获取公司账号列表 * 获取公司账号列表
* @param string $pageIndex 页码 * @param string $pageIndex 页码
@@ -22,7 +22,7 @@ class AccountController extends BaseController
* @param bool $isJob 是否为定时任务调用 * @param bool $isJob 是否为定时任务调用
* @return \think\response\Json * @return \think\response\Json
*/ */
public function getlist($pageIndex = '',$pageSize = '',$isJob = false) public function getlist($pageIndex = '', $pageSize = '', $isJob = false)
{ {
$api = new AccountLogic(); $api = new AccountLogic();
@@ -32,9 +32,9 @@ class AccountController extends BaseController
// 获取授权token // 获取授权token
$authorization = trim($this->request->header('authorization', $this->authorization)); $authorization = trim($this->request->header('authorization', $this->authorization));
if (empty($authorization)) { if (empty($authorization)) {
if($isJob){ if ($isJob) {
return json_encode(['code'=>500,'msg'=>'缺少授权信息']); return json_encode(['code' => 500, 'msg' => '缺少授权信息']);
}else{ } else {
return errorJson('缺少授权信息'); return errorJson('缺少授权信息');
} }
} }
@@ -46,7 +46,7 @@ class AccountController extends BaseController
'keyword' => $this->request->param('keyword', ''), 'keyword' => $this->request->param('keyword', ''),
'departmentId' => $this->request->param('departmentId', ''), 'departmentId' => $this->request->param('departmentId', ''),
'pageIndex' => !empty($pageIndex) ? $pageIndex : $this->request->param('pageIndex', 0), 'pageIndex' => !empty($pageIndex) ? $pageIndex : $this->request->param('pageIndex', 0),
'pageSize' => !empty($pageSize) ? $pageSize : $this->request->param('pageSize',20) 'pageSize' => !empty($pageSize) ? $pageSize : $this->request->param('pageSize', 20)
]; ];
// 设置请求头 // 设置请求头
@@ -56,24 +56,24 @@ class AccountController extends BaseController
// 发送请求获取公司账号列表 // 发送请求获取公司账号列表
$result = requestCurl($this->baseUrl . 'api/Account/myTenantPageAccounts', $params, 'GET', $header); $result = requestCurl($this->baseUrl . 'api/Account/myTenantPageAccounts', $params, 'GET', $header);
$response = handleApiResponse($result); $response = handleApiResponse($result);
// 保存数据到数据库 // 保存数据到数据库
if (!empty($response['results'])) { if (!empty($response['results'])) {
foreach ($response['results'] as $item) { foreach ($response['results'] as $item) {
$this->saveAccount($item); $this->saveAccount($item);
} }
} }
if($isJob){ if ($isJob) {
return json_encode(['code'=>200,'msg'=>'获取公司账号列表成功','data'=>$response]); return json_encode(['code' => 200, 'msg' => '获取公司账号列表成功', 'data' => $response]);
}else{ } else {
return successJson($response); return successJson($response);
} }
} catch (\Exception $e) { } catch (\Exception $e) {
if($isJob){ if ($isJob) {
return json_encode(['code'=>500,'msg'=>'获取公司账号列表失败:' . $e->getMessage()]); return json_encode(['code' => 500, 'msg' => '获取公司账号列表失败:' . $e->getMessage()]);
}else{ } else {
return errorJson('获取公司账号列表失败:' . $e->getMessage()); return errorJson('获取公司账号列表失败:' . $e->getMessage());
} }
} }
@@ -138,9 +138,23 @@ class AccountController extends BaseController
// 发送请求创建账号 // 发送请求创建账号
$result = requestCurl($this->baseUrl . 'api/account/newAccount', $params, 'POST', $header, 'json'); $result = requestCurl($this->baseUrl . 'api/account/newAccount', $params, 'POST', $header, 'json');
if (is_numeric($result)) { if (is_numeric($result)) {
return successJson($result); $res = CompanyAccountModel::create([
'id' => $result,
'tenantId' => 242,
'userName' => $userName,
'realName' => $realName,
'nickname' => $nickname,
'passwordMd5' => md5($password),
'passwordLocal' => localEncrypt($password),
'memo' => $memo,
'accountType' => 11,
'departmentId' => $departmentId,
'createTime' => time(),
'privilegeIds' => json_encode([])
]);
return successJson($res);
} else { } else {
return errorJson($result); return errorJson($result);
} }
@@ -150,7 +164,6 @@ class AccountController extends BaseController
} }
/** /**
* 创建新账号(包含创建部门) * 创建新账号(包含创建部门)
* @return \think\response\Json * @return \think\response\Json
@@ -186,70 +199,82 @@ class AccountController extends BaseController
// 检查部门是否已存在 // 检查部门是否已存在
$existingDepartment = CompanyModel::where('name', $departmentName)->find(); $existingDepartment = CompanyModel::where('name', $departmentName)->find();
if ($existingDepartment) {
return errorJson('部门名称已存在');
}
// 检查账号是否已存在 // 检查账号是否已存在
$existingAccount = CompanyAccountModel::where('userName', $accountName)->find(); $existingAccount = CompanyAccountModel::where('userName', $accountName)->find();
if ($existingAccount) {
return errorJson('账号名称已存在');
}
// 1. 创建部门
$departmentParams = [
'name' => $departmentName,
'memo' => $departmentMemo,
'departmentIdArr' => [914],
'parentId' => 914
];
$headerData = ['client:system']; $headerData = ['client:system'];
$header = setHeader($headerData, $authorization, 'json'); $header = setHeader($headerData, $authorization, 'json');
$departmentResult = requestCurl($this->baseUrl . 'api/Department/createDepartment', $departmentParams, 'POST', $header, 'json');
// 1. 创建部门
if (is_numeric($departmentResult)) { if (empty($existingDepartment)) {
// 保存部门到数据库 $departmentParams = [
$department = CompanyModel::create([
'id' => $departmentResult,
'name' => $departmentName, 'name' => $departmentName,
'memo' => $departmentMemo, 'memo' => $departmentMemo,
'tenantId' => 242, 'departmentIdArr' => [914],
'isTop' => 0, 'parentId' => 914
'level' => 1, ];
'parentId' => 914,
'privileges' => '', $departmentResult = requestCurl($this->baseUrl . 'api/Department/createDepartment', $departmentParams, 'POST', $header, 'json');
'createTime' => time(), if (is_numeric($departmentResult)) {
'lastUpdateTime' => 0 // 保存部门到数据库
]); CompanyModel::create([
'id' => $departmentResult,
'name' => $departmentName,
'memo' => $departmentMemo,
'tenantId' => 242,
'isTop' => 0,
'level' => 1,
'parentId' => 914,
'privileges' => '',
'createTime' => time(),
'lastUpdateTime' => 0
]);
} else {
return errorJson('创建部门失败:' . $departmentResult);
}
} else { } else {
return errorJson('创建部门失败:' . $departmentResult); $departmentResult = $existingDepartment['id'];
} }
if (empty($existingAccount)) {
// 2. 创建账号
$accountParams = [
'userName' => $accountName,
'password' => $accountPassword,
'realName' => $accountRealName,
'nickname' => $accountNickname,
'memo' => $accountMemo,
'departmentId' => $departmentResult,
'departmentIdArr' => [914, $departmentResult]
];
// 2. 创建账号 $accountResult = requestCurl($this->baseUrl . 'api/Account/newAccount', $accountParams, 'POST', $header, 'json');
$accountParams = [
'userName' => $accountName,
'password' => $accountPassword,
'realName' => $accountRealName,
'nickname' => $accountNickname,
'memo' => $accountMemo,
'departmentId' => $departmentResult,
'departmentIdArr' => [914, $departmentResult]
];
$accountResult = requestCurl($this->baseUrl . 'api/Account/newAccount', $accountParams, 'POST', $header, 'json'); if (is_numeric($accountResult)) {
$res = CompanyAccountModel::create([
'id' => $accountResult,
'tenantId' => 242,
'userName' => $accountName,
'realName' => $accountRealName,
if (!is_numeric($accountResult)) { 'nickname' => $accountNickname,
// 如果创建账号失败,删除已创建的部门 'passwordMd5' => md5($accountPassword),
$this->deleteDepartment($accountResult); 'passwordLocal' => localEncrypt($accountPassword),
return errorJson('创建账号失败:' . $accountResult['msg']); 'memo' => $accountMemo,
'accountType' => 11,
'departmentId' => $departmentResult,
'createTime' => time(),
'privilegeIds' => json_encode([])
]);
return successJson($res, '账号创建成功');
} else {
// 如果创建账号失败,删除已创建的部门
$this->deleteDepartment($accountResult);
return errorJson('创建账号失败:' . $accountResult['msg']);
}
} else {
return successJson($existingAccount, '账号获取成功');
} }
return successJson($accountResult,'账号创建成功');
} catch (\Exception $e) { } catch (\Exception $e) {
return errorJson('创建账号失败:' . $e->getMessage()); return errorJson('创建账号失败:' . $e->getMessage());
} }
@@ -268,9 +293,9 @@ class AccountController extends BaseController
// 获取授权token // 获取授权token
$authorization = trim($this->request->header('authorization', $this->authorization)); $authorization = trim($this->request->header('authorization', $this->authorization));
if (empty($authorization)) { if (empty($authorization)) {
if($isJob){ if ($isJob) {
return json_encode(['code'=>500,'msg'=>'缺少授权信息']); return json_encode(['code' => 500, 'msg' => '缺少授权信息']);
}else{ } else {
return errorJson('缺少授权信息'); return errorJson('缺少授权信息');
} }
} }
@@ -283,24 +308,24 @@ class AccountController extends BaseController
// 发送请求获取部门列表 // 发送请求获取部门列表
$url = $this->baseUrl . 'api/Department/fetchMyAndSubordinateDepartment'; $url = $this->baseUrl . 'api/Department/fetchMyAndSubordinateDepartment';
$result = requestCurl($url, [], 'GET', $header, 'json'); $result = requestCurl($url, [], 'GET', $header, 'json');
// 处理返回结果 // 处理返回结果
$response = handleApiResponse($result); $response = handleApiResponse($result);
// 保存数据到数据库 // 保存数据到数据库
if (!empty($response)) { if (!empty($response)) {
$this->processDepartments($response); $this->processDepartments($response);
} }
if($isJob){ if ($isJob) {
return json_encode(['code'=>200,'msg'=>'获取部门列表成功','data'=>$response]); return json_encode(['code' => 200, 'msg' => '获取部门列表成功', 'data' => $response]);
}else{ } else {
return successJson($response, '获取部门列表成功'); return successJson($response, '获取部门列表成功');
} }
} catch (\Exception $e) { } catch (\Exception $e) {
if($isJob){ if ($isJob) {
return json_encode(['code'=>500,'msg'=>'获取部门列表失败:' . $e->getMessage()]); return json_encode(['code' => 500, 'msg' => '获取部门列表失败:' . $e->getMessage()]);
}else{ } else {
return errorJson('获取部门列表失败:' . $e->getMessage()); return errorJson('获取部门列表失败:' . $e->getMessage());
} }
} }
@@ -345,8 +370,8 @@ class AccountController extends BaseController
$header = setHeader($headerData, $authorization, 'json'); $header = setHeader($headerData, $authorization, 'json');
// 发送请求创建部门 // 发送请求创建部门
$result = requestCurl($this->baseUrl . 'api/Department/createDepartment', $params, 'POST', $header,'json'); $result = requestCurl($this->baseUrl . 'api/Department/createDepartment', $params, 'POST', $header, 'json');
// 处理返回结果 // 处理返回结果
if (is_numeric($result)) { if (is_numeric($result)) {
$res = CompanyModel::create([ $res = CompanyModel::create([
@@ -387,20 +412,20 @@ class AccountController extends BaseController
$id = $this->request->param('id', 0); $id = $this->request->param('id', 0);
$name = $this->request->param('name', ''); $name = $this->request->param('name', '');
$memo = $this->request->param('memo', ''); $memo = $this->request->param('memo', '');
if (empty($id)) { if (empty($id)) {
return errorJson('部门ID不能为空'); return errorJson('部门ID不能为空');
} }
if (empty($name)) { if (empty($name)) {
return errorJson('部门名称不能为空'); return errorJson('部门名称不能为空');
} }
// 验证部门是否存在 // 验证部门是否存在
$department = CompanyModel::where('id', $id)->find(); $department = CompanyModel::where('id', $id)->find();
if (empty($department)) { if (empty($department)) {
return errorJson('部门不存在'); return errorJson('部门不存在');
} }
// 构建请求参数 // 构建请求参数
$departmentIdArr = $department->parentId == 914 ? [914] : [914, $department->parentId]; $departmentIdArr = $department->parentId == 914 ? [914] : [914, $department->parentId];
$params = [ $params = [
@@ -424,12 +449,12 @@ class AccountController extends BaseController
// 发送请求修改部门 // 发送请求修改部门
$result = requestCurl($this->baseUrl . 'api/Department/department', $params, 'PUT', $header, 'json'); $result = requestCurl($this->baseUrl . 'api/Department/department', $params, 'PUT', $header, 'json');
$response = handleApiResponse($result); $response = handleApiResponse($result);
// 更新本地数据库 // 更新本地数据库
$department->name = $name; $department->name = $name;
$department->memo = $memo; $department->memo = $memo;
$department->save(); $department->save();
return successJson([], '部门修改成功'); return successJson([], '部门修改成功');
} catch (\Exception $e) { } catch (\Exception $e) {
return errorJson('修改部门失败:' . $e->getMessage()); return errorJson('修改部门失败:' . $e->getMessage());
@@ -467,17 +492,16 @@ class AccountController extends BaseController
// 发送删除请求 // 发送删除请求
$result = requestCurl($this->baseUrl . 'api/Department/del/' . $id, [], 'DELETE', $header); $result = requestCurl($this->baseUrl . 'api/Department/del/' . $id, [], 'DELETE', $header);
if($result){ if ($result) {
return errorJson($result); return errorJson($result);
}else{ } else {
// 删除本地数据库记录 // 删除本地数据库记录
$department->delete(); $department->delete();
return successJson([], '部门删除成功'); return successJson([], '部门删除成功');
} }
} catch (\Exception $e) { } catch (\Exception $e) {
return errorJson('删除部门失败:' . $e->getMessage()); return errorJson('删除部门失败:' . $e->getMessage());
} }
@@ -494,11 +518,11 @@ class AccountController extends BaseController
if (empty($departments) || !is_array($departments)) { if (empty($departments) || !is_array($departments)) {
return; return;
} }
foreach ($departments as $item) { foreach ($departments as $item) {
// 保存当前部门 // 保存当前部门
$this->saveDepartment($item); $this->saveDepartment($item);
// 递归处理子部门 // 递归处理子部门
if (!empty($item['children']) && is_array($item['children'])) { if (!empty($item['children']) && is_array($item['children'])) {
$this->processDepartments($item['children']); $this->processDepartments($item['children']);
@@ -521,7 +545,7 @@ class AccountController extends BaseController
'parentId' => isset($item['parentId']) ? $item['parentId'] : 0, 'parentId' => isset($item['parentId']) ? $item['parentId'] : 0,
'tenantId' => isset($item['tenantId']) ? $item['tenantId'] : 0, 'tenantId' => isset($item['tenantId']) ? $item['tenantId'] : 0,
'privileges' => isset($item['privileges']) ? (is_array($item['privileges']) ? json_encode($item['privileges']) : $item['privileges']) : '', 'privileges' => isset($item['privileges']) ? (is_array($item['privileges']) ? json_encode($item['privileges']) : $item['privileges']) : '',
'createTime' => isset($item['createTime']) ? strtotime($item['createTime']) : 0, 'createTime' => isset($item['createTime']) ? strtotime($item['createTime']) : 0,
'lastUpdateTime' => isset($item['lastUpdateTime']) ? ($item['lastUpdateTime'] == '0001-01-01T00:00:00' ? 0 : strtotime($item['lastUpdateTime'])) : 0 'lastUpdateTime' => isset($item['lastUpdateTime']) ? ($item['lastUpdateTime'] == '0001-01-01T00:00:00' ? 0 : strtotime($item['lastUpdateTime'])) : 0
]; ];

View File

@@ -64,4 +64,9 @@ Route::group('v1/', function () {
Route::post('update', 'app\\cunkebao\\controller\\ContentLibraryController@update'); // 更新内容库 Route::post('update', 'app\\cunkebao\\controller\\ContentLibraryController@update'); // 更新内容库
Route::delete('delete', 'app\\cunkebao\\controller\\ContentLibraryController@delete'); // 删除内容库 Route::delete('delete', 'app\\cunkebao\\controller\\ContentLibraryController@delete'); // 删除内容库
}); });
// 好友相关
Route::group('friend', function () {
Route::get('', 'app\\cunkebao\\controller\\FriendController@index'); // 获取好友列表
});
})->middleware(['jwt']); })->middleware(['jwt']);

View File

@@ -0,0 +1,58 @@
<?php
namespace app\cunkebao\controller\friend;
use app\common\model\Device as DeviceModel;
use app\common\model\DeviceUser as DeviceUserModel;
use app\common\model\WechatFriend;
use app\cunkebao\controller\BaseController;
/**
* 设备管理控制器
*/
class GetFriendListV1Controller extends BaseController
{
/**
* 获取好友列表
* @return \think\response\Json
*/
public function index()
{
try {
$where = [];
if ($this->getUserInfo('isAdmin') == 1) {
$where['companyId'] = $this->getUserInfo('companyId');
} else {
$where['companyId'] = $this->getUserInfo('companyId');
$where['userId'] = $this->getUserInfo('id');
}
$data = WechatFriend::alias('wf')
->field(['wa1.nickname','wa1.avatar','wa1.alias','wa1.wechatId','wa2.nickname as ownerNickname','wa2.alias as ownerAlias','wf.createTime'])
->leftJoin('wechat_account wa1','wf.wechatId = wa1.wechatId')
->leftJoin('wechat_account wa2','wf.ownerWechatId = wa2.wechatId')
->where($where);
return json([
'code' => 200,
'msg' => '获取成功',
'data' => [
'list' => $data->select(),
'total' => $data->total(),
]
]);
} catch (\Exception $e) {
return json([
'code' => $e->getCode(),
'msg' => $e->getMessage()
]);
}
}
}