新增每分钟执行的公聊大厅定时器

This commit is contained in:
liaozetao
2024-05-07 10:22:02 +08:00
parent 4d28731503
commit 66bafc3aad
2 changed files with 56 additions and 11 deletions

View File

@@ -156,25 +156,45 @@ public class PublicChatTopRecordServiceImpl extends ServiceImpl<PublicChatTopRec
if (oneTime == null || processTime == null) {
return;
}
Room publicChatRoom = roomService.getRoomByRoomId(Long.valueOf(SystemConfig.publicChatMessageRoomId));
Date now = new Date();
List<PartitionInfo> partitionInfoList = partitionInfoService.listAll();
for (PartitionInfo partitionInfo : partitionInfoList) {
Integer partitionId = partitionInfo.getId();
List<PublicChatTopRecord> publicChatTopRecords = list(Wrappers.<PublicChatTopRecord>lambdaQuery()
.eq(PublicChatTopRecord::getIsTop, Constant.Yes1No0.YES)
.eq(PublicChatTopRecord::getRecordStatus, Constant.Yes1No0.NO)
.eq(PublicChatTopRecord::getPartitionId, partitionId));
if (CollectionUtil.isNotEmpty(publicChatTopRecords)) {
PublicChatTopRecord publicChatTopRecord = publicChatTopRecords.get(0);
Date endTime = publicChatTopRecord.getEndTime();
if (endTime.after(now)) {
continue;
} else {
publicChatTopRecord.setRecordStatus(Constant.Yes1No0.YES);
updateById(publicChatTopRecord);
}
}
String redisKey = RedisKey.public_chat_list.getKey(partitionId.toString());
Long size = jedisService.llen(redisKey);
String recordStr = jedisService.lpop(redisKey);
if (StrUtil.isEmpty(recordStr)) {
continue;
PublicChatTopRecord publicChatTopRecord = null;
Long roomUid = null;
if (StrUtil.isNotEmpty(recordStr)) {
publicChatTopRecord = GsonUtil.getDefGson().fromJson(recordStr, PublicChatTopRecord.class);
roomUid = publicChatTopRecord.getRoomUid();
Date endTime = new Date(now.getTime() + ((size == 1) ? oneTime : processTime));
publicChatTopRecord.setStartTime(now);
publicChatTopRecord.setEndTime(endTime);
publicChatTopRecord.setIsTop(Constant.Yes1No0.YES);
updateById(publicChatTopRecord);
log.info("uid : {}, content : {}, 头条置顶...", publicChatTopRecord.getUid(), publicChatTopRecord.getContent());
} else {
if (publicChatRoom != null) {
roomUid = publicChatRoom.getUid();
}
}
PublicChatTopRecord publicChatTopRecord = GsonUtil.getDefGson().fromJson(recordStr, PublicChatTopRecord.class);
Date endTime = new Date(now.getTime() + ((size == 1) ? oneTime : processTime));
publicChatTopRecord.setStartTime(now);
publicChatTopRecord.setEndTime(endTime);
publicChatTopRecord.setIsTop(Constant.Yes1No0.YES);
publicChatTopRecord.setRecordStatus(Constant.Yes1No0.YES);
updateById(publicChatTopRecord);
log.info("uid : {}, content : {}, 头条置顶...", publicChatTopRecord.getUid(), publicChatTopRecord.getContent());
sendSysMsgService.sendCustomMsg(Long.valueOf(SystemConfig.systemMessageUid), publicChatTopRecord.getRoomUid(), Constant.DefMsgType.PUBLIC_CHATROOM, Constant.DefMsgType.PUBLIC_CHATROOM_TOP, publicChatTopRecord);
sendSysMsgService.sendCustomMsg(Long.valueOf(SystemConfig.systemMessageUid), roomUid, Constant.DefMsgType.PUBLIC_CHATROOM, Constant.DefMsgType.PUBLIC_CHATROOM_TOP, publicChatTopRecord);
}
} catch (Exception e) {
log.error(e.getMessage(), e);

View File

@@ -0,0 +1,25 @@
package com.accompany.scheduler.task.chat;
import com.accompany.business.service.chat.PublicChatTopRecordService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
/**
* @author: liaozetao
* @date: 2024/5/7 10:09
* @description:
*/
@Slf4j
@Component
public class PublicChatTask {
@Autowired
private PublicChatTopRecordService publicChatTopRecordService;
@Scheduled(cron = "0 */1 * * * ?")
public void execute() {
publicChatTopRecordService.execute();
}
}