From 673b4f9d4dce17a2e1c116b2b12646a9fdd74829 Mon Sep 17 00:00:00 2001
From: 刘帅 <rr.iii@qq.com>
Date: 星期一, 21 九月 2026 11:43:01 +0800
Subject: [PATCH] bug:惠民卡问题
---
cloud-server-activity/src/main/java/com/dsh/activity/controller/HuiminController.java | 13 +++++++++++--
1 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/controller/HuiminController.java b/cloud-server-activity/src/main/java/com/dsh/activity/controller/HuiminController.java
index ddca902..922aa87 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/controller/HuiminController.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/controller/HuiminController.java
@@ -207,8 +207,17 @@
System.err.println("支付数据" + tPayHuimin);
payHuiminService.save(tPayHuimin);
if (userCoupon != null) {
- userCoupon.setStatus(2);
- userCouponService.updateById(userCoupon);
+ // t_user_coupon 以 userId 分片;updateById 会把 userId 放入 SET,
+ // ShardingSphere 会拒绝更新分片键。只更新状态,并在 WHERE 中带上 userId。
+ boolean couponUpdated = userCouponService.lambdaUpdate()
+ .set(UserCoupon::getStatus, 2)
+ .eq(UserCoupon::getId, userCoupon.getId())
+ .eq(UserCoupon::getUserId, uid)
+ .eq(UserCoupon::getStatus, 1)
+ .update();
+ if (!couponUpdated) {
+ return ResultUtil.error("优惠券已被使用");
+ }
}
BigDecimal bigDecimal = new BigDecimal(studentIds.split(",").length);
if (tPayHuimin.getSalesMoney().compareTo(BigDecimal.ZERO)==0){
--
Gitblit v1.7.1