Ver código fonte

file-service 中的 job 执行详情持久化到 job_detail 表

reghao 1 ano atrás
pai
commit
2c1a6058d3

+ 24 - 2
file/file-service/src/main/java/cn/reghao/tnb/file/app/delay/task/PublishVideoTask.java

@@ -1,22 +1,44 @@
 package cn.reghao.tnb.file.app.delay.task;
 
+import cn.reghao.jutil.jdk.result.Result;
+import cn.reghao.jutil.jdk.result.ResultStatus;
 import cn.reghao.tnb.content.api.iface.UserContentService;
+import cn.reghao.tnb.file.app.db.mapper.JobDetailMapper;
+import cn.reghao.tnb.file.app.model.constant.JobStatus;
+
+import java.time.LocalDateTime;
 
 /**
  * @author reghao
  * @date 2024-12-04 13:46:25
  */
 public class PublishVideoTask implements Runnable {
+    private final long jobId;
+    private final JobDetailMapper jobDetailMapper;
     private final UserContentService userContentService;
     private final String videoId;
 
-    public PublishVideoTask(UserContentService userContentService, String videoId) {
+    public PublishVideoTask(long jobId, JobDetailMapper jobDetailMapper, UserContentService userContentService, String videoId) {
+        this.jobId = jobId;
+        this.jobDetailMapper = jobDetailMapper;
         this.userContentService = userContentService;
         this.videoId = videoId;
     }
 
     @Override
     public void run() {
-        userContentService.publishVideoPost(videoId);
+        String status = JobStatus.Success.getDesc();
+        try {
+            Result result = userContentService.publishVideoPost(videoId);
+            if (result.getCode() != ResultStatus.SUCCESS.getCode()) {
+                status = JobStatus.Fail.getDesc();
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            status = JobStatus.Fail.getDesc();
+        }
+
+        LocalDateTime current = LocalDateTime.now();
+        jobDetailMapper.updateSetEnd(jobId, status, current);
     }
 }

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

@@ -61,16 +61,23 @@ public class JobServiceImpl implements JobService {
         DelayJob delayJob = new DelayJob(jobId, orderTask, delaySecond);
         jobContext.addJob(delayJob);
 
+        String status = JobStatus.Prepare.getDesc();
+        JobDetail jobDetail = new JobDetail(jobId, delayJob, status);
+        jobDetailMapper.save(jobDetail);
         return jobId;
     }
 
     @Override
     public long addPublishVideoJob(String videoId, long publishAt) {
         long jobId = idGenerator.nextId();
-        PublishVideoTask publishVideoTask = new PublishVideoTask(userContentService, videoId);
+        PublishVideoTask publishVideoTask = new PublishVideoTask(jobId, jobDetailMapper, userContentService, videoId);
         long delaySecond = (publishAt - System.currentTimeMillis())/1000;
         DelayJob delayJob = new DelayJob(jobId, publishVideoTask, delaySecond);
         jobContext.addJob(delayJob);
+
+        String status = JobStatus.Prepare.getDesc();
+        JobDetail jobDetail = new JobDetail(jobId, delayJob, status);
+        jobDetailMapper.save(jobDetail);
         return jobId;
     }