Files

74 lines
2.6 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
declare (strict_types = 1);
namespace app\frontend\controller;
use ywxapp\controller\FrontendBase;
/**
* 插件机制展示页(由 app/wxapp 合并至 app/frontend
*/
class Plugin extends FrontendBase
{
protected $noNeedLogin = ['*'];
protected $noNeedVerify = ['*'];
public function index()
{
// 展示应用市场在线插件列表(中心站读本地库 / 客户机代理中心站 API)
$items = [];
$categories = [];
$errMsg = '';
try {
if (is_market_client()) {
// 客户机:经 RemoteAppmallService 拉取中心站列表
$resp = \ywxapp\service\RemoteAppmallService::instance()->lists([
'page' => 1,
'page_size' => 24,
]);
if (!empty($resp['success']) && !empty($resp['data']['list'])) {
$items = $resp['data']['list'];
} else {
$errMsg = $resp['message'] ?? '暂无插件';
}
} else {
// 中心站:直接读本地市场库(appmall_addon_list
$catalog = \addon\appmall\service\MarketService::instance()->catalog();
$items = $catalog['list'] ?? [];
$categories = $catalog['categories'] ?? [];
}
} catch (\Throwable $e) {
$errMsg = '市场列表加载失败:' . $e->getMessage();
}
$plugins = [];
foreach ($items as $it) {
$price = (float) ($it['price'] ?? 0);
$plugins[] = [
'id' => $it['id'] ?? 0,
'name' => $it['name'] ?? '',
'title' => $it['title'] ?? ($it['name'] ?? ''),
'desc' => $it['intro'] ?? '',
'version' => $it['version'] ?? '',
'author' => $it['author'] ?? '',
'logo' => $it['logo'] ?? '',
'price' => $price,
'price_text' => $price > 0 ? '¥' . number_format($price, 2) : '免费',
'rating' => (float) ($it['rating'] ?? 0),
'downloads' => (int) ($it['download_count'] ?? 0),
'category' => $it['category'] ?? '',
'type' => $it['type'] ?? 'addon',
];
}
return view('plugin/index', [
'title' => '插件市场',
'controller' => 'Plugin',
'plugins' => $plugins,
'categories' => $categories,
'err_msg' => $errMsg,
'hooks' => [],
]);
}
}