From bf0bcd6f710f843647768ae29f444b18f1d2ce38 Mon Sep 17 00:00:00 2001 From: wong <106998207@qq.com> Date: Fri, 18 Apr 2025 10:38:50 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=83=A8=E9=97=A8=E5=92=8C?= =?UTF-8?q?=E8=B4=A6=E5=8F=B7=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + .../api/controller/AccountController.php | 216 ++++++++++-------- Server/application/cunkebao/config/route.php | 5 + .../friend/GetFriendListV1Controller.php | 58 +++++ 4 files changed, 184 insertions(+), 96 deletions(-) create mode 100644 Server/application/cunkebao/controller/friend/GetFriendListV1Controller.php diff --git a/.gitignore b/.gitignore index 3787ed92..d70491c3 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,4 @@ Server/.specstory/ Store_vue/.specstory/ *.zip *.cursorindexingignore +*.md diff --git a/Server/application/api/controller/AccountController.php b/Server/application/api/controller/AccountController.php index d46eff13..27dad699 100644 --- a/Server/application/api/controller/AccountController.php +++ b/Server/application/api/controller/AccountController.php @@ -14,7 +14,7 @@ use think\facade\Request; class AccountController extends BaseController { /************************ 账号管理相关接口 ************************/ - + /** * 获取公司账号列表 * @param string $pageIndex 页码 @@ -22,7 +22,7 @@ class AccountController extends BaseController * @param bool $isJob 是否为定时任务调用 * @return \think\response\Json */ - public function getlist($pageIndex = '',$pageSize = '',$isJob = false) + public function getlist($pageIndex = '', $pageSize = '', $isJob = false) { $api = new AccountLogic(); @@ -32,9 +32,9 @@ class AccountController extends BaseController // 获取授权token $authorization = trim($this->request->header('authorization', $this->authorization)); if (empty($authorization)) { - if($isJob){ - return json_encode(['code'=>500,'msg'=>'缺少授权信息']); - }else{ + if ($isJob) { + return json_encode(['code' => 500, 'msg' => '缺少授权信息']); + } else { return errorJson('缺少授权信息'); } } @@ -46,7 +46,7 @@ class AccountController extends BaseController 'keyword' => $this->request->param('keyword', ''), 'departmentId' => $this->request->param('departmentId', ''), '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); $response = handleApiResponse($result); - + // 保存数据到数据库 if (!empty($response['results'])) { foreach ($response['results'] as $item) { $this->saveAccount($item); } } - - if($isJob){ - return json_encode(['code'=>200,'msg'=>'获取公司账号列表成功','data'=>$response]); - }else{ - + + if ($isJob) { + return json_encode(['code' => 200, 'msg' => '获取公司账号列表成功', 'data' => $response]); + } else { + return successJson($response); } } catch (\Exception $e) { - if($isJob){ - return json_encode(['code'=>500,'msg'=>'获取公司账号列表失败:' . $e->getMessage()]); - }else{ + if ($isJob) { + return json_encode(['code' => 500, 'msg' => '获取公司账号列表失败:' . $e->getMessage()]); + } else { return errorJson('获取公司账号列表失败:' . $e->getMessage()); } } @@ -138,9 +138,23 @@ class AccountController extends BaseController // 发送请求创建账号 $result = requestCurl($this->baseUrl . 'api/account/newAccount', $params, 'POST', $header, 'json'); - + 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 { return errorJson($result); } @@ -150,7 +164,6 @@ class AccountController extends BaseController } - /** * 创建新账号(包含创建部门) * @return \think\response\Json @@ -186,70 +199,82 @@ class AccountController extends BaseController // 检查部门是否已存在 $existingDepartment = CompanyModel::where('name', $departmentName)->find(); - if ($existingDepartment) { - return errorJson('部门名称已存在'); - } // 检查账号是否已存在 $existingAccount = CompanyAccountModel::where('userName', $accountName)->find(); - if ($existingAccount) { - return errorJson('账号名称已存在'); - } - - // 1. 创建部门 - $departmentParams = [ - 'name' => $departmentName, - 'memo' => $departmentMemo, - 'departmentIdArr' => [914], - 'parentId' => 914 - ]; $headerData = ['client:system']; $header = setHeader($headerData, $authorization, 'json'); - $departmentResult = requestCurl($this->baseUrl . 'api/Department/createDepartment', $departmentParams, 'POST', $header, 'json'); - - if (is_numeric($departmentResult)) { - // 保存部门到数据库 - $department = CompanyModel::create([ - 'id' => $departmentResult, + + // 1. 创建部门 + if (empty($existingDepartment)) { + $departmentParams = [ 'name' => $departmentName, 'memo' => $departmentMemo, - 'tenantId' => 242, - 'isTop' => 0, - 'level' => 1, - 'parentId' => 914, - 'privileges' => '', - 'createTime' => time(), - 'lastUpdateTime' => 0 - ]); + 'departmentIdArr' => [914], + 'parentId' => 914 + ]; + + $departmentResult = requestCurl($this->baseUrl . 'api/Department/createDepartment', $departmentParams, 'POST', $header, 'json'); + if (is_numeric($departmentResult)) { + // 保存部门到数据库 + 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 { - 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. 创建账号 - $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'); - $accountResult = requestCurl($this->baseUrl . 'api/Account/newAccount', $accountParams, 'POST', $header, 'json'); - - - - - - if (!is_numeric($accountResult)) { - // 如果创建账号失败,删除已创建的部门 - $this->deleteDepartment($accountResult); - return errorJson('创建账号失败:' . $accountResult['msg']); + if (is_numeric($accountResult)) { + $res = CompanyAccountModel::create([ + 'id' => $accountResult, + 'tenantId' => 242, + 'userName' => $accountName, + 'realName' => $accountRealName, + 'nickname' => $accountNickname, + 'passwordMd5' => md5($accountPassword), + 'passwordLocal' => localEncrypt($accountPassword), + '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) { return errorJson('创建账号失败:' . $e->getMessage()); } @@ -268,9 +293,9 @@ class AccountController extends BaseController // 获取授权token $authorization = trim($this->request->header('authorization', $this->authorization)); if (empty($authorization)) { - if($isJob){ - return json_encode(['code'=>500,'msg'=>'缺少授权信息']); - }else{ + if ($isJob) { + return json_encode(['code' => 500, 'msg' => '缺少授权信息']); + } else { return errorJson('缺少授权信息'); } } @@ -283,24 +308,24 @@ class AccountController extends BaseController // 发送请求获取部门列表 $url = $this->baseUrl . 'api/Department/fetchMyAndSubordinateDepartment'; $result = requestCurl($url, [], 'GET', $header, 'json'); - + // 处理返回结果 $response = handleApiResponse($result); - + // 保存数据到数据库 if (!empty($response)) { $this->processDepartments($response); } - - if($isJob){ - return json_encode(['code'=>200,'msg'=>'获取部门列表成功','data'=>$response]); - }else{ + + if ($isJob) { + return json_encode(['code' => 200, 'msg' => '获取部门列表成功', 'data' => $response]); + } else { return successJson($response, '获取部门列表成功'); } } catch (\Exception $e) { - if($isJob){ - return json_encode(['code'=>500,'msg'=>'获取部门列表失败:' . $e->getMessage()]); - }else{ + if ($isJob) { + return json_encode(['code' => 500, 'msg' => '获取部门列表失败:' . $e->getMessage()]); + } else { return errorJson('获取部门列表失败:' . $e->getMessage()); } } @@ -345,8 +370,8 @@ class AccountController extends BaseController $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)) { $res = CompanyModel::create([ @@ -387,20 +412,20 @@ class AccountController extends BaseController $id = $this->request->param('id', 0); $name = $this->request->param('name', ''); $memo = $this->request->param('memo', ''); - + if (empty($id)) { return errorJson('部门ID不能为空'); } if (empty($name)) { return errorJson('部门名称不能为空'); } - + // 验证部门是否存在 $department = CompanyModel::where('id', $id)->find(); if (empty($department)) { return errorJson('部门不存在'); } - + // 构建请求参数 $departmentIdArr = $department->parentId == 914 ? [914] : [914, $department->parentId]; $params = [ @@ -424,12 +449,12 @@ class AccountController extends BaseController // 发送请求修改部门 $result = requestCurl($this->baseUrl . 'api/Department/department', $params, 'PUT', $header, 'json'); $response = handleApiResponse($result); - + // 更新本地数据库 $department->name = $name; $department->memo = $memo; $department->save(); - + return successJson([], '部门修改成功'); } catch (\Exception $e) { return errorJson('修改部门失败:' . $e->getMessage()); @@ -467,17 +492,16 @@ class AccountController extends BaseController // 发送删除请求 $result = requestCurl($this->baseUrl . 'api/Department/del/' . $id, [], 'DELETE', $header); - - if($result){ + + if ($result) { return errorJson($result); - }else{ - // 删除本地数据库记录 + } else { + // 删除本地数据库记录 $department->delete(); return successJson([], '部门删除成功'); } - } catch (\Exception $e) { return errorJson('删除部门失败:' . $e->getMessage()); } @@ -494,11 +518,11 @@ class AccountController extends BaseController if (empty($departments) || !is_array($departments)) { return; } - + foreach ($departments as $item) { // 保存当前部门 $this->saveDepartment($item); - + // 递归处理子部门 if (!empty($item['children']) && is_array($item['children'])) { $this->processDepartments($item['children']); @@ -521,7 +545,7 @@ class AccountController extends BaseController 'parentId' => isset($item['parentId']) ? $item['parentId'] : 0, 'tenantId' => isset($item['tenantId']) ? $item['tenantId'] : 0, '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 ]; diff --git a/Server/application/cunkebao/config/route.php b/Server/application/cunkebao/config/route.php index cf3c11e1..123cc00d 100644 --- a/Server/application/cunkebao/config/route.php +++ b/Server/application/cunkebao/config/route.php @@ -64,4 +64,9 @@ Route::group('v1/', function () { Route::post('update', 'app\\cunkebao\\controller\\ContentLibraryController@update'); // 更新内容库 Route::delete('delete', 'app\\cunkebao\\controller\\ContentLibraryController@delete'); // 删除内容库 }); + + // 好友相关 + Route::group('friend', function () { + Route::get('', 'app\\cunkebao\\controller\\FriendController@index'); // 获取好友列表 + }); })->middleware(['jwt']); \ No newline at end of file diff --git a/Server/application/cunkebao/controller/friend/GetFriendListV1Controller.php b/Server/application/cunkebao/controller/friend/GetFriendListV1Controller.php new file mode 100644 index 00000000..b8557d05 --- /dev/null +++ b/Server/application/cunkebao/controller/friend/GetFriendListV1Controller.php @@ -0,0 +1,58 @@ +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() + ]); + } + } +} \ No newline at end of file