You've already forked FrameTour-BE
feat(profit-share): 调整分账与退款消息结构并优化接口
- 修改手动分账接口路径为 /manual 并支持请求体参数 - 更新计算分账结果接口路径为 /calculate - 将退款消息主题从 zt-refund 更改为 zt-profitshare-refund -重构退款消息对象字段,增加退款类型和原订单 ID - 更新退款消息生产者逻辑以适配新字段和主题配置 - 强化退款消息校验规则,确保必要字段完整性
This commit is contained in:
@@ -25,7 +25,7 @@ import org.springframework.stereotype.Service;
|
||||
public class ProfitShareKafkaProducer {
|
||||
|
||||
public static final String DEFAULT_PROFITSHARE_TOPIC = "zt-profitshare";
|
||||
public static final String DEFAULT_REFUND_TOPIC = "zt-refund";
|
||||
public static final String DEFAULT_REFUND_TOPIC = "zt-profitshare-refund";
|
||||
|
||||
private final KafkaTemplate<String, String> kafkaTemplate;
|
||||
private final ObjectMapper objectMapper;
|
||||
@@ -63,18 +63,18 @@ public class ProfitShareKafkaProducer {
|
||||
String topic = kafkaProps != null && StringUtils.isNotBlank(kafkaProps.getRefundTopic())
|
||||
? kafkaProps.getRefundTopic()
|
||||
: DEFAULT_REFUND_TOPIC;
|
||||
String key = message.getOrderId();
|
||||
String key = message.getOriginalOrderId();
|
||||
String payload = toJson(message);
|
||||
|
||||
log.info("[REFUND] producing to topic={}, key={}, orderId={}, scenicId={}, amount={}",
|
||||
topic, key, message.getOrderId(), message.getScenicId(), message.getRefundAmount());
|
||||
log.info("[REFUND] producing to topic={}, key={}, refundOrderId={}, originalOrderId={}, amount={}, type={}",
|
||||
topic, key, message.getRefundOrderId(), message.getOriginalOrderId(), message.getRefundAmount(), message.getRefundType());
|
||||
|
||||
kafkaTemplate.send(topic, key, payload).whenComplete((metadata, ex) -> {
|
||||
if (ex != null) {
|
||||
log.error("[REFUND] produce failed: orderId={}, error={}", message.getOrderId(), ex.getMessage(), ex);
|
||||
log.error("[REFUND] produce failed: refundOrderId={}, error={}", message.getRefundOrderId(), ex.getMessage(), ex);
|
||||
} else if (metadata != null) {
|
||||
log.info("[REFUND] produced: orderId={}, partition={}, offset={}",
|
||||
message.getOrderId(), metadata.getRecordMetadata().partition(), metadata.getRecordMetadata().offset());
|
||||
log.info("[REFUND] produced: refundOrderId={}, partition={}, offset={}",
|
||||
message.getRefundOrderId(), metadata.getRecordMetadata().partition(), metadata.getRecordMetadata().offset());
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -104,21 +104,21 @@ public class ProfitShareKafkaProducer {
|
||||
if (msg == null) {
|
||||
throw new IllegalArgumentException("RefundMessage is null");
|
||||
}
|
||||
if (StringUtils.isBlank(msg.getOrderId())) {
|
||||
throw new IllegalArgumentException("orderId is required");
|
||||
if (StringUtils.isBlank(msg.getRefundOrderId())) {
|
||||
throw new IllegalArgumentException("refundOrderId is required");
|
||||
}
|
||||
if (msg.getScenicId() == null || msg.getScenicId() <= 0) {
|
||||
throw new IllegalArgumentException("scenicId is required and must be positive");
|
||||
if (StringUtils.isBlank(msg.getOriginalOrderId())) {
|
||||
throw new IllegalArgumentException("originalOrderId is required");
|
||||
}
|
||||
if (msg.getRefundAmount() == null || msg.getRefundAmount() <= 0) {
|
||||
throw new IllegalArgumentException("refundAmount is required and must be positive");
|
||||
}
|
||||
if (StringUtils.isBlank(msg.getRefundType())) {
|
||||
throw new IllegalArgumentException("refundType is required");
|
||||
}
|
||||
if (StringUtils.isBlank(msg.getPaymentSystem())) {
|
||||
throw new IllegalArgumentException("paymentSystem is required");
|
||||
}
|
||||
if (StringUtils.isBlank(msg.getRefundOrderId())) {
|
||||
throw new IllegalArgumentException("refundOrderId is required");
|
||||
}
|
||||
}
|
||||
|
||||
private String toJson(Object obj) {
|
||||
|
||||
Reference in New Issue
Block a user