ArticleController.php 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  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, Request $request)
  28. {
  29. $where = ArticleService::backendSearchWhere($request);
  30. $articles = $this->article->backendSearchArticle($where);
  31. $category = [];
  32. $author = [];
  33. if ($articles) {
  34. $data = $articleService->getArticleUserAndCategory($articles);
  35. $category = $data['category'];
  36. $author = $data['user'];
  37. }
  38. return view('backend.article.index', compact('articles', 'author', 'category'));
  39. }
  40. /**
  41. * Show the form for creating a new resource.
  42. *
  43. * @return \Illuminate\Http\Response
  44. */
  45. public function create()
  46. {
  47. return view('backend.article.create');
  48. }
  49. /**
  50. * @param CreateRequest $request
  51. * @param ArticleTagService $articleTagService
  52. * @return $this|\Illuminate\Http\RedirectResponse
  53. */
  54. public function store(CreateRequest $request, ArticleTagService $articleTagService)
  55. {
  56. $article = $this->article->create([
  57. 'title' => $request->title,
  58. 'content' => $request->get('markdown-content'),
  59. 'html_content' => $request->get('html-content'),
  60. 'keyword' => $request->keyword,
  61. 'desc' => $request->desc,
  62. 'cate_id' => $request->cate_id,
  63. 'user_id' => Auth::user()->id
  64. ]);
  65. if ($article) {
  66. if ($request->tags != "") {
  67. $articleTagService->store($article->id, $request->tags);
  68. }
  69. return redirect('backend/article')
  70. ->with('success', '文章添加成功');
  71. }
  72. return redirect()->back()->withErrors('系统异常,文章发布失败');
  73. }
  74. /**
  75. * Display the specified resource.
  76. *
  77. * @param int $id
  78. * @return \Illuminate\Http\Response
  79. */
  80. public function show($id)
  81. {
  82. //
  83. }
  84. /**
  85. * Show the form for editing the specified resource.
  86. *
  87. * @param int $id
  88. * @return \Illuminate\Http\Response
  89. */
  90. public function edit($id, ArticleTagService $articleTagService)
  91. {
  92. $article = $this->article->find($id);
  93. $tags = $article->articleTag;
  94. $tagIdList = $articleTagService->tagsIdList($tags, false);
  95. return view('backend.article.edit', compact('article', 'tagIdList'));
  96. }
  97. /**
  98. * Update the specified resource in storage.
  99. *
  100. * @param \Illuminate\Http\Request $request
  101. * @param int $id
  102. * @return \Illuminate\Http\Response
  103. */
  104. public function update(UpdateRequest $request, $id, ArticleTagService $articleTagService)
  105. {
  106. $article = $this->article->find($id);
  107. if ($article) {
  108. $data = [];
  109. $data['title'] = $request->title;
  110. $data['desc'] = $request->desc;
  111. $data['keyword'] = $request->keyword;
  112. $data['cate_id'] = $request->cate_id;
  113. $data['content'] = $request->get('markdown-content');
  114. $data['html_content'] = $request->get('html-content');
  115. if ($this->article->update($data, $id)) {
  116. $articleTagService->updateArticleTags($id, $request->tags);
  117. return redirect('backend/article')
  118. ->with('success', '文章修改成功');
  119. }
  120. }
  121. return redirect()->back()->withErrors('系统异常,修改文章失败');
  122. }
  123. /**
  124. * Remove the specified resource from storage.
  125. *
  126. * @param int $id
  127. * @return \Illuminate\Http\Response
  128. */
  129. public function destroy($id)
  130. {
  131. $article = $this->article->find($id);
  132. if ($article) {
  133. if ($this->article->delete($id)) {
  134. $tags = $article->tags != "" ? explode(',', $article->tags) : "";
  135. if (is_array($tags)) {
  136. $this->tag->reduceArticleNumber($tags);
  137. }
  138. return response()->json(['status' => 0]);
  139. }
  140. }
  141. return response()->json(['status' => 1]);
  142. }
  143. }