12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- <?php
- namespace App\Http\Controllers\Api\CMS;
- use App\Http\Controllers\Controller;
- use App\Repositories\Enums\ModelStatusEnum;
- use App\Repositories\Models\CMS\Article;
- use App\Repositories\Models\CMS\Category;
- use App\Repositories\Presenters\CMS\ArticlePresenter;
- use Carbon\Carbon;
- use Illuminate\Http\Request;
- use Jiannei\Response\Laravel\Support\Facades\Response;
- use App\Contracts\Repositories\CMS\ArticleRepository;
- use App\Repositories\Validators\CMS\ArticleValidator;
- /**
- * Class ArticlesController.
- *
- * @package namespace App\Http\Controllers\CMS;
- */
- class ArticlesController extends Controller
- {
- /**
- * @var ArticleRepository
- */
- protected $repository;
- /**
- * @var ArticleValidator
- */
- protected $validator;
- /**
- * ArticlesController constructor.
- *
- * @param ArticleRepository $repository
- * @param ArticleValidator $validator
- */
- public function __construct(ArticleRepository $repository, ArticleValidator $validator)
- {
- $this->repository = $repository;
- $this->validator = $validator;
- }
- public function index()
- {
- $courses = $this->repository->paginate(request('per_page', self::PAGE_NUM));
- return Response::success($courses);
- }
- public function show($id)
- {
- $information = $this->repository->find($id);
- Article::query()->where('id', $information['id'])->increment('view_count');
- $last = Article::query()->where('category_id', $information['category_id'])->where('published_at', '<=', Carbon::now())->where('status', ModelStatusEnum::OK)->where('id', '<', $information['id'])->orderByDesc('sort')->latest('id')->select(['id', 'title'])->first();
- $next = Article::query()->where('category_id', $information['category_id'])->where('published_at', '<=', Carbon::now())->where('status', ModelStatusEnum::OK)->where('id', '>', $information['id'])->orderByDesc('sort')->oldest('id')->select(['id', 'title'])->first();
- return Response::success(compact('information', 'last', 'next'));
- }
- public function lists(Request $request)
- {
- $lists = Article::query()->where('category_id', $request->get('category_id'))->orderByDesc('published_at')->limit(6)->get();
- $lists = $this->repository->setPresenter(ArticlePresenter::class)->parserResult($lists);
- return Response::success($lists);
- }
- public function article(Request $request)
- {
- $id = $request->get('category_id');
- $category = Category::query()->where('id', $id)->where('status', ModelStatusEnum::OK)->first();
- if (!$category) {
- return Response::fail('分类id不能为空!');
- }
- if ($category->is_single == 0) {
- $article = Article::query()->where('category_id', $category->id)->where('published_at', '<=', Carbon::now())->where('status', ModelStatusEnum::OK)->orderByDesc('sort')->orderByDesc('published_at')->orderByDesc('id')->first();
- if (!$article) {
- return Response::success(null);
- }
- return Response::success($this->repository->parserResult($article));
- }
- $articles = Article::query()->where('category_id', $category->id)->where('published_at', '<=', Carbon::now())->where('status', ModelStatusEnum::OK)->orderByDesc('sort')->orderByDesc('published_at')->orderByDesc('id')->paginate(request('per_page', self::PAGE_NUM));
- return Response::success($this->repository->parserResult($articles));
- }
- }
|