ArticleController.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. <?php
  2. namespace App\Http\Controllers\Backend;
  3. use Illuminate\Http\Request;
  4. use App\Http\Requests;
  5. use App\Http\Controllers\Controller;
  6. use Auth;
  7. use App\Http\Requests\Backend\Article\CreateRequest;
  8. use App\Http\Requests\Backend\Article\UpdateRequest;
  9. use App\Repositories\ArticleRepositoryEloquent;
  10. use App\Repositories\TagRepositoryEloquent;
  11. use App\Services\ArticleTagService;
  12. use App\Services\ArticleService;
  13. class ArticleController extends Controller
  14. {
  15. protected $article;
  16. protected $tag;
  17. public function __construct(ArticleRepositoryEloquent $article, TagRepositoryEloquent $tag)
  18. {
  19. $this->article = $article;
  20. $this->tag = $tag;
  21. }
  22. /**
  23. * Display a listing of the resource.
  24. *
  25. * @return \Illuminate\Http\Response
  26. */
  27. public function index(ArticleService $articleService)
  28. {
  29. $articles = $this->article->orderBy('id', 'desc')->paginate(15);
  30. $category = [];
  31. $author = [];
  32. if ($articles) {
  33. $data = $articleService->getArticleUserAndCategory($articles);
  34. $category = $data['category'];
  35. $author = $data['user'];
  36. }
  37. return view('backend.article.index', compact('articles', 'author', 'category'));
  38. }
  39. /**
  40. * Show the form for creating a new resource.
  41. *
  42. * @return \Illuminate\Http\Response
  43. */
  44. public function create()
  45. {
  46. return view('backend.article.create');
  47. }
  48. /**
  49. * @param CreateRequest $request
  50. * @param ArticleTagService $articleTagService
  51. * @return $this|\Illuminate\Http\RedirectResponse
  52. */
  53. public function store(CreateRequest $request, ArticleTagService $articleTagService)
  54. {
  55. $article = $this->article->create([
  56. 'title' => $request->title,
  57. 'content' => $request->get('markdown-content'),
  58. 'keyword' => $request->keyword,
  59. 'desc' => $request->desc,
  60. 'cate_id' => $request->cate_id,
  61. 'user_id' => Auth::user()->id
  62. ]);
  63. if ($article) {
  64. if ($request->tags != "") {
  65. $articleTagService->store($article->id, $request->tags);
  66. }
  67. return redirect('backend/article')
  68. ->with('success', '文章添加成功');
  69. }
  70. return redirect()->back()->withErrors('系统异常,文章发布失败');
  71. }
  72. /**
  73. * Display the specified resource.
  74. *
  75. * @param int $id
  76. * @return \Illuminate\Http\Response
  77. */
  78. public function show($id)
  79. {
  80. //
  81. }
  82. /**
  83. * Show the form for editing the specified resource.
  84. *
  85. * @param int $id
  86. * @return \Illuminate\Http\Response
  87. */
  88. public function edit($id, ArticleTagService $articleTagService)
  89. {
  90. $article = $this->article->find($id);
  91. $tags = $article->articleTag;
  92. $tagIdList = $articleTagService->tagsIdList($tags, false);
  93. return view('backend.article.edit', compact('article', 'tagIdList'));
  94. }
  95. /**
  96. * Update the specified resource in storage.
  97. *
  98. * @param \Illuminate\Http\Request $request
  99. * @param int $id
  100. * @return \Illuminate\Http\Response
  101. */
  102. public function update(UpdateRequest $request, $id, ArticleTagService $articleTagService)
  103. {
  104. $article = $this->article->find($id);
  105. if ($article) {
  106. $data = [];
  107. $data['title'] = $request->title;
  108. $data['desc'] = $request->desc;
  109. $data['keyword'] = $request->keyword;
  110. $data['cate_id'] = $request->cate_id;
  111. $data['content'] = $request->get('markdown-content');
  112. if ($this->article->update($data, $id)) {
  113. $articleTagService->updateArticleTags($id, $request->tags);
  114. return redirect('backend/article')
  115. ->with('success', '文章修改成功');
  116. }
  117. }
  118. return redirect()->back()->withErrors('系统异常,修改文章失败');
  119. }
  120. /**
  121. * Remove the specified resource from storage.
  122. *
  123. * @param int $id
  124. * @return \Illuminate\Http\Response
  125. */
  126. public function destroy($id)
  127. {
  128. $article = $this->article->find($id);
  129. if ($article) {
  130. if ($this->article->delete($id)) {
  131. $tags = $article->tags != "" ? explode(',', $article->tags) : "";
  132. if (is_array($tags)) {
  133. $this->tag->reduceArticleNumber($tags);
  134. }
  135. return response()->json(['status' => 0]);
  136. }
  137. }
  138. return response()->json(['status' => 1]);
  139. }
  140. }