From cbc564a7088503ad8cc7af4e1d2ba417d061e615 Mon Sep 17 00:00:00 2001
From: jiangqs <jiangqs>
Date: 星期五, 30 六月 2023 11:35:05 +0800
Subject: [PATCH] 联调bug和统计完善

---
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberCouponServiceImpl.java |  119 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 117 insertions(+), 2 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 f2dd1c1..df39976 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
@@ -1,13 +1,20 @@
 package com.ruoyi.member.service.impl.member;
 
-import com.ruoyi.member.domain.pojo.member.MemberCoupon;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.core.exception.ServiceException;
 import com.ruoyi.member.mapper.member.MemberCouponMapper;
 import com.ruoyi.member.service.member.MemberCouponService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.system.api.constant.AppErrorConstant;
+import com.ruoyi.system.api.domain.poji.goods.Goods;
+import com.ruoyi.system.api.domain.poji.member.MemberCoupon;
 import com.ruoyi.system.api.domain.vo.AppMemberCouponVo;
+import com.ruoyi.system.api.domain.vo.MerVerifyCouponGetVo;
+import com.ruoyi.system.api.service.RemoteGoodsService;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -24,6 +31,10 @@
     @Resource
     private MemberCouponMapper memberCouponMapper;
 
+    @Resource
+    private RemoteGoodsService remoteGoodsService;
+
+
     /**
      * @description: TODO
      * @author jqs34
@@ -35,4 +46,108 @@
         List<AppMemberCouponVo> appMemberCouponVoList = memberCouponMapper.listVoMemberCouponByUserId(userId);
         return appMemberCouponVoList;
     }
+
+    /**
+     * @description  核销优惠券
+     * @author  jqs
+     * @date    2023/6/26 17:02
+     * @param verifyCoupon
+     * @return  void
+     */
+    @Override
+    public MerVerifyCouponGetVo getVerifyCoupon(String verifyCoupon){
+        MemberCoupon memberCoupon = this.getById(verifyCoupon);
+        // 检查是否存在该优惠券
+        if (memberCoupon == null) {
+            throw new ServiceException(AppErrorConstant.COUPON_NO_FIND);
+        }
+        // 检查优惠券状态
+        int couponStatus = memberCoupon.getCouponStatus();
+        if (couponStatus == 0) {
+            throw new ServiceException(AppErrorConstant.COUPON_EXPIRED);
+        } else if (couponStatus == 2) {
+            throw new ServiceException(AppErrorConstant.COUPON_USED);
+        } else if (couponStatus != 0) {
+            throw new ServiceException(AppErrorConstant.COUPON_NO_FIND);
+        }
+        // 检查优惠券类型
+        int couponType = memberCoupon.getCouponType();
+        if (couponType != 4) {
+            throw new ServiceException(AppErrorConstant.COUPON_TYPE_ERROR);
+        }
+        MerVerifyCouponGetVo merVerifyCouponGetVo = new MerVerifyCouponGetVo();
+        merVerifyCouponGetVo.setUserId(memberCoupon.getUserId());
+        String relGoodsIds = memberCoupon.getRelGoodsIds();
+        List<Goods> goodsList = remoteGoodsService.listGoodsByGoodsId(relGoodsIds).getData();
+        if (goodsList != null) {
+            merVerifyCouponGetVo.setGoodsList(goodsList);
+        }
+        merVerifyCouponGetVo.setMemberCouponId(memberCoupon.getId());
+        if (memberCoupon.getShopId()!=null&&memberCoupon.getShopId()>0) {
+            merVerifyCouponGetVo.setCouponFrom("商户");
+        } else {
+            merVerifyCouponGetVo.setCouponFrom("平台");
+        }
+        return merVerifyCouponGetVo;
+    }
+
+    /**
+     * @description  核销优惠券
+     * @author  jqs
+     * @date    2023/6/28 11:44
+     * @param memberCouponId
+     * @return  MerVerifyCouponGetVo
+     */
+    @Override
+    public MerVerifyCouponGetVo sureVerifyCoupon(String memberCouponId){
+        MemberCoupon memberCoupon = this.getById(memberCouponId);
+        if(memberCoupon==null||memberCoupon.getDelFlag()==1){
+            throw new ServiceException(AppErrorConstant.COUPON_NO_FIND);
+        }
+        if(memberCoupon.getCouponStatus()==0){
+            throw new ServiceException(AppErrorConstant.COUPON_EXPIRED);
+        }else if(memberCoupon.getCouponStatus()==2){
+            throw new ServiceException(AppErrorConstant.COUPON_USED);
+        }else if(memberCoupon.getCouponStatus()!=0){
+            throw new ServiceException(AppErrorConstant.COUPON_NO_FIND);
+        }
+        if(memberCoupon.getCouponType()!=4){
+            throw new ServiceException(AppErrorConstant.COUPON_TYPE_ERROR);
+        }
+        MerVerifyCouponGetVo merVerifyCouponGetVo = new MerVerifyCouponGetVo();
+        merVerifyCouponGetVo.setUserId(memberCoupon.getUserId());
+        String relGoodsIds = memberCoupon.getRelGoodsIds();
+        List<Goods> goodsList = remoteGoodsService.listGoodsByGoodsId(relGoodsIds).getData();
+        if(goodsList!=null){
+            merVerifyCouponGetVo.setGoodsList(goodsList);
+        }
+        merVerifyCouponGetVo.setMemberCouponId(memberCoupon.getId());
+        if (memberCoupon.getShopId()!=null&&memberCoupon.getShopId()>0) {
+            merVerifyCouponGetVo.setCouponFrom("商户");
+        } else {
+            merVerifyCouponGetVo.setCouponFrom("平台");
+        }
+        memberCoupon.setCouponStatus(2);
+        memberCoupon.setUseTime(new Date());
+        this.saveOrUpdate(memberCoupon);
+        merVerifyCouponGetVo.setMemberCoupon(memberCoupon);
+        return merVerifyCouponGetVo;
+    }
+
+    /**
+     * @description
+     * @author  jqs
+     * @date    2023/6/29 11:42
+     * @param userId
+     * @param couponId
+     * @return  Integer
+     */
+    @Override
+    public Integer totalMemberCouponByUserAndCoupon(Long userId,String couponId){
+        LambdaQueryWrapper<MemberCoupon> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(MemberCoupon::getUserId,userId);
+        queryWrapper.eq(MemberCoupon::getCouponId,couponId);
+        Integer total = this.count(queryWrapper);
+        return total;
+    }
 }

--
Gitblit v1.7.1