ContentArticleController.java 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. package com.aijiuyi.admin.controller;
  2. import com.aijiuyi.admin.common.annotation.Log;
  3. import com.aijiuyi.admin.common.entity.Result;
  4. import com.aijiuyi.admin.common.enums.OperationType;
  5. import com.aijiuyi.admin.controller.dto.ArticleRejectDTO;
  6. import com.aijiuyi.admin.controller.dto.ContentArticleQueryDTO;
  7. import com.aijiuyi.admin.entity.ContentArticle;
  8. import com.aijiuyi.admin.service.ContentArticleService;
  9. import com.baomidou.mybatisplus.core.metadata.IPage;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.web.bind.annotation.*;
  12. import javax.validation.Valid;
  13. /**
  14. * 内容管理(文章)Controller
  15. * 提供文章的增删改查、提交审核、发布、拒绝、上下架接口
  16. */
  17. @RestController
  18. @RequestMapping("/content/articles")
  19. public class ContentArticleController {
  20. @Autowired
  21. private ContentArticleService articleService;
  22. /**
  23. * 分页查询文章列表
  24. *
  25. * @param queryDTO 查询条件
  26. * @return 分页结果
  27. */
  28. @GetMapping
  29. @Log(value = "查询文章列表", module = "内容管理", operationType = OperationType.QUERY)
  30. public Result<IPage<ContentArticle>> page(ContentArticleQueryDTO queryDTO) {
  31. return Result.success(articleService.pageList(queryDTO));
  32. }
  33. /**
  34. * 查询文章详情
  35. *
  36. * @param id 文章ID
  37. * @return 文章详情
  38. */
  39. @GetMapping("/{id}")
  40. @Log(value = "查询文章详情", module = "内容管理", operationType = OperationType.QUERY)
  41. public Result<ContentArticle> getById(@PathVariable Long id) {
  42. return Result.success(articleService.getById(id));
  43. }
  44. /**
  45. * 新建文章(初始状态为草稿)
  46. *
  47. * @param article 文章内容
  48. * @return 操作结果
  49. */
  50. @PostMapping
  51. @Log(value = "新建文章", module = "内容管理", operationType = OperationType.INSERT)
  52. public Result<Void> add(@RequestBody ContentArticle article) {
  53. articleService.addArticle(article);
  54. return Result.success();
  55. }
  56. /**
  57. * 编辑文章
  58. *
  59. * @param id 文章ID
  60. * @param article 文章内容
  61. * @return 操作结果
  62. */
  63. @PutMapping("/{id}")
  64. @Log(value = "编辑文章", module = "内容管理", operationType = OperationType.UPDATE)
  65. public Result<Void> update(@PathVariable Long id, @RequestBody ContentArticle article) {
  66. article.setId(id);
  67. articleService.updateArticle(article);
  68. return Result.success();
  69. }
  70. /**
  71. * 删除文章(逻辑删除,仅系统管理员可操作)
  72. *
  73. * @param id 文章ID
  74. * @return 操作结果
  75. */
  76. @DeleteMapping("/{id}")
  77. @Log(value = "删除文章", module = "内容管理", operationType = OperationType.DELETE)
  78. public Result<Void> delete(@PathVariable Long id) {
  79. articleService.deleteArticle(id);
  80. return Result.success();
  81. }
  82. /**
  83. * 提交审核(草稿/已拒绝 → 待审核)
  84. *
  85. * @param id 文章ID
  86. * @return 操作结果
  87. */
  88. @PostMapping("/{id}/submit")
  89. @Log(value = "提交文章审核", module = "内容管理", operationType = OperationType.UPDATE)
  90. public Result<Void> submit(@PathVariable Long id) {
  91. articleService.submitForReview(id);
  92. return Result.success();
  93. }
  94. /**
  95. * 审核通过并发布(待审核 → 已发布,仅系统管理员)
  96. *
  97. * @param id 文章ID
  98. * @return 操作结果
  99. */
  100. @PostMapping("/{id}/publish")
  101. @Log(value = "发布文章", module = "内容管理", operationType = OperationType.UPDATE)
  102. public Result<Void> publish(@PathVariable Long id) {
  103. articleService.publish(id);
  104. return Result.success();
  105. }
  106. /**
  107. * 拒绝审核(待审核 → 已拒绝,仅系统管理员)
  108. *
  109. * @param id 文章ID
  110. * @param rejectDTO 拒绝原因
  111. * @return 操作结果
  112. */
  113. @PostMapping("/{id}/reject")
  114. @Log(value = "拒绝文章审核", module = "内容管理", operationType = OperationType.UPDATE)
  115. public Result<Void> reject(@PathVariable Long id, @RequestBody @Valid ArticleRejectDTO rejectDTO) {
  116. articleService.reject(id, rejectDTO);
  117. return Result.success();
  118. }
  119. /**
  120. * 下架(已发布 → 已下架,仅系统管理员)
  121. *
  122. * @param id 文章ID
  123. * @return 操作结果
  124. */
  125. @PostMapping("/{id}/offline")
  126. @Log(value = "下架文章", module = "内容管理", operationType = OperationType.UPDATE)
  127. public Result<Void> offline(@PathVariable Long id) {
  128. articleService.offline(id);
  129. return Result.success();
  130. }
  131. /**
  132. * 重新上架(已下架 → 已发布,仅系统管理员)
  133. *
  134. * @param id 文章ID
  135. * @return 操作结果
  136. */
  137. @PostMapping("/{id}/online")
  138. @Log(value = "上架文章", module = "内容管理", operationType = OperationType.UPDATE)
  139. public Result<Void> online(@PathVariable Long id) {
  140. articleService.online(id);
  141. return Result.success();
  142. }
  143. }