61 lines
1.5 KiB
PHP
61 lines
1.5 KiB
PHP
<?php
|
||
|
||
declare(strict_types=1);
|
||
|
||
namespace app\index\controller;
|
||
|
||
use app\index\BaseController;
|
||
use think\response\Json;
|
||
use think\facade\Db;
|
||
|
||
/**
|
||
* Banner 控制器
|
||
*/
|
||
class BannerController extends BaseController
|
||
{
|
||
/**
|
||
* 获取 Banner 列表
|
||
* @return Json
|
||
*/
|
||
public function getBanners(): Json
|
||
{
|
||
// 从 BaseController 获取当前租户ID
|
||
$tid = $this->getTenantId();
|
||
|
||
if (empty($tid)) {
|
||
return json([
|
||
'code' => 400,
|
||
'msg' => '无法识别租户信息',
|
||
'list' => [],
|
||
]);
|
||
}
|
||
|
||
// 查询该租户下的 Banner
|
||
$banners = Db::name('mete_apps_cms_banner')
|
||
->where('tid', $tid)
|
||
->whereNull('delete_time')
|
||
->order('sort', 'asc')
|
||
->order('id', 'desc')
|
||
->select()
|
||
->toArray();
|
||
|
||
// 处理图片路径
|
||
foreach ($banners as &$banner) {
|
||
if (!empty($banner['image'])) {
|
||
// 如果图片路径已经是完整 URL,直接返回
|
||
if (!preg_match('/^https?:\/\//', $banner['image'])) {
|
||
// 拼接完整 URL
|
||
$banner['image'] = $this->request->scheme() . '://' . $this->request->host() .
|
||
(strpos($banner['image'], '/') === 0 ? '' : '/') . $banner['image'];
|
||
}
|
||
}
|
||
}
|
||
|
||
return json([
|
||
'code' => 200,
|
||
'msg' => 'success',
|
||
'list' => $banners,
|
||
]);
|
||
}
|
||
}
|