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