bztang-admin/plugins/article/src/admin/ManagerArticleController.php

76 lines
2.8 KiB
PHP

<?php
namespace Yunshop\Article\admin;
use app\common\components\BaseController;
use app\common\helpers\Url;
use Yunshop\Article\models\Article;
use Yunshop\Article\models\Category;
use app\common\helpers\PaginationHelper;
use Yunshop\Article\models\Log;
class ManagerArticleController extends BaseController
{
public function index()
{
$pageSize = 10;
$search = request()->search;
if (!$search['time']) {
$search['time']['start'] = date("Y-m-d H:i:s", time());
$search['time']['end'] = date("Y-m-d H:i:s", time());
}
$articles = Article::getArticlesBySearch($search['category_id'], $search['keyword']);
if (!empty($search['member'])) {
$articles = $articles->whereHas('belongsToManager', function ($query) use ($search) {
$query->whereHas('member', function ($q2) use ($search) {
return $q2->searchLike($search['member']);
});
});
}
if ($search['is_time']) {
if ($search['time']) {
$range = [strtotime($search['time']['start']), strtotime($search['time']['end'])];
$articles = $articles->whereBetween('created_at', $range);
}
}
$articles = $articles->with(['belongsToManager' => function ($q) {
$q->select(['id', 'nickname', 'member_id'])->with(['member' => function ($query2) {
$query2->select('uid', 'nickname', 'avatar', 'mobile');
}]);
}])
->where('manager_id', '!=', 0)
->orderBy('display_order', 'desc')
->orderBy('id', 'desc')
->paginate($pageSize)
->toArray();
$categorys = Category::getCategorys()->orderBy('id', 'desc')->get()->toArray();
$pager = PaginationHelper::show($articles['total'], $articles['current_page'], $articles['per_page']);
foreach ($articles['data'] as $k => $v) {
$articles['data'][$k]['content'] = htmlspecialchars_decode($v['content']);
$person_num = Log::uniacid()->where('article_id', $v['id'])->count();
$articles['data'][$k]['person_num'] = $person_num;
}
return view('Yunshop\Article::admin.manager.article',
[
'articles' => $articles,
'categorys' => $categorys,
'search' => $search,
'pager' => $pager,
]
)->render();
}
public function del()
{
$id = \YunShop::request()->id;
$article = Article::uniacid()->find($id);
if (!$article) {
return $this->error('没有此文章或已删除');
}
$article->delete();
return $this->message('删除文章成功', Url::absoluteWeb('plugin.article.admin.manager-article.index'));
}
}