Selaa lähdekoodia

Merge branch 'saas' of http://git.dayaedu.com/yonge/mec into saas

yonge 3 vuotta sitten
vanhempi
commit
11b42a4c06

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

@@ -11,6 +11,8 @@ 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.RBucket;
+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 +30,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 +93,59 @@ 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);
+        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 = 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) {
+        RBucket<ScheduledTaskInfo> bucket = redissonClient.getBucket(key);
+        if (!bucket.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;
+        ScheduledTaskInfo task = bucket.get();
+        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());
+        }
+        bucket.delete();
+        return task;
+//        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;
     }
 }

+ 3 - 1
mec-im/src/main/java/com/ym/pojo/ControlDeviceTaskInfo.java

@@ -2,11 +2,13 @@ package com.ym.pojo;
 
 import lombok.Data;
 
+import java.io.Serializable;
+
 /**
  * Created by weiqinxiao on 2019/3/13.
  */
 @Data
-public class ControlDeviceTaskInfo extends ScheduledTaskInfo {
+public class ControlDeviceTaskInfo extends ScheduledTaskInfo implements Serializable {
     private DeviceTypeEnum typeEnum;
     private boolean onOff;
 

+ 3 - 1
mec-im/src/main/java/com/ym/pojo/ScheduledTaskInfo.java

@@ -2,11 +2,13 @@ package com.ym.pojo;
 
 import lombok.Data;
 
+import java.io.Serializable;
+
 /**
  * Created by weiqinxiao on 2019/3/13.
  */
 @Data
-public class ScheduledTaskInfo {
+public class ScheduledTaskInfo implements Serializable {
     private String ticket;
     private String roomId;
     private String applyUserId;

+ 3 - 1
mec-im/src/main/java/com/ym/pojo/UpgradeRoleTaskInfo.java

@@ -2,11 +2,13 @@ package com.ym.pojo;
 
 import lombok.Data;
 
+import java.io.Serializable;
+
 /**
  * Created by weiqinxiao on 2019/3/18.
  */
 @Data
-public class UpgradeRoleTaskInfo extends ScheduledTaskInfo {
+public class UpgradeRoleTaskInfo extends ScheduledTaskInfo implements Serializable {
     private RoleEnum role;
 
     @Override