diff --git a/app/Admin/Controllers/ArticleController.php b/app/Admin/Controllers/ArticleController.php index eec3fa1..860004b 100644 --- a/app/Admin/Controllers/ArticleController.php +++ b/app/Admin/Controllers/ArticleController.php @@ -22,7 +22,31 @@ class ArticleController extends AdminController $this->createButton(), ...$this->baseHeaderToolBar(), ]) - ->filter($this->baseFilter()->body()) + ->filter($this->baseFilter()->labelWidth('80px')->body([ + amis()->TextControl('id', __('admin.articles.id')) + ->size('md') + ->placeholder(__('admin.id')), + amis()->TextControl('title', __('admin.articles.title')) + ->size('md') + ->placeholder(__('admin.articles.title')), + Components::make()->parentControl(admin_url('api/keywords/tree-list?parent_name=article_category&has_owner=0'), 'category', __('admin.articles.category'), 'name', 'key') + ->size('md'), + amis()->InputDatetimeRange()->label(__('admin.articles.published_at'))->name('published_at'), + + Components::make()->keywordsTagControl('t_ids', __('admin.articles.tags'), 'article_tag') + ->size('md'), + amis()->SelectControl('enable', __('admin.articles.is_enable')) + ->options([ + 1=>'开启',0=>'关闭' + ]) + ->size('md'), + amis()->SelectControl('recommend', __('admin.articles.is_recommend')) + ->options([ + 1=>'开启',0=>'关闭' + ]) + ->size('md'), + amis()->InputDatetimeRange()->label(__('admin.created_at'))->name('created_at'), + ])) ->itemBadge([//行角标 'text' => __('admin.articles.is_recommend'), 'mode' => 'ribbon', diff --git a/app/Models/Filters/ArticleFilter.php b/app/Models/Filters/ArticleFilter.php index 7b548cb..5a16496 100644 --- a/app/Models/Filters/ArticleFilter.php +++ b/app/Models/Filters/ArticleFilter.php @@ -3,9 +3,17 @@ namespace App\Models\Filters; use EloquentFilter\ModelFilter; +use Illuminate\Support\Arr; class ArticleFilter extends ModelFilter { + /** + * 标题 + */ + public function id($id) + { + return $this->where('id', $id); + } /** * 标题 */ @@ -13,4 +21,60 @@ class ArticleFilter extends ModelFilter { return $this->where('title','like', '%'.$title.'%'); } + + /** + * 获取分类下的文章 + */ + public function category($category) + { + return $this->where('category', $category); + } + + /** + * 查询带有标签的文章 + */ + public function tIds($tIds){ + $tIds = explode(',',$tIds); + return $this->where(function($q) use ($tIds) { + foreach ($tIds as $tId) { + $q->whereRaw("FIND_IN_SET('".$tId."',t_ids)"); + } + }); + } + + public function publishedAt($publishedAt){ + $publishedAt = explode(',',$publishedAt); + return $this->where(function($q) use ($publishedAt) { + $startAt = Arr::get($publishedAt, 0) ?? null; + $endAt = Arr::get($publishedAt, 1) ?? null; + if(!empty($startAt)){ + $q->where('published_at', '>=', $startAt); + } + if(!empty($endAt)){ + $q->where('published_at', '<=', $endAt); + } + }); + } + + public function createdAt($createdAt){ + $createdAt = explode(',',$createdAt); + return $this->where(function($q) use ($createdAt) { + $startAt = Arr::get($createdAt, 0) ?? null; + $endAt = Arr::get($createdAt, 1) ?? null; + if(!empty($startAt)){ + $q->where('created_at', '>=', $startAt); + } + if(!empty($endAt)){ + $q->where('created_at', '<=', $endAt); + } + }); + } + + public function enable($enable){ + return $this->where('is_enable', $enable); + } + + public function recommend($recommend){ + return $this->where('is_recommend', $recommend); + } } diff --git a/app/Models/Keyword.php b/app/Models/Keyword.php index 4922134..44b4621 100644 --- a/app/Models/Keyword.php +++ b/app/Models/Keyword.php @@ -23,7 +23,7 @@ class Keyword extends Model { parent::boot(); // 监听 Keyword 的创建事件,用于初始化 path 和 lv 字段值 - static::creating(function ($keyword) { + static::saving(function ($keyword) { // 如果创建的是一个根类目 if (! $keyword->parent_id) { // 将层级设为 1 diff --git a/database/seeders/KeywordSeeder.php b/database/seeders/KeywordSeeder.php index 57cdc04..9d0340e 100644 --- a/database/seeders/KeywordSeeder.php +++ b/database/seeders/KeywordSeeder.php @@ -20,7 +20,7 @@ class KeywordSeeder extends Seeder ['key' => 'article_category', 'name' => '文章分类', 'list' => [ ]], - ['key' => 'article_tag', 'name' => '文章标签', 'list' => [ + ['key' => 'article_tag', 'name' => '文章标签', 'list' => [//标签value填写色号,指定标签颜色 ]], ['key' => 'banner_address', 'name' => '广告位置', 'list' => [ diff --git a/lang/zh_CN/admin.php b/lang/zh_CN/admin.php index 9632312..f69b279 100644 --- a/lang/zh_CN/admin.php +++ b/lang/zh_CN/admin.php @@ -274,7 +274,7 @@ return [ 'parent_keyword' => '父级关键字', ], 'articles' => [ - 'id' => 'ID', + 'id' => '主键ID', 'title' => '标题', 'content' => '内容', 'cover' =>'封面', @@ -287,7 +287,7 @@ return [ 'is_recommend' => '推荐', 'sort' => '排序', 'appendixes' => '附件', - 'published_at_remark' => '*若未设置发布时间且操作设置为显示,则默认生成发布时间' + 'published_at_remark' => '*若未设置发布时间且操作设置为显示,则默认生成发布时间', ], 'ads' => [ 'id' => 'ID',