update 聊天室遗漏队列添加,dgb系列幸运值全网报块数问题

This commit is contained in:
yyb
2025-05-26 14:04:28 +08:00
parent 779aaca109
commit b6b26e591f
14 changed files with 136 additions and 22 deletions

View File

@@ -63,7 +63,7 @@ public class WebSocketBrokerConfig implements WebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker(Destination.TOPIC, Destination.QUEUE_USER,Destination.QUEUE_CUSTOMER)
config.enableSimpleBroker(Destination.TOPIC, Destination.QUEUE_USER,Destination.QUEUE_CUSTOMER,Destination.QUEUE_CLOSE_ROOM)
.setHeartbeatValue(new long[] {10000, 10000})
.setTaskScheduler(new DefaultManagedTaskScheduler());

View File

@@ -25,7 +25,7 @@ public class Destination {
/**
* 聊天室关闭 路径
*/
public static final String QUEUE_CLOSE_ROOM = "/close/room/";
public static final String QUEUE_CLOSE_ROOM = "/queue/close/room/";
/**
* stomp 默认群发 目的地

View File

@@ -49,4 +49,4 @@ public class ChatRoomController {
public R<String> updateRoom(@RequestBody CharRoomVo charRoomVo) {
return chatRoomService.updateRoom(charRoomVo);
}
}
}

View File

@@ -27,6 +27,7 @@ public class CommonMessageConvert implements MessageConverter {
if (message.getPayload() instanceof byte[]) {
try {
String textPayload = new String((byte[]) message.getPayload(), StandardCharsets.UTF_8);
System.out.println("发送者发送到服务器的消息:"+textPayload);
return JsonUtil.convertString2Object(textPayload,targetClass);
} catch (Exception e) {
throw new MessageDeliveryException( "消息格式错误");
@@ -46,8 +47,8 @@ public class CommonMessageConvert implements MessageConverter {
@Override
public Message<?> toMessage(Object payload, MessageHeaders headers) {
String str = JsonUtil.toJson(payload);
System.out.println("发送给接受者的消息:"+payload);
byte[] bytes = str.getBytes(StandardCharsets.UTF_8);
System.out.println("发送给前端的消息"+new GenericMessage<>(bytes, headers));
return new GenericMessage<>(bytes, headers);
}

View File

@@ -42,12 +42,14 @@ public class WebSocketEventListener implements ApplicationListener<SessionDiscon
StompPrincipal user = (StompPrincipal) event.getUser();
Message<byte[]> message = event.getMessage();
StompHeaderAccessor accessor = StompHeaderAccessor.wrap(message);
if (user != null && accessor.getCommand() == StompCommand.DISCONNECT && TOURIST.equals(user.getType())) {
LOGGER.info("用户{}断开链接:用户类型{},消息类型{}",user.getName(), user.getType(), accessor.getCommand());
if (accessor.getCommand() == StompCommand.DISCONNECT && TOURIST.equals(user.getType())) {
//游客断开链接,通知客服删除游客聊天室
stompService.customerCloseRoom(user.getName());
// 删除数据库中游客数据
chatRoomMapper.delete(new LambdaUpdateWrapper<ChatRoom>().eq(ChatRoom::getUserOneEmail, user.getName()));
chatMessageMapper.delete(new LambdaUpdateWrapper<ChatMessage>().eq(ChatMessage::getSendEmail, user.getName()));
int delete = chatRoomMapper.delete(new LambdaUpdateWrapper<ChatRoom>().eq(ChatRoom::getUserOneEmail, user.getName()));
int delete1 = chatMessageMapper.delete(new LambdaUpdateWrapper<ChatMessage>().eq(ChatMessage::getSendEmail, user.getName()));
LOGGER.info("删除游客聊天室个数:{},消息个数{}", delete,delete1);
}
}
}

View File

@@ -47,11 +47,15 @@ public class ChatMessageServiceImpl implements ChatMessageService {
if(StringUtils.isEmpty(email)){
return R.fail("查询失败,用户标识或邮箱不能为空");
}
if(roomId == null){
return R.fail("查询聊天消息失败,聊天室ID不能为空");
}
//判断当前消息是否是七天内消息
if(id != null && id != 0){
chatMessage = chatMessageMapper.selectById(id);
}else{
chatMessage = chatMessageMapper.selectOne(new LambdaQueryWrapper<ChatMessage>()
.eq(ChatMessage::getRoomId, roomId).last("LIMIT 1"));
.eq(ChatMessage::getRoomId, roomId).orderByDesc(ChatMessage::getId).last("LIMIT 1"));
}
List<ChatMessageDto> recentlyMessage;
if(chatMessage != null){
@@ -95,4 +99,4 @@ public class ChatMessageServiceImpl implements ChatMessageService {
}
return R.fail("聊天室不存在");
}
}
}

View File

@@ -107,4 +107,4 @@ public class ChatRoomServiceImpl extends ServiceImpl<ChatRoomMapper, ChatRoom> i
}
return R.fail("修改失败,不存在该聊天室");
}
}
}

View File

@@ -24,6 +24,7 @@ import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.Date;
import static com.alibaba.nacos.client.utils.EnvUtil.LOGGER;
import static com.m2pool.chat.constant.UserType.CUSTOMER;
@Service
@@ -177,13 +178,13 @@ public class StompServiceImpl implements StompService {
/**
* 用于客服关闭断线客服端聊天室接口
* @param roomId 游客与客服聊天室id, 实际为游客邮箱
* @param userName 游客邮箱
* @return
*/
public void customerCloseRoom(String roomId){
public void customerCloseRoom(String userName){
messagingTemplate.convertAndSendToUser(
webSocketConfig.getDefaultCustomerEmail(),
Destination.QUEUE + Destination.QUEUE_CLOSE_ROOM + webSocketConfig.getDefaultCustomerEmail(),roomId);
Destination.QUEUE_CLOSE_ROOM + webSocketConfig.getDefaultCustomerEmail(),userName);
}
}
}

View File

@@ -98,14 +98,8 @@ public class PoolServiceImpl implements PoolService {
dto.setTotalDifficulty(PowerUnitUtils.difficultyFormat(info.getDifficulty()));
BigDecimal netPower;
if(pool.getBlockTime() != 0){
netPower = BigDecimal.valueOf(info.getDifficulty().longValue() * 2 ^ 32 / pool.getBlockTime());
}else{
netPower = info.getPower();
}
//全网算力 调用转换工具 动态转换为数值+单位
dto.setTotalPower(PowerUnitUtils.powerFormat(netPower,pool.getCoin()));
dto.setTotalPower(PowerUnitUtils.powerFormat(info.getPower(),pool.getCoin()));
//System.out.println("dto"+dto);
}else {
System.out.println("未能从节点获取到信息");
@@ -113,6 +107,7 @@ public class PoolServiceImpl implements PoolService {
BigDecimal price = redisService.getCacheObject(pool.getCoin() + "_price");
dto.setPrice(price.toEngineeringString()+ " USD");
dto.setHeight(info.getHeight());
}
//从enums中拿币种名、页面显示名、币种对应算法
@@ -120,6 +115,7 @@ public class PoolServiceImpl implements PoolService {
dto.setName(pool.getName());
dto.setAlgorithm(pool.getAlgorithm());
//从池子算力统计表pool_stats拿对应矿池算力 30m
//从实时表拿24h
double mhs = Convert.toDouble(poolMapper.getNowPoolDailyPower(pool.getMhs()+"_realv2"),0.0) * pool.getFac();

View File

@@ -30,7 +30,6 @@ public class NodeRpc{
public static String getResult(String coin,String method,String[] params) {
NodeConfig config = (NodeConfig) EnumUtils.get(NodeConfig.class, coin);
System.out.println("----------执行rpc接口调用");
String uri ="http://"+config.getIp()+":"+config.getHost();
String auth =config.getUser()+":"+config.getPwd();

View File

@@ -22,6 +22,7 @@
<module>m2pool-file</module>
<module>m2pool-oapi</module>
<module>m2pool-chat</module>
<module>m2pool-manage</module>
</modules>