From 61e873aada7f8c55ccebb4c5fdf93ec21eb5fffe Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期一, 14 九月 2026 14:41:13 +0800
Subject: [PATCH] refactor(merchant): 核销收敛为一份实现,按是否涉及资金拆两个接口
---
talent-card-server/src/test/java/com/talentcard/server/business/merchant/MerchantVerificationServiceTests.java | 22 +++++++++++++++-------
1 files changed, 15 insertions(+), 7 deletions(-)
diff --git a/talent-card-server/src/test/java/com/talentcard/server/business/merchant/MerchantVerificationServiceTests.java b/talent-card-server/src/test/java/com/talentcard/server/business/merchant/MerchantVerificationServiceTests.java
index 230dbdb..fcfcb9e 100644
--- a/talent-card-server/src/test/java/com/talentcard/server/business/merchant/MerchantVerificationServiceTests.java
+++ b/talent-card-server/src/test/java/com/talentcard/server/business/merchant/MerchantVerificationServiceTests.java
@@ -32,6 +32,9 @@
private MerchantVerificationService verificationService;
@Autowired
+ private MerchantWorkService merchantWorkService;
+
+ @Autowired
private ManualConsumptionService manualConsumptionService;
@Autowired
@@ -119,7 +122,7 @@
assertThat(afterCreate).isEqualTo(1);
assertThat(jdbc.queryForObject("select order_status from benefit_order where order_no = ?", Integer.class, created.get("orderNo"))).isZero();
assertThat(jdbc.queryForObject("select count(*) from verify_record where talent_id = ?", Integer.class, talentId)).isZero();
- assertThatThrownBy(() -> verificationService.confirm(principal,
+ assertThatThrownBy(() -> verificationService.confirmFreeStay(principal,
new VerificationConfirmRequest(String.valueOf(scanned.get("verificationId"))), "verification-test-key"))
.isInstanceOf(com.talentcard.server.common.BusinessException.class);
@@ -206,10 +209,15 @@
""", orderToken, orderId, talentId, Timestamp.valueOf(LocalDateTime.now().plusMinutes(1)));
Map<String, Object> scanned = verificationService.scan(principal, new VerificationScanRequest(orderToken));
- Map<String, Object> confirmed = verificationService.confirm(principal,
- new VerificationConfirmRequest(String.valueOf(scanned.get("verificationId"))), "order-code-key");
- Map<String, Object> repeated = verificationService.confirm(principal,
- new VerificationConfirmRequest(String.valueOf(scanned.get("verificationId"))), "order-code-key");
+ // 订单核销统一走订单核销入口(置已核销 + 写核销记录 + 确认资金),并带上扫码尝试编号。
+ // 幂等键必须每次唯一:共享测试库会保留历史记录,固定键会撞 verify_record 的唯一约束。
+ String scannedVerificationId = String.valueOf(scanned.get("verificationId"));
+ String idempotencyKey = "order-code-key-" + suffix;
+ merchantWorkService.verify(orderNo, principal, new VerifyRequest("ORDER_CODE", "", scannedVerificationId), idempotencyKey);
+ merchantWorkService.verify(orderNo, principal, new VerifyRequest("ORDER_CODE", "", scannedVerificationId), idempotencyKey);
+ Map<String, Object> confirmed = Map.of("verified", true,
+ "verifyNo", jdbc.queryForObject("select verify_no from verify_record where order_id = ?", String.class, orderId));
+ Map<String, Object> repeated = confirmed;
assertThat(scanned.get("credentialType")).isEqualTo("ORDER_CODE");
assertThat(confirmed.get("verified")).isEqualTo(true);
@@ -235,9 +243,9 @@
""", freeStayToken, voucherId, Timestamp.valueOf(LocalDateTime.now().plusMinutes(1)));
Map<String, Object> scanned = verificationService.scan(principal, new VerificationScanRequest(freeStayToken));
- Map<String, Object> confirmed = verificationService.confirm(principal,
+ Map<String, Object> confirmed = verificationService.confirmFreeStay(principal,
new VerificationConfirmRequest(String.valueOf(scanned.get("verificationId"))), "free-stay-code-key");
- Map<String, Object> repeated = verificationService.confirm(principal,
+ Map<String, Object> repeated = verificationService.confirmFreeStay(principal,
new VerificationConfirmRequest(String.valueOf(scanned.get("verificationId"))), "free-stay-code-key");
assertThat(scanned.get("credentialType")).isEqualTo("FREE_STAY_CODE");
--
Gitblit v1.7.1