From 3adbcc42d5f84c3c83d220543189361add81e04d Mon Sep 17 00:00:00 2001
From: jiangqs <jiangqs>
Date: 星期一, 11 九月 2023 15:22:19 +0800
Subject: [PATCH] bug

---
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberCouponServiceImpl.java |   74 ++++++++++++++++++++++++++++++++++---
 1 files changed, 68 insertions(+), 6 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 9ac6a3c..a291caa 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
@@ -6,6 +6,7 @@
 import com.ruoyi.common.core.exception.ServiceException;
 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.vo.AppMemberCouponPageVo;
 import com.ruoyi.member.mapper.member.MemberCouponMapper;
@@ -22,8 +23,11 @@
 import com.ruoyi.system.api.service.RemoteGoodsService;
 import com.ruoyi.system.api.service.RemoteShopService;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.math.BigDecimal;
 import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
@@ -81,7 +85,7 @@
             throw new ServiceException(AppErrorConstant.COUPON_EXPIRED);
         } else if (couponStatus == 2) {
             throw new ServiceException(AppErrorConstant.COUPON_USED);
-        } else if (couponStatus != 0) {
+        } else if (couponStatus != 1) {
             throw new ServiceException(AppErrorConstant.COUPON_NO_FIND);
         }
         // 检查优惠券类型
@@ -123,7 +127,7 @@
             throw new ServiceException(AppErrorConstant.COUPON_EXPIRED);
         }else if(memberCoupon.getCouponStatus()==2){
             throw new ServiceException(AppErrorConstant.COUPON_USED);
-        }else if(memberCoupon.getCouponStatus()==-1){
+        }else if(memberCoupon.getCouponStatus()!=1){
             throw new ServiceException(AppErrorConstant.COUPON_NO_FIND);
         }
         if(memberCoupon.getCouponType()!=4){
@@ -184,7 +188,12 @@
             List<String> goodsLimitList = null;
             HashSet<Long> shopIdSet = new HashSet<>();
             for(AppMemberCouponPageVo appGetAbleCouponPageVo : memberCouponPageVoList){
-                shopIdSet.add(appGetAbleCouponPageVo.getShopId());
+                if(appGetAbleCouponPageVo.getShopId()!=null){
+                    shopIdSet.add(appGetAbleCouponPageVo.getShopId());
+                }
+                if(appGetAbleCouponPageVo.getCouponType()==4){
+                    appGetAbleCouponPageVo.setVerifyCode("2-"+appGetAbleCouponPageVo.getMemberCouponId());
+                }
             }
             String shopJoinedString = String.join(",", shopIdSet.stream().map(Object::toString).collect(Collectors.toList()));
             MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto();
@@ -196,7 +205,7 @@
                 relGoodsIds = appGetAbleCouponPageVo.getRelGoodsIds();
                 if(StringUtils.isNotBlank(relGoodsIds)){
                     goodsList = remoteGoodsService.listGoodsByGoodsId(relGoodsIds).getData();
-                    if(!goodsList.isEmpty()){
+                    if(goodsList!=null&&!goodsList.isEmpty()){
                         goodsLimitList = goodsList.stream().map(goods -> {
                             String goodsName = goods.getGoodsName();
                             goodsName = "限制" + goodsName + "适用";
@@ -212,7 +221,9 @@
                     }
                 }
                 appGetAbleCouponPageVo.setGoodsLimitList(goodsLimitList);
-                appGetAbleCouponPageVo.setVerifyShopName(shopMap.get(appGetAbleCouponPageVo.getShopId()).getShopName());
+                if(appGetAbleCouponPageVo.getShopId()!=null){
+                    appGetAbleCouponPageVo.setVerifyShopName(shopMap.get(appGetAbleCouponPageVo.getShopId()).getShopName());
+                }
             }
         }
         return memberCouponPageVoList;
@@ -238,6 +249,7 @@
      * @return  void
      */
     @Override
+    @Transactional(propagation = Propagation.REQUIRES_NEW)
     public void useMemberCoupon(String memberCouponIds){
         memberCouponMapper.useMemberCoupon(memberCouponIds);
     }
@@ -263,6 +275,56 @@
      */
     @Override
     public List<MerMemberCouponVo> listMerShopGoodsMemberCoupon(MerGoodsCouponListDto merGoodsCouponListDto){
-        return memberCouponMapper.listMerShopGoodsMemberCoupon(merGoodsCouponListDto);
+        List<MerMemberCouponVo> merMemberCouponVoList = memberCouponMapper.listMerShopGoodsMemberCoupon(merGoodsCouponListDto);
+        if(merMemberCouponVoList!=null&&merMemberCouponVoList.size()>0){
+            List<MemberSelectCouponDto> goodsCpuponList = merGoodsCouponListDto.getGoodsCpuponList();
+            List<String> selectCouponList =  new ArrayList<>();
+            Map<String, String>  selectCouponMap = new HashMap<>();
+            Boolean checkSelect = false;
+            if(merGoodsCouponListDto.getGoodsCpuponList()!=null&&merGoodsCouponListDto.getGoodsCpuponList().size()>0) {
+                for (MemberSelectCouponDto couponDto : goodsCpuponList) {
+                    selectCouponList.add(couponDto.getMemberCouponId());
+                    selectCouponMap.put(couponDto.getMemberCouponId(), couponDto.getGoodsId());
+                }
+                checkSelect = true;
+            }
+            Iterator<MerMemberCouponVo> iterator = merMemberCouponVoList.iterator();
+            while (iterator.hasNext()) {
+                MerMemberCouponVo couponVo = iterator.next();
+                log.debug("couponVo"+couponVo.toString());
+                if(checkSelect){
+                    if (selectCouponList.contains(couponVo.getMemberCouponId()) && selectCouponMap.containsKey(couponVo.getMemberCouponId())) {
+                        String goodsId = selectCouponMap.get(couponVo.getMemberCouponId());
+                        if (!merGoodsCouponListDto.getGoodsId().equals(goodsId)) {
+                            iterator.remove();
+                            continue;
+                        }
+                    }
+                }
+                if(merGoodsCouponListDto.getBuyNum()!=null&&merGoodsCouponListDto.getSalesPrice()!=null){
+                    if(couponVo.getCouponType()==1){
+                        BigDecimal goodsMoney = merGoodsCouponListDto.getSalesPrice().multiply(new BigDecimal(merGoodsCouponListDto.getBuyNum().toString()));
+                        if(goodsMoney.compareTo(couponVo.getMoneyThreshold())<0){
+                            iterator.remove();
+                        }
+                    }
+                }
+            }
+        }
+        return merMemberCouponVoList;
+    }
+
+
+    /**
+     * @description  确认核销优惠券
+     * @author  jqs
+     * @date    2023/8/15 11:21
+     * @param memberCouponId
+     * @param shopId
+     * @return  void
+     */
+    @Override
+    public void sureMemberCoupon(String memberCouponId,Long shopId){
+        memberCouponMapper.sureMemberCoupon(memberCouponId, shopId);
     }
 }

--
Gitblit v1.7.1