阶段更新
This commit is contained in:
136
modules/Cms/Http/Controllers/Admin/ArticleController.php
Normal file
136
modules/Cms/Http/Controllers/Admin/ArticleController.php
Normal file
@@ -0,0 +1,136 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Cms\Http\Controllers\Admin;
|
||||
|
||||
use App\Admin\Traits\WithUploads;
|
||||
use Encore\Admin\Controllers\AdminController;
|
||||
use Encore\Admin\Form;
|
||||
use Encore\Admin\Grid;
|
||||
use Illuminate\Support\Arr;
|
||||
use Modules\Cms\Models\Article;
|
||||
use Modules\Cms\Models\Category;
|
||||
use Modules\Cms\Models\Tag;
|
||||
|
||||
class ArticleController extends AdminController
|
||||
{
|
||||
|
||||
use WithUploads;
|
||||
|
||||
protected $title = '文章管理';
|
||||
|
||||
public function grid(): Grid
|
||||
{
|
||||
$grid = new Grid(new Article());
|
||||
|
||||
$grid->model()->with('categories')->withCount('versions');
|
||||
|
||||
$grid->filter(function (Grid\Filter $filter) {
|
||||
$filter->scope('trashed', '回收站')->onlyTrashed();
|
||||
|
||||
$filter->column(1 / 3, function (Grid\Filter $filter) {
|
||||
$filter->like('title', '文章标题');
|
||||
$filter->like('slug', 'SLUG');
|
||||
});
|
||||
$filter->column(1 / 3, function (Grid\Filter $filter) {
|
||||
$filter->like('categories.title', '所属分类');
|
||||
$filter->like('tags.name', '标签');
|
||||
});
|
||||
$filter->column(1 / 3, function (Grid\Filter $filter) {
|
||||
$filter->equal('status', '状态')->select(Article::getStatusMap());
|
||||
});
|
||||
});
|
||||
|
||||
$grid->column('id', '#ID#');
|
||||
$grid->column('categories', '所属分类')->display(function ($categories) {
|
||||
return Arr::pluck($categories, 'title');
|
||||
})->label();
|
||||
// $grid->column('tags')->pluck('name')->label('warning');
|
||||
$grid->column('title', '文章标题');
|
||||
// $grid->column('slug', 'SLUG');
|
||||
$grid->column('status', '状态')->bool();
|
||||
$grid->column('clicks', '浏览量');
|
||||
$grid->column('versions_count', '历史版本')->link(function () {
|
||||
return route('admin.cms.versions', [
|
||||
'model' => get_class($this),
|
||||
'key' => $this->id,
|
||||
]);
|
||||
}, '_self');
|
||||
$grid->column('created_at', '创建时间');
|
||||
|
||||
return $grid;
|
||||
}
|
||||
|
||||
/**
|
||||
* Notes : 内容表单
|
||||
* @Date : 2021/3/15 5:21 下午
|
||||
* @Author : < Jason.C >
|
||||
* @return \Encore\Admin\Form
|
||||
*/
|
||||
public function form(): Form
|
||||
{
|
||||
$form = new Form(new Article());
|
||||
|
||||
$form->text('title', '文章标题')
|
||||
->rules([
|
||||
'required',
|
||||
'max:255',
|
||||
], [
|
||||
'max' => '标题最大长度不能超过 :max 个字符',
|
||||
])
|
||||
->required();
|
||||
// $form->text('sub_title', '副标题')
|
||||
// ->rules([
|
||||
// 'nullable',
|
||||
// 'max:255',
|
||||
// ], [
|
||||
// 'max' => '标题最大长度不能超过 :max 个字符',
|
||||
// ]);
|
||||
// $form->text('slug', '英文别名')
|
||||
// ->rules([
|
||||
// 'nullable',
|
||||
// 'alpha_dash',
|
||||
// ], [
|
||||
// 'alpha_dash' => '别名中包含非法字符',
|
||||
// ])
|
||||
// ->help('字母、数字、下划线组成,用来展示简短的URL');
|
||||
|
||||
$form->multipleSelect('categories', '所属分类')
|
||||
->options(Category::selectOptions(function ($model) {
|
||||
return $model->where('status', 1);
|
||||
}, '请选择文章分类'))
|
||||
->required();
|
||||
|
||||
// $form->multipleSelect('tags', '内容标签')
|
||||
// ->options(function () {
|
||||
// return Tag::pluck('name', 'id');
|
||||
// });
|
||||
|
||||
$this->cover($form);
|
||||
|
||||
// $this->pictures($form);
|
||||
|
||||
$form->textarea('description', '文章简介')
|
||||
->rules([
|
||||
'nullable',
|
||||
'max:255',
|
||||
], [
|
||||
'max' => '标题最大长度不能超过 :max 个字符',
|
||||
]);
|
||||
|
||||
$form->ueditor('content', '文章内容')
|
||||
->rules([
|
||||
'required',
|
||||
], [
|
||||
'required' => '文章内容不能为空',
|
||||
])
|
||||
->required();
|
||||
|
||||
$this->attachments($form);
|
||||
|
||||
$form->switch('status', '状态')
|
||||
->default(1);
|
||||
|
||||
return $form;
|
||||
}
|
||||
|
||||
}
|
||||
98
modules/Cms/Http/Controllers/Admin/CategoryController.php
Normal file
98
modules/Cms/Http/Controllers/Admin/CategoryController.php
Normal file
@@ -0,0 +1,98 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Cms\Http\Controllers\Admin;
|
||||
|
||||
use App\Admin\Traits\WithUploads;
|
||||
use Closure;
|
||||
use Encore\Admin\Controllers\AdminController;
|
||||
use Encore\Admin\Form;
|
||||
use Encore\Admin\Layout\Column;
|
||||
use Encore\Admin\Layout\Row;
|
||||
use Encore\Admin\Tree;
|
||||
use Encore\Admin\Widgets\Box;
|
||||
use Encore\Admin\Widgets\Form as WidgetsForm;
|
||||
use Modules\Cms\Models\Category;
|
||||
|
||||
class CategoryController extends AdminController
|
||||
{
|
||||
|
||||
use WithUploads;
|
||||
|
||||
protected $title = '分类管理';
|
||||
|
||||
public function grid(): Closure
|
||||
{
|
||||
return function (Row $row) {
|
||||
$row->column(6, $this->treeView());
|
||||
|
||||
$row->column(6, function (Column $column) {
|
||||
$form = new WidgetsForm();
|
||||
$this->formData($form, true);
|
||||
$form->action(route('admin.cms.categories.store'));
|
||||
$column->append((new Box('新增分类', $form))->style('success'));
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
protected function treeView(): Tree
|
||||
{
|
||||
return Category::tree(function (Tree $tree) {
|
||||
$tree->disableCreate();
|
||||
$tree->branch(function ($branch) {
|
||||
if ($branch['status'] == 1) {
|
||||
$payload = "<i class='fa fa-eye text-primary'></i> ";
|
||||
} else {
|
||||
$payload = "<i class='fa fa-eye text-gray'></i> ";
|
||||
}
|
||||
|
||||
$payload .= " [ID:{$branch['id']}] - ";
|
||||
$payload .= " <strong>{$branch['title']}</strong> ";
|
||||
|
||||
return $payload;
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
protected function form(): Form
|
||||
{
|
||||
$form = new Form(new Category);
|
||||
|
||||
$this->formData($form);
|
||||
|
||||
return $form;
|
||||
}
|
||||
|
||||
private function formData($form, $hideContent = false)
|
||||
{
|
||||
$form->select('parent_id', '上级分类')
|
||||
->options(Category::selectOptions(function ($model) {
|
||||
return $model->where('status', 1);
|
||||
}, '一级分类'))
|
||||
->required();
|
||||
$form->text('title', '分类名称')
|
||||
->rules('required');
|
||||
$form->text('slug', '英文别名')
|
||||
->rules([
|
||||
'nullable',
|
||||
'alpha_dash',
|
||||
], [
|
||||
'alpha_dash' => '别名中包含非法字符',
|
||||
])
|
||||
->help('字母、数字、下划线组成,用来展示简短的URL');
|
||||
$form->textarea('description', '分类简介')
|
||||
->rules('nullable');
|
||||
|
||||
$this->cover($form);
|
||||
|
||||
$this->pictures($form);
|
||||
|
||||
$form->number('order', '排序')->default(0);
|
||||
|
||||
if (!$hideContent) {
|
||||
$form->ueditor('content', '分类内容');
|
||||
}
|
||||
|
||||
$form->switch('status', '状态')->default(1);
|
||||
}
|
||||
|
||||
}
|
||||
124
modules/Cms/Http/Controllers/Admin/PageController.php
Normal file
124
modules/Cms/Http/Controllers/Admin/PageController.php
Normal file
@@ -0,0 +1,124 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Cms\Http\Controllers\Admin;
|
||||
|
||||
use App\Admin\Traits\WithUploads;
|
||||
use Encore\Admin\Controllers\AdminController;
|
||||
use Encore\Admin\Form;
|
||||
use Encore\Admin\Grid;
|
||||
use Modules\Cms\Models\Page;
|
||||
use Modules\Cms\Models\Tag;
|
||||
|
||||
class PageController extends AdminController
|
||||
{
|
||||
|
||||
use WithUploads;
|
||||
|
||||
protected $title = '单页管理';
|
||||
|
||||
public function grid(): Grid
|
||||
{
|
||||
$grid = new Grid(new Page());
|
||||
|
||||
$grid->model()->withCount('versions');
|
||||
|
||||
$grid->filter(function (Grid\Filter $filter) {
|
||||
$filter->scope('trashed', '回收站')->onlyTrashed();
|
||||
|
||||
$filter->column(1 / 3, function (Grid\Filter $filter) {
|
||||
$filter->like('title', '页面标题');
|
||||
$filter->like('tags.name', '标签');
|
||||
});
|
||||
$filter->column(1 / 3, function (Grid\Filter $filter) {
|
||||
$filter->like('slug', 'SLUG');
|
||||
});
|
||||
$filter->column(1 / 3, function (Grid\Filter $filter) {
|
||||
$filter->equal('status', '状态')->select(Page::getStatusMap());
|
||||
});
|
||||
});
|
||||
|
||||
$grid->column('id', '#ID#');
|
||||
$grid->column('title', '页面标题');
|
||||
$grid->column('tags')->pluck('name')->label('warning');
|
||||
$grid->column('slug', '英文别名');
|
||||
$grid->column('status', '状态')->bool();
|
||||
$grid->column('clicks', '浏览量');
|
||||
$grid->column('versions_count', '历史版本')->link(function () {
|
||||
return route('admin.cms.versions', [
|
||||
'model' => get_class($this),
|
||||
'key' => $this->id,
|
||||
]);
|
||||
}, '_self');
|
||||
$grid->column('created_at', '创建时间');
|
||||
|
||||
return $grid;
|
||||
}
|
||||
|
||||
/**
|
||||
* Notes : 内容表单
|
||||
* @Date : 2021/3/15 5:21 下午
|
||||
* @Author : < Jason.C >
|
||||
* @return \Encore\Admin\Form
|
||||
*/
|
||||
public function form(): Form
|
||||
{
|
||||
$form = new Form(new Page());
|
||||
|
||||
$form->text('title', '页面标题')
|
||||
->rules([
|
||||
'required',
|
||||
'max:255',
|
||||
], [
|
||||
'max' => '标题最大长度不能超过 :max 个字符',
|
||||
])
|
||||
->required();
|
||||
$form->text('sub_title', '副标题')
|
||||
->rules([
|
||||
'nullable',
|
||||
'max:255',
|
||||
], [
|
||||
'max' => '标题最大长度不能超过 :max 个字符',
|
||||
]);
|
||||
$form->text('slug', '英文别名')
|
||||
->rules([
|
||||
'nullable',
|
||||
'alpha_dash',
|
||||
], [
|
||||
'alpha_dash' => '别名中包含非法字符',
|
||||
])
|
||||
->help('字母、数字、下划线组成,用来展示简短的URL');
|
||||
|
||||
$form->multipleSelect('tags', '页面标签')
|
||||
->options(function () {
|
||||
return Tag::pluck('name', 'id');
|
||||
});
|
||||
|
||||
$this->cover($form);
|
||||
|
||||
$this->pictures($form);
|
||||
|
||||
$form->textarea('description', '页面简介')
|
||||
->rules([
|
||||
'nullable',
|
||||
'max:255',
|
||||
], [
|
||||
'max' => '标题最大长度不能超过 :max 个字符',
|
||||
]);
|
||||
|
||||
$form->ueditor('content', '页面内容')
|
||||
->rules([
|
||||
'required',
|
||||
], [
|
||||
'required' => '页面内容不能为空',
|
||||
])
|
||||
->required();
|
||||
|
||||
$this->attachments($form);
|
||||
|
||||
$form->switch('status', '状态')
|
||||
->default(1);
|
||||
|
||||
return $form;
|
||||
}
|
||||
|
||||
}
|
||||
49
modules/Cms/Http/Controllers/Admin/StorageController.php
Normal file
49
modules/Cms/Http/Controllers/Admin/StorageController.php
Normal file
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Cms\Http\Controllers\Admin;
|
||||
|
||||
use App\Admin\Traits\WithUploads;
|
||||
use Encore\Admin\Controllers\AdminController;
|
||||
use Encore\Admin\Form;
|
||||
use Encore\Admin\Grid;
|
||||
use Modules\Cms\Models\Storage;
|
||||
|
||||
class StorageController extends AdminController
|
||||
{
|
||||
|
||||
use WithUploads;
|
||||
|
||||
protected $title = '素材管理';
|
||||
|
||||
public function grid(): Grid
|
||||
{
|
||||
$grid = new Grid(new Storage());
|
||||
|
||||
$grid->column('id', '#ID#');
|
||||
$grid->column('name', '素材标题');
|
||||
$grid->column('地址')->display(function () {
|
||||
return $this->cover_text;
|
||||
});
|
||||
|
||||
return $grid;
|
||||
}
|
||||
|
||||
public function form(): Form
|
||||
{
|
||||
$form = new Form(new Storage());
|
||||
|
||||
$form->text('name', '素材标题')
|
||||
->rules([
|
||||
'required',
|
||||
'max:255',
|
||||
], [
|
||||
'max' => '标题最大长度不能超过 :max 个字符',
|
||||
])
|
||||
->required();
|
||||
$this->cover($form);
|
||||
$form->url('url', '素材地址');
|
||||
|
||||
return $form;
|
||||
}
|
||||
|
||||
}
|
||||
48
modules/Cms/Http/Controllers/Admin/TagController.php
Normal file
48
modules/Cms/Http/Controllers/Admin/TagController.php
Normal file
@@ -0,0 +1,48 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Cms\Http\Controllers\Admin;
|
||||
|
||||
use Encore\Admin\Controllers\AdminController;
|
||||
use Encore\Admin\Form;
|
||||
use Encore\Admin\Grid;
|
||||
use Modules\Cms\Models\Tag;
|
||||
|
||||
class TagController extends AdminController
|
||||
{
|
||||
|
||||
protected $title = '标签管理';
|
||||
|
||||
public function grid(): Grid
|
||||
{
|
||||
$grid = new Grid(new Tag());
|
||||
|
||||
$grid->model()
|
||||
->withCount(['articles', 'pages'])
|
||||
->orderByDesc('id');
|
||||
|
||||
$grid->filter(function (Grid\Filter $filter) {
|
||||
$filter->scope('trashed', '回收站')->onlyTrashed();
|
||||
|
||||
$filter->column(1 / 2, function (Grid\Filter $filter) {
|
||||
$filter->like('name', '标签名称');
|
||||
});
|
||||
});
|
||||
|
||||
$grid->column('name', '标签名称');
|
||||
$grid->column('articles_count');
|
||||
$grid->column('pages_count');
|
||||
$grid->column('created_at', '创建时间');
|
||||
|
||||
return $grid;
|
||||
}
|
||||
|
||||
public function form(): Form
|
||||
{
|
||||
$form = new Form(new Tag());
|
||||
|
||||
$form->text('name', '标签名称');
|
||||
|
||||
return $form;
|
||||
}
|
||||
|
||||
}
|
||||
68
modules/Cms/Http/Controllers/Admin/VersionController.php
Normal file
68
modules/Cms/Http/Controllers/Admin/VersionController.php
Normal file
@@ -0,0 +1,68 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Cms\Http\Controllers\Admin;
|
||||
|
||||
use Encore\Admin\Auth\Database\Administrator;
|
||||
use Encore\Admin\Grid;
|
||||
use Encore\Admin\Layout\Content;
|
||||
use Encore\Admin\Widgets\Table;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
use Illuminate\Routing\Controller;
|
||||
use Overtrue\LaravelVersionable\Version;
|
||||
|
||||
class VersionController extends Controller
|
||||
{
|
||||
|
||||
public function index(Content $content, $model, $key): Content
|
||||
{
|
||||
return $content
|
||||
->header($model . ' => ' . $key)
|
||||
->description('数据操作日志')
|
||||
->body($this->grid($model, $key));
|
||||
}
|
||||
|
||||
public function grid($model, $key): Grid
|
||||
{
|
||||
$grid = new Grid(new Version());
|
||||
|
||||
$grid->disableCreateButton();
|
||||
$grid->disableActions();
|
||||
$grid->disableTools();
|
||||
|
||||
$grid->model()->whereHasMorph(
|
||||
'versionable',
|
||||
$model,
|
||||
function (Builder $query) use ($key) {
|
||||
$query->where('id', $key);
|
||||
}
|
||||
)->orderByDesc('id');
|
||||
|
||||
$grid->column('操作用户')->display(function () {
|
||||
if ($this->user_id < config('mall.administrator_max_id')) {
|
||||
config(['versionable.user_model' => Administrator::class]);
|
||||
|
||||
return '[Admin] ' . ($this->user->name ?? '--SYSTEM--');
|
||||
} else {
|
||||
return '[USER] ' . ($this->user->username ?? '--USER--');
|
||||
}
|
||||
});
|
||||
$grid->column('versionable_type', '数据变动')->expand(function () {
|
||||
$data = [];
|
||||
foreach ($this->contents as $key => $item) {
|
||||
$data[] = [
|
||||
$key,
|
||||
is_array($item) ? json_encode($item, JSON_UNESCAPED_UNICODE) : $item,
|
||||
];
|
||||
}
|
||||
|
||||
return new Table(['字段名称', '变更值'], $data);
|
||||
});
|
||||
|
||||
$grid->column('操作时间')->display(function () {
|
||||
return $this->created_at->toDateTimeString();
|
||||
});
|
||||
|
||||
return $grid;
|
||||
}
|
||||
|
||||
}
|
||||
113
modules/Cms/Http/Controllers/Api/ArticleController.php
Normal file
113
modules/Cms/Http/Controllers/Api/ArticleController.php
Normal file
@@ -0,0 +1,113 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Cms\Http\Controllers\Api;
|
||||
|
||||
use App\Api\Controllers\Controller;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Jason\Api\Api;
|
||||
use Modules\Cms\Http\Resources\ArticleCollection;
|
||||
use Modules\Cms\Http\Resources\ArticleResource;
|
||||
use Modules\Cms\Models\Article;
|
||||
|
||||
class ArticleController extends Controller
|
||||
{
|
||||
|
||||
/**
|
||||
* Notes : 文章列表
|
||||
*
|
||||
* @Date : 2021/4/16 10:45 上午
|
||||
* @Author : < Jason.C >
|
||||
* @param Request $request
|
||||
* @return mixed
|
||||
*/
|
||||
public function index(Request $request)
|
||||
{
|
||||
$categoryId = $request->category_id;
|
||||
$title = $request->title;
|
||||
$subTitle = $request->sub_title;
|
||||
$slug = $request->slug;
|
||||
$tagId = $request->tag_id;
|
||||
|
||||
$result = Article::query()
|
||||
->when($title, function ($query) use ($title) {
|
||||
$query->where('title', 'like', "%{$title}%");
|
||||
})
|
||||
->when($subTitle, function ($query) use ($subTitle) {
|
||||
$query->where('sub_title', 'like', "%{$subTitle}%");
|
||||
})
|
||||
->when($slug, function ($query) use ($slug) {
|
||||
$query->where('slug', 'like', "%{$slug}%");
|
||||
})
|
||||
->when($categoryId, function ($query) use ($categoryId) {
|
||||
$query->whereHas('categories', function ($cate) use ($categoryId) {
|
||||
$cate->where('category_id', $categoryId);
|
||||
});
|
||||
})
|
||||
->when($tagId, function ($query) use ($tagId) {
|
||||
$query->whereHas('tags', function ($tag) use ($tagId) {
|
||||
$tag->where('tag_id', $tagId);
|
||||
});
|
||||
})
|
||||
->where('status', 1)
|
||||
->with(['categories', 'tags'])
|
||||
->paginate(10);
|
||||
|
||||
return $this->success(new ArticleCollection($result));
|
||||
}
|
||||
|
||||
/**
|
||||
* Notes : 文章详情
|
||||
*
|
||||
* @Date : 2021/4/16 10:45 上午
|
||||
* @Author : < Jason.C >
|
||||
* @param Article $article
|
||||
* @return mixed
|
||||
*/
|
||||
public function show(Article $article)
|
||||
{
|
||||
$article->read(Api::userId());
|
||||
|
||||
return $this->success(new ArticleResource($article));
|
||||
}
|
||||
|
||||
/**
|
||||
* Notes: 收藏/取消收藏
|
||||
*
|
||||
* @Author: 玄尘
|
||||
* @Date: 2022/10/11 9:59
|
||||
*/
|
||||
public function favorite(Article $article): JsonResponse
|
||||
{
|
||||
$user = Api::user();
|
||||
|
||||
$user->toggleFavorite($article);
|
||||
|
||||
return $this->success([
|
||||
'count' => $article->favorites()->count(),
|
||||
'favorite' => $user->hasFavorited($article),
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Notes: 点赞/取消点赞
|
||||
*
|
||||
* @Author: 玄尘
|
||||
* @Date: 2022/10/11 10:18
|
||||
* @param Article $article
|
||||
* @return JsonResponse
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function subscribe(Article $article): JsonResponse
|
||||
{
|
||||
$user = Api::user();
|
||||
|
||||
$user->toggleSubscribe($article);
|
||||
|
||||
return $this->success([
|
||||
'count' => $article->subscribers()->count(),
|
||||
'subscribed' => $user->hasSubscribed($article),
|
||||
]);
|
||||
}
|
||||
|
||||
}
|
||||
50
modules/Cms/Http/Controllers/Api/CategoryController.php
Normal file
50
modules/Cms/Http/Controllers/Api/CategoryController.php
Normal file
@@ -0,0 +1,50 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Cms\Http\Controllers\Api;
|
||||
|
||||
use App\Api\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
use Modules\Cms\Http\Resources\CategoryCollection;
|
||||
use Modules\Cms\Http\Resources\CategoryResource;
|
||||
use Modules\Cms\Models\Category;
|
||||
|
||||
class CategoryController extends Controller
|
||||
{
|
||||
|
||||
/**
|
||||
* Notes : 分类首页
|
||||
* @Date : 2021/4/19 9:29 上午
|
||||
* @Author : < Jason.C >
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return mixed
|
||||
*/
|
||||
public function index(Request $request)
|
||||
{
|
||||
$parentId = $request->get('parent_id', 0);
|
||||
|
||||
if (!is_integer($parentId)) {
|
||||
return $this->failed('The param must be integer');
|
||||
}
|
||||
|
||||
$result = Category::where('parent_id', $parentId)
|
||||
->where('status', 1)
|
||||
->orderBy('order', 'asc')
|
||||
->get();
|
||||
|
||||
return $this->success(new CategoryCollection($result));
|
||||
}
|
||||
|
||||
/**
|
||||
* Notes : 分类的详情
|
||||
* @Date : 2021/4/19 9:29 上午
|
||||
* @Author : < Jason.C >
|
||||
* @param \Modules\Cms\Models\Category $category
|
||||
* @return mixed
|
||||
*/
|
||||
public function show(Category $category)
|
||||
{
|
||||
|
||||
return $this->success(new CategoryResource($category));
|
||||
}
|
||||
|
||||
}
|
||||
105
modules/Cms/Http/Controllers/Api/PageController.php
Normal file
105
modules/Cms/Http/Controllers/Api/PageController.php
Normal file
@@ -0,0 +1,105 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Cms\Http\Controllers\Api;
|
||||
|
||||
use App\Api\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
use Modules\Cms\Http\Resources\PageCollection;
|
||||
use Modules\Cms\Http\Resources\PageResource;
|
||||
use Modules\Cms\Models\Page;
|
||||
|
||||
class PageController extends Controller
|
||||
{
|
||||
|
||||
/**
|
||||
* Notes : 单页列表
|
||||
*
|
||||
* @Date : 2021/4/16 10:45 上午
|
||||
* @Author : < Jason.C >
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return mixed
|
||||
*/
|
||||
public function index(Request $request)
|
||||
{
|
||||
$title = $request->title;
|
||||
$subTitle = $request->sub_title;
|
||||
$slug = $request->slug;
|
||||
$tagId = $request->tag_id;
|
||||
|
||||
$result = Page::when($title, function ($query) use ($title) {
|
||||
$query->where('title', 'like', "%{$title}%");
|
||||
})->when($subTitle, function ($query) use ($subTitle) {
|
||||
$query->where('sub_title', 'like', "%{$subTitle}%");
|
||||
})->when($slug, function ($query) use ($slug) {
|
||||
$query->where('slug', 'like', "%{$slug}%");
|
||||
})->when($tagId, function ($query) use ($tagId) {
|
||||
$query->whereHas('tags', function ($tag) use ($tagId) {
|
||||
$tag->where('tag_id', $tagId);
|
||||
});
|
||||
})->where('status', 1)->with(['tags'])->paginate();
|
||||
|
||||
$result = new PageCollection($result);
|
||||
|
||||
return $this->success($result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Notes : 单页详情
|
||||
*
|
||||
* @Date : 2021/4/16 11:25 上午
|
||||
* @Author : < Jason.C >
|
||||
* @param \Modules\Cms\Models\Page $page
|
||||
* @return mixed
|
||||
*/
|
||||
public function show(Page $page)
|
||||
{
|
||||
$page->incrementClicks();
|
||||
|
||||
return $this->success(new PageResource($page));
|
||||
}
|
||||
|
||||
/**
|
||||
* Notes: 隐私条款
|
||||
*
|
||||
* @Author: 玄尘
|
||||
* @Date: 2022/8/29 11:59
|
||||
*/
|
||||
public function secret()
|
||||
{
|
||||
$info = Page::where('slug', 'secret')->first();
|
||||
$info->incrementClicks();
|
||||
|
||||
return $this->success(new PageResource($info));
|
||||
}
|
||||
|
||||
/**
|
||||
* Notes: 服务协议
|
||||
*
|
||||
* @Author: 玄尘
|
||||
* @Date: 2022/8/29 12:00
|
||||
* @return \Illuminate\Http\JsonResponse
|
||||
*/
|
||||
public function protocol()
|
||||
{
|
||||
$info = Page::where('slug', 'protocol')->first();
|
||||
$info->incrementClicks();
|
||||
|
||||
return $this->success(new PageResource($info));
|
||||
}
|
||||
|
||||
/**
|
||||
* Notes: 授权书
|
||||
*
|
||||
* @Author: 玄尘
|
||||
* @Date: 2022/12/30 14:16
|
||||
* @return \Illuminate\Http\JsonResponse
|
||||
*/
|
||||
public function letter()
|
||||
{
|
||||
$info = Page::where('slug', 'letter')->first();
|
||||
$info->incrementClicks();
|
||||
|
||||
return $this->success(new PageResource($info));
|
||||
}
|
||||
|
||||
}
|
||||
37
modules/Cms/Http/Controllers/Api/TagController.php
Normal file
37
modules/Cms/Http/Controllers/Api/TagController.php
Normal file
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Cms\Http\Controllers\Api;
|
||||
|
||||
use App\Api\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
use Modules\Cms\Http\Resources\TagCollection;
|
||||
use Modules\Cms\Http\Resources\TagResource;
|
||||
use Modules\Cms\Models\Tag;
|
||||
|
||||
class TagController extends Controller
|
||||
{
|
||||
|
||||
/**
|
||||
* Notes : 标签列表
|
||||
* @Date : 2021/4/25 1:31 下午
|
||||
* @Author : < Jason.C >
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return mixed
|
||||
*/
|
||||
public function index(Request $request)
|
||||
{
|
||||
$name = $request->name;
|
||||
|
||||
$tags = Tag::when($name, function ($query) use ($name) {
|
||||
$query->where('name', 'like', "%{$name}%");
|
||||
})->orderByDesc('id')->paginate();
|
||||
|
||||
return $this->success(new TagCollection($tags));
|
||||
}
|
||||
|
||||
public function show(Tag $tag)
|
||||
{
|
||||
return $this->success(new TagResource($tag));
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user