SuccessCaseController.java 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. package com.zhentao.controller;
  2. import com.zhentao.common.Result;
  3. import com.zhentao.entity.SuccessCase;
  4. import com.zhentao.service.SuccessCaseService;
  5. import com.zhentao.vo.SuccessCaseVO;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.web.bind.annotation.*;
  8. import java.util.List;
  9. import java.util.Map;
  10. /**
  11. * 成功案例控制器
  12. */
  13. @RestController
  14. @CrossOrigin(origins = "*")
  15. public class SuccessCaseController {
  16. @Autowired
  17. private SuccessCaseService successCaseService;
  18. // ==================== 客户端接口 ====================
  19. /**
  20. * 获取成功案例详情
  21. *
  22. * @param caseNo 案例编号
  23. * @return 案例详情
  24. */
  25. @GetMapping("/api/success-case/detail/{caseNo}")
  26. public Result<SuccessCaseVO> getCaseDetail(@PathVariable String caseNo) {
  27. try {
  28. SuccessCaseVO caseDetail = successCaseService.getCaseDetail(caseNo);
  29. if (caseDetail == null) {
  30. return Result.error("案例不存在或已下架");
  31. }
  32. return Result.success(caseDetail);
  33. } catch (Exception e) {
  34. e.printStackTrace();
  35. return Result.error("获取案例详情失败:" + e.getMessage());
  36. }
  37. }
  38. /**
  39. * 获取成功案例列表
  40. *
  41. * @return 案例列表
  42. */
  43. @GetMapping("/api/success-case/list")
  44. public Result<List<SuccessCaseVO>> getCaseList() {
  45. try {
  46. List<SuccessCaseVO> caseList = successCaseService.getCaseList();
  47. return Result.success(caseList);
  48. } catch (Exception e) {
  49. e.printStackTrace();
  50. return Result.error("获取案例列表失败:" + e.getMessage());
  51. }
  52. }
  53. /**
  54. * 获取案例时间线
  55. *
  56. * @param caseNo 案例编号
  57. * @return 时间线列表
  58. */
  59. @GetMapping("/api/success-case/timeline/{caseNo}")
  60. public Result<?> getTimeline(@PathVariable String caseNo) {
  61. try {
  62. return Result.success(successCaseService.getTimeline(caseNo));
  63. } catch (Exception e) {
  64. e.printStackTrace();
  65. return Result.error("获取时间线失败:" + e.getMessage());
  66. }
  67. }
  68. // ==================== 管理端接口 ====================
  69. /**
  70. * 【管理端】获取案例列表(分页)
  71. *
  72. * @param page 页码
  73. * @param pageSize 每页数量
  74. * @return 分页结果
  75. */
  76. @GetMapping("/api/case/list")
  77. public Result<Map<String, Object>> getAdminCaseList(
  78. @RequestParam(value = "page", required = false, defaultValue = "1") Integer page,
  79. @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize) {
  80. try {
  81. // 参数校验和默认值设置
  82. if (page == null || page < 1) {
  83. page = 1;
  84. }
  85. if (pageSize == null || pageSize < 1) {
  86. pageSize = 10;
  87. }
  88. Map<String, Object> result = successCaseService.getAdminCaseList(page, pageSize);
  89. return Result.success(result);
  90. } catch (Exception e) {
  91. e.printStackTrace();
  92. System.err.println("❌ 获取案例列表异常: " + e.getClass().getName() + " - " + e.getMessage());
  93. return Result.error("获取案例列表失败:" + (e.getMessage() != null ? e.getMessage() : "未知错误"));
  94. }
  95. }
  96. /**
  97. * 【管理端】获取案例详情
  98. *
  99. * @param caseId 案例ID
  100. * @return 案例详情
  101. */
  102. @GetMapping("/api/case/detail/{caseId}")
  103. public Result<SuccessCase> getAdminCaseDetail(@PathVariable Integer caseId) {
  104. try {
  105. SuccessCase successCase = successCaseService.getAdminCaseById(caseId);
  106. if (successCase == null) {
  107. return Result.error("案例不存在");
  108. }
  109. return Result.success(successCase);
  110. } catch (Exception e) {
  111. e.printStackTrace();
  112. return Result.error("获取案例详情失败:" + e.getMessage());
  113. }
  114. }
  115. /**
  116. * 【管理端】创建案例
  117. *
  118. * @param successCase 案例信息
  119. * @return 创建的案例
  120. */
  121. @PostMapping("/api/case/create")
  122. public Result<SuccessCase> createCase(@RequestBody SuccessCase successCase) {
  123. try {
  124. SuccessCase created = successCaseService.createCase(successCase);
  125. return Result.success(created);
  126. } catch (Exception e) {
  127. e.printStackTrace();
  128. return Result.error("创建案例失败:" + e.getMessage());
  129. }
  130. }
  131. /**
  132. * 【管理端】更新案例
  133. *
  134. * @param caseId 案例ID
  135. * @param successCase 案例信息
  136. * @return 更新结果
  137. */
  138. @PutMapping("/api/case/update/{caseId}")
  139. public Result<String> updateCase(@PathVariable Integer caseId, @RequestBody SuccessCase successCase) {
  140. try {
  141. System.out.println("===== 更新案例 =====");
  142. System.out.println("案例ID: " + caseId);
  143. System.out.println("接收到的案例数据: " + successCase);
  144. System.out.println("caseStatus: " + successCase.getCaseStatus());
  145. // 检查案例是否存在
  146. SuccessCase existCase = successCaseService.getAdminCaseById(caseId);
  147. if (existCase == null) {
  148. return Result.error("案例不存在");
  149. }
  150. // 确保 ID 正确设置
  151. successCase.setCaseId(caseId);
  152. // 如果 caseStatus 为 null,保留原值
  153. if (successCase.getCaseStatus() == null) {
  154. successCase.setCaseStatus(existCase.getCaseStatus());
  155. System.out.println("caseStatus 为空,保留原值: " + existCase.getCaseStatus());
  156. } else {
  157. System.out.println("准备更新 caseStatus: " + successCase.getCaseStatus());
  158. }
  159. boolean success = successCaseService.updateCase(caseId, successCase);
  160. if (success) {
  161. System.out.println("更新成功");
  162. System.out.println("==================");
  163. return Result.success("更新成功");
  164. } else {
  165. return Result.error("更新失败");
  166. }
  167. } catch (Exception e) {
  168. e.printStackTrace();
  169. return Result.error("更新案例失败:" + e.getMessage());
  170. }
  171. }
  172. /**
  173. * 【管理端】删除案例
  174. *
  175. * @param caseId 案例ID
  176. * @return 删除结果
  177. */
  178. @DeleteMapping("/api/case/delete/{caseId}")
  179. public Result<String> deleteCase(@PathVariable Integer caseId) {
  180. try {
  181. boolean success = successCaseService.deleteCase(caseId);
  182. if (success) {
  183. return Result.success("删除成功");
  184. } else {
  185. return Result.error("删除失败");
  186. }
  187. } catch (Exception e) {
  188. e.printStackTrace();
  189. return Result.error("删除案例失败:" + e.getMessage());
  190. }
  191. }
  192. }