123333
This commit is contained in:
@@ -7,8 +7,8 @@ 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.dto.CommonDTO;
|
||||
import com.ruoyi.cai.mq.dto.CommonDelayDto;
|
||||
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;
|
||||
@@ -53,7 +53,7 @@ public class AmqpProducer {
|
||||
});
|
||||
}
|
||||
|
||||
public void sendCommonDelayMq(CommonDelayDto dto, Integer timeout){
|
||||
public <T extends CommonDelayDto> void sendCommonDelayMq(T dto, Integer timeout){
|
||||
rabbitTemplate.convertAndSend(CommonDelayMqConfig.EXCHANGE_NAME,
|
||||
CommonDelayMqConfig.ROUTING_KEY,
|
||||
JSON.toJSONString(dto),
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.ruoyi.cai.mq.dto;
|
||||
package com.ruoyi.cai.mq;
|
||||
|
||||
public enum CommonConsumerEnum {
|
||||
WINDOW_GIFT,WINDOW_RECHARGE,
|
||||
@@ -4,12 +4,7 @@ import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
public enum CommonDelayTypeEnum {
|
||||
USER_FORBID(1),
|
||||
SYS_PUSH(2),
|
||||
;
|
||||
private final Integer code;
|
||||
|
||||
CommonDelayTypeEnum(Integer code) {
|
||||
this.code = code;
|
||||
}
|
||||
USER_FORBID,
|
||||
SYS_PUSH,
|
||||
SAVE_SEND_IM_IMG,
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.ruoyi.cai.mq.handle;
|
||||
package com.ruoyi.cai.mq.config;
|
||||
|
||||
import com.ruoyi.cai.mq.handle.IHandle;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -11,7 +12,7 @@ import java.util.Map;
|
||||
@Component
|
||||
public class HandleConfig {
|
||||
|
||||
public static Map<String,IHandle> MAP = new HashMap<>();
|
||||
public static Map<String, IHandle> MAP = new HashMap<>();
|
||||
|
||||
@Autowired
|
||||
private List<IHandle> handles;
|
||||
@@ -0,0 +1,32 @@
|
||||
package com.ruoyi.cai.mq.config;
|
||||
|
||||
import com.ruoyi.cai.mq.handleDelay.IHandleDelay;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Component
|
||||
public class HandleDelayConfig {
|
||||
|
||||
public static Map<String, IHandleDelay> MAP = new HashMap<>();
|
||||
|
||||
@Autowired
|
||||
private List<IHandleDelay> handles;
|
||||
|
||||
@PostConstruct
|
||||
public void init(){
|
||||
for (IHandleDelay handle : handles) {
|
||||
MAP.put(handle.getType().name(),handle);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public IHandleDelay getHandle(String type){
|
||||
return MAP.get(type);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -2,9 +2,8 @@ package com.ruoyi.cai.mq.consumer;
|
||||
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.ruoyi.cai.mq.handle.HandleConfig;
|
||||
import com.ruoyi.cai.mq.config.HandleConfig;
|
||||
import com.ruoyi.cai.mq.handle.IHandle;
|
||||
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;
|
||||
|
||||
@@ -1,15 +1,18 @@
|
||||
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.dto.CommonDelayDto;
|
||||
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.cache.Cache;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Slf4j
|
||||
@@ -19,33 +22,21 @@ public class CommonDelayMqConsumer {
|
||||
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("CommonDelayMqConsumer: " + message);
|
||||
CommonDelayDto dto = JSON.parseObject(message, CommonDelayDto.class);
|
||||
CommonDelayTypeEnum typeEnum = dto.getTypeEnum();
|
||||
if(typeEnum == null){
|
||||
log.warn("延时任务执行失败,未检测到正确的类型 dto={}",JSON.toJSONString(dto));
|
||||
return;
|
||||
}
|
||||
switch (typeEnum){
|
||||
case USER_FORBID:
|
||||
try {
|
||||
userForbidManager.checkExpire(dto.getForbidId());
|
||||
}catch (Exception e){
|
||||
log.error("检查用户封禁状态失败!需要开发确认!",e);
|
||||
}
|
||||
break;
|
||||
case SYS_PUSH:
|
||||
try {
|
||||
sysPushService.fastStart(dto.getSysPushId());
|
||||
}catch (Exception e){
|
||||
log.error("检查系统推送失败!需要开发确认!", e);
|
||||
}
|
||||
default:
|
||||
break;
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ package com.ruoyi.cai.mq.consumer;
|
||||
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.ruoyi.cai.mq.handle.HandleConfig;
|
||||
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;
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
package com.ruoyi.cai.mq.dto;
|
||||
|
||||
import com.ruoyi.cai.mq.CommonDelayTypeEnum;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class CommonDelayDto {
|
||||
/**
|
||||
* @see com.ruoyi.cai.mq.CommonDelayTypeEnum
|
||||
*/
|
||||
private Integer type;
|
||||
private Long forbidId;
|
||||
private Long sysPushId;
|
||||
|
||||
public CommonDelayTypeEnum getTypeEnum(){
|
||||
CommonDelayTypeEnum[] values = CommonDelayTypeEnum.values();
|
||||
for (CommonDelayTypeEnum value : values) {
|
||||
if(value.getCode().equals(this.type)){
|
||||
return value;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.ruoyi.cai.mq.dto;
|
||||
package com.ruoyi.cai.mq.handle;
|
||||
|
||||
import com.ruoyi.cai.mq.CommonConsumerEnum;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.ruoyi.cai.mq.handle;
|
||||
|
||||
import com.ruoyi.cai.mq.dto.CommonConsumerEnum;
|
||||
import com.ruoyi.cai.mq.CommonConsumerEnum;
|
||||
|
||||
public interface IHandle {
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ import com.ruoyi.cai.dto.commom.IdDTO;
|
||||
import com.ruoyi.cai.enums.GenderEnum;
|
||||
import com.ruoyi.cai.manager.LockManager;
|
||||
import com.ruoyi.cai.mapper.UserFollowMapper;
|
||||
import com.ruoyi.cai.mq.dto.CommonConsumerEnum;
|
||||
import com.ruoyi.cai.mq.CommonConsumerEnum;
|
||||
import com.ruoyi.cai.mq.handle.dto.LoginNotifyDTO;
|
||||
import com.ruoyi.cai.notice.YunxinHttpService;
|
||||
import com.ruoyi.cai.service.UserInfoService;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.ruoyi.cai.mq.handle;
|
||||
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.ruoyi.cai.mq.dto.CommonConsumerEnum;
|
||||
import com.ruoyi.cai.mq.CommonConsumerEnum;
|
||||
import com.ruoyi.cai.mq.handle.dto.RankNotifyDTO;
|
||||
import com.ruoyi.cai.rank.RankManager;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.ruoyi.cai.mq.handle;
|
||||
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.ruoyi.cai.mq.dto.CommonConsumerEnum;
|
||||
import com.ruoyi.cai.mq.CommonConsumerEnum;
|
||||
import com.ruoyi.cai.mq.handle.dto.SysPushNotifyDTO;
|
||||
import com.ruoyi.cai.service.SysPushService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@@ -4,7 +4,7 @@ import com.alibaba.fastjson2.JSON;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.ruoyi.cai.domain.Gift;
|
||||
import com.ruoyi.cai.domain.User;
|
||||
import com.ruoyi.cai.mq.dto.CommonConsumerEnum;
|
||||
import com.ruoyi.cai.mq.CommonConsumerEnum;
|
||||
import com.ruoyi.cai.mq.handle.dto.WindowGiftNotifyDTO;
|
||||
import com.ruoyi.cai.notice.YunxinHttpService;
|
||||
import com.ruoyi.cai.notice.data.child.SendGiftWindowsAmountNoticeData;
|
||||
|
||||
@@ -2,7 +2,7 @@ package com.ruoyi.cai.mq.handle;
|
||||
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.ruoyi.cai.mq.dto.CommonConsumerEnum;
|
||||
import com.ruoyi.cai.mq.CommonConsumerEnum;
|
||||
import com.ruoyi.cai.mq.handle.dto.WindowRechargeNotifyDTO;
|
||||
import com.ruoyi.cai.notice.YunxinHttpService;
|
||||
import com.ruoyi.framework.OnlineUserTodayCache;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.ruoyi.cai.mq.handle.dto;
|
||||
|
||||
import com.ruoyi.cai.mq.dto.CommonConsumerEnum;
|
||||
import com.ruoyi.cai.mq.dto.CommonDTO;
|
||||
import com.ruoyi.cai.mq.CommonConsumerEnum;
|
||||
import com.ruoyi.cai.mq.handle.CommonDTO;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.ruoyi.cai.mq.handle.dto;
|
||||
|
||||
import com.ruoyi.cai.mq.dto.CommonConsumerEnum;
|
||||
import com.ruoyi.cai.mq.dto.CommonDTO;
|
||||
import com.ruoyi.cai.mq.CommonConsumerEnum;
|
||||
import com.ruoyi.cai.mq.handle.CommonDTO;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.ruoyi.cai.mq.handle.dto;
|
||||
|
||||
import com.ruoyi.cai.mq.dto.CommonConsumerEnum;
|
||||
import com.ruoyi.cai.mq.dto.CommonDTO;
|
||||
import com.ruoyi.cai.mq.CommonConsumerEnum;
|
||||
import com.ruoyi.cai.mq.handle.CommonDTO;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.ruoyi.cai.mq.handle.dto;
|
||||
|
||||
import com.ruoyi.cai.domain.Gift;
|
||||
import com.ruoyi.cai.mq.dto.CommonConsumerEnum;
|
||||
import com.ruoyi.cai.mq.dto.CommonDTO;
|
||||
import com.ruoyi.cai.mq.CommonConsumerEnum;
|
||||
import com.ruoyi.cai.mq.handle.CommonDTO;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.ruoyi.cai.mq.handle.dto;
|
||||
|
||||
import com.ruoyi.cai.mq.dto.CommonConsumerEnum;
|
||||
import com.ruoyi.cai.mq.dto.CommonDTO;
|
||||
import com.ruoyi.cai.mq.CommonConsumerEnum;
|
||||
import com.ruoyi.cai.mq.handle.CommonDTO;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.ruoyi.cai.mq.handleDelay;
|
||||
|
||||
import com.ruoyi.cai.mq.CommonDelayTypeEnum;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class CommonDelayDto {
|
||||
private CommonDelayTypeEnum type;
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package com.ruoyi.cai.mq.handleDelay;
|
||||
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.ruoyi.cai.manager.UserForbidManager;
|
||||
import com.ruoyi.cai.mq.CommonDelayTypeEnum;
|
||||
import com.ruoyi.cai.mq.handleDelay.dto.ForbidDelayDto;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
@Slf4j
|
||||
public class ForbidDelayHandle implements IHandleDelay {
|
||||
@Autowired
|
||||
private UserForbidManager userForbidManager;
|
||||
|
||||
@Override
|
||||
public void run(String message) {
|
||||
try {
|
||||
ForbidDelayDto dto = JSON.parseObject(message, ForbidDelayDto.class);
|
||||
userForbidManager.checkExpire(dto.getForbidId());
|
||||
}catch (Exception e){
|
||||
log.error("处理延时推送消息失败!",e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonDelayTypeEnum getType() {
|
||||
return CommonDelayTypeEnum.USER_FORBID;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package com.ruoyi.cai.mq.handleDelay;
|
||||
|
||||
import com.ruoyi.cai.mq.CommonDelayTypeEnum;
|
||||
|
||||
public interface IHandleDelay {
|
||||
|
||||
void run(String message);
|
||||
|
||||
CommonDelayTypeEnum getType();
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package com.ruoyi.cai.mq.handleDelay;
|
||||
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.ruoyi.cai.manager.ImService;
|
||||
import com.ruoyi.cai.mq.CommonDelayTypeEnum;
|
||||
import com.ruoyi.cai.mq.handleDelay.dto.SaveSendImImgDelayDto;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
@Slf4j
|
||||
public class SaveSendImImgDelayHandle implements IHandleDelay {
|
||||
|
||||
@Autowired
|
||||
private ImService imService;
|
||||
|
||||
@Override
|
||||
public void run(String message) {
|
||||
try {
|
||||
SaveSendImImgDelayDto dto = JSON.parseObject(message, SaveSendImImgDelayDto.class);
|
||||
imService.saveSendImImgDeal(dto.getRecordId());
|
||||
}catch (Exception e){
|
||||
log.error("处理延时推送消息失败!",e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonDelayTypeEnum getType() {
|
||||
return CommonDelayTypeEnum.SAVE_SEND_IM_IMG;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package com.ruoyi.cai.mq.handleDelay;
|
||||
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.ruoyi.cai.mq.CommonDelayTypeEnum;
|
||||
import com.ruoyi.cai.mq.handleDelay.dto.SysPushDelayDto;
|
||||
import com.ruoyi.cai.service.SysPushService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
@Slf4j
|
||||
public class SysPushDelayHandle implements IHandleDelay {
|
||||
|
||||
@Autowired
|
||||
private SysPushService sysPushService;
|
||||
|
||||
@Override
|
||||
public void run(String message) {
|
||||
try {
|
||||
SysPushDelayDto dto = JSON.parseObject(message, SysPushDelayDto.class);
|
||||
sysPushService.fastStart(dto.getSysPushId());
|
||||
}catch (Exception e){
|
||||
log.error("处理延时推送消息失败!",e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonDelayTypeEnum getType() {
|
||||
return CommonDelayTypeEnum.SYS_PUSH;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package com.ruoyi.cai.mq.handleDelay.dto;
|
||||
|
||||
import com.ruoyi.cai.mq.CommonDelayTypeEnum;
|
||||
import com.ruoyi.cai.mq.handleDelay.CommonDelayDto;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class ForbidDelayDto extends CommonDelayDto {
|
||||
private Long forbidId;
|
||||
|
||||
public ForbidDelayDto() {
|
||||
this.setType(CommonDelayTypeEnum.USER_FORBID);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package com.ruoyi.cai.mq.handleDelay.dto;
|
||||
|
||||
import com.ruoyi.cai.mq.CommonDelayTypeEnum;
|
||||
import com.ruoyi.cai.mq.handleDelay.CommonDelayDto;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class SaveSendImImgDelayDto extends CommonDelayDto {
|
||||
private Long recordId;
|
||||
public SaveSendImImgDelayDto() {
|
||||
this.setType(CommonDelayTypeEnum.SAVE_SEND_IM_IMG);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package com.ruoyi.cai.mq.handleDelay.dto;
|
||||
|
||||
import com.ruoyi.cai.mq.CommonDelayTypeEnum;
|
||||
import com.ruoyi.cai.mq.handleDelay.CommonDelayDto;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class SysPushDelayDto extends CommonDelayDto {
|
||||
private Long sysPushId;
|
||||
|
||||
public SysPushDelayDto() {
|
||||
this.setType(CommonDelayTypeEnum.SYS_PUSH);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user