fix: publish holds for local overseas orders
This commit is contained in:
+3
-1
@@ -38,11 +38,13 @@ public class InboundOrderDetainedOutboxService {
|
|||||||
JsonNode payloadNode = objectMapper.valueToTree(payload);
|
JsonNode payloadNode = objectMapper.valueToTree(payload);
|
||||||
String eventKey = EventTypes.OVERSEAS_INBOUND_ORDER_DETAINED_CHANGED + ':'
|
String eventKey = EventTypes.OVERSEAS_INBOUND_ORDER_DETAINED_CHANGED + ':'
|
||||||
+ order.getSourceInboundId() + ':' + changeVersion;
|
+ order.getSourceInboundId() + ':' + changeVersion;
|
||||||
|
String causationId = EventIdentifiers.isSupported(order.getSourceEventId())
|
||||||
|
? order.getSourceEventId() : null;
|
||||||
EventEnvelope envelope = new EventEnvelope(EventIdentifiers.newUuid(),
|
EventEnvelope envelope = new EventEnvelope(EventIdentifiers.newUuid(),
|
||||||
EventTypes.OVERSEAS_INBOUND_ORDER_DETAINED_CHANGED, 1, changedAt,
|
EventTypes.OVERSEAS_INBOUND_ORDER_DETAINED_CHANGED, 1, changedAt,
|
||||||
RegionCode.OVERSEAS, RegionCode.CN, order.getCustomerId(), "INBOUND_ORDER",
|
RegionCode.OVERSEAS, RegionCode.CN, order.getCustomerId(), "INBOUND_ORDER",
|
||||||
order.getSourceInboundId(), changeVersion, 1L, EventIdentifiers.newUuid(),
|
order.getSourceInboundId(), changeVersion, 1L, EventIdentifiers.newUuid(),
|
||||||
eventKey, order.getSourceEventId(), payloadNode,
|
eventKey, causationId, payloadNode,
|
||||||
EventPayloadHash.sha256(EventPayloadCanonicalizer.canonicalize(payloadNode))).requireValid();
|
EventPayloadHash.sha256(EventPayloadCanonicalizer.canonicalize(payloadNode))).requireValid();
|
||||||
|
|
||||||
LastlegEventOutbox event = new LastlegEventOutbox();
|
LastlegEventOutbox event = new LastlegEventOutbox();
|
||||||
|
|||||||
+52
@@ -0,0 +1,52 @@
|
|||||||
|
package com.baiyue.lastleg.service;
|
||||||
|
|
||||||
|
import com.baiyue.lastleg.entity.LastlegEventOutbox;
|
||||||
|
import com.baiyue.lastleg.entity.LastlegOrder;
|
||||||
|
import com.baiyue.lastleg.mapper.LastlegEventOutboxMapper;
|
||||||
|
import com.fasterxml.jackson.databind.JsonNode;
|
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
|
import org.mockito.ArgumentCaptor;
|
||||||
|
import org.mockito.Mock;
|
||||||
|
import org.mockito.junit.jupiter.MockitoExtension;
|
||||||
|
import org.springframework.test.util.ReflectionTestUtils;
|
||||||
|
|
||||||
|
import java.time.Instant;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
|
|
||||||
|
@ExtendWith(MockitoExtension.class)
|
||||||
|
class InboundOrderDetainedOutboxServiceTest {
|
||||||
|
@Mock private LastlegEventOutboxMapper mapper;
|
||||||
|
private final ObjectMapper objectMapper = new ObjectMapper().findAndRegisterModules();
|
||||||
|
private InboundOrderDetainedOutboxService service;
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
void setUp() {
|
||||||
|
service = new InboundOrderDetainedOutboxService();
|
||||||
|
ReflectionTestUtils.setField(service, "mapper", mapper);
|
||||||
|
ReflectionTestUtils.setField(service, "objectMapper", objectMapper);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void localSyntheticSourceReferenceIsNotWrittenAsEventCausationId() throws Exception {
|
||||||
|
LastlegOrder order = new LastlegOrder();
|
||||||
|
order.setId(101L);
|
||||||
|
order.setCustomerId("201");
|
||||||
|
order.setOrderNo("WT-WH-20260907-972865");
|
||||||
|
order.setSourceInboundId("WAREHOUSE_TRANSFER:WT-WH-20260907-778561");
|
||||||
|
order.setInboundCode("NYEXX2609070253");
|
||||||
|
order.setSourceEventId("WAREHOUSE_TRANSFER:WT-WH-20260907-778561");
|
||||||
|
|
||||||
|
service.publish(order, true, "等待质检", "301", "operator", Instant.parse("2026-09-07T16:00:00Z"), 1L);
|
||||||
|
|
||||||
|
ArgumentCaptor<LastlegEventOutbox> captor = ArgumentCaptor.forClass(LastlegEventOutbox.class);
|
||||||
|
verify(mapper).insert(captor.capture());
|
||||||
|
JsonNode envelope = objectMapper.readTree(captor.getValue().getPayloadJson());
|
||||||
|
assertThat(envelope.path("causationId").isNull()).isTrue();
|
||||||
|
assertThat(envelope.path("aggregateId").asText()).isEqualTo(order.getSourceInboundId());
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user