This commit is contained in:
张良(004796)
2024-04-12 10:52:00 +08:00
parent fe413d0c99
commit 4d10fe5611
34 changed files with 246 additions and 212 deletions

View File

@@ -15,7 +15,7 @@ import com.ruoyi.cai.enums.IgnoreDataTypeEnum;
import com.ruoyi.cai.enums.SystemConfigEnum;
import com.ruoyi.cai.executor.ExecutorConstant;
import com.ruoyi.cai.manager.*;
import com.ruoyi.cai.mq.AmqpProducer;
import com.ruoyi.cai.mq.AmqpHttpProducer;
import com.ruoyi.cai.mq.handle.dto.LoginNotifyDTO;
import com.ruoyi.cai.service.*;
import com.ruoyi.cai.util.RandomSjUtil;
@@ -86,7 +86,7 @@ public class CaiLoginManager {
@Autowired
private IgnoreDataService ignoreDataService;
@Autowired
private AmqpProducer amqpProducer;
private AmqpHttpProducer amqpHttpProducer;
public String login(String username,String password){
User user = userService.getByUsername(username);
@@ -119,7 +119,7 @@ public class CaiLoginManager {
loginUserDTO.setImei(ServletUtils.getImei());
loginUserDTO.setClientIP(ServletUtils.getClientIP());
loginUserDTO.setLogin(true);
amqpProducer.sendCommonMq(loginUserDTO);
amqpHttpProducer.sendCommonMq(loginUserDTO);
}
public String register(CaiRegisterUser caiUser) {

View File

@@ -12,7 +12,7 @@ import com.ruoyi.cai.dto.commom.consumer.GuardConsumerResp;
import com.ruoyi.cai.dto.commom.consumer.RechargeConsumerResp;
import com.ruoyi.cai.dto.video.VideoSettleResp;
import com.ruoyi.cai.enums.SystemConfigEnum;
import com.ruoyi.cai.mq.AmqpProducer;
import com.ruoyi.cai.mq.AmqpHttpProducer;
import com.ruoyi.cai.mq.handle.dto.WindowGiftNotifyDTO;
import com.ruoyi.cai.mq.handle.dto.WindowRechargeNotifyDTO;
import com.ruoyi.cai.notice.YunxinHttpService;
@@ -37,7 +37,7 @@ public class ConsumerManager {
@Autowired
private UserGiftService userGiftService;
@Autowired
private AmqpProducer amqpProducer;
private AmqpHttpProducer amqpHttpProducer;
@Autowired
private RechargeOrderService rechargeOrderService;
@Autowired
@@ -57,7 +57,7 @@ public class ConsumerManager {
GuardConsumerResp resp = guardTotalService.giveGuard(query);
if(resp.isSuccess()){
try {
amqpProducer.sendCalculateSales(resp.getConsumeLogId()+"");
amqpHttpProducer.sendCalculateSales(resp.getConsumeLogId()+"");
}catch (Exception e){
log.error("RabbitMq 发送失败, 守护分销流程流转失败!",e);
}
@@ -79,7 +79,7 @@ public class ConsumerManager {
GiftConsumerResp resp = userGiftService.giveGift(query);
if(resp.isSuccess()){
try {
amqpProducer.sendCalculateSales(resp.getConsumeLogId()+"");
amqpHttpProducer.sendCalculateSales(resp.getConsumeLogId()+"");
}catch (Exception e){
log.error("RabbitMq 发送失败, 礼物分销流程流转失败!",e);
}
@@ -107,7 +107,7 @@ public class ConsumerManager {
windowGift.setToId(resp.getToUid());
windowGift.setGift(resp.getGift());
windowGift.setGiftNum(query.getGiftCount());
amqpProducer.sendWindowMq(windowGift);
amqpHttpProducer.sendWindowMq(windowGift);
}
}
}catch (Exception e){
@@ -121,7 +121,7 @@ public class ConsumerManager {
VideoSettleResp resp = accountService.videoSettle(room);
ConsumeLog consumeLog = resp.getConsumeLog();
try {
amqpProducer.sendCalculateSales(consumeLog.getId()+"");
amqpHttpProducer.sendCalculateSales(consumeLog.getId()+"");
}catch (Exception e){
log.error("RabbitMq 发送失败, 视频分销流程流转失败!",e);
}
@@ -152,7 +152,7 @@ public class ConsumerManager {
log.error("充值每日实时统计失败",e);
}
try {
amqpProducer.sendCalculateSales(resp.getConsumeLogId()+"");
amqpHttpProducer.sendCalculateSales(resp.getConsumeLogId()+"");
}catch (Exception e){
log.error("RabbitMq 发送失败, 充值分销流程流转失败!",e);
}
@@ -176,7 +176,7 @@ public class ConsumerManager {
windowRecharge.setAvatar(resp.getUser().getAvatar());
windowRecharge.setAmount(resp.getRechargeCoin());
windowRecharge.setTime(LocalDateTime.now());
amqpProducer.sendWindowMq(windowRecharge);
amqpHttpProducer.sendWindowMq(windowRecharge);
}
}
}catch (Exception e){

View File

@@ -2,20 +2,17 @@ package com.ruoyi.cai.manager;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.cai.constant.RedisHttpConstant;
import com.ruoyi.cai.domain.User;
import com.ruoyi.cai.dto.admin.vo.AnchorTopAdminVo;
import com.ruoyi.cai.dto.app.query.index.AnchorListQuery;
import com.ruoyi.cai.dto.app.vo.AnchorListVo;
import com.ruoyi.cai.dto.app.vo.setting.AppHomeConfig;
import com.ruoyi.cai.enums.SystemConfigEnum;
import com.ruoyi.cai.enums.home.AnchorListQueryTypeEnum;
import com.ruoyi.cai.mq.AmqpProducer;
import com.ruoyi.cai.mq.AmqpHttpProducer;
import com.ruoyi.cai.mq.handle.dto.LoginNotifyDTO;
import com.ruoyi.cai.service.AnchorService;
import com.ruoyi.cai.service.AnchorTopService;
import com.ruoyi.cai.service.UserService;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.helper.LoginHelper;
import com.ruoyi.common.utils.ServletUtils;
import org.apache.commons.collections4.CollectionUtils;
@@ -24,7 +21,6 @@ import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
@@ -147,7 +143,7 @@ public class HomeManager {
@Autowired
private SystemConfigManager systemConfigManager;
@Autowired
private AmqpProducer amqpProducer;
private AmqpHttpProducer amqpHttpProducer;
public AppHomeConfig config() {
AppHomeConfig config = new AppHomeConfig();
@@ -160,7 +156,7 @@ public class HomeManager {
loginUserDTO.setUserId(userId);
loginUserDTO.setImei(ServletUtils.getImei());
loginUserDTO.setClientIP(ServletUtils.getClientIP());
amqpProducer.sendCommonMq(loginUserDTO);
amqpHttpProducer.sendCommonMq(loginUserDTO);
}
return config;
}

View File

@@ -15,7 +15,7 @@ import com.ruoyi.cai.enums.ChatTypeEnum;
import com.ruoyi.cai.enums.GenderEnum;
import com.ruoyi.cai.enums.UserMemberTypeEnum;
import com.ruoyi.cai.enums.im.ImImgStatusEnum;
import com.ruoyi.cai.mq.AmqpProducer;
import com.ruoyi.cai.mq.AmqpHttpProducer;
import com.ruoyi.cai.mq.handleDelay.dto.SaveSendImImgDelayDto;
import com.ruoyi.cai.service.*;
import com.ruoyi.cai.util.FileUtils;
@@ -50,7 +50,7 @@ public class ImService {
@Autowired
private UserBlacklistService userBlacklistService;
@Autowired
private AmqpProducer amqpProducer;
private AmqpHttpProducer amqpHttpProducer;
@Autowired
private ISysOssService sysOssService;
@Autowired
@@ -229,7 +229,7 @@ public class ImService {
}
SaveSendImImgDelayDto dto = new SaveSendImImgDelayDto();
dto.setRecordId(saveSendImImgReq.getRecordId());
amqpProducer.sendCommonDelayMq(dto,5);
amqpHttpProducer.sendCommonDelayMq(dto,5);
}

View File

@@ -10,14 +10,11 @@ import com.ruoyi.cai.dto.admin.query.UserForbidReq;
import com.ruoyi.cai.enums.ForbidStatusEnum;
import com.ruoyi.cai.enums.forbid.ForbidTimeEnum;
import com.ruoyi.cai.enums.forbid.ForbidTypeEnum;
import com.ruoyi.cai.mq.AmqpProducer;
import com.ruoyi.cai.mq.CommonDelayTypeEnum;
import com.ruoyi.cai.mq.handleDelay.CommonDelayDto;
import com.ruoyi.cai.mq.AmqpHttpProducer;
import com.ruoyi.cai.mq.handleDelay.dto.ForbidDelayDto;
import com.ruoyi.cai.service.*;
import com.ruoyi.cai.util.CaiDateUtil;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.helper.LoginHelper;
import com.ruoyi.common.utils.ServletUtils;
import com.ruoyi.common.utils.StringUtils;
import lombok.Data;
@@ -277,13 +274,13 @@ public class UserForbidManager {
if(between > 0 && between < 60*60*12){
ForbidDelayDto dto = new ForbidDelayDto();
dto.setForbidId(expireId);
amqpProducer.sendCommonDelayMq(dto,(int)between+5);
amqpHttpProducer.sendCommonDelayMq(dto,(int)between+5);
}
}
}
@Autowired
private AmqpProducer amqpProducer;
private AmqpHttpProducer amqpHttpProducer;
public void checkExpire(Long id){
UserForbid userForbid = userForbidService.getById(id);

View File

@@ -0,0 +1,43 @@
package com.ruoyi.cai.mq;
import com.alibaba.fastjson.JSON;
import com.ruoyi.cai.mq.constant.CalculateSalesQueueHttpMqConstant;
import com.ruoyi.cai.mq.constant.CommonDelayHttpMqConstant;
import com.ruoyi.cai.mq.constant.CommonHttpMqConstant;
import com.ruoyi.cai.mq.constant.WindowHttpMqConstant;
import com.ruoyi.cai.mq.handle.CommonDTO;
import com.ruoyi.cai.mq.handleDelay.CommonDelayDto;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class AmqpHttpProducer {
@Autowired
private RabbitTemplate rabbitTemplate;
public void sendCalculateSales(String message){
rabbitTemplate.convertAndSend(CalculateSalesQueueHttpMqConstant.CALCULATE_SALES_EXCHANGE, CalculateSalesQueueHttpMqConstant.CALCULATE_SALES_KEY, message);
}
public <T extends CommonDTO> void sendCommonMq(T dto){
rabbitTemplate.convertAndSend(CommonHttpMqConstant.COMMON_EXCHANGE,
CommonHttpMqConstant.COMMON_KEY, JSON.toJSONString(dto));
}
public <T extends CommonDTO> void sendWindowMq(T dto){
rabbitTemplate.convertAndSend(WindowHttpMqConstant.WINDOW_EXCHANGE,
WindowHttpMqConstant.WINDOW_KEY, JSON.toJSONString(dto));
}
public <T extends CommonDelayDto> void sendCommonDelayMq(T dto, Integer timeout){
rabbitTemplate.convertAndSend(CommonDelayHttpMqConstant.EXCHANGE_NAME,
CommonDelayHttpMqConstant.ROUTING_KEY,
JSON.toJSONString(dto),
messagePostProcessor -> {
messagePostProcessor.getMessageProperties().setDelay(timeout*1000); // 设置延迟时间,单位毫秒
return messagePostProcessor;
});
}
}

View File

@@ -1,65 +0,0 @@
package com.ruoyi.cai.mq;
import com.alibaba.fastjson.JSON;
import com.ruoyi.cai.mq.config.RoomCheckDelayMqConfig;
import com.ruoyi.cai.mq.config.RoomSettleDelayMqConfig;
import com.ruoyi.cai.mq.config.CommonDelayMqConfig;
import com.ruoyi.cai.mq.consumer.CalculateSalesQueueConsumer;
import com.ruoyi.cai.mq.consumer.CommonConsumer;
import com.ruoyi.cai.mq.consumer.WindowConsumer;
import com.ruoyi.cai.mq.handle.CommonDTO;
import com.ruoyi.cai.mq.handleDelay.CommonDelayDto;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class AmqpProducer {
@Autowired
private RabbitTemplate rabbitTemplate;
public void sendCalculateSales(String message){
rabbitTemplate.convertAndSend(CalculateSalesQueueConsumer.CALCULATE_SALES_EXCHANGE, CalculateSalesQueueConsumer.CALCULATE_SALES_KEY, message);
}
public <T extends CommonDTO> void sendCommonMq(T dto){
rabbitTemplate.convertAndSend(CommonConsumer.COMMON_EXCHANGE,
CommonConsumer.COMMON_KEY, JSON.toJSONString(dto));
}
public <T extends CommonDTO> void sendWindowMq(T dto){
rabbitTemplate.convertAndSend(WindowConsumer.WINDOW_EXCHANGE,
WindowConsumer.WINDOW_KEY, JSON.toJSONString(dto));
}
public void sendRoomCheckDelay(String message, Integer timeout){
rabbitTemplate.convertAndSend(RoomCheckDelayMqConfig.EXCHANGE_NAME,
RoomCheckDelayMqConfig.ROUTING_KEY,
message,
messagePostProcessor -> {
messagePostProcessor.getMessageProperties().setDelay(timeout*1000); // 设置延迟时间,单位毫秒
return messagePostProcessor;
});
}
public void sendRoomSettleDelay(String message, Integer timeout){
rabbitTemplate.convertAndSend(RoomSettleDelayMqConfig.EXCHANGE_NAME,
RoomSettleDelayMqConfig.ROUTING_KEY,
message,
messagePostProcessor -> {
messagePostProcessor.getMessageProperties().setDelay(timeout*1000); // 设置延迟时间,单位毫秒
return messagePostProcessor;
});
}
public <T extends CommonDelayDto> void sendCommonDelayMq(T dto, Integer timeout){
rabbitTemplate.convertAndSend(CommonDelayMqConfig.EXCHANGE_NAME,
CommonDelayMqConfig.ROUTING_KEY,
JSON.toJSONString(dto),
messagePostProcessor -> {
messagePostProcessor.getMessageProperties().setDelay(timeout*1000); // 设置延迟时间,单位毫秒
return messagePostProcessor;
});
}
}

View File

@@ -0,0 +1,33 @@
package com.ruoyi.cai.mq;
import com.ruoyi.cai.mq.constant.ws.RoomCheckDelayWsMqConstant;
import com.ruoyi.cai.mq.constant.ws.RoomSettleDelayWsMqConstant;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class AmqpWsProducer {
@Autowired
private RabbitTemplate rabbitTemplate;
public void sendRoomCheckDelay(String message, Integer timeout){
rabbitTemplate.convertAndSend(RoomCheckDelayWsMqConstant.EXCHANGE_NAME,
RoomCheckDelayWsMqConstant.ROUTING_KEY,
message,
messagePostProcessor -> {
messagePostProcessor.getMessageProperties().setDelay(timeout*1000); // 设置延迟时间,单位毫秒
return messagePostProcessor;
});
}
public void sendRoomSettleDelay(String message, Integer timeout){
rabbitTemplate.convertAndSend(RoomSettleDelayWsMqConstant.EXCHANGE_NAME,
RoomSettleDelayWsMqConstant.ROUTING_KEY,
message,
messagePostProcessor -> {
messagePostProcessor.getMessageProperties().setDelay(timeout*1000); // 设置延迟时间,单位毫秒
return messagePostProcessor;
});
}
}

View File

@@ -1,5 +1,6 @@
package com.ruoyi.cai.mq.config;
import com.ruoyi.cai.mq.constant.CommonDelayHttpMqConstant;
import org.springframework.amqp.core.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -10,15 +11,11 @@ import java.util.HashMap;
@Configuration
public class CommonDelayMqConfig {
public static final String EXCHANGE_NAME = "commonDelayExchange";
public static final String QUEUE_NAME = "commonDelayQueue";
public static final String ROUTING_KEY = "commonDelayRouting";
@Bean
public CustomExchange commonDelayedExchange() {
HashMap<String,Object> args = new HashMap<>();
args.put("x-delayed-type", "direct");
return new CustomExchange(EXCHANGE_NAME,
return new CustomExchange(CommonDelayHttpMqConstant.EXCHANGE_NAME,
"x-delayed-message", // 消息类型
true, // 是否持久化
false,// 是否自动删除
@@ -27,14 +24,14 @@ public class CommonDelayMqConfig {
@Bean
public Queue commonDelayedQueue() {
return QueueBuilder.durable(QUEUE_NAME)
return QueueBuilder.durable(CommonDelayHttpMqConstant.QUEUE_NAME)
.withArgument("x-delayed-type", "direct")
.build();
}
@Bean
public Binding commonDelayedBinding(Queue commonDelayedQueue,CustomExchange commonDelayedExchange) {
return BindingBuilder.bind(commonDelayedQueue()).to(commonDelayedExchange()).with(ROUTING_KEY).noargs();
return BindingBuilder.bind(commonDelayedQueue()).to(commonDelayedExchange()).with(CommonDelayHttpMqConstant.ROUTING_KEY).noargs();
}
}

View File

@@ -1,5 +1,6 @@
package com.ruoyi.cai.mq.config;
import com.ruoyi.cai.mq.constant.ws.RoomCheckDelayWsMqConstant;
import org.springframework.amqp.core.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -10,15 +11,11 @@ import java.util.HashMap;
@Configuration
public class RoomCheckDelayMqConfig {
public static final String EXCHANGE_NAME = "roomCheckDelayExchange";
public static final String QUEUE_NAME = "roomCheckDelayQueue";
public static final String ROUTING_KEY = "roomCheckDelayRouting";
@Bean
public CustomExchange roomCheckDelayedExchange() {
HashMap<String,Object> args = new HashMap<>();
args.put("x-delayed-type", "direct");
return new CustomExchange(EXCHANGE_NAME,
return new CustomExchange(RoomCheckDelayWsMqConstant.EXCHANGE_NAME,
"x-delayed-message", // 消息类型
true, // 是否持久化
false,// 是否自动删除
@@ -27,14 +24,14 @@ public class RoomCheckDelayMqConfig {
@Bean
public Queue roomCheckDelayedQueue() {
return QueueBuilder.durable(QUEUE_NAME)
return QueueBuilder.durable(RoomCheckDelayWsMqConstant.QUEUE_NAME)
.withArgument("x-delayed-type", "direct")
.build();
}
@Bean
public Binding roomCheckDelayedBinding(Queue roomCheckDelayedQueue,CustomExchange roomCheckDelayedExchange) {
return BindingBuilder.bind(roomCheckDelayedQueue).to(roomCheckDelayedExchange).with(ROUTING_KEY).noargs();
return BindingBuilder.bind(roomCheckDelayedQueue).to(roomCheckDelayedExchange).with(RoomCheckDelayWsMqConstant.ROUTING_KEY).noargs();
}
}

View File

@@ -1,5 +1,6 @@
package com.ruoyi.cai.mq.config;
import com.ruoyi.cai.mq.constant.ws.RoomSettleDelayWsMqConstant;
import org.springframework.amqp.core.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -10,15 +11,11 @@ import java.util.HashMap;
@Configuration
public class RoomSettleDelayMqConfig {
public static final String EXCHANGE_NAME = "roomSettleDelayExchange";
public static final String QUEUE_NAME = "roomSettleDelayQueue";
public static final String ROUTING_KEY = "roomSettleDelayRouting";
@Bean
public CustomExchange roomSettleDelayedExchange() {
HashMap<String,Object> args = new HashMap<>();
args.put("x-delayed-type", "direct");
return new CustomExchange(EXCHANGE_NAME,
return new CustomExchange(RoomSettleDelayWsMqConstant.EXCHANGE_NAME,
"x-delayed-message", // 消息类型
true, // 是否持久化
false,// 是否自动删除
@@ -27,14 +24,14 @@ public class RoomSettleDelayMqConfig {
@Bean
public Queue roomSettleDelayedQueue() {
return QueueBuilder.durable(QUEUE_NAME)
return QueueBuilder.durable(RoomSettleDelayWsMqConstant.QUEUE_NAME)
.withArgument("x-delayed-type", "direct")
.build();
}
@Bean
public Binding roomSettleDelayedBinding(Queue roomSettleDelayedQueue,CustomExchange roomSettleDelayedExchange) {
return BindingBuilder.bind(roomSettleDelayedQueue).to(roomSettleDelayedExchange).with(ROUTING_KEY).noargs();
return BindingBuilder.bind(roomSettleDelayedQueue).to(roomSettleDelayedExchange).with(RoomSettleDelayWsMqConstant.ROUTING_KEY).noargs();
}
}

View File

@@ -0,0 +1,12 @@
package com.ruoyi.cai.mq.constant;
/**
* HTTP服务
* 分销计算
*/
public class CalculateSalesQueueHttpMqConstant {
public final static String CALCULATE_SALES_QUEUE = "calculateSalesQueue";
public final static String CALCULATE_SALES_EXCHANGE = "calculateSalesExchange";
public final static String CALCULATE_SALES_KEY = "calculateSalesKey";
}

View File

@@ -0,0 +1,10 @@
package com.ruoyi.cai.mq.constant;
/**
* HTTP 公共延迟队列
*/
public class CommonDelayHttpMqConstant {
public static final String EXCHANGE_NAME = "commonDelayExchange";
public static final String QUEUE_NAME = "commonDelayQueue";
public static final String ROUTING_KEY = "commonDelayRouting";
}

View File

@@ -0,0 +1,14 @@
package com.ruoyi.cai.mq.constant;
/**
*
* 公共队列 HTTP服务专用
*/
public class CommonHttpMqConstant {
public final static String COMMON_QUEUE = "caiCommonQueue";
public final static String COMMON_EXCHANGE = "caiCommonExchange";
public final static String COMMON_KEY = "caiCommonKey";
}

View File

@@ -0,0 +1,11 @@
package com.ruoyi.cai.mq.constant;
/**
* HTTP
* 飘窗通知队列
*/
public class WindowHttpMqConstant {
public final static String WINDOW_QUEUE = "caiWindowQueue";
public final static String WINDOW_EXCHANGE = "caiWindowExchange";
public final static String WINDOW_KEY = "caiWindowKey";
}

View File

@@ -0,0 +1,11 @@
package com.ruoyi.cai.mq.constant.ws;
/**
* WS服务
* 房间检测延迟队列
*/
public class RoomCheckDelayWsMqConstant {
public static final String EXCHANGE_NAME = "roomCheckDelayExchange";
public static final String QUEUE_NAME = "roomCheckDelayQueue";
public static final String ROUTING_KEY = "roomCheckDelayRouting";
}

View File

@@ -0,0 +1,11 @@
package com.ruoyi.cai.mq.constant.ws;
/**
* 每分钟扣分延迟队列
*/
public class RoomSettleDelayWsMqConstant {
public static final String EXCHANGE_NAME = "roomSettleDelayExchange";
public static final String QUEUE_NAME = "roomSettleDelayQueue";
public static final String ROUTING_KEY = "roomSettleDelayRouting";
}

View File

@@ -1,40 +0,0 @@
package com.ruoyi.cai.mq.consumer;
import com.ruoyi.cai.service.ConsumeLogService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.annotation.Exchange;
import org.springframework.amqp.rabbit.annotation.Queue;
import org.springframework.amqp.rabbit.annotation.QueueBinding;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
@Slf4j
public class CalculateSalesQueueConsumer {
public final static String CALCULATE_SALES_QUEUE = "calculateSalesQueue";
public final static String CALCULATE_SALES_EXCHANGE = "calculateSalesExchange";
public final static String CALCULATE_SALES_KEY = "calculateSalesKey";
@Autowired
private ConsumeLogService consumeLogService;
@RabbitListener(bindings = @QueueBinding(
value = @Queue(value = CALCULATE_SALES_QUEUE, durable = "false", autoDelete = "false"),
exchange = @Exchange(value = CALCULATE_SALES_EXCHANGE),
key = CALCULATE_SALES_KEY)
,containerFactory = "customContainerFactory")
public void calculateSalesQueue(String message) {
log.info("接受到到分销处理请求: message=" + message);
try {
consumeLogService.dealFenxiao(Long.valueOf(message),true);
}catch (Exception e){
log.error("处理分销失败: message=" + message,e);
}
log.info("分销处理完成: message=" + message);
}
}

View File

@@ -1,43 +0,0 @@
package com.ruoyi.cai.mq.consumer;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.ruoyi.cai.mq.config.HandleConfig;
import com.ruoyi.cai.mq.handle.IHandle;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.annotation.Exchange;
import org.springframework.amqp.rabbit.annotation.Queue;
import org.springframework.amqp.rabbit.annotation.QueueBinding;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
@Slf4j
public class CommonConsumer {
public final static String COMMON_QUEUE = "caiCommonQueue";
public final static String COMMON_EXCHANGE = "caiCommonExchange";
public final static String COMMON_KEY = "caiCommonKey";
@Autowired
private HandleConfig handleConfig;
@RabbitListener(bindings = @QueueBinding(
value = @Queue(value = COMMON_QUEUE, durable = "false", autoDelete = "false"),
exchange = @Exchange(value = COMMON_EXCHANGE),
key = COMMON_KEY)
,containerFactory = "customContainerFactory")
public void calculateSalesQueue(String message) {
log.info("队列消息处理-开始: message=" + message);
try {
JSONObject object = JSON.parseObject(message);
String type = object.getString("type");
IHandle handle = handleConfig.getHandle(type);
handle.run(message);
}catch (Exception e){
log.error("队列消息处理-失败: message=" + message,e);
}
log.info("队列消息处理-结束: message=" + message);
}
}

View File

@@ -1,42 +0,0 @@
package com.ruoyi.cai.mq.consumer;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.ruoyi.cai.manager.UserForbidManager;
import com.ruoyi.cai.mq.CommonDelayTypeEnum;
import com.ruoyi.cai.mq.config.CommonDelayMqConfig;
import com.ruoyi.cai.mq.config.HandleDelayConfig;
import com.ruoyi.cai.mq.handle.IHandle;
import com.ruoyi.cai.mq.handleDelay.CommonDelayDto;
import com.ruoyi.cai.mq.handleDelay.IHandleDelay;
import com.ruoyi.cai.service.SysPushService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Slf4j
@Component
public class CommonDelayMqConsumer {
@Autowired
private UserForbidManager userForbidManager;
@Autowired
private SysPushService sysPushService;
@Autowired
private HandleDelayConfig handleDelayConfig;
@RabbitListener(queues = CommonDelayMqConfig.QUEUE_NAME
,containerFactory = "customContainerFactory")
public void checkTimeOutMq(String message) {
log.info("公共延时队列消息处理-开始: message=" + message);
try {
JSONObject object = JSON.parseObject(message);
String type = object.getString("type");
IHandleDelay handle = handleDelayConfig.getHandle(type);
handle.run(message);
}catch (Exception e){
log.error("公共延时队列消息处理-失败: message=" + message,e);
}
log.info("公共延时队列消息处理-结束: message=" + message);
}
}

View File

@@ -1,39 +0,0 @@
package com.ruoyi.cai.mq.consumer;
import com.ruoyi.cai.mq.AmqpProducer;
import com.ruoyi.cai.mq.config.RoomCheckDelayMqConfig;
import com.ruoyi.cai.ws.job.JobResp;
import com.ruoyi.cai.ws.job.RoomCheckJobService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Slf4j
@Component
public class RoomCheckDelayMqConsumer {
@Autowired
private AmqpProducer amqpProducer;
@Autowired
private RoomCheckJobService roomCheckJobService;
@RabbitListener(queues = RoomCheckDelayMqConfig.QUEUE_NAME
,containerFactory = "customContainerFactory")
public void sendRoomCheck(String roomIdStr) {
log.info("开始执行房间检测: roomId={}",roomIdStr);
try {
Long roomId = Long.valueOf(roomIdStr);
JobResp resp = roomCheckJobService.checkRoom(roomId);
if(resp.isNextCreateJob()){
// 1分钟后继续执行
log.info("1分钟后继续执行房间检测: roomId={}",roomIdStr);
amqpProducer.sendRoomCheckDelay(roomIdStr,60);
}
}catch (Exception e){
log.error("每分钟定时检测房间失败! roomId={}",roomIdStr);
}finally {
log.info("结束执行房间检测: roomId={}",roomIdStr);
}
}
}

View File

@@ -1,34 +0,0 @@
package com.ruoyi.cai.mq.consumer;
import com.ruoyi.cai.mq.AmqpProducer;
import com.ruoyi.cai.mq.config.RoomSettleDelayMqConfig;
import com.ruoyi.cai.ws.service.SettleService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Slf4j
@Component
public class RoomSettleDelayMqConsumer {
@Autowired
private SettleService settleService;
@Autowired
private AmqpProducer amqpProducer;
@RabbitListener(queues = RoomSettleDelayMqConfig.QUEUE_NAME
,containerFactory = "customContainerFactory")
public void checkTimeOutMq(String message) {
log.info("开始执行预扣费: " + message);
try {
boolean next = settleService.withholdingFee(Long.valueOf(message));
if(next){
// 1分钟后继续执行
amqpProducer.sendRoomSettleDelay(message,60);
}
}catch (Exception e){
log.error("每分钟定时扣费失败!",e);
}
}
}

View File

@@ -1,44 +0,0 @@
package com.ruoyi.cai.mq.consumer;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.ruoyi.cai.mq.config.HandleConfig;
import com.ruoyi.cai.mq.handle.IHandle;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.annotation.Exchange;
import org.springframework.amqp.rabbit.annotation.Queue;
import org.springframework.amqp.rabbit.annotation.QueueBinding;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
@Slf4j
public class WindowConsumer {
public final static String WINDOW_QUEUE = "caiWindowQueue";
public final static String WINDOW_EXCHANGE = "caiWindowExchange";
public final static String WINDOW_KEY = "caiWindowKey";
@Autowired
private HandleConfig handleConfig;
// ,containerFactory = "customContainerFactory"
@RabbitListener(bindings = @QueueBinding(
value = @Queue(value = WINDOW_QUEUE, durable = "false", autoDelete = "false"),
exchange = @Exchange(value = WINDOW_EXCHANGE),
key = WINDOW_KEY))
public void calculateSalesQueue(String message) {
log.info("飘窗检测-开始: message=" + message);
try {
JSONObject object = JSON.parseObject(message);
String type = object.getString("type");
IHandle handle = handleConfig.getHandle(type);
handle.run(message);
}catch (Exception e){
log.error("飘窗检测-失败: message=" + message,e);
}
log.info("飘窗检测-结束: message=" + message);
}
}

View File

@@ -1,7 +1,7 @@
package com.ruoyi.cai.rank;
import com.ruoyi.cai.constant.RedisHttpConstant;
import com.ruoyi.cai.mq.AmqpProducer;
import com.ruoyi.cai.mq.AmqpHttpProducer;
import com.ruoyi.cai.mq.handle.dto.RankNotifyDTO;
import lombok.extern.slf4j.Slf4j;
import org.redisson.api.RScoredSortedSet;
@@ -247,7 +247,7 @@ public class RankManager {
@Autowired
private AmqpProducer amqpProducer;
private AmqpHttpProducer amqpHttpProducer;
public void sendLoveRankMq(Long userId,Long value,Long traceId){
try {
@@ -256,7 +256,7 @@ public class RankManager {
rank.setPrice(value);
rank.setTraceId(traceId);
rank.setRankType(1);
amqpProducer.sendCommonMq(rank);
amqpHttpProducer.sendCommonMq(rank);
}catch (Exception e){
log.error("发送魅力榜 rank mq失败",e);
}
@@ -269,7 +269,7 @@ public class RankManager {
rank.setPrice(value);
rank.setTraceId(traceId);
rank.setRankType(2);
amqpProducer.sendCommonMq(rank);
amqpHttpProducer.sendCommonMq(rank);
}catch (Exception e){
log.error("发送邀请榜 rank mq失败",e);
}

View File

@@ -19,7 +19,7 @@ import com.ruoyi.cai.enums.SystemConfigEnum;
import com.ruoyi.cai.enums.systempush.*;
import com.ruoyi.cai.manager.SystemConfigManager;
import com.ruoyi.cai.mapper.SysPushMapper;
import com.ruoyi.cai.mq.AmqpProducer;
import com.ruoyi.cai.mq.AmqpHttpProducer;
import com.ruoyi.cai.mq.handle.dto.SysPushNotifyDTO;
import com.ruoyi.cai.mq.handleDelay.dto.SysPushDelayDto;
import com.ruoyi.cai.notice.data.NoticeMsgR;
@@ -67,7 +67,7 @@ public class SysPushServiceImpl extends ServiceImpl<SysPushMapper, SysPush> impl
@Autowired
private SystemConfigManager systemConfigManager;
@Autowired
private AmqpProducer amqpProducer;
private AmqpHttpProducer amqpHttpProducer;
@Autowired
private SysPushLogService sysPushLogService;
@@ -180,7 +180,7 @@ public class SysPushServiceImpl extends ServiceImpl<SysPushMapper, SysPush> impl
long between = CaiDateUtil.diff(sysPush.getSendTime(), LocalDateTime.now());
SysPushDelayDto dto = new SysPushDelayDto();
dto.setSysPushId(sysPush.getId());
amqpProducer.sendCommonDelayMq(dto,(int)between+2);
amqpHttpProducer.sendCommonDelayMq(dto,(int)between+2);
}catch (Exception e){
log.error("系统推送任务发送失败!",e);
}
@@ -210,7 +210,7 @@ public class SysPushServiceImpl extends ServiceImpl<SysPushMapper, SysPush> impl
}
SysPushNotifyDTO sysPush = new SysPushNotifyDTO();
sysPush.setSysPushId(id);
amqpProducer.sendCommonMq(sysPush);
amqpHttpProducer.sendCommonMq(sysPush);
}
@Override
@@ -413,7 +413,7 @@ public class SysPushServiceImpl extends ServiceImpl<SysPushMapper, SysPush> impl
if(between > 0 && between < 60*60*12){
SysPushDelayDto dto = new SysPushDelayDto();
dto.setSysPushId(sysPush.getId());
amqpProducer.sendCommonDelayMq(dto,(int)between+5);
amqpHttpProducer.sendCommonDelayMq(dto,(int)between+5);
}
}
}

View File

@@ -1,6 +1,5 @@
package com.ruoyi.cai.service.impl;
import cn.dev33.satoken.stp.StpUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -13,18 +12,14 @@ import com.ruoyi.cai.enums.forbid.ForbidTimeEnum;
import com.ruoyi.cai.enums.forbid.ForbidTypeEnum;
import com.ruoyi.cai.manager.ForbidCache;
import com.ruoyi.cai.mapper.UserForbidMapper;
import com.ruoyi.cai.mq.AmqpProducer;
import com.ruoyi.cai.mq.CommonDelayTypeEnum;
import com.ruoyi.cai.mq.handleDelay.CommonDelayDto;
import com.ruoyi.cai.mq.AmqpHttpProducer;
import com.ruoyi.cai.mq.handleDelay.dto.ForbidDelayDto;
import com.ruoyi.cai.mq.handleDelay.dto.SysPushDelayDto;
import com.ruoyi.cai.service.AnchorService;
import com.ruoyi.cai.service.UserForbidService;
import com.ruoyi.cai.service.UserInfoService;
import com.ruoyi.cai.service.UserService;
import com.ruoyi.cai.util.CaiDateUtil;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.enums.UserType;
import com.ruoyi.common.helper.LoginHelper;
import com.ruoyi.common.utils.StringUtils;
import lombok.extern.slf4j.Slf4j;
@@ -51,7 +46,7 @@ public class UserForbidServiceImpl extends ServiceImpl<UserForbidMapper, UserFor
@Autowired
private ForbidCache forbidCache;
@Autowired
private AmqpProducer amqpProducer;
private AmqpHttpProducer amqpHttpProducer;
@Autowired
private UserInfoService userInfoService;
@@ -100,7 +95,7 @@ public class UserForbidServiceImpl extends ServiceImpl<UserForbidMapper, UserFor
long between = CaiDateUtil.diff(one.getEndTime(), LocalDateTime.now());
ForbidDelayDto dto = new ForbidDelayDto();
dto.setForbidId(one.getId());
amqpProducer.sendCommonDelayMq(dto,(int)between+2);
amqpHttpProducer.sendCommonDelayMq(dto,(int)between+2);
}catch (Exception e){
log.error("用户封禁延时任务发送失败!",e);
}

View File

@@ -3,15 +3,15 @@ package com.ruoyi.cai.ws.handler.message;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.cai.domain.UserCall;
import com.ruoyi.cai.mq.AmqpProducer;
import com.ruoyi.cai.mq.AmqpWsProducer;
import com.ruoyi.cai.service.UserCallService;
import com.ruoyi.cai.ws.bean.FdCtxData;
import com.ruoyi.cai.ws.bean.Room;
import com.ruoyi.cai.ws.cache.RoomDataCache;
import com.ruoyi.cai.ws.constant.RoomStatusEnums;
import com.ruoyi.cai.ws.dto.WsRMsgGen;
import com.ruoyi.cai.ws.handler.IMessageHandler;
import com.ruoyi.cai.ws.handler.AbstractMessageHandle;
import com.ruoyi.cai.ws.handler.IMessageHandler;
import com.ruoyi.cai.ws.service.RoomService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@@ -31,7 +31,7 @@ public class AgreeMessageHandle extends AbstractMessageHandle implements IMessag
@Autowired
private UserCallService userCallService;
@Autowired
private AmqpProducer amqpProducer;
private AmqpWsProducer amqpWsProducer;
@Autowired
private RoomService roomService;
@@ -51,7 +51,7 @@ public class AgreeMessageHandle extends AbstractMessageHandle implements IMessag
.eq(UserCall::getId,room.getRoomId())
.set(UserCall::getStatus, RoomStatusEnums.STATUS_AGREE.getCode())
.set(UserCall::getBeginTime, LocalDateTime.now()));
amqpProducer.sendRoomSettleDelay(room.getRoomId()+"",60); // 1分钟延时消息开始扣钱
amqpWsProducer.sendRoomSettleDelay(room.getRoomId()+"",60); // 1分钟延时消息开始扣钱
String message = "提示禁止任何涉黄、任何微信QQ引导到其它平台行为";
sendToAll(room.getRoomId(), WsRMsgGen.startVideo(room.getRoomId(),0L),WsRMsgGen.sysNotice(message));
try {

View File

@@ -1,37 +0,0 @@
package com.ruoyi.cai.ws.job;
import com.ruoyi.cai.ws.cache.OnlineDataCache;
import com.ruoyi.cai.ws.service.RoomService;
import com.ruoyi.cai.ws.service.SettleService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.Set;
import java.util.concurrent.TimeUnit;
@Component
@Slf4j
public class RoomCheckJob {
@Autowired
private OnlineDataCache onlineDataCache;
@Autowired
private RoomCheckJobService roomCheckJobService;
/**
* 每 7分钟执行一次
*/
@Scheduled(fixedDelay = 7,timeUnit = TimeUnit.MINUTES)
public void run(){
Set<String> all = onlineDataCache.getAll();
for (String roomIdS : all) {
try {
Long roomId = Long.valueOf(roomIdS);
roomCheckJobService.checkRoom(roomId);
}catch (Exception e){
log.info("定时检测房间失败!需要开发排查问题 roomId={}", roomIdS, e);
}
}
}
}

View File

@@ -1,175 +0,0 @@
package com.ruoyi.cai.ws.job;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.cai.domain.UserCall;
import com.ruoyi.cai.notice.YunxinWsServiceV2;
import com.ruoyi.cai.service.UserCallService;
import com.ruoyi.cai.ws.bean.Room;
import com.ruoyi.cai.ws.bean.UserData;
import com.ruoyi.cai.ws.cache.RoomCtxCache;
import com.ruoyi.cai.ws.constant.HangUpEnums;
import com.ruoyi.cai.ws.constant.RoomStatusEnums;
import com.ruoyi.cai.ws.dto.WsR;
import com.ruoyi.cai.ws.dto.WsRMsgGen;
import com.ruoyi.cai.ws.service.RoomService;
import com.ruoyi.cai.ws.service.SettleResp;
import com.ruoyi.cai.ws.service.SettleService;
import com.ruoyi.cai.ws.util.RoomWebSocketUtil;
import com.ruoyi.yunxin.Yunxin;
import com.ruoyi.cai.notice.enums.CallNoticeEnum;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
@Slf4j
public class RoomCheckJobService {
@Autowired
private RoomService roomService;
@Autowired
private UserCallService userCallService;
@Autowired
private Yunxin yunxin;
@Autowired
private SettleService settleService;
@Autowired
private RoomCtxCache roomCtxCache;
public JobResp checkRoom(Long roomId){
Room room = roomService.load(roomId);
log.info("调试日志:开始检查房间 room={}" , JSON.toJSONString(room));
if(room == null){
return JobResp.builder().nextCreateJob(false).build();
}
// 检查是否三分钟没有接听
log.info("调试日志:检查是否三分钟没有接听 roomId={}" , roomId);
JobResp resp = this.checkRoomCallerTimeOut(room);
if(!resp.isNextCreateJob()){
log.info("调试日志:三分钟没有接听,可能关闭了 roomId={}" , roomId);
return resp;
}
// 检查心跳
log.info("调试日志:检查心跳是否超时 roomId={}" , roomId);
JobResp heartbeat = checkRoomHeartbeat(room);
if(!heartbeat.isNextCreateJob()){
log.info("调试日志:心跳超时了,可能关闭了 roomId={}" , roomId);
return heartbeat;
}
this.checkCanCallTime(room);
// 尝试结算一下
log.info("调试日志:开始尝试结算 roomId={}" , roomId);
SettleResp settleResp = settleService.processOn(roomId);
JobResp build = JobResp.builder().nextCreateJob(settleResp.isNextRun()).build();
if(!build.isNextCreateJob()){
log.info("调试日志:结算成功了,可能关闭了 roomId={}" , roomId);
}
return build;
}
private void checkCanCallTime(Room room){
Long time = roomService.canCallTime(room);
if(time < 150 && time > 60){ // 提示余额不足
String sessionKey = roomCtxCache.getSessionKeyCallerByRoomId(room.getRoomId());
RoomWebSocketUtil.sendSendMessage(sessionKey, WsRMsgGen.rechargeNotice("您的余额不足,点此充值"));
}
}
private JobResp checkRoomHeartbeat(Room room){
if(!room.isCanCall()){
return JobResp.builder().nextCreateJob(true).build();
}
Long roomId = room.getRoomId();
UserData callUserData = room.getCallUserData();
UserData receiverUserData = room.getReceiverUserData();
boolean timeOut = false;
WsR hangup = null;
if(isHeartTimeout(callUserData)){
timeOut = true;
hangup = WsRMsgGen.hangup("呼叫方连接中断", roomId, HangUpEnums.FROM.getCode());
}else if(isHeartTimeout(receiverUserData)){
timeOut = true;
hangup = WsRMsgGen.hangup("接听方连接中断", roomId, HangUpEnums.TO.getCode());
}
if(timeOut){
boolean nextCreateJob = false;
if(roomService.hangUp(roomId)){
userCallService.update(Wrappers.lambdaUpdate(UserCall.class)
.eq(UserCall::getId,roomId)
.set(UserCall::getStatus, RoomStatusEnums.STATUS_TIMEOUT_CANCEL.getCode()));
SettleResp settleResp = settleService.processOn(roomId);
nextCreateJob = settleResp.isNextRun();
}
List<String> keys = roomCtxCache.getSessionKeysByRoomId(roomId);
RoomWebSocketUtil.sendSendMessage(keys, hangup);
roomService.closeAllFd(roomId);
return JobResp.builder().nextCreateJob(nextCreateJob).build();
}
return JobResp.builder().nextCreateJob(true).build();
}
// 检测是不是3分钟没有接听
private JobResp checkRoomCallerTimeOut(Room room){
if(!RoomStatusEnums.STATUS_CALLER_CONNECT.getCode().equals(room.getStatus())
&& !RoomStatusEnums.STATUS_RECEIVER_CONNECT.getCode().equals(room.getStatus())) {
return JobResp.builder().nextCreateJob(true).build();
}
UserData callUserData = room.getCallUserData();
UserData receiverUserData = room.getReceiverUserData();
Long connectTimeCaller = callUserData.getConnectTime();
Long connectTimeReceiver = receiverUserData.getConnectTime();
boolean timeOut = false;
if(connectTimeCaller != null && DateUtil.currentSeconds() - connectTimeCaller > 180){
timeOut = true;
}else if(connectTimeReceiver != null && DateUtil.currentSeconds() - connectTimeReceiver > 180){
timeOut = true;
}
if(timeOut){
Long roomId = room.getRoomId();
boolean nextCreateJob = false;
if(roomService.hangUp(roomId)){
userCallService.update(Wrappers.lambdaUpdate(UserCall.class)
.eq(UserCall::getId,roomId)
.set(UserCall::getStatus, RoomStatusEnums.STATUS_TIMEOUT_CANCEL.getCode()));
SettleResp settleResp = settleService.processOn(roomId);
nextCreateJob = settleResp.isNextRun();
}
roomService.closeAllFd(roomId);
if(!nextCreateJob){
yunxinWsService.sendToCallNotify(callUserData.getId(),receiverUserData.getId(), CallNoticeEnum.TIMEOUT,0L);
}
return JobResp.builder().nextCreateJob(nextCreateJob).build();
}
return JobResp.builder().nextCreateJob(true).build();
}
@Autowired
private YunxinWsServiceV2 yunxinWsService;
/**
* 是否心跳超时
* @param userData
* @return
*/
private boolean isHeartTimeout(UserData userData){
if(userData.getConnectTime() == null){
return false;
}
if(DateUtil.currentSeconds() - userData.getHeartTime() < 117){
return false;
}
return true;
}
}

View File

@@ -3,7 +3,8 @@ package com.ruoyi.cai.ws.processon;
import cn.hutool.core.date.DateUtil;
import com.ruoyi.cai.chat.ChatManager;
import com.ruoyi.cai.executor.ExecutorConstant;
import com.ruoyi.cai.mq.AmqpProducer;
import com.ruoyi.cai.mq.AmqpHttpProducer;
import com.ruoyi.cai.mq.AmqpWsProducer;
import com.ruoyi.cai.notice.YunxinWsServiceV2;
import com.ruoyi.cai.service.AnchorService;
import com.ruoyi.cai.service.UserService;
@@ -109,7 +110,7 @@ public class OpenLogic {
}
@Autowired
private AmqpProducer amqpProducer;
private AmqpWsProducer amqpWsProducer;
public void callerConnection(WebSocketSession session,Room room,Long userId){
boolean isFirst = false;
@@ -123,7 +124,7 @@ public class OpenLogic {
userDataCache.hMSet(room.getRoomId(), UserDataConstant.TYPE_CALLER,map);
roomDataCache.setStatus(room.getRoomId(),RoomStatusEnums.STATUS_CALLER_CONNECT);
onlineDataCache.add(room.getRoomId());
amqpProducer.sendRoomCheckDelay(room.getRoomId()+"",60);
amqpWsProducer.sendRoomCheckDelay(room.getRoomId()+"",60);
userService.updateVideoStatus(userId,1);
isFirst = true;
}