137 lines
4.4 KiB
Java
137 lines
4.4 KiB
Java
package com.erp.mq.consumer;
|
|
|
|
import com.erp.mq.producer.OrderMessageProducer.OrderMessage;
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus;
|
|
import org.apache.rocketmq.common.message.MessageExt;
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
import jakarta.annotation.PostConstruct;
|
|
import jakarta.annotation.PreDestroy;
|
|
import java.util.List;
|
|
|
|
/**
|
|
* 订单消息消费者
|
|
* 负责处理订单相关的消息
|
|
*/
|
|
@Slf4j
|
|
@Component
|
|
public class OrderMessageConsumer extends BaseRocketMQConsumer {
|
|
|
|
private final ObjectMapper objectMapper = new ObjectMapper();
|
|
|
|
@Value("${erp.rocketmq.topics.order}")
|
|
private String orderTopic;
|
|
|
|
@Value("${erp.rocketmq.consumer.groups.order-group}")
|
|
private String orderConsumerGroup;
|
|
|
|
@PostConstruct
|
|
public void init() {
|
|
try {
|
|
super.init();
|
|
log.info("订单消息消费者初始化成功");
|
|
} catch (Exception e) {
|
|
log.error("订单消息消费者初始化失败", e);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
protected String getTopic() {
|
|
return orderTopic;
|
|
}
|
|
|
|
@Override
|
|
protected String getConsumerGroup() {
|
|
return orderConsumerGroup;
|
|
}
|
|
|
|
@Override
|
|
protected String getTags() {
|
|
return "*"; // 接收所有标签
|
|
}
|
|
|
|
@Override
|
|
protected boolean handleMessage(String messageBody, MessageExt messageExt) {
|
|
try {
|
|
OrderMessage orderMessage = objectMapper.readValue(messageBody, OrderMessage.class);
|
|
String tags = messageExt.getTags();
|
|
|
|
log.info("处理订单消息 - Tags: {}, OrderId: {}, CustomerId: {}, Amount: {}",
|
|
tags, orderMessage.getOrderId(), orderMessage.getCustomerId(), orderMessage.getTotalAmount());
|
|
|
|
switch (tags) {
|
|
case OrderMessageProducer.TAGS_CREATE:
|
|
return handleOrderCreated(orderMessage);
|
|
case OrderMessageProducer.TAGS_UPDATE:
|
|
return handleOrderUpdated(orderMessage);
|
|
case OrderMessageProducer.TAGS_CANCEL:
|
|
return handleOrderCancelled(orderMessage);
|
|
case OrderMessageProducer.TAGS_PAY:
|
|
return handleOrderPaid(orderMessage);
|
|
case OrderMessageProducer.TAGS_SHIP:
|
|
return handleOrderShipped(orderMessage);
|
|
case OrderMessageProducer.TAGS_DELIVER:
|
|
return handleOrderDelivered(orderMessage);
|
|
default:
|
|
log.warn("未知的订单消息标签: {}", tags);
|
|
return true;
|
|
}
|
|
} catch (Exception e) {
|
|
log.error("订单消息处理异常", e);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
private boolean handleOrderCreated(OrderMessage order) {
|
|
log.info("处理订单创建 - OrderId: {}", order.getOrderId());
|
|
// TODO: 调用订单服务处理订单创建
|
|
// 1. 创建订单记录
|
|
// 2. 发送库存扣减消息
|
|
// 3. 发送财务收款通知
|
|
return true;
|
|
}
|
|
|
|
private boolean handleOrderUpdated(OrderMessage order) {
|
|
log.info("处理订单更新 - OrderId: {}", order.getOrderId());
|
|
// TODO: 调用订单服务处理订单更新
|
|
return true;
|
|
}
|
|
|
|
private boolean handleOrderCancelled(OrderMessage order) {
|
|
log.info("处理订单取消 - OrderId: {}", order.getOrderId());
|
|
// TODO: 调用订单服务处理订单取消
|
|
// 1. 恢复库存
|
|
// 2. 处理退款(如果已支付)
|
|
return true;
|
|
}
|
|
|
|
private boolean handleOrderPaid(OrderMessage order) {
|
|
log.info("处理订单支付 - OrderId: {}", order.getOrderId());
|
|
// TODO: 调用订单服务处理订单支付
|
|
// 1. 更新订单状态
|
|
// 2. 触发库存扣减
|
|
// 3. 发送发货通知
|
|
return true;
|
|
}
|
|
|
|
private boolean handleOrderShipped(OrderMessage order) {
|
|
log.info("处理订单发货 - OrderId: {}", order.getOrderId());
|
|
// TODO: 调用物流服务
|
|
return true;
|
|
}
|
|
|
|
private boolean handleOrderDelivered(OrderMessage order) {
|
|
log.info("处理订单收货 - OrderId: {}", order.getOrderId());
|
|
// TODO: 确认收货,完成订单流程
|
|
return true;
|
|
}
|
|
|
|
@PreDestroy
|
|
public void destroy() {
|
|
shutdown();
|
|
}
|
|
}
|