hahn-admin/app/controller/PublicController.php

53 lines
2.0 KiB
PHP

<?php
namespace app\controller;
use Illuminate\Database\Eloquent\Builder;
use plugin\admin\app\model\Article;
use plugin\admin\app\model\ArticleCate;
use support\Redis;
use support\Request;
use support\Response;
class PublicController extends BaseController
{
public function articleList(Request $request): Response
{
$cate = ArticleCate::orderBy("id")->select(["id as value", "title as name"])->get()->toArray();
$cateColumn = array_column($cate, 'name', 'value');
$list = Article::whereDate("date", "<=", date('Y-m-d'))
->where(function (Builder $query) use ($request) {
if ($request->get("cid")) {
$query->where("cid", $request->get("cid"));
}
return $query;
})->select(["id", "title", "date", "intro", "cover", "cid", "link_status", "link"])
->orderByDesc("date")
->paginate($request->get("per_page", 15));
/** @var Article $item */
foreach ($list->items() as $item) {
$item['cname'] = $cateColumn[$item->cid];
$item['cover'] = ImgSrc($item->cover);
unset($item->cid);
}
return Success(['article' => [
"total" => $list->total(),
"data" => $list->items(),
"current_page" => $list->currentPage(),
"last_page" => $list->lastPage(),
"per_page" => $list->perPage(),
], "cate" => $cate]);
}
public function articleDetail(Request $request): Response
{
$id = $request->get('id');
$article = Article::where("id", $id)->select(["id", "title", "date", "intro", "cover", "content"])->first();
if (!$article || strtotime($article->date) > time()) return Error("参数错误!");
$article->content = str_replace("/upload/img/", getHostUrl() . "/upload/img/", $article->content);
Article::where("id", $id)->increment("read");
return Success($article);
}
}