阶段更新

This commit is contained in:
2021-10-11 15:56:12 +08:00
parent 11b9e2ae76
commit 3381820ba0
17 changed files with 319 additions and 534 deletions

View File

@@ -34,13 +34,13 @@ class IndexController extends AdminController
$grid->column('id', '#ID#');
$grid->column('cover', '封面图片')->image('', 100);
$grid->column('category.title', '所属分类');
$grid->column('category_old.title', '所属老分类');
$grid->column('title', '文章标题');
$states = [
'on' => ['value' => 1, 'text' => '打开', 'color' => 'primary'],
'off' => ['value' => 2, 'text' => '关闭', 'color' => 'default'],
];
$grid->column('status', '状态')->switch($states);
$grid->column('recommen', '推荐')->switch();
$grid->column('sort', '序号');
$grid->column('created_at', '创建时间');
@@ -63,6 +63,10 @@ class IndexController extends AdminController
->move('images/' . date('Y/m/d'))
->removable()
->uniqueName();
$form->image('logo', 'logo')
->move('images/' . date('Y/m/d'))
->removable()
->uniqueName();
$form->ueditor('content', '文章内容')->rules('required', ['required' => '详情不能为空']);
$form->number('sort', '序号')->default(0)->rules('required', ['required' => '序号必须填写'])->help('倒序优先');
$states = [
@@ -71,6 +75,7 @@ class IndexController extends AdminController
];
$form->datetime('created_at', '发布时间');
$form->switch('status', '状态')->states($states)->default(1);
$form->switch('recommen', '推荐')->default(0);
return $form;
}

View File

@@ -44,6 +44,9 @@ class IndexController extends AdminController
})->pluck('title', 'id');
})->help('当分类类型是文章详情的时候需要选择关联文章');
})
->when(Category::TYPE_LINK, function (WidgetsForm $form) {
$form->text('url', '跳转地址');
})
->required();
$form->textarea('description', '分类简介')
->rules('nullable');
@@ -114,6 +117,9 @@ class IndexController extends AdminController
})->pluck('title', 'id');
})->help('当分类类型是文章详情的时候需要选择关联文章');
})
->when(Category::TYPE_LINK, function (Form $form) {
$form->text('url', '跳转地址');
})
->required()
->rules('required');
$form->textarea('description', '分类简介')->rows(4)->rules('nullable');

View File

@@ -31,9 +31,9 @@ class IndexController extends AdminController
$grid->column('id');
$grid->column('title', '视频名称');
$grid->column('cover', '视频地址')->downloadable();
$grid->column('cover', '封面')->image();
$grid->column('link', '视频地址')->downloadable();
$grid->column('category.title', '分类名称');
$grid->column('url', '地址');
$grid->column('sort', '排序');
return $grid;
@@ -60,7 +60,20 @@ class IndexController extends AdminController
'required' => '必须选择所属分类',
'min' => '必须选择所属分类',
]);
$form->file('cover', '视频')
$form->file('cover', '封面')
->rules(function ($form) {
if ($form->model()->cover != []) {
return 'nullable|image';
} else {
return 'required';
}
})
->move('images/' . date('Y/m/d'))
->removable()
->uniqueName();
$form->file('link', '视频')
->rules(function ($form) {
if ($form->model()->cover != []) {
return 'nullable|image';
@@ -71,7 +84,7 @@ class IndexController extends AdminController
->move('videos/' . date('Y/m/d'))
->removable()
->uniqueName();
$form->text('url', '链接地址');
$form->number('sort', '排序')
->default(1)
->required()

View File

@@ -52,39 +52,36 @@ function getOneArticleBYCate($categoryId, $result = '')
* @Date : 2020/9/10 10:05
* @param $categoryId
* @param int $take
* @param string $mark
* @param int $recommen
* @return \App\Models\Article
*/
function getArticlesBYCate($categoryId, $take = 8, $mark = 'one')
function getArticlesBYCate($categoryId, $take = 8, $recommen = 0)
{
if ($mark == 'one') {
$articles = Article::where('status', 1)
->ByCategory($categoryId)
->latest('sort')
->latest()
->take($take)
->get();
} else {
$cate = Category::find($categoryId);
$ids = $cate ? $cate->getAllChildrenId() : [];
$cate = Category::find($categoryId);
$ids = $cate ? $cate->getAllChildrenId() : [];
$articles = Article::where('status', 1)
->ByCategory($ids)
->latest('sort')
->latest()
->take($take)
->get();
}
$articles = Article::where('status', 1)
->ByCategory([$categoryId])
->latest('sort')
->latest()
->when($recommen, function ($q) use ($recommen) {
$q->where('recommen', 1);
})
->take($take)
->get();
return $articles;
}
//获取子分类
function getCateChild($categoryId)
function getCateChild($categoryId, $take = '')
{
return Category::where('status', 1)
->where('parent_id', $categoryId)
->orderBy('order', 'desc')
->when($take, function ($q) use ($take) {
$q->take($take);
})
->get();
}

View File

@@ -18,17 +18,19 @@ class CategoryController extends Controller
{
if ($category->type == Category::TYPE_SHOW && $category->article_id) {
return redirect("articles/" . $category->article_id);
} elseif ($category->type == Category::TYPE_LINK && $category->url) {
return redirect()->away($category->url);
} else {
$template = 'show';
if ($category->template) {
$template = $category->template;
}
$articles = $category->relations(Category::TYPE_ARTICLE)
$articles = $category->relations($category->type)
->where('status', 1)
->latest('sort')
->latest('created_at')
->paginate(8);
->paginate();
$parent = $category;
if ($category->childrens->isEmpty() && $category->parent) {

View File

@@ -17,6 +17,11 @@ class Article extends Model
return route('article.show', $this);
}
public function getLogoUrlAttribute(): string
{
return $this->parseImageUrl($this->logo);
}
/***
* Notes: 获取详情内图片
* @Author: 玄尘

View File

@@ -18,11 +18,13 @@ class Category extends Model
public const TYPE_ARTICLE = 'article';
public const TYPE_ADVERT = 'advert';
public const TYPE_VIDEO = 'video';
public const TYPE_LINK = 'link';
public const TYPES = [
self::TYPE_ARTICLE => '文章列表',
self::TYPE_SHOW => '文章详情',
self::TYPE_ADVERT => '图片列表',
self::TYPE_VIDEO => '视频列表',
self::TYPE_LINK => '跳转链接',
];
public $cover_field = 'cover';
@@ -48,7 +50,8 @@ class Category extends Model
return $this->hasOne(Article::class)->where('id', $this->article_id);
break;
case self::TYPE_ARTICLE:
return $this->belongsToMany(Article::class);
// return $this->belongsToMany(Article::class);
return $this->hasMany(Article::class);
break;
case self::TYPE_ADVERT:
return $this->hasMany(Advert::class);
@@ -85,13 +88,14 @@ class Category extends Model
public function getAllChildrenId(): array
{
$ids = array_keys($this->buildSelectOptions([], $this->id));
if ($ids) {
array_unshift($ids, $this->id);
return $ids;
}
return [];
return [$this->id];
}
// public function articles(): BelongsToMany

View File

@@ -10,4 +10,9 @@ class Video extends Model
use HasCovers,
BelongsToCategory;
public function getLogoUrlAttribute(): string
{
return $this->parseImageUrl($this->logo);
}
}