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

---
 server/services/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java |   93 ++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 93 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..7de8bb1 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,8 +24,11 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
+import java.util.Calendar;
 import java.util.Date;
+import java.util.LinkedHashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 
 @Service
@@ -31,6 +36,8 @@
 
     @Autowired
     private MemberCouponMapper memberCouponMapper;
+    @Autowired
+    private CouponMapper couponMapper;
 
     @Override
     @Transactional(rollbackFor = {Exception.class, BusinessException.class})
@@ -146,4 +153,90 @@
         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
+    public Map<String, Integer> findPendingCount(Integer memberId) {
+        Long waitClaim = memberCouponMapper.selectCount(new QueryWrapper<MemberCoupon>().lambda()
+                .eq(MemberCoupon::getMemberId, memberId)
+                .eq(MemberCoupon::getStatus, Constants.CouponStatus.waitClaim.getKey())
+                .eq(MemberCoupon::getIsdeleted, Constants.ZERO));
+        Long waitUse = memberCouponMapper.selectCount(new QueryWrapper<MemberCoupon>().lambda()
+                .eq(MemberCoupon::getMemberId, memberId)
+                .eq(MemberCoupon::getStatus, Constants.CouponStatus.claimed.getKey())
+                .eq(MemberCoupon::getIsdeleted, Constants.ZERO));
+        Map<String, Integer> result = new LinkedHashMap<>();
+        result.put("waitClaim", waitClaim != null ? waitClaim.intValue() : 0);
+        result.put("waitUse", waitUse != null ? waitUse.intValue() : 0);
+        return result;
+    }
+
+    @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);
+        }
+        // 鏍囪宸查鍙栵紝璁$畻鏈夋晥鏈�
+        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