Ver código fonte

网络教室Apply ticket invalid

zouxuan 3 anos atrás
pai
commit
65ab84b4fb
1 arquivos alterados com 24 adições e 2 exclusões
  1. 24 2
      mec-im/src/main/java/com/ym/job/ScheduleManager.java

+ 24 - 2
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.RBucket;
 import org.redisson.api.RedissonClient;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.SchedulingConfigurer;
@@ -93,6 +94,15 @@ public class ScheduleManager implements SchedulingConfigurer {
     public void addTask(ScheduledTaskInfo task) {
         log.info("add speech task: {}", task);
         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();
@@ -110,11 +120,23 @@ public class ScheduleManager implements SchedulingConfigurer {
     }
 
     public ScheduledTaskInfo executeTask(String key) {
-        if (!redissonClient.getBucket(key).isExists()) {
+        RBucket<Object> bucket = redissonClient.getBucket(key);
+        if (!bucket.isExists()) {
             log.error("task not exist: key={}", key);
             throw new ApiException(ErrorEnum.ERR_APPLY_TICKET_INVALID);
         }
-        return (ScheduledTaskInfo)redissonClient.getBucket(key).get();
+        ScheduledTaskInfo task = (ScheduledTaskInfo) 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);