FileUpdateInfoController.java 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. package com.ruoyi.file.controller;
  2. import com.ruoyi.file.domain.FileUpdateInfo;
  3. import com.ruoyi.file.domain.FileWithId;
  4. import com.ruoyi.file.service.FileUpdateInfoService;
  5. import com.usky.common.core.bean.ApiResult;
  6. import com.usky.common.core.bean.CommonPage;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.web.bind.annotation.*;
  9. @RestController
  10. @RequestMapping("/api/update")
  11. public class FileUpdateInfoController {
  12. @Autowired
  13. private FileUpdateInfoService fileUpdateInfoService;
  14. //增加服务信息
  15. @PostMapping("/add")
  16. public ApiResult<String> addFileToDatabase(@RequestBody FileUpdateInfo fileUpdateInfo) {
  17. try {
  18. fileUpdateInfoService.addFileToDatabase(fileUpdateInfo);
  19. return ApiResult.success("文件信息录入成功");
  20. } catch (Exception e) {
  21. return ApiResult.error("文件信息录入失败: " + e.getMessage());
  22. }
  23. }
  24. //检查服务版本
  25. @PostMapping("/checkById")
  26. public ApiResult<String> checkFileUpdate(@RequestParam Long id) {
  27. try {
  28. boolean isUpdateRequired = fileUpdateInfoService.checkFileUpdate(id);
  29. String result = isUpdateRequired ? "待更新" : "无需更新";
  30. return ApiResult.success(result);
  31. } catch (Exception e) {
  32. return ApiResult.error("检查文件更新失败:远程仓库未找到对应服务");
  33. }
  34. }
  35. //下载更新服务
  36. @PostMapping("/reloadById")
  37. public ApiResult<String> performFileUpdate(@RequestParam Long id) {
  38. try {
  39. fileUpdateInfoService.performFileUpdate(id);
  40. return ApiResult.success("文件更新成功");
  41. } catch (Exception e) {
  42. return ApiResult.error("文件更新失败: " + e.getMessage());
  43. }
  44. }
  45. //查询服务信息
  46. @GetMapping("/query")
  47. public ApiResult<CommonPage<FileUpdateInfo>> queryFiles(
  48. @RequestParam(required = false) String fileName,
  49. @RequestParam(required = false, defaultValue = "1") int current,
  50. @RequestParam(required = false, defaultValue = "10") int size) {
  51. try {
  52. CommonPage<FileUpdateInfo> commonPage;
  53. if (fileName == null || fileName.trim().isEmpty()) {
  54. commonPage = fileUpdateInfoService.getAllFiles(current, size);
  55. } else {
  56. commonPage = fileUpdateInfoService.getFilesByFileNameContaining(fileName, current, size);
  57. }
  58. return ApiResult.success(commonPage);
  59. } catch (Exception e) {
  60. return ApiResult.error("查询文件信息失败: " + e.getMessage());
  61. }
  62. }
  63. //删除服务信息
  64. @DeleteMapping("/deleteById")
  65. public ApiResult<String> deleteFileById(@RequestParam Long id) {
  66. try {
  67. fileUpdateInfoService.deleteFileById(id);
  68. return ApiResult.success("文件信息删除成功");
  69. } catch (Exception e) {
  70. return ApiResult.error("删除文件信息失败: " + e.getMessage());
  71. }
  72. }
  73. //控制服务运行状态(启动start、停止stop、重启restart)
  74. @PostMapping("/controlById")
  75. public ApiResult<String> controlServiceById(@RequestParam Long id, @RequestParam String action) {
  76. try {
  77. FileUpdateInfo fileUpdateInfo = fileUpdateInfoService.getFileById(id);
  78. if (fileUpdateInfo == null) {
  79. return ApiResult.error("未找到对应的文件信息,ID: " + id);
  80. }
  81. String fileName = fileUpdateInfo.getFileName();
  82. // 在控制服务之前,先检测当前服务状态
  83. int currentStatus = fileUpdateInfoService.getFileStatus(fileName);
  84. if ((action.equals("start") && currentStatus == 1) || (action.equals("stop") && currentStatus == 2)) {
  85. return ApiResult.error("服务已经是目标状态,无需重复操作");
  86. }
  87. fileUpdateInfoService.controlApplication(fileName, action);
  88. // 根据 action 返回不同的成功消息
  89. if ("start".equalsIgnoreCase(action)) {
  90. return ApiResult.success("启动成功");
  91. } else if ("stop".equalsIgnoreCase(action)) {
  92. return ApiResult.success("停止成功");
  93. } else if ("restart".equalsIgnoreCase(action)) {
  94. return ApiResult.success("重启成功");
  95. } else {
  96. return ApiResult.success(action + "命令已发送");
  97. }
  98. } catch (Exception e) {
  99. return ApiResult.error("控制服务失败: " + e.getMessage());
  100. }
  101. }
  102. // 扫描服务所在目录下的文件
  103. @GetMapping("/scan")
  104. public ApiResult<CommonPage<FileWithId>> scanFilesInServiceDir(
  105. @RequestParam(required = false, defaultValue = "1") int current,
  106. @RequestParam(required = false, defaultValue = "10") int size) {
  107. try {
  108. CommonPage<FileWithId> fileNamesPage = fileUpdateInfoService.scanFilesInServiceDir(current, size);
  109. return ApiResult.success(fileNamesPage);
  110. } catch (Exception e) {
  111. return ApiResult.error("扫描文件失败: " + e.getMessage());
  112. }
  113. }
  114. }