From ea1a62ba6484d6c6cb1ca67dcea938a95ba18fc6 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期一, 26 五月 2025 18:26:26 +0800
Subject: [PATCH] 新增加用户端接口

---
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberCouponServiceImpl.java |  138 ++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 115 insertions(+), 23 deletions(-)

diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberCouponServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberCouponServiceImpl.java
index aa12d41..14e1a02 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberCouponServiceImpl.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberCouponServiceImpl.java
@@ -4,13 +4,19 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.exception.ServiceException;
+import com.ruoyi.common.core.utils.DateUtils;
 import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.member.domain.dto.AppMemberCouponPageDto;
 import com.ruoyi.member.domain.dto.MemberSelectCouponDto;
 import com.ruoyi.member.domain.dto.MerGoodsCouponListDto;
+import com.ruoyi.member.domain.pojo.coupon.Coupon;
 import com.ruoyi.member.domain.vo.AppMemberCouponPageVo;
+import com.ruoyi.member.mapper.coupon.CouponMapper;
 import com.ruoyi.member.mapper.member.MemberCouponMapper;
+import com.ruoyi.member.service.coupon.CouponService;
+import com.ruoyi.member.service.coupon.MemberCouponRecordService;
 import com.ruoyi.member.service.member.MemberCouponService;
 import com.ruoyi.system.api.constant.AppErrorConstant;
 import com.ruoyi.system.api.domain.dto.MerBaseDto;
@@ -45,17 +51,26 @@
 @Service
 @DS("sharding")
 public class MemberCouponServiceImpl extends ServiceImpl<MemberCouponMapper, MemberCoupon> implements MemberCouponService {
-
+    
     @Resource
     private MemberCouponMapper memberCouponMapper;
-
+    
     @Resource
     private RemoteGoodsService remoteGoodsService;
-
+    
     @Resource
     private RemoteShopService remoteShopService;
-
-
+    
+    @Resource
+    private CouponService couponService;
+    
+    @Resource
+    private MemberCouponRecordService memberCouponRecordService;
+    
+    @Resource
+    private CouponMapper couponMapper;
+    
+    
     /**
      * @description: TODO
      * @author jqs34
@@ -63,11 +78,11 @@
      * @version 1.0
      */
     @Override
-    public List<AppMemberCouponVo> listVoMemberCouponByUserId(MerBaseDto merBaseDto){
+    public List<AppMemberCouponVo> listVoMemberCouponByUserId(MerBaseDto merBaseDto) {
         List<AppMemberCouponVo> appMemberCouponVoList = memberCouponMapper.listVoMemberCouponByUserId(merBaseDto);
         return appMemberCouponVoList;
     }
-
+    
     /**
      * @description  核销优惠券
      * @author  jqs
@@ -112,7 +127,7 @@
         merVerifyCouponGetVo.setMemberCoupon(memberCoupon);
         return merVerifyCouponGetVo;
     }
-
+    
     /**
      * @description  核销优惠券
      * @author  jqs
@@ -150,13 +165,13 @@
             merVerifyCouponGetVo.setCouponFrom("平台");
         }
         memberCoupon.setCouponStatus(2);
-
+    
         memberCoupon.setUseTime(new Date());
         this.saveOrUpdate(memberCoupon);
         merVerifyCouponGetVo.setMemberCoupon(memberCoupon);
         return merVerifyCouponGetVo;
     }
-
+    
     /**
      * @description
      * @author  jqs
@@ -173,7 +188,7 @@
         Integer total = this.count(queryWrapper);
         return total;
     }
-
+    
     /**
      * @description 用户分页获取已领取优惠券列表
      * @author  jqs
@@ -261,7 +276,7 @@
         }
         return memberCouponPageVoList;
     }
-
+    
     /**
      * @description  定时检查优惠券过期
      * @author  jqs
@@ -273,7 +288,7 @@
     public void timingCheckMemberCoupon(){
         memberCouponMapper.timingCheckMemberCoupon();
     }
-
+    
     /**
      * @description  使用优惠券
      * @author  jqs
@@ -286,7 +301,7 @@
     public void useMemberCoupon(String memberCouponIds){
         memberCouponMapper.useMemberCoupon(memberCouponIds);
     }
-
+    
     /**
      * @description  使用优惠券
      * @author  jqs
@@ -298,7 +313,7 @@
     public void backMemberCoupon(String memberCouponIds){
         memberCouponMapper.backMemberCoupon(memberCouponIds);
     }
-
+    
     /**
      * @description
      * @author  jqs
@@ -347,24 +362,101 @@
         }
         return merMemberCouponVoList;
     }
-
-
+    
+    
     /**
-     * @description  确认核销优惠券
-     * @author  jqs
-     * @date    2023/8/15 11:21
      * @param memberCouponId
      * @param shopId
-     * @return  void
+     * @return void
+     * @description 确认核销优惠券
+     * @author jqs
+     * @date 2023/8/15 11:21
      */
     @Override
-    public void sureMemberCoupon(Long memberCouponId, Long shopId){
+    public void sureMemberCoupon(Long memberCouponId, Long shopId) {
         memberCouponMapper.sureMemberCoupon(memberCouponId, shopId);
     }
-
+    
     @Override
     @Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class)
     public void insert(MemberCoupon memberCoupon) {
         this.baseMapper.insert(memberCoupon);
     }
+    
+    
+    /**
+     * 手动添加用户优惠券
+     *
+     * @param couponId
+     * @param number
+     * @return
+     */
+    @Override
+    public R addMemberCoupon(String couponId, Integer number, Long userId) {
+        Coupon coupon = couponService.getById(couponId);
+        if (null == coupon) {
+            return R.fail("优惠券不存在");
+        }
+        List<MemberCoupon> memberCouponList = new ArrayList<>();
+        MemberCoupon memberCoupon;
+        Integer sendTotal = 0;
+        Integer sendPerson = 0;
+        Integer sendUserTotal;
+        for (int i = 0; i < number; i++) {
+            memberCoupon = new MemberCoupon();
+            memberCoupon.setDelFlag(0);
+            memberCoupon.setCouponId(coupon.getCouponId());
+            memberCoupon.setUserId(userId);
+            memberCoupon.setShopId(coupon.getShopId());
+            memberCoupon.setCouponType(coupon.getCouponType());
+            if (coupon.getCouponType() == 1) {
+                memberCoupon.setMoneyThreshold(coupon.getMoneyThreshold());
+                memberCoupon.setDiscountMoney(coupon.getDiscountMoney());
+            } else if (coupon.getCouponType() == 2) {
+                memberCoupon.setDiscountPercent(coupon.getDiscountPercent());
+            } else if (coupon.getCouponType() == 3) {
+                memberCoupon.setDiscountMoney(coupon.getDiscountMoney());
+            } else {
+                memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds());
+            }
+            memberCoupon.setCouponStatus(coupon.getCouponStatus());
+            memberCoupon.setCouponName(coupon.getCouponName());
+            memberCoupon.setSendType(coupon.getSendType());
+            memberCoupon.setSendTarget(coupon.getSendTarget());
+            memberCoupon.setSendTimeType(coupon.getSendTimeType());
+            memberCoupon.setSendTime(coupon.getSendTime());
+            memberCoupon.setUseScope(coupon.getUseScope());
+            if (memberCoupon.getUseScope() == 2) {
+                memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds());
+            }
+            memberCoupon.setValidTimeType(coupon.getValidTimeType());
+            memberCoupon.setValidStartTime(coupon.getValidStartTime());
+            memberCoupon.setValidEndTime(coupon.getValidEndTime());
+            memberCoupon.setValidDay(coupon.getValidDay());
+            memberCoupon.setCouponFrom(coupon.getCouponFrom());
+            memberCoupon.setReceiveTime(new Date());
+            //有效期处理1.时间段2.领取之日起
+            if (coupon.getValidTimeType() == 1) {
+                memberCoupon.setDeadlineTime(coupon.getValidEndTime());
+            } else if (coupon.getValidTimeType() == 2) {
+                memberCoupon.setDeadlineTime(DateUtils.addDays(new Date(), coupon.getValidDay()));
+            }
+            memberCouponList.add(memberCoupon);
+            sendTotal = sendTotal + 1;
+            if (coupon.getSendType() == 1) {
+                sendUserTotal = this.totalMemberCouponByUserAndCoupon(userId, coupon.getCouponId());
+                if (sendUserTotal != null && sendUserTotal > 0) {
+                } else {
+                    sendPerson = sendPerson + 1;
+                }
+            }
+            memberCouponRecordService.updateMemberCouponRecord(coupon, userId, 1);
+        }
+        this.saveBatch(memberCouponList);
+        //处理优惠券统计
+        if (sendTotal > 0) {
+            couponMapper.updateCouponTotal(coupon.getCouponId(), sendTotal, sendPerson);
+        }
+        return R.ok();
+    }
 }

--
Gitblit v1.7.1