feat: 后端全量更新 - 含所有本次需求

- Contract.php: 返回合约账户余额(balance_contract)
- My.php: 地址管理增加BTC/ETH
- AppContract.php: 一键平仓(closeall)
- AppProxy.php: 代理专属注册链接 + 分级权限(L1/L2)
- site.php: 手续费减半(0.018→0.009)
- agent_permission_setup.sql: 代理权限SQL
- crypto_news_crawler.py: 新闻自动采集脚本
This commit is contained in:
li
2026-03-30 20:16:32 +08:00
commit 1b24994e74
6721 changed files with 1308571 additions and 0 deletions
+37
View File
@@ -0,0 +1,37 @@
<?php
namespace app\kefu\controller;
use GatewayWorker\BusinessWorker;
use Workerman\Worker;
// 自动加载类
require_once __DIR__ . '/../../../addons/kefu/library/GatewayWorker/vendor/autoload.php';
/**
* Win下启动 businessworker服务 专用类
*/
class Sbusinessworker
{
function __construct()
{
// 获取插件配置
$kefu_config = get_addon_config('kefu');
// bussinessWorker 进程
$worker = new BusinessWorker();
// worker名称
$worker->name = 'KeFuBusinessWorker';
// bussinessWorker进程数量
$worker->count = $kefu_config['worker_process_number'];
// 服务注册地址
$worker->registerAddress = '127.0.0.1:' . $kefu_config['register_port'];
//设置处理业务的类,此处制定Events的命名空间
$worker->eventHandler = 'addons\kefu\library\GatewayWorker\Applications\KeFu\Events';
// 如果不是在根目录启动,则运行runAll方法
if (!defined('GLOBAL_START')) {
Worker::runAll();
}
}
}
+71
View File
@@ -0,0 +1,71 @@
<?php
namespace app\kefu\controller;
use GatewayWorker\Gateway;
use Workerman\Worker;
require_once __DIR__ . '/../../../addons/kefu/library/GatewayWorker/vendor/autoload.php';
/**
* Win下启动 gateway服务 专用类
*/
class Sgateway
{
function __construct()
{
$kefu_config = get_addon_config('kefu');
// gateway 进程
$context = [];
$ssl_start = false;
if ($kefu_config['wss_switch'] && $kefu_config['ssl_cert'] && $kefu_config['ssl_cert_key']) {
$context ['ssl'] = [
// 使用绝对路径
'local_cert' => $kefu_config['ssl_cert'], // 也可以是crt文件
'local_pk' => $kefu_config['ssl_cert_key'],
'verify_peer' => false,
//'allow_self_signed' => true, //如果是自签名证书开启此选项
];
$ssl_start = true;
}
$gateway = new Gateway("websocket://0.0.0.0:" . $kefu_config['websocket_port'], $context);
if ($ssl_start) {
// 开始SSL
$gateway->transport = 'ssl';
}
// gateway名称,status方便查看
$gateway->name = 'KeFuGateway' . ($ssl_start ? '-wss' : '');
// gateway进程数
$gateway->count = $kefu_config['gateway_process_number'];
// 本机ip,分布式部署时使用内网ip
$gateway->lanIp = '127.0.0.1';
// 内部通讯起始端口,假如$gateway->count=4,起始端口为4000
// 则一般会使用4000 4001 4002 4003 4个端口作为内部通讯端口
$gateway->startPort = $kefu_config['internal_start_port'];
// 服务注册地址
$gateway->registerAddress = '127.0.0.1:' . $kefu_config['register_port'];
// 心跳间隔
$gateway->pingInterval = 30;
$gateway->pingNotResponseLimit = 1;
// 心跳数据
$gateway->pingData = '';
// 如果不是在根目录启动,则运行runAll方法
if (!defined('GLOBAL_START')) {
Worker::runAll();
}
}
}
+29
View File
@@ -0,0 +1,29 @@
<?php
namespace app\kefu\controller;
use GatewayWorker\Register;
use Workerman\Worker;
// 自动加载类
require_once __DIR__ . '/../../../addons/kefu/library/GatewayWorker/vendor/autoload.php';
/**
* Win下启动 register服务 专用类
*/
class Sregister
{
function __construct()
{
// 获取插件配置
$kefu_config = get_addon_config('kefu');
// register 必须是text协议
$register = new Register('text://0.0.0.0:' . $kefu_config['register_port']);
// 如果不是在根目录启动,则运行runAll方法
if (!defined('GLOBAL_START')) {
Worker::runAll();
}
}
}
+34
View File
@@ -0,0 +1,34 @@
<?php
namespace app\kefu\controller;
use GatewayWorker\Gateway;
use Workerman\Autoloader;
use Workerman\Worker;
// 自动加载类
require_once __DIR__ . '/../../../addons/kefu/library/GatewayWorker/vendor/autoload.php';
/**
* Win下启动 text_gateway服务 专用类
*/
class Stextgateway
{
function __construct()
{
Autoloader::setRootPath(__DIR__);
$kefu_config = get_addon_config('kefu');
$internal_gateway = new Gateway("Text://127.0.0.1:" . ($kefu_config['register_port'] + 100));
$internal_gateway->name = 'KeFuGateway';
$internal_gateway->startPort = $kefu_config['internal_start_port'] + 1000;
$internal_gateway->registerAddress = '127.0.0.1:' . $kefu_config['register_port'];// 端口为start_register.php中监听的端口
// 如果不是在根目录启动,则运行runAll方法
if (!defined('GLOBAL_START')) {
Worker::runAll();
}
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB