feat: 公共表更名 common/member 前缀 + 插件命令自动加载 + 版本 1.1.1

- 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
This commit is contained in:
ywxapp
2026-08-20 20:19:15 +08:00
parent 303f548664
commit 1d49e6f5ee
395 changed files with 13342 additions and 2012 deletions
+44 -9
View File
@@ -93,10 +93,17 @@ class Index extends FrontendBase
*/
public function index()
{
$data = CategoryModel::with(['links' =>
function ($query) {
$query->where('status', 1)->limit(10)->order('click_count', 'desc');
}])->where('status', 1)->order('sort', 'desc')->select();
$data = CategoryModel::with([
'children' => function ($query) {
$query->with(['subLinks' => function ($q) {
$q->limit(12)->order('click_count', 'desc');
}]);
},
'links' => function ($query) {
// 首页不按二级分组,直接展示该一级分类下的全部链接(含已归属二级的)
$query->where('status', 1)->order('click_count', 'desc')->limit(30);
},
])->where('pid', 0)->where('status', 1)->order('sort', 'desc')->select();
$hotspot = LinksModel::where('is_hot', 1)->where('status', 1)->limit(18)->order('click_count', 'desc')->select();
$links = LinksModel::where('is_recommend', 1)->where('status', 1)->limit(10)->order('sort', 'desc')->select();
@@ -441,11 +448,39 @@ class Index extends FrontendBase
*/
public function category($id = 0)
{
$data = CategoryModel::with(['links' =>
function ($query) {
$query->where('status', 1)->order('click_count', 'desc');
}])->find($id);
$this->view->assign('info', $data);
$info = CategoryModel::with([
'children' => function ($query) {
$query->with(['subLinks' => function ($q) {
$q->order('click_count', 'desc');
}]);
},
])->where('status', 1)->find($id);
if (!$info) {
return redirect('/haonav/index.html');
}
// 顶级分类且有子分类:按二级子分类分组展示
if ($info->pid == 0 && $info->children && $info->children->count() > 0) {
// 未细分二级的链接(sub_cid=0)归入「常用」分组,排在最后
$others = LinksModel::where('cid', $id)
->where('sub_cid', 0)
->where('status', 1)
->order('click_count', 'desc')
->select();
$this->view->assign('others', $others);
$this->view->assign('mode', 'group');
} else {
// 二级分类 / 叶子分类:直接列出该分类下的全部链接
$links = ($info->pid == 0)
? LinksModel::where('cid', $id)->where('status', 1)
: LinksModel::where('sub_cid', $id)->where('status', 1);
$links = $links->order('click_count', 'desc')->select();
$this->view->assign('links', $links);
$this->view->assign('mode', 'flat');
}
$this->view->assign('info', $info);
$this->assignSeo();
return $this->view->fetch();
}
+5 -4
View File
@@ -57,10 +57,11 @@ class Category extends HaonavBackend
$page = $this->request->param('page/d', 1);
$limit = $this->request->param('limit/d', 20);
$data = $this->model->withAttr('cate')
->when($title, fn($q, $t) => $q->whereLike('title', "%{$t}%"))
->paginate(['page' => $page, 'list_rows' => $limit]);
$this->result->setCount($data->total());
$this->result->success($data->items());
->when($title, fn($q, $t) => $q->whereLike('title', "%{$t}%"))->select();
// ->paginate(['page' => $page, 'list_rows' => $limit]);
// $this->result->setCount($data->total());
// $this->result->success($data->items());
$this->result->success($data);
}
return $this->view->fetch('category/index');
}