JobInfoController.java 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. package com.xxl.job.admin.controller;
  2. import com.xxl.job.admin.controller.interceptor.PermissionInterceptor;
  3. import com.xxl.job.admin.core.exception.XxlJobException;
  4. import com.xxl.job.admin.core.model.XxlJobGroup;
  5. import com.xxl.job.admin.core.model.XxlJobInfo;
  6. import com.xxl.job.admin.core.model.XxlJobUser;
  7. import com.xxl.job.admin.core.route.ExecutorRouteStrategyEnum;
  8. import com.xxl.job.admin.core.scheduler.MisfireStrategyEnum;
  9. import com.xxl.job.admin.core.scheduler.ScheduleTypeEnum;
  10. import com.xxl.job.admin.core.thread.JobScheduleHelper;
  11. import com.xxl.job.admin.core.util.I18nUtil;
  12. import com.xxl.job.admin.dao.XxlJobGroupDao;
  13. import com.xxl.job.admin.service.XxlJobService;
  14. import com.xxl.job.core.biz.model.ReturnT;
  15. import com.xxl.job.core.enums.ExecutorBlockStrategyEnum;
  16. import com.xxl.job.core.glue.GlueTypeEnum;
  17. import com.xxl.job.core.util.DateUtil;
  18. import jakarta.annotation.Resource;
  19. import jakarta.servlet.http.HttpServletRequest;
  20. import org.slf4j.Logger;
  21. import org.slf4j.LoggerFactory;
  22. import org.springframework.stereotype.Controller;
  23. import org.springframework.ui.Model;
  24. import org.springframework.web.bind.annotation.RequestMapping;
  25. import org.springframework.web.bind.annotation.RequestParam;
  26. import org.springframework.web.bind.annotation.ResponseBody;
  27. import java.util.*;
  28. /**
  29. * index controller
  30. * @author xuxueli 2015-12-19 16:13:16
  31. */
  32. @Controller
  33. @RequestMapping("/jobinfo")
  34. public class JobInfoController {
  35. private static Logger logger = LoggerFactory.getLogger(JobInfoController.class);
  36. @Resource
  37. private XxlJobGroupDao xxlJobGroupDao;
  38. @Resource
  39. private XxlJobService xxlJobService;
  40. @RequestMapping
  41. public String index(HttpServletRequest request, Model model, @RequestParam(required = false, defaultValue = "-1") int jobGroup) {
  42. // 枚举-字典
  43. model.addAttribute("ExecutorRouteStrategyEnum", ExecutorRouteStrategyEnum.values()); // 路由策略-列表
  44. model.addAttribute("GlueTypeEnum", GlueTypeEnum.values()); // Glue类型-字典
  45. model.addAttribute("ExecutorBlockStrategyEnum", ExecutorBlockStrategyEnum.values()); // 阻塞处理策略-字典
  46. model.addAttribute("ScheduleTypeEnum", ScheduleTypeEnum.values()); // 调度类型
  47. model.addAttribute("MisfireStrategyEnum", MisfireStrategyEnum.values()); // 调度过期策略
  48. // 执行器列表
  49. List<XxlJobGroup> jobGroupList_all = xxlJobGroupDao.findAll();
  50. // filter group
  51. List<XxlJobGroup> jobGroupList = PermissionInterceptor.filterJobGroupByRole(request, jobGroupList_all);
  52. if (jobGroupList==null || jobGroupList.size()==0) {
  53. throw new XxlJobException(I18nUtil.getString("jobgroup_empty"));
  54. }
  55. model.addAttribute("JobGroupList", jobGroupList);
  56. model.addAttribute("jobGroup", jobGroup);
  57. return "jobinfo/jobinfo.index";
  58. }
  59. @RequestMapping("/pageList")
  60. @ResponseBody
  61. public Map<String, Object> pageList(@RequestParam(required = false, defaultValue = "0") int start,
  62. @RequestParam(required = false, defaultValue = "10") int length,
  63. int jobGroup, int triggerStatus, String jobDesc, String executorHandler, String author) {
  64. return xxlJobService.pageList(start, length, jobGroup, triggerStatus, jobDesc, executorHandler, author);
  65. }
  66. @RequestMapping("/add")
  67. @ResponseBody
  68. public ReturnT<String> add(HttpServletRequest request, XxlJobInfo jobInfo) {
  69. // valid permission
  70. PermissionInterceptor.validJobGroupPermission(request, jobInfo.getJobGroup());
  71. // opt
  72. XxlJobUser loginUser = PermissionInterceptor.getLoginUser(request);
  73. return xxlJobService.add(jobInfo, loginUser);
  74. }
  75. @RequestMapping("/update")
  76. @ResponseBody
  77. public ReturnT<String> update(HttpServletRequest request, XxlJobInfo jobInfo) {
  78. // valid permission
  79. PermissionInterceptor.validJobGroupPermission(request, jobInfo.getJobGroup());
  80. // opt
  81. XxlJobUser loginUser = PermissionInterceptor.getLoginUser(request);
  82. return xxlJobService.update(jobInfo, loginUser);
  83. }
  84. @RequestMapping("/remove")
  85. @ResponseBody
  86. public ReturnT<String> remove(int id) {
  87. return xxlJobService.remove(id);
  88. }
  89. @RequestMapping("/stop")
  90. @ResponseBody
  91. public ReturnT<String> pause(int id) {
  92. return xxlJobService.stop(id);
  93. }
  94. @RequestMapping("/start")
  95. @ResponseBody
  96. public ReturnT<String> start(int id) {
  97. return xxlJobService.start(id);
  98. }
  99. @RequestMapping("/trigger")
  100. @ResponseBody
  101. public ReturnT<String> triggerJob(HttpServletRequest request, int id, String executorParam, String addressList) {
  102. // login user
  103. XxlJobUser loginUser = PermissionInterceptor.getLoginUser(request);
  104. // trigger
  105. return xxlJobService.trigger(loginUser, id, executorParam, addressList);
  106. }
  107. @RequestMapping("/nextTriggerTime")
  108. @ResponseBody
  109. public ReturnT<List<String>> nextTriggerTime(String scheduleType, String scheduleConf) {
  110. XxlJobInfo paramXxlJobInfo = new XxlJobInfo();
  111. paramXxlJobInfo.setScheduleType(scheduleType);
  112. paramXxlJobInfo.setScheduleConf(scheduleConf);
  113. List<String> result = new ArrayList<>();
  114. try {
  115. Date lastTime = new Date();
  116. for (int i = 0; i < 5; i++) {
  117. lastTime = JobScheduleHelper.generateNextValidTime(paramXxlJobInfo, lastTime);
  118. if (lastTime != null) {
  119. result.add(DateUtil.formatDateTime(lastTime));
  120. } else {
  121. break;
  122. }
  123. }
  124. } catch (Exception e) {
  125. logger.error("nextTriggerTime error. scheduleType = {}, scheduleConf= {}", scheduleType, scheduleConf, e);
  126. return new ReturnT<List<String>>(ReturnT.FAIL_CODE, (I18nUtil.getString("schedule_type")+I18nUtil.getString("system_unvalid")) + e.getMessage());
  127. }
  128. return new ReturnT<List<String>>(result);
  129. }
  130. }