超管后台 - 新建项目对接触客宝

This commit is contained in:
柳清爽
2025-04-15 11:35:49 +08:00
parent ae8624b198
commit 053e7cd76b
17 changed files with 55 additions and 707 deletions

View File

@@ -2,6 +2,7 @@
namespace app\library\s2;
use think\Exception;
use think\facade\Cache;
use think\facade\Env;
use think\facade\Log;
@@ -68,10 +69,16 @@ class CurlHandle
return $this;
}
/**
* @param string $baseUrl
* @return $this
*/
public function setBaseUrl(string $baseUrl): CurlHandle
{
$this->baseUrl = $baseUrl;
return $this;
}
/**
* @param string $url 请求的链接
@@ -81,12 +88,14 @@ class CurlHandle
* @param string $type 数据类型支持dataBuild、json等
* @return bool|string
*/
public function requestCurl($url, $params = [], $method = 'GET', $type = 'dataBuild')
public function send($url, $params = [], $type = 'dataBuild')
{
$str = '';
if (!empty($url)) {
try {
$ch = curl_init();
$method = $this->method;
$url = $this->baseUrl . $url;
// 处理GET请求的参数
if (strtoupper($method) == 'GET' && !empty($params)) {
@@ -121,6 +130,9 @@ class CurlHandle
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); //是否验证对等证书,1则验证0则不验证
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$str = curl_exec($ch);
if(curl_errno($ch)) {
echo 'Curl error: ' .curl_errno($ch) . ':' . curl_error($ch);
}
curl_close($ch);
} catch (Exception $e) {
$str = '';

View File

@@ -47,10 +47,7 @@ class DeviceLogic implements DeviceInterface
->setHeader('Content-Type', 'text/plain')
->setHeader('authorization', 'bearer ' . $JWT)
->setMethod('get')
->requestCurl('api/Account/myTenantPageAccounts', $params);
print_r($result);
exit();
->send('api/Account/myTenantPageAccounts', $params);
$response = handleApiResponse($result);
// 保存数据到数据库

View File

@@ -2,37 +2,37 @@
use think\facade\Route;
// 超级管理员认证相关路由(不需要鉴权)
Route::post('auth/login', 'app\\superadmin\\controller\\Auth@login');
Route::post('auth/login', 'app\\superadmin\\controller\\AuthController@login');
// 需要登录认证的路由组
Route::group('', function () {
// 菜单管理相关路由
Route::group('menu', function () {
Route::get('tree', 'app\\superadmin\\controller\\Menu@getMenuTree');
Route::get('list', 'app\\superadmin\\controller\\Menu@getMenuList');
Route::post('save', 'app\\superadmin\\controller\\Menu@saveMenu');
Route::delete('delete/:id', 'app\\superadmin\\controller\\Menu@deleteMenu');
Route::post('status', 'app\\superadmin\\controller\\Menu@updateStatus');
Route::get('toplevel', 'app\\superadmin\\controller\\Menu@getTopLevelMenus');
Route::get('tree', 'app\\superadmin\\controller\\MenuController@getTree');
Route::get('list', 'app\\superadmin\\controller\\MenuController@getList');
Route::post('save', 'app\\superadmin\\controller\\MenuController@save');
Route::delete('delete/:id', 'app\\superadmin\\controller\\MenuController@delete');
Route::post('status', 'app\\superadmin\\controller\\MenuController@updateStatus');
Route::get('toplevel', 'app\\superadmin\\controller\\MenuController@getTopLevelMenus');
});
// 管理员相关路由
Route::group('administrator', function () {
Route::get('list', 'app\\superadmin\\controller\\Administrator@getList');
Route::get('detail/:id', 'app\\superadmin\\controller\\Administrator@getDetail');
Route::post('update', 'app\\superadmin\\controller\\Administrator@updateAdmin');
Route::post('add', 'app\\superadmin\\controller\\Administrator@addAdmin');
Route::post('delete', 'app\\superadmin\\controller\\Administrator@deleteAdmin');
Route::get('list', 'app\\superadmin\\controller\\AdministratorController@getList');
Route::get('detail/:id', 'app\\superadmin\\controller\\AdministratorController@getDetail');
Route::post('update', 'app\\superadmin\\controller\\AdministratorController@update');
Route::post('add', 'app\\superadmin\\controller\\AdministratorController@add');
Route::delete('delete/:id', 'app\\superadmin\\controller\\AdministratorController@delete');
});
// 客户池管理路由
Route::group('trafficPool', function () {
Route::get('list', 'app\\superadmin\\controller\\TrafficPool@getList'); // 获取客户池列表
Route::get('detail', 'app\\superadmin\\controller\\TrafficPool@getDetail'); // 获取客户详情
Route::get('list', 'app\\superadmin\\controller\\TrafficPoolController@getList'); // 获取客户池列表
Route::get('detail', 'app\\superadmin\\controller\\TrafficPoolController@getDetail'); // 获取客户详情
});
// 公司路由
Route::group('company', function () {
Route::post('create', 'app\\superadmin\\controller\\Company@create');
Route::post('create', 'app\\superadmin\\controller\\CompanyController@create');
});
})->middleware(['app\\superadmin\\middleware\\AdminAuth']);

View File

@@ -8,7 +8,7 @@ use app\superadmin\model\Administrator as AdminModel;
/**
* 管理员控制器
*/
class Administrator extends Controller
class AdministratorController extends Controller
{
/**
* 获取管理员列表

View File

@@ -4,7 +4,7 @@ namespace app\superadmin\controller;
use think\Controller;
use app\superadmin\model\Administrator;
class Auth extends Controller
class AuthController extends Controller
{
/**
* 管理员登录
@@ -52,7 +52,7 @@ class Auth extends Controller
/**
* 创建登录令牌
* @param Administrator $admin
* @param AdministratorController $admin
* @return string
*/
private function createToken($admin)

View File

@@ -1,6 +1,7 @@
<?php
namespace app\superadmin\controller;
use app\library\s2\CurlHandle;
use app\superadmin\model\Company as companyModel;
use app\superadmin\model\Users;
use GuzzleHttp\Client;
@@ -13,7 +14,7 @@ use think\facade\Session;
/**
* 公司控制器
*/
class Company extends Controller
class CompanyController extends Controller
{
/**
* 创建新项目
@@ -22,43 +23,34 @@ class Company extends Controller
public function create()
{
// 获取参数
$params = Request::only(['nickname', 'account', 'password', 'realName', 'memo']);
$params = Request::only(['name', 'nickname', 'account', 'password', 'realName', 'memo']);
try {
// 开启事务
Db::startTrans();
// 创建Guzzle客户端
$client = new Client([
'base_uri' => Config::get('app.api_base_url'),
'timeout' => 10.0
]);
$curl = CurlHandle::getInstant()->setBaseUrl('http://yishi.com/');
// 1. 调用创建部门接口
$departmentResponse = $client->post('/v1/api/account/department/create', [
'json' => [
'name' => $params['name'],
'memo' => $params['memo'] ?: '',
]
$departmentResponse = $curl->setMethod('post')->send('v1/api/account/department/create', [
'name' => $params['name'],
'memo' => $params['memo'] ?: '',
]);
$departmentData = json_decode($departmentResponse->getBody(), true);
$departmentData = json_decode($departmentResponse, true);
if ($departmentData['code'] != 200) {
throw new \Exception($departmentData['msg']);
}
// 2. 调用创建账号接口
$accountResponse = $client->post('/v1/api/account/create', [
'json' => [
'userName' => $params['account'],
'password' => $params['password'],
'realName' => $params['realName'],
'nickname' => $params['nickname'],
'departmentId' => $departmentData['data']['id']
]
$accountResponse = $curl->setMethod('post')->send('v1/api/account/create', [
'userName' => $params['account'],
'password' => $params['password'],
'realName' => $params['realName'],
'nickname' => $params['nickname'],
'departmentId' => $departmentData['data']['id']
]);
$accountData = json_decode($accountResponse->getBody(), true);
$accountData = json_decode($accountResponse, true);
if ($accountData['code'] != 200) {
throw new \Exception($accountData['msg']);
}

View File

@@ -7,7 +7,7 @@ use app\superadmin\model\Menu as MenuModel;
/**
* 菜单控制器
*/
class Menu extends Controller
class MenuController extends Controller
{
/**
* 获取菜单列表(树状结构)

View File

@@ -14,7 +14,7 @@ use think\facade\Validate;
/**
* 客户池控制器
*/
class TrafficPool extends Controller
class TrafficPoolController extends Controller
{
/**
* 获取客户池列表

View File

@@ -25,7 +25,8 @@
"aliyuncs/oss-sdk-php": "^2.7",
"topthink/think-worker": "2.0.*",
"topthink/think-queue": "2.0.*",
"textalk/websocket": "^1.5"
"textalk/websocket": "^1.5",
"guzzlehttp/guzzle": "^7.9"
},
"autoload": {
"psr-4": {

2
Server/composer.lock generated
View File

@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "3f1dbb62be88ad00a166b59ed9183932",
"content-hash": "9ad1ad6eaacd62087a3871dd6bef4424",
"packages": [
{
"name": "adbario/php-dot-notation",