From c74a6f59490cfb9a0ee37f70427739b74e7fbd58 Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期三, 20 五月 2026 08:50:29 +0800
Subject: [PATCH] 代码生成

---
 server/services/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java |   80 ++++++++++++++++++++++++++++++++++++++++
 1 files changed, 80 insertions(+), 0 deletions(-)

diff --git a/server/services/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java
index a32d68b..7e792fa 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java
@@ -11,7 +11,9 @@
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
 import com.doumee.core.utils.Utils;
+import com.doumee.dao.business.CouponMapper;
 import com.doumee.dao.business.MemberCouponMapper;
+import com.doumee.dao.business.model.Coupon;
 import com.doumee.dao.business.model.MemberCoupon;
 import com.doumee.dao.system.model.SystemUser;
 import com.doumee.service.business.MemberCouponService;
@@ -22,6 +24,7 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
+import java.util.Calendar;
 import java.util.Date;
 import java.util.List;
 import java.util.Objects;
@@ -31,6 +34,8 @@
 
     @Autowired
     private MemberCouponMapper memberCouponMapper;
+    @Autowired
+    private CouponMapper couponMapper;
 
     @Override
     @Transactional(rollbackFor = {Exception.class, BusinessException.class})
@@ -146,4 +151,79 @@
         QueryWrapper<MemberCoupon> wrapper = new QueryWrapper<>(memberCoupon);
         return memberCouponMapper.selectCount(wrapper);
     }
+
+    @Override
+    public PageData<MemberCoupon> findMemberPage(Integer memberId, Integer status, PageWrap<MemberCoupon> pageWrap) {
+        IPage<MemberCoupon> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+        MPJLambdaWrapper<MemberCoupon> qw = new MPJLambdaWrapper<>();
+        qw.selectAll(MemberCoupon.class)
+                .eq(MemberCoupon::getMemberId, memberId)
+                .eq(MemberCoupon::getIsdeleted, Constants.ZERO);
+
+        if (status != null) {
+            if (status == Constants.CouponStatus.expired.getKey()) {
+                // 宸插け鏁堝寘鍚袱绉嶏細98=鏈鍙栧凡杩囨湡, 99=宸茶繃鏈�
+                qw.in(MemberCoupon::getStatus,
+                        Constants.CouponStatus.expiredUnclaimed.getKey(),
+                        Constants.CouponStatus.expired.getKey());
+            } else {
+                qw.eq(MemberCoupon::getStatus, status);
+            }
+        }
+
+        // 鎸夌姸鎬佹帓搴�
+        if (status != null) {
+            switch (status) {
+                case 0: // 寰呴鍙� 鈫� 鍒涘缓鏃堕棿鍊掑簭
+                case 98: // 宸插け鏁�(鏌ヨ鏃跺寘鍚簡98鍜�99)
+                case 99:
+                    qw.orderByDesc(MemberCoupon::getCreateDate);
+                    break;
+                case 1: // 寰呬娇鐢� 鈫� 棰嗗彇鏃堕棿鍊掑簭
+                    qw.orderByDesc(MemberCoupon::getValidDate);
+                    break;
+                case 2: // 宸蹭娇鐢� 鈫� 浣跨敤鏃堕棿鍊掑簭
+                    qw.orderByDesc(MemberCoupon::getUseDate);
+                    break;
+                default:
+                    qw.orderByDesc(MemberCoupon::getId);
+                    break;
+            }
+        } else {
+            qw.orderByDesc(MemberCoupon::getId);
+        }
+
+        return PageData.from(memberCouponMapper.selectJoinPage(page, MemberCoupon.class, qw));
+    }
+
+    @Override
+    @Transactional(rollbackFor = {Exception.class, BusinessException.class})
+    public void claimCoupon(Integer memberId, Integer couponId) {
+        // 鏌ヨ璇ヤ細鍛樼殑寰呴鍙栦紭鎯犲埜璁板綍
+        MemberCoupon mc = memberCouponMapper.selectOne(new QueryWrapper<MemberCoupon>().lambda()
+                .eq(MemberCoupon::getId, couponId)
+                .eq(MemberCoupon::getMemberId, memberId)
+                .eq(MemberCoupon::getStatus, Constants.CouponStatus.waitClaim.getKey())
+                .eq(MemberCoupon::getIsdeleted, Constants.ZERO));
+        if (mc == null) {
+            throw new BusinessException(ResponseStatus.DATA_EMPTY);
+        }
+        // 鏍¢獙浼樻儬鍒告槸鍚︽湁鏁�
+        Coupon coupon = couponMapper.selectById(couponId);
+        if (coupon == null || coupon.getStatus() != Constants.ZERO) {
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "浼樻儬鍒告棤鏁�");
+        }
+        // 鏍囪宸查鍙栵紝璁$畻鏈夋晥鏈�
+        Date now = new Date();
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(now);
+        cal.add(Calendar.DAY_OF_MONTH, mc.getValidDays() != null ? mc.getValidDays() : 0);
+        memberCouponMapper.update(new UpdateWrapper<MemberCoupon>().lambda()
+                .set(MemberCoupon::getStatus, Constants.CouponStatus.claimed.getKey())
+                .set(MemberCoupon::getValidDate, now)
+                .set(MemberCoupon::getStartDate, now)
+                .set(MemberCoupon::getEndDate, cal.getTime())
+                .set(MemberCoupon::getEditDate, now)
+                .eq(MemberCoupon::getId, mc.getId()));
+    }
 }

--
Gitblit v1.9.3