fix(lastleg): repair dispatch cancellation and return execution contracts

This commit is contained in:
2026-10-18 16:34:14 +08:00
parent 66a0beb653
commit aa33514ec6
64 changed files with 2061 additions and 213 deletions
@@ -33,6 +33,21 @@ import static org.assertj.core.api.Assertions.*;
@Isolated("Manual retry regression temporarily changes the JVM default time zone")
class OverseasFeeCancellationPersistenceTest {
/** 相同派送费版本重复发布只保留一个真实Outbox事件,重试不制造新应收源。 */
@Test void deliveryFeePublicationReplayKeepsOneImmutableEvent() {
var producer=new OverseasFeeOutboxService();
ReflectionTestUtils.setField(producer,"mapper",events);
ReflectionTestUtils.setField(producer,"objectMapper",new ObjectMapper().findAndRegisterModules());
var deliveryFee=new OverseasFeeSource();org.springframework.beans.BeanUtils.copyProperties(source,deliveryFee);
deliveryFee.setSourceFeeId(702L);deliveryFee.setSourceType("OVERSEAS_DELIVERY_FEE");deliveryFee.setSourceNo("DL-REPLAY");
producer.publish(deliveryFee,"PUBLISHED");
String key=OverseasFeeCancellation.eventKey(deliveryFee,"PUBLISHED");
var first=events.findByEventKey(key);
producer.publish(deliveryFee,"PUBLISHED");producer.publish(deliveryFee,"PUBLISHED");
var replay=events.findByEventKey(key);
assertThat(replay.getId()).isEqualTo(first.getId());assertThat(replay.getPayloadJson()).isEqualTo(first.getPayloadJson());
assertThat(jdbc.queryForObject("SELECT COUNT(*) FROM ll_event_outbox WHERE event_key=?",Integer.class,key)).isEqualTo(1);
}
JdbcTemplate jdbc;
LastlegEventOutboxMapper events;
OverseasFeeSourceMapper fees;