feat(shop): 添加订单取消和退款时的水票撤销功能

- 在ShopOrderController中注入GltTicketRevokeService服务
- 实现订单状态改为已取消时同步撤销相关水票、释放计划和送水订单
- 实现退款成功后自动撤销水票相关数据的功能
- 新增GltTicketRevokeService服务处理水票撤销逻辑
- 添加批量订单取消时的水票撤销支持
- 实现撤销操作的幂等性确保无副作用
- 添加单元测试验证水票撤销功能的正确性
This commit is contained in:
2026-03-01 00:43:28 +08:00
parent a8af20bcde
commit 4dae378c9a
5 changed files with 266 additions and 3 deletions

View File

@@ -23,6 +23,8 @@ class GltTicketRevokeServiceTest {
private GltUserTicketReleaseService gltUserTicketReleaseService;
@Mock
private GltTicketOrderService gltTicketOrderService;
@Mock
private com.gxwebsoft.shop.service.ShopOrderGoodsService shopOrderGoodsService;
@InjectMocks
private GltTicketRevokeService gltTicketRevokeService;
@@ -31,16 +33,18 @@ class GltTicketRevokeServiceTest {
void revokeByShopOrder_noTenant_noop() {
int revoked = gltTicketRevokeService.revokeByShopOrder(null, 1, "O1", "r");
assertEquals(0, revoked);
verifyNoInteractions(gltUserTicketService, gltUserTicketReleaseService, gltTicketOrderService);
verifyNoInteractions(gltUserTicketService, gltUserTicketReleaseService, gltTicketOrderService, shopOrderGoodsService);
}
@Test
void revokeByShopOrder_noTickets_noop() {
when(gltUserTicketService.list(any())).thenReturn(List.of());
when(shopOrderGoodsService.list(any())).thenReturn(List.of());
int revoked = gltTicketRevokeService.revokeByShopOrder(10584, 1, "O1", "r");
assertEquals(0, revoked);
verify(gltUserTicketService, times(1)).list(any());
verifyNoMoreInteractions(gltUserTicketService);
verify(shopOrderGoodsService, times(1)).list(any());
verifyNoMoreInteractions(gltUserTicketService, shopOrderGoodsService);
verifyNoInteractions(gltUserTicketReleaseService, gltTicketOrderService);
}
@@ -60,6 +64,6 @@ class GltTicketRevokeServiceTest {
verify(gltTicketOrderService, times(1)).update(isNull(), any());
verify(gltUserTicketReleaseService, times(1)).update(isNull(), any());
verify(gltUserTicketService, times(1)).update(isNull(), any());
verifyNoInteractions(shopOrderGoodsService);
}
}