新增每分钟执行的公聊大厅定时器
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user