1、system rabbitmq队列声明暂注释;2、cad异步拆单锁调整;

This commit is contained in:
gaoqr
2025-05-14 11:41:46 +08:00
parent cb568c5646
commit 47d473fc2d
5 changed files with 308 additions and 271 deletions
@@ -1,71 +1,71 @@
package com.cf.imes.module.system.mq.consumer.advertisement;
import com.cf.imes.framework.mq.rabbitmq.constant.RabbitMqConstants;
import com.cf.imes.module.system.dal.dataobject.advertisement.AdvertisementDO;
import com.cf.imes.module.system.dal.dataobject.advertisement.AdvertisementTaskDO;
import com.cf.imes.module.system.dal.mysql.advertisement.AdvertisementMapper;
import com.cf.imes.module.system.dal.mysql.advertisement.AdvertisementTaskMapper;
import com.cf.imes.module.system.enums.advertisement.AdvertisementStatusEnum;
import com.cf.imes.module.system.enums.advertisement.MessageStatusEnum;
import com.cf.imes.module.system.mq.message.advertisement.AdvertisementSendMessage;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.Objects;
/**
* 针对 {@link AdvertisementSendMessage} 的消费者
*
* @author 晨丰科技
*/
@Component
@Slf4j
public class AdvertisementSendConsumer {
@Resource
private AdvertisementMapper advertisementMapper;
@Resource
private AdvertisementTaskMapper advertisementTaskMapper;
@RabbitListener(queues = RabbitMqConstants.SYSTEM_ADVERTISEMENT_UPDATE_DELAYED_QUEUE)
public void onMessage(AdvertisementSendMessage message){
// 1. 获取广告数据
AdvertisementDO ad = advertisementMapper.selectById(message.getAdId());
if (ad == null || ad.getDeleted())
return;
// 2. 检查消息有效性
AdvertisementTaskDO messageRecord = advertisementTaskMapper.selectByMessageId(message.getMessageId());
if (messageRecord == null ||
Objects.equals(messageRecord.getMessageStatus(), MessageStatusEnum.CANCELLED.getStatus())) {
return;
}
// 3. 处理状态变更
if (AdvertisementStatusEnum.PUBLISHED.getName().equals(message.getAction())) { // 待发布
if (ad.getStatus() == AdvertisementStatusEnum.UNPUBLISHED.getStatus() &&
LocalDateTime.now().isAfter(ad.getStartTime())) {
updateAdStatus(ad, messageRecord.getAdvertisementStatus());
}
} else if (AdvertisementStatusEnum.ENDED.getName().equals(message.getAction())) { // 待结束
if (ad.getStatus() == AdvertisementStatusEnum.PUBLISHED.getStatus() &&
LocalDateTime.now().isAfter(ad.getEndTime())) {
updateAdStatus(ad, messageRecord.getAdvertisementStatus());
}
}
// 4. 标记消息为已处理
messageRecord.setMessageStatus(MessageStatusEnum.PROCESSED.getStatus());
advertisementTaskMapper.updateMessageStateByMessageId(message.getMessageId(),false, MessageStatusEnum.PROCESSED.getStatus());
}
private void updateAdStatus(AdvertisementDO ad, Integer newStatus) {
advertisementMapper.updateAdStatus(ad.getId(), newStatus);
}
}
//package com.cf.imes.module.system.mq.consumer.advertisement;
//
//import com.cf.imes.framework.mq.rabbitmq.constant.RabbitMqConstants;
//import com.cf.imes.module.system.dal.dataobject.advertisement.AdvertisementDO;
//import com.cf.imes.module.system.dal.dataobject.advertisement.AdvertisementTaskDO;
//import com.cf.imes.module.system.dal.mysql.advertisement.AdvertisementMapper;
//import com.cf.imes.module.system.dal.mysql.advertisement.AdvertisementTaskMapper;
//import com.cf.imes.module.system.enums.advertisement.AdvertisementStatusEnum;
//import com.cf.imes.module.system.enums.advertisement.MessageStatusEnum;
//import com.cf.imes.module.system.mq.message.advertisement.AdvertisementSendMessage;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.amqp.rabbit.annotation.RabbitListener;
//import org.springframework.stereotype.Component;
//
//import javax.annotation.Resource;
//import java.time.LocalDateTime;
//import java.util.Objects;
//
//
///**
// * 针对 {@link AdvertisementSendMessage} 的消费者
// *
// * @author 晨丰科技
// */
//@Component
//@Slf4j
//public class AdvertisementSendConsumer {
//
// @Resource
// private AdvertisementMapper advertisementMapper;
//
// @Resource
// private AdvertisementTaskMapper advertisementTaskMapper;
//
// @RabbitListener(queues = RabbitMqConstants.SYSTEM_ADVERTISEMENT_UPDATE_DELAYED_QUEUE)
// public void onMessage(AdvertisementSendMessage message){
// // 1. 获取广告数据
// AdvertisementDO ad = advertisementMapper.selectById(message.getAdId());
// if (ad == null || ad.getDeleted())
// return;
//
// // 2. 检查消息有效性
// AdvertisementTaskDO messageRecord = advertisementTaskMapper.selectByMessageId(message.getMessageId());
// if (messageRecord == null ||
// Objects.equals(messageRecord.getMessageStatus(), MessageStatusEnum.CANCELLED.getStatus())) {
// return;
// }
//
// // 3. 处理状态变更
// if (AdvertisementStatusEnum.PUBLISHED.getName().equals(message.getAction())) { // 待发布
// if (ad.getStatus() == AdvertisementStatusEnum.UNPUBLISHED.getStatus() &&
// LocalDateTime.now().isAfter(ad.getStartTime())) {
// updateAdStatus(ad, messageRecord.getAdvertisementStatus());
// }
// } else if (AdvertisementStatusEnum.ENDED.getName().equals(message.getAction())) { // 待结束
// if (ad.getStatus() == AdvertisementStatusEnum.PUBLISHED.getStatus() &&
// LocalDateTime.now().isAfter(ad.getEndTime())) {
// updateAdStatus(ad, messageRecord.getAdvertisementStatus());
// }
// }
//
// // 4. 标记消息为已处理
// messageRecord.setMessageStatus(MessageStatusEnum.PROCESSED.getStatus());
// advertisementTaskMapper.updateMessageStateByMessageId(message.getMessageId(),false, MessageStatusEnum.PROCESSED.getStatus());
// }
//
// private void updateAdStatus(AdvertisementDO ad, Integer newStatus) {
// advertisementMapper.updateAdStatus(ad.getId(), newStatus);
// }
//
//}