53 lines
2.0 KiB
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);
|
||
|
|
|
||
|
|
}
|
||
|
|
}
|