- 18 张公共表更名(addon/attachment/configure/links/spider_log/spider_stat/sms/notice/ad/task/prop/medal/help/card -> common_*,member_wallets->member_wallet,score_rule/score_log -> member_*,addon_config->common_addonconf),模型全部对齐新表名,Db 直引用清零 - Attachment 模型补 表名绑定,修复富文本上传查 wxapp_attachment 1146 隐患 - install.sql + 迁移 SQL:backend_admin/backend_role delete_at 默认 0,修复软删除(NULL != 0)误过滤导致后台菜单为空 - AppService::boot() 支持插件 info.php 声明 commands 自动注册插件命令(psr-4 自动加载,坏类名自动跳过) - 各插件(haonav/mqttbroker/wxchat/articles/blog/forum 等)字段与配置同步调整 - 框架版本 1.1.0 -> 1.1.1
65 lines
2.1 KiB
PHP
65 lines
2.1 KiB
PHP
<?php
|
|
// +----------------------------------------------------------------------
|
|
// | YwxApp [ WE CAN DO IT JUST THINK ]
|
|
// +----------------------------------------------------------------------
|
|
// | Copyright (c) 2026-2036 http://ywxapp.cn All rights reserved.
|
|
// +----------------------------------------------------------------------
|
|
// | Author: ywxapp<admin@ywxapp.cn>
|
|
// +----------------------------------------------------------------------
|
|
declare (strict_types = 1);
|
|
|
|
namespace addon\mqttbroker\controller\api;
|
|
|
|
use think\facade\Db;
|
|
use ywxapp\controller\ApiBase;
|
|
use addon\mqttbroker\model\Message;
|
|
|
|
/**
|
|
* Mqtt 类
|
|
*
|
|
* @author ywxapp <admin@ywxapp.cn>
|
|
*/
|
|
class Mqtt extends ApiBase
|
|
{
|
|
protected $noNeedLogin = ['*'];
|
|
protected $noNeedVerify = ['*'];
|
|
|
|
/**
|
|
* 获取 Broker 运行状态
|
|
* GET /mqttbroker/api/status
|
|
*/
|
|
public function status()
|
|
{
|
|
$data = [
|
|
'online' => Db::name('mqttbroker_connection')->where('status', 1)->count(),
|
|
'total' => Db::name('mqttbroker_connection')->count(),
|
|
'messages' => Message::count(),
|
|
'topics' => Db::name('mqttbroker_topic')->count(),
|
|
];
|
|
$this->result->success($data);
|
|
}
|
|
|
|
/**
|
|
* 发布消息
|
|
* POST /mqttbroker/api/publish {topic, payload, qos}
|
|
*
|
|
* 零外部依赖:写入出站队列(DB),由常驻 Broker 进程消费后经内部路由投递,
|
|
* 不再依赖 workerman/mqtt 客户端连接本地 Broker。
|
|
*/
|
|
public function publish()
|
|
{
|
|
$topic = input('topic', '');
|
|
$payload = input('payload', '');
|
|
$qos = (int) input('qos', 0);
|
|
if (!$topic) {
|
|
$this->result->error('topic required');
|
|
}
|
|
$ok = \addon\mqttbroker\service\Store::enqueueManual($topic, $payload, $qos, 0, 'api');
|
|
if ($ok) {
|
|
$this->result->success('已加入发布队列,Broker 将投递给在线订阅者');
|
|
} else {
|
|
$this->result->error('发布失败:无法写入出站队列(请检查数据库)');
|
|
}
|
|
}
|
|
}
|