diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/chat/impl/PublicChatTopRecordServiceImpl.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/chat/impl/PublicChatTopRecordServiceImpl.java index 572dd6edf..c0ec5efa7 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/chat/impl/PublicChatTopRecordServiceImpl.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/chat/impl/PublicChatTopRecordServiceImpl.java @@ -156,25 +156,45 @@ public class PublicChatTopRecordServiceImpl extends ServiceImpl partitionInfoList = partitionInfoService.listAll(); for (PartitionInfo partitionInfo : partitionInfoList) { Integer partitionId = partitionInfo.getId(); + List publicChatTopRecords = list(Wrappers.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); diff --git a/accompany-scheduler/accompany-scheduler-service/src/main/java/com/accompany/scheduler/task/chat/PublicChatTask.java b/accompany-scheduler/accompany-scheduler-service/src/main/java/com/accompany/scheduler/task/chat/PublicChatTask.java new file mode 100644 index 000000000..aeff14325 --- /dev/null +++ b/accompany-scheduler/accompany-scheduler-service/src/main/java/com/accompany/scheduler/task/chat/PublicChatTask.java @@ -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(); + } +}