Просмотр исходного кода

1.JobDetail 的 status 字段类型修改为 Integer
2.JobDetailMapper 添加一个 findByStatus 方法

reghao 1 год назад
Родитель
Сommit
30d71405bf

+ 2 - 0
file/file-service/src/main/java/cn/reghao/tnb/file/app/db/mapper/JobDetailMapper.java

@@ -6,6 +6,7 @@ import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.time.LocalDateTime;
+import java.util.List;
 
 /**
  * @author reghao
@@ -16,4 +17,5 @@ public interface JobDetailMapper extends BaseMapper<JobDetail> {
     void updateSetEnd(@Param("jobId") long jobId,
                       @Param("status") String status,
                       @Param("endAt") LocalDateTime endAt);
+    List<JobDetail> findByStatus(int status);
 }

+ 7 - 1
file/file-service/src/main/java/cn/reghao/tnb/file/app/delay/JobContext.java

@@ -1,6 +1,9 @@
 package cn.reghao.tnb.file.app.delay;
 
 import cn.reghao.jutil.jdk.thread.ThreadPoolWrapper;
+import cn.reghao.tnb.file.app.db.mapper.JobDetailMapper;
+import cn.reghao.tnb.file.app.model.constant.JobStatus;
+import cn.reghao.tnb.file.app.model.po.JobDetail;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
@@ -23,9 +26,11 @@ import java.util.concurrent.TimeUnit;
 public class JobContext {
     private final ScheduledExecutorService scheduler;
     private final Map<Long, Future<?>> jobMap = new HashMap<>();
+    private final JobDetailMapper jobDetailMapper;
 
-    public JobContext() {
+    public JobContext(JobDetailMapper jobDetailMapper) {
         this.scheduler = ThreadPoolWrapper.scheduledThreadPool("delay-job", 10);
+        this.jobDetailMapper = jobDetailMapper;
     }
 
     public void addJob(DelayJob delayJob) {
@@ -53,6 +58,7 @@ public class JobContext {
     @PostConstruct
     public void sync() {
         scheduler.scheduleAtFixedRate(new SyncTask(), 0, 10, TimeUnit.SECONDS);
+        List<JobDetail> list = jobDetailMapper.findByStatus(JobStatus.Prepare.getValue());
     }
 
     class SyncTask implements Runnable {

+ 2 - 2
file/file-service/src/main/java/cn/reghao/tnb/file/app/model/po/JobDetail.java

@@ -20,11 +20,11 @@ import java.time.LocalDateTime;
 public class JobDetail extends BaseObject<Integer> {
     private Long jobId;
     private String jobName;
-    private String status;
+    private int status;
     private LocalDateTime startAt;
     private LocalDateTime endAt;
 
-    public JobDetail(long jobId, DelayJob delayJob, String status) {
+    public JobDetail(long jobId, DelayJob delayJob, int status) {
         this.jobId = jobId;
         this.jobName = delayJob.getJobName();
         this.status = status;

+ 2 - 1
file/file-service/src/main/java/cn/reghao/tnb/file/app/rpc/FileServiceImpl.java

@@ -11,6 +11,7 @@ import cn.reghao.oss.sdk.OssStoreClient;
 import cn.reghao.tnb.file.app.config.AppProperties;
 import cn.reghao.tnb.file.app.config.OssConsoleClientFactory;
 import cn.reghao.tnb.file.app.db.mapper.JobDetailMapper;
+import cn.reghao.tnb.file.app.model.constant.JobStatus;
 import cn.reghao.tnb.file.app.model.po.JobDetail;
 import cn.reghao.tnb.file.app.util.ImageUtil;
 import cn.reghao.tnb.file.app.model.constant.OssType;
@@ -98,7 +99,7 @@ public class FileServiceImpl implements FileService {
         List<JobInfo> jobList = list.stream().map(jobDetail -> {
             long jobId = jobDetail.getJobId();
             String jobName = jobDetail.getJobName();
-            String status = jobDetail.getStatus();
+            String status = JobStatus.getDescByCode(jobDetail.getStatus());
             LocalDateTime startAt = jobDetail.getStartAt();
             LocalDateTime endAt = jobDetail.getEndAt();
             return new JobInfo(jobId, jobName, status, startAt, endAt);

+ 3 - 3
file/file-service/src/main/java/cn/reghao/tnb/file/app/rpc/JobServiceImpl.java

@@ -61,7 +61,7 @@ public class JobServiceImpl implements JobService {
         DelayJob delayJob = new DelayJob(jobId, orderTask, delaySecond);
         jobContext.addJob(delayJob);
 
-        String status = JobStatus.Prepare.getDesc();
+        int status = JobStatus.Prepare.getValue();
         JobDetail jobDetail = new JobDetail(jobId, delayJob, status);
         jobDetailMapper.save(jobDetail);
         return jobId;
@@ -75,7 +75,7 @@ public class JobServiceImpl implements JobService {
         DelayJob delayJob = new DelayJob(jobId, publishVideoTask, delaySecond);
         jobContext.addJob(delayJob);
 
-        String status = JobStatus.Prepare.getDesc();
+        int status = JobStatus.Prepare.getValue();
         JobDetail jobDetail = new JobDetail(jobId, delayJob, status);
         jobDetailMapper.save(jobDetail);
         return jobId;
@@ -101,7 +101,7 @@ public class JobServiceImpl implements JobService {
             DelayJob delayJob = new DelayJob(jobId, convertTask, delaySecond);
             jobContext.addJob(delayJob);
 
-            String status = JobStatus.Running.getDesc();
+            int status = JobStatus.Running.getValue();
             JobDetail jobDetail = new JobDetail(jobId, delayJob, status);
             jobDetailMapper.save(jobDetail);
         } catch (Exception e) {

+ 6 - 0
file/file-service/src/main/resources/mapper/JobDetailMapper.xml

@@ -27,4 +27,10 @@
         select *
         from file_job_detail
     </select>
+    <select id="findByStatus" resultType="cn.reghao.tnb.file.app.model.po.JobDetail">
+        select *
+        from file_job_detail
+        where `status`=#{status}
+        limit 1000
+    </select>
 </mapper>