Переглянути джерело

网络教室Apply ticket invalid

zouxuan 3 роки тому
батько
коміт
89f885efd7
1 змінених файлів з 30 додано та 30 видалено
  1. 30 30
      mec-im/src/main/java/com/ym/job/ScheduleManager.java

+ 30 - 30
mec-im/src/main/java/com/ym/job/ScheduleManager.java

@@ -11,6 +11,7 @@ import com.ym.mec.im.message.TicketExpiredMessage;
 import com.ym.pojo.ScheduledTaskInfo;
 import com.ym.service.RoomService;
 import lombok.extern.slf4j.Slf4j;
+import org.redisson.api.RedissonClient;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.SchedulingConfigurer;
 import org.springframework.scheduling.config.ScheduledTask;
@@ -28,26 +29,22 @@ import java.util.concurrent.ConcurrentHashMap;
 @Service
 public class ScheduleManager implements SchedulingConfigurer {
     private ScheduledTaskRegistrar taskRegistrar;
-
     @Autowired
     RoomProperties roomProperties;
-
     @Autowired
     WhiteBoardProperties whiteBoardProperties;
-
     @Autowired
     IMHelper imHelper;
-
     @Autowired
     RoomMemberDao roomMemberDao;
-
     @Autowired
     RoomDao roomDao;
-
     @Autowired
     RoomService roomService;
+    @Autowired
+    RedissonClient redissonClient;
 
-    private ConcurrentHashMap<String, ScheduledTask> schedulingTasks = new ConcurrentHashMap<>();
+//    private ConcurrentHashMap<String, ScheduledTask> schedulingTasks = new ConcurrentHashMap<>();
     private ConcurrentHashMap<String, ScheduledTask> roomCacheTasks = new ConcurrentHashMap<>();
     private ConcurrentHashMap<String, Date> userIMOfflineMap = new ConcurrentHashMap<>();
     private ScheduledDelayTask userIMOfflineKickTask = new ScheduledDelayTask(new Runnable() {
@@ -95,35 +92,38 @@ public class ScheduleManager implements SchedulingConfigurer {
 
     public void addTask(ScheduledTaskInfo task) {
         log.info("add speech task: {}", task);
-        schedulingTasks.put(task.getTicket(), taskRegistrar.scheduleFixedDelayTask(new ScheduledDelayTask(new Runnable() {
-            @Override
-            public void run() {
-                log.info("speech task expired, execute task: {}", task);
-                TicketExpiredMessage msg = new TicketExpiredMessage();
-                msg.setFromUserId(task.getApplyUserId());
-                msg.setToUserId(task.getTargetUserId());
-                msg.setTicket(task.getTicket());
-                try {
-                    imHelper.publishMessage(task.getTargetUserId(), task.getRoomId(), msg);
-                } catch (Exception e) {
-                    log.error("msg send error: {}", e.getMessage());
-                }
-                ScheduledTask scheduledTask = schedulingTasks.remove(task.getTicket());
-                scheduledTask.cancel();
+        redissonClient.getBucket(task.getTicket()).set(task);
+        /*ScheduledTask scheduledTask = taskRegistrar.scheduleFixedDelayTask(new ScheduledDelayTask(() -> {
+            log.info("speech task expired, execute task: {}", task);
+            TicketExpiredMessage msg = new TicketExpiredMessage();
+            msg.setFromUserId(task.getApplyUserId());
+            msg.setToUserId(task.getTargetUserId());
+            msg.setTicket(task.getTicket());
+            try {
+                imHelper.publishMessage(task.getTargetUserId(), task.getRoomId(), msg);
+            } catch (Exception e) {
+                log.error("msg send error: {}", e.getMessage());
             }
-        }, roomProperties.getTaskTtl() * 60, roomProperties.getTaskTtl(), task)));
+            ScheduledTask scheduledTask1 = schedulingTasks.remove(task.getTicket());
+            scheduledTask1.cancel();
+        }, roomProperties.getTaskTtl() * 60, roomProperties.getTaskTtl(), task));*/
     }
 
     public ScheduledTaskInfo executeTask(String key) {
-        ScheduledTask scheduledTask = schedulingTasks.remove(key);
-        if (scheduledTask == null) {
+        if (!redissonClient.getBucket(key).isExists()) {
             log.error("task not exist: key={}", key);
             throw new ApiException(ErrorEnum.ERR_APPLY_TICKET_INVALID);
         }
-        ScheduledDelayTask task = (ScheduledDelayTask)scheduledTask.getTask();
-        ScheduledTaskInfo taskInfo = task.getScheduledTaskInfo();
-        scheduledTask.cancel();
-        log.info("execute speech task: {}", taskInfo);
-        return taskInfo;
+        return (ScheduledTaskInfo)redissonClient.getBucket(key).get();
+//        ScheduledTask scheduledTask = schedulingTasks.remove(key);
+//        if (scheduledTask == null) {
+//            log.error("task not exist: key={}", key);
+//            throw new ApiException(ErrorEnum.ERR_APPLY_TICKET_INVALID);
+//        }
+//        ScheduledDelayTask task = (ScheduledDelayTask)scheduledTask.getTask();
+//        ScheduledTaskInfo taskInfo = task.getScheduledTaskInfo();
+//        scheduledTask.cancel();
+//        log.info("execute speech task: {}", taskInfo);
+//        return taskInfo;
     }
 }