CourseArticlesController.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Events\CourseArticleView;
  4. use App\Models\CourseArticle;
  5. use App\Models\CourseBook;
  6. use App\Models\CourseSection;
  7. use Illuminate\Http\Request;
  8. use App\Http\Controllers\Controller;
  9. use App\Http\Requests\CourseArticleRequest;
  10. use Illuminate\Support\Facades\Auth;
  11. class CourseArticlesController extends Controller
  12. {
  13. // 教程书籍 id
  14. protected $book_id = null;
  15. protected $data = [];
  16. public function __construct(Request $request)
  17. {
  18. $this->middleware('auth', ['except' => ['index', 'show']]);
  19. $this->book_id = $this->data['book_id'] = $request->book;
  20. $this->data = array_merge($this->data, [
  21. ]);
  22. }
  23. public function show(CourseBook $book,CourseArticle $article)
  24. {
  25. if (empty($this->book_id)) {
  26. abort(403, '非法访问');
  27. }
  28. // 非站长 只可以查看 价格 < 1000 人民币教程
  29. if (!empty(Auth::user()) && Auth::id() === 1) {
  30. } elseif ($book->prices >= 1000) {
  31. abort(404);
  32. }
  33. // 更新 文章浏览数
  34. event(new CourseArticleView($article));
  35. // 章节
  36. $sections = $book->sections;
  37. // 回复数据
  38. $replies = $article->replies()->with('user')
  39. ->where('verify', '=', 1)
  40. ->select('replies.*', 'images.path as avatar_path')
  41. ->leftJoin('images', function ($join){
  42. $join->on('images.user_id', '=', 'replies.user_id')
  43. ->where('images.image_type', '=', 'avatar');
  44. })->get();
  45. $data = $this->data;
  46. return view('pages.course_articles.show', compact('sections', 'article', 'replies', 'data'));
  47. }
  48. public function create(CourseBook $book,CourseArticle $article)
  49. {
  50. $this->authorize('admin', $article);
  51. $data = $this->data;
  52. return view('pages.course_articles.create_and_edit', compact('book', 'article', 'data'));
  53. }
  54. public function store(CourseArticleRequest $request, CourseArticle $article)
  55. {
  56. $this->authorize('admin', $article);
  57. $data = [
  58. 'title' => $request->title,
  59. 'body' => $request->body,
  60. 'policy' => $request->policy
  61. ];
  62. $article->fill($data);
  63. // $article->course_books_id = $request->course_books_id;
  64. $article->course_section_id = $request->course_section_id;
  65. $article->user_id = Auth::id();
  66. $article->save();
  67. return redirect()->route('course.articles.show', [$this->book_id, $article->id])->with('message', '创建成功.');
  68. }
  69. public function edit(CourseBook $book, CourseArticle $article)
  70. {
  71. $data = $this->data;
  72. $this->authorize('admin', $article);
  73. return view('pages.course_articles.create_and_edit', compact('book', 'article', 'data'));
  74. }
  75. public function update(CourseArticleRequest $request, CourseBook $book, CourseArticle $article)
  76. {
  77. $this->authorize('admin', $article);
  78. $article->update($request->all());
  79. return redirect()->route('course.articles.show', [$book->id, $article->id])->with('message', '更新成功 ~');
  80. }
  81. public function destroy(CourseBook $book, CourseArticle $article)
  82. {
  83. $this->authorize('admin', $article);
  84. $article->delete();
  85. return redirect()->route('course.books.show', $book->id)->with('message', '删除成功 ~');
  86. }
  87. }