From 6a55e75b8530197d1f561f710f9e53b7e40be171 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Wed, 01 Jul 2026 11:06:49 +0800
Subject: [PATCH] refactor(mall): 重构会员优惠券绑定逻辑

---
 src/main/resources/mapper/modules/MallMemberMapper.xml                         |    3 ++-
 src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java |   27 +++++++++++----------------
 2 files changed, 13 insertions(+), 17 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java
index b1c3142..7e553d1 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java
@@ -391,24 +391,19 @@
         if(ObjectUtil.isEmpty(member)){
             throw new FebsException("请刷新页面");
         }
-        List<Long> couponIds = mallmember.getCouponIds();
-        if(CollUtil.isEmpty(couponIds)){
-            return new FebsResponse().fail().message("请选择优惠券");
-        }
+        // 先删除旧绑定,再插入新绑定(全量替换)
+        QueryWrapper<SalemanCoupon> deleteWrapper = new QueryWrapper<>();
+        deleteWrapper.eq("member_id", member.getId());
+        salemanCouponMapper.delete(deleteWrapper);
 
-        for(Long couponId : couponIds){
-            // 检查是否已绑定,已绑定则跳过
-            QueryWrapper<SalemanCoupon> queryWrapper = new QueryWrapper<>();
-            queryWrapper.eq("member_id", member.getId());
-            queryWrapper.eq("coupon_id", couponId);
-            SalemanCoupon exist = salemanCouponMapper.selectOne(queryWrapper);
-            if(ObjectUtil.isNotEmpty(exist)){
-                continue;
+        List<Long> couponIds = mallmember.getCouponIds();
+        if(CollUtil.isNotEmpty(couponIds)){
+            for(Long couponId : couponIds){
+                SalemanCoupon salemanCoupon = new SalemanCoupon();
+                salemanCoupon.setMemberId(member.getId());
+                salemanCoupon.setCouponId(couponId);
+                salemanCouponMapper.insert(salemanCoupon);
             }
-            SalemanCoupon salemanCoupon = new SalemanCoupon();
-            salemanCoupon.setMemberId(member.getId());
-            salemanCoupon.setCouponId(couponId);
-            salemanCouponMapper.insert(salemanCoupon);
         }
         return new FebsResponse().success().message("操作成功");
     }
diff --git a/src/main/resources/mapper/modules/MallMemberMapper.xml b/src/main/resources/mapper/modules/MallMemberMapper.xml
index 5dff51a..d3d941a 100644
--- a/src/main/resources/mapper/modules/MallMemberMapper.xml
+++ b/src/main/resources/mapper/modules/MallMemberMapper.xml
@@ -413,7 +413,7 @@
 
     <select id="getsalemanRuleList" resultType="cc.mrbird.febs.mall.entity.MallMember">
         SELECT m.*,
-               b.name couponName
+               GROUP_CONCAT(b.name SEPARATOR ', ') couponName
         FROM mall_member m
         LEFT Join saleman_coupon a on m.id = a.member_id
         LEFT Join mall_goods_coupon b on b.id = a.coupon_id and b.state = 2
@@ -430,6 +430,7 @@
                 </if>
             </if>
         </where>
+        GROUP BY m.id
         order by m.CREATED_TIME desc
     </select>
 

--
Gitblit v1.9.1