Files
sbnews/server/app/api/controller/ContentController.php
T
2026-06-11 12:15:29 +08:00

86 lines
2.9 KiB
PHP
Raw 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
namespace app\api\controller;
use app\common\model\article\Article;
use app\common\model\popup\PagePopup;
use app\api\logic\IndexLogic;
use think\response\Json;
/**
* 通用富文本内容
* GET /api/content/detail?type=xxx&id=xxx
*
* 支持的 type:
* - policy 协议(id 实际为 type 字符串:service/privacy 等,由 IndexLogic::getPolicyByType 处理)
* - article 资讯文章
* - popup 弹窗自带的富文本内容(直接取 page_popup.content
* - custom 自定义页面(暂未启用,留扩展位)
*/
class ContentController extends BaseApiController
{
public array $notNeedLogin = ['detail'];
public function detail(): Json
{
$type = trim((string)$this->request->get('type', ''));
$idRaw = trim((string)$this->request->get('id', ''));
if (!$type) {
return $this->fail('参数错误:type');
}
switch ($type) {
case 'policy': {
// policy 用 id 字段传 type 字符串
$policy = IndexLogic::getPolicyByType($idRaw);
if (!$policy) {
return $this->fail('内容不存在');
}
return $this->data([
'type' => 'policy',
'id' => $idRaw,
'title' => (string)($policy['title'] ?? ''),
'content' => (string)($policy['content'] ?? ''),
'create_time' => '',
]);
}
case 'article': {
$id = (int)$idRaw;
if ($id <= 0) return $this->fail('参数错误:id');
$info = Article::where('id', $id)
->where('is_show', 1)
->find();
if (!$info) return $this->fail('内容不存在');
return $this->data([
'type' => 'article',
'id' => $id,
'title' => (string)($info['title'] ?? ''),
'content' => (string)($info['content'] ?? ''),
'create_time' => (string)($info['create_time'] ?? ''),
]);
}
case 'popup': {
$id = (int)$idRaw;
if ($id <= 0) return $this->fail('参数错误:id');
$info = PagePopup::where('id', $id)
->where('status', 1)
->find();
if (!$info) return $this->fail('内容不存在');
return $this->data([
'type' => 'popup',
'id' => $id,
'title' => (string)($info['title'] ?: $info['name']),
'content' => (string)($info['content'] ?? ''),
'create_time' => (string)($info['create_time'] ?? ''),
]);
}
default:
return $this->fail('暂不支持的 type' . $type);
}
}
}