//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 jakarta.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);
//    }
//
//}
