84 lines
2.8 KiB
Java
84 lines
2.8 KiB
Java
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 InventoryMessageProducer extends BaseRocketMQProducer {
|
|
|
|
@Value("${erp.rocketmq.topics.inventory}")
|
|
private String inventoryTopic;
|
|
|
|
public static final String TAGS_DEDUCT = "deduct"; // 扣减库存
|
|
public static final String TAGS_RESTORE = "restore"; // 恢复库存
|
|
public static final String TAGS_LOCK = "lock"; // 锁定库存
|
|
public static final String TAGS_UNLOCK = "unlock"; // 解锁库存
|
|
public static final String TAGS_ALERT = "alert"; // 库存预警
|
|
|
|
@Override
|
|
protected String getTopic() {
|
|
return inventoryTopic;
|
|
}
|
|
|
|
@Override
|
|
protected String getProducerGroup() {
|
|
return "erp-inventory-producer-group";
|
|
}
|
|
|
|
/**
|
|
* 发送库存扣减消息
|
|
*/
|
|
public void sendInventoryDeduct(InventoryMessage inventoryMessage) {
|
|
log.info("发送库存扣减消息 - SkuId: {}, Quantity: {}",
|
|
inventoryMessage.getSkuId(), inventoryMessage.getQuantity());
|
|
sendMessage(inventoryMessage, TAGS_DEDUCT, inventoryMessage.getSkuId());
|
|
}
|
|
|
|
/**
|
|
* 发送库存恢复消息
|
|
*/
|
|
public void sendInventoryRestore(InventoryMessage inventoryMessage) {
|
|
log.info("发送库存恢复消息 - SkuId: {}, Quantity: {}",
|
|
inventoryMessage.getSkuId(), inventoryMessage.getQuantity());
|
|
sendMessage(inventoryMessage, TAGS_RESTORE, inventoryMessage.getSkuId());
|
|
}
|
|
|
|
/**
|
|
* 发送库存锁定消息
|
|
*/
|
|
public void sendInventoryLock(InventoryMessage inventoryMessage) {
|
|
log.info("发送库存锁定消息 - SkuId: {}, Quantity: {}",
|
|
inventoryMessage.getSkuId(), inventoryMessage.getQuantity());
|
|
sendMessage(inventoryMessage, TAGS_LOCK, inventoryMessage.getSkuId());
|
|
}
|
|
|
|
/**
|
|
* 发送库存预警消息
|
|
*/
|
|
public void sendInventoryAlert(InventoryMessage inventoryMessage) {
|
|
log.info("发送库存预警消息 - SkuId: {}, CurrentStock: {}",
|
|
inventoryMessage.getSkuId(), inventoryMessage.getCurrentStock());
|
|
sendMessage(inventoryMessage, TAGS_ALERT, inventoryMessage.getSkuId());
|
|
}
|
|
|
|
@Data
|
|
public static class InventoryMessage {
|
|
private String skuId;
|
|
private String productName;
|
|
private Integer quantity;
|
|
private Integer currentStock;
|
|
private Integer threshold;
|
|
private String warehouseId;
|
|
private String orderId;
|
|
private String operationType;
|
|
private Long timestamp;
|
|
}
|
|
}
|