调整文章接口
parent
26740087e1
commit
ca66b1d599
|
|
@ -7,6 +7,7 @@ use App\Admin\Repositories\ArticleCategory;
|
|||
use App\Exceptions\BizException;
|
||||
use App\Models\Article;
|
||||
use App\Models\ArticleCategory as ArticleCategoryModel;
|
||||
use Carbon\Carbon;
|
||||
use Dcat\Admin\Admin;
|
||||
use Dcat\Admin\Form;
|
||||
use Dcat\Admin\Grid;
|
||||
|
|
@ -26,6 +27,7 @@ class ArticleCategoryController extends AdminController
|
|||
return Grid::make(new ArticleCategoryModel(), function (Grid $grid) {
|
||||
$grid->column('id')->sortable();
|
||||
$grid->column('name')->tree();
|
||||
$grid->column('cover')->image(100, 100);
|
||||
$grid->column('is_show')
|
||||
->if(function () {
|
||||
return Admin::user()->can('dcat.admin.article_categories.edit');
|
||||
|
|
@ -110,6 +112,11 @@ class ArticleCategoryController extends AdminController
|
|||
$form->display('id');
|
||||
$form->select('parent_id')->options(ArticleCategoryModel::selectOptions());
|
||||
$form->text('name')->required();
|
||||
$form->image('cover')
|
||||
->move('article-category/'.Carbon::now()->toDateString())
|
||||
->saveFullUrl()
|
||||
->removable(false)
|
||||
->autoUpload()->retainable();
|
||||
$form->switch('is_show');
|
||||
$form->switch('is_recommend');
|
||||
$form->number('sort')->min(0)->default(0);
|
||||
|
|
|
|||
|
|
@ -2,11 +2,13 @@
|
|||
|
||||
namespace App\Endpoint\Api\Http\Controllers;
|
||||
|
||||
use App\Endpoint\Api\Http\Resources\ArticleCategoryResource;
|
||||
use App\Endpoint\Api\Http\Resources\ArticleResource;
|
||||
use App\Endpoint\Api\Http\Resources\ArticleSimpleResource;
|
||||
use App\Exceptions\BizException;
|
||||
use App\Helpers\Paginator as PaginatorHelper;
|
||||
use App\Models\Article;
|
||||
use App\Models\ArticleCategory;
|
||||
use App\Models\ArticleLikesLog;
|
||||
use App\Models\ArticlePointsLog;
|
||||
use App\Models\PointsLog;
|
||||
|
|
@ -50,7 +52,49 @@ class ArticleController extends Controller
|
|||
], $cate);
|
||||
$query = Article::query()->with(['likesInfo'=>function ($q) use ($request) {
|
||||
$user_id = $request->user()?->id;
|
||||
return $q->where('user_id', $user_id??0);
|
||||
return $q->where('user_id', $user_id ?? 0);
|
||||
}])->where('is_show', 1);
|
||||
if ($categoryId) {
|
||||
$query->where('category_id', $categoryId);
|
||||
}
|
||||
if ($key) {
|
||||
$query->where('title', 'like', '%'.$key.'%');
|
||||
}
|
||||
|
||||
$query->orderBy('is_recommend', 'desc');
|
||||
$query->orderBy('sort', 'desc');
|
||||
$query->orderBy('created_at', 'desc');
|
||||
|
||||
$list = $query->simplePaginate(PaginatorHelper::resolvePerPage('per_page', 20, 50));
|
||||
return ArticleSimpleResource::collection($list);
|
||||
}
|
||||
|
||||
public function healthCategory(Request $request)
|
||||
{
|
||||
$key = (string) $request->query('key');
|
||||
$categoryId = app_settings('app.article_health');
|
||||
$query = ArticleCategory::query()->where('parent_id', $categoryId)->where('is_show', 1);
|
||||
|
||||
if ($key) {
|
||||
$query->where('name', 'like', '%'.$key.'%');
|
||||
}
|
||||
|
||||
$query->orderBy('is_recommend', 'desc');
|
||||
$query->orderBy('sort', 'desc');
|
||||
$query->orderBy('created_at', 'desc');
|
||||
|
||||
$categories = $query->get();
|
||||
|
||||
return ArticleCategoryResource::collection($categories);
|
||||
}
|
||||
|
||||
public function articleList($id, Request $request)
|
||||
{
|
||||
$key = (string) $request->query('key');
|
||||
$categoryId = $id;
|
||||
$query = Article::query()->with(['likesInfo'=>function ($q) use ($request) {
|
||||
$user_id = $request->user()?->id;
|
||||
return $q->where('user_id', $user_id ?? 0);
|
||||
}])->where('is_show', 1);
|
||||
if ($categoryId) {
|
||||
$query->where('category_id', $categoryId);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,23 @@
|
|||
<?php
|
||||
|
||||
namespace App\Endpoint\Api\Http\Resources;
|
||||
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
|
||||
class ArticleCategoryResource extends JsonResource
|
||||
{
|
||||
/**
|
||||
* Transform the resource into an array.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
|
||||
*/
|
||||
public function toArray($request)
|
||||
{
|
||||
return [
|
||||
'id' => $this->id,
|
||||
'name' => $this->name,
|
||||
'cover' => $this->cover ?? '',
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
@ -75,6 +75,8 @@ Route::group([
|
|||
Route::get('product/search-hot-keys', [ProductSkuController::class, 'searchHotKeys']);
|
||||
//文章列表
|
||||
Route::get('articles', [ArticleController::class, 'index']);
|
||||
Route::get('articles/health-category', [ArticleController::class, 'healthCategory']);
|
||||
Route::get('articles/by-category/{category}', [ArticleController::class, 'articleList']);
|
||||
|
||||
//指定文章配置
|
||||
Route::get('article-config', [ArticleController::class, 'config']);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,34 @@
|
|||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
class AddCoverToArticleCategoriesTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('article_categories', function (Blueprint $table) {
|
||||
//
|
||||
$table->string('cover')->nullable()->comment('封面图');
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::table('article_categories', function (Blueprint $table) {
|
||||
//
|
||||
$table->dropColumn(['cover']);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -7,6 +7,7 @@ return [
|
|||
],
|
||||
'fields' => [
|
||||
'name' => '名称',
|
||||
'cover' => '封面图',
|
||||
'parent_id' => '父级',
|
||||
'is_show' => '显示',
|
||||
'is_recommend' => '推荐',
|
||||
|
|
|
|||
Loading…
Reference in New Issue