package com.erp.mq.producer; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; /** * 财务消息生产者 * 负责发送财务相关的消息 */ @Slf4j @Component public class FinanceMessageProducer extends BaseRocketMQProducer { @Value("${erp.rocketmq.topics.finance}") private String financeTopic; public static final String TAGS_INVOICE = "invoice"; // 开票 public static final String TAGS_REFUND = "refund"; // 退款 public static final String TAGS_RECONCILIATION = "reconciliation"; // 对账 public static final String TAGS_SETTLEMENT = "settlement"; // 结算 @Override protected String getTopic() { return financeTopic; } @Override protected String getProducerGroup() { return "erp-finance-producer-group"; } /** * 发送开票消息 */ public void sendInvoiceCreated(FinanceMessage financeMessage) { log.info("发送开票消息 - InvoiceId: {}, Amount: {}", financeMessage.getInvoiceId(), financeMessage.getAmount()); sendMessage(financeMessage, TAGS_INVOICE, financeMessage.getInvoiceId()); } /** * 发送退款消息 */ public void sendRefundProcessed(FinanceMessage financeMessage) { log.info("发送退款消息 - RefundId: {}, Amount: {}", financeMessage.getRefundId(), financeMessage.getAmount()); sendMessage(financeMessage, TAGS_REFUND, financeMessage.getRefundId()); } /** * 发送对账消息 */ public void sendReconciliation(FinanceMessage financeMessage) { log.info("发送对账消息 - Date: {}", financeMessage.getSettlementDate()); sendMessage(financeMessage, TAGS_RECONCILIATION, financeMessage.getSettlementDate()); } @Data public static class FinanceMessage { private String invoiceId; private String refundId; private String orderId; private Double amount; private String customerId; private String customerName; private String taxNumber; private String invoiceType; private String settlementDate; private String status; private Long timestamp; } }