优化消息提示

dev
a15234804788@163.com 3 years ago
parent cd68e6166a
commit 7bfe45438b
  1. 3
      lab-service/lab-user/src/main/java/org/springblade/system/user/service/impl/TrainServiceImpl.java
  2. 33
      lab-service/lab-user/src/main/java/org/springblade/system/user/util/RedisKeyExpirationListener.java

@ -156,6 +156,9 @@ public class TrainServiceImpl extends BaseServiceImpl<TrainMapper, Train> implem
}
},time1 - now, TimeUnit.MILLISECONDS);
//向redis中加入过期key --培训的id
redisTemplate.opsForValue().set(train.getId().toString(), train.getId().toString(),time1 - now , TimeUnit.MILLISECONDS);
return teacherService.updateById(teacher);
}

@ -1,14 +1,22 @@
package org.springblade.system.user.util;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.springblade.resource.enums.SysTypeEnum;
import org.springblade.resource.feign.IMessageClient;
import org.springblade.system.user.entity.Train;
import org.springblade.system.user.entity.TrainPerson;
import org.springblade.system.user.entity.TrainSpeak;
import org.springblade.system.user.service.ITrainPersonService;
import org.springblade.system.user.service.ITrainService;
import org.springblade.system.user.service.ITrainSpeakService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.connection.Message;
import org.springframework.data.redis.listener.KeyExpirationEventMessageListener;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* redis监听器监听key过期事件并处理
* @author ytl
@ -19,6 +27,15 @@ public class RedisKeyExpirationListener extends KeyExpirationEventMessageListene
@Autowired
private ITrainService trainService;
@Autowired
private IMessageClient messageClient;
@Autowired
private ITrainSpeakService trainSpeakService;
@Autowired
private ITrainPersonService trainPersonService;
public RedisKeyExpirationListener(RedisMessageListenerContainer listenerContainer) {
super(listenerContainer);
}
@ -27,11 +44,25 @@ public class RedisKeyExpirationListener extends KeyExpirationEventMessageListene
public void onMessage(Message message, byte[] pattern) {
// 获取到失效的 key,进行取消订单业务处理
String expiredKey = message.toString();
System.out.println("缓存过期的key为:" + expiredKey);
// System.out.println("缓存过期的key为:" + expiredKey);
LambdaQueryWrapper<Train> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(Train::getId,expiredKey);
Train train = trainService.getOne(queryWrapper);
System.out.println(train.getName());
//这里可以根据培训的id查询到培训的具体信息,然后再实现通知功能
//获取培训人员信息并发消息
LambdaQueryWrapper<TrainPerson> personWrapper = new LambdaQueryWrapper<>();
personWrapper.eq(TrainPerson::getTrainId, train.getId());
List<TrainPerson> list = trainPersonService.list(personWrapper);
for(TrainPerson person : list){
messageClient.event(SysTypeEnum.INFORM.getValue(), "会议提醒",
"您有新的会议将在" + train.getDuration() + "分钟后开始,请准时参加!", 1, 5, person.getPersonName(), "/train/project");
}
//获取讲师信息并发消息
LambdaQueryWrapper<TrainSpeak> speakWrapper = new LambdaQueryWrapper<>();
speakWrapper.eq(TrainSpeak::getTrainId, train.getId());
TrainSpeak teacher = trainSpeakService.getOne(speakWrapper);
messageClient.event(SysTypeEnum.INFORM.getValue(), "会议提醒",
"您有新的会议将在" + train.getDuration() + "分钟后开始,请准时参加!", 1, 5, teacher.getSpeakName(), "/train/project");
}
}

Loading…
Cancel
Save