From c11572732c0572e59942311992bcb4466ec724a9 Mon Sep 17 00:00:00 2001 From: wuchunlei Date: Thu, 28 Nov 2024 14:57:02 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BC=98=E6=83=A0=E5=88=B8?= =?UTF-8?q?=E8=8C=83=E5=9B=B4=EF=BC=8C=E5=A2=9E=E5=8A=A0=E5=95=86=E5=93=81?= =?UTF-8?q?=E9=80=89=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/common/entity/CouponEntity.java | 4 +- .../service/impl/CouponServiceImpl.java | 64 +++++++++++-------- 2 files changed, 39 insertions(+), 29 deletions(-) diff --git a/src/main/java/com/peanut/modules/common/entity/CouponEntity.java b/src/main/java/com/peanut/modules/common/entity/CouponEntity.java index b3c86945..31c5e0c4 100644 --- a/src/main/java/com/peanut/modules/common/entity/CouponEntity.java +++ b/src/main/java/com/peanut/modules/common/entity/CouponEntity.java @@ -20,10 +20,10 @@ public class CouponEntity { //优惠券类型 0现金 1折扣 private Integer couponType; - //优惠卷范围 0无限制 1课程卷 2课程品类卷 + //优惠卷范围 0无限制 1课程卷 2课程品类卷 3全部课程 4商品 5全部商品 private Integer couponRange; - //范围详情(课程卷是课程id,分割;课程品类卷是课程分类根id) + //范围详情(课程卷是课程id,分割 课程品类卷是课程分类根id,分割;商品id,分割) private String rangeInfo; //优惠券名称 diff --git a/src/main/java/com/peanut/modules/common/service/impl/CouponServiceImpl.java b/src/main/java/com/peanut/modules/common/service/impl/CouponServiceImpl.java index cf2899d4..67c51461 100644 --- a/src/main/java/com/peanut/modules/common/service/impl/CouponServiceImpl.java +++ b/src/main/java/com/peanut/modules/common/service/impl/CouponServiceImpl.java @@ -18,6 +18,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.util.*; +import java.util.stream.Collectors; @Slf4j @Service("commonCouponService") @@ -61,12 +62,8 @@ public class CouponServiceImpl extends ServiceImpl impl list.add(courseMedicineDao.selectOne(new LambdaQueryWrapper() .eq(CourseMedicine::getId,Integer.parseInt(str)) .select(CourseMedicine::getId,CourseMedicine::getTitle))); - }else if(couponEntity.getCouponRange()==3){ - MPJLambdaWrapper wrapper = new MPJLambdaWrapper(); - wrapper.leftJoin(CourseEntity.class,CourseEntity::getId,CourseToMedicine::getCourseId); - wrapper.selectAll(CourseEntity.class); - wrapper.select(CourseEntity::getId,CourseEntity::getTitle,CourseEntity::getImage); - list.addAll(courseToMedicineDao.selectJoinList(CourseEntity.class,wrapper)); + }else if(couponEntity.getCouponRange()==4){ + list.add(shopProductDao.selectById(Integer.parseInt(str))); } } } @@ -135,32 +132,36 @@ public class CouponServiceImpl extends ServiceImpl impl couponHistory.setCanUseReason("优惠券使用时间未到"); } } + Set allProductIds = new HashSet<>(); + //校验订单门槛 + BigDecimal totalAmount = new BigDecimal(0); + //"shopProductInfos":"1:69:1,2:79:1"//商品id:价格:数量 + String shopProductInfos = params.get("shopProductInfos").toString(); + String[] infos = shopProductInfos.split(","); + for (String shopProductInfo : infos) { + String[] info = shopProductInfo.split(":"); + allProductIds.add(Integer.parseInt(info[0])); + BigDecimal amount = new BigDecimal(info[1]).multiply(new BigDecimal(info[2])); + totalAmount = totalAmount.add(amount); + } + if (new BigDecimal(couponEntity.getUseLevel()).compareTo(totalAmount)>0){ + couponHistory.setCanUse(0); + couponHistory.setCanUseReason("优惠券未到使用门槛"); + } + if (couponEntity.getCouponAmount().compareTo(totalAmount)>0){ + couponHistory.setCanUse(0); + couponHistory.setCanUseReason("优惠券面额大于商品价值"); + } couponHistory.setCouponEntity(couponEntity); if (couponEntity.getCouponRange()==0){ //无限制 res.add(couponHistory); }else { - //课程券和课程分类券 - //"shopProductInfos":"1:69:1,2:79:1"//商品id:价格:数量 - String shopProductInfos = params.get("shopProductInfos").toString(); - String[] infos = shopProductInfos.split(","); - for (String shopProductInfo : infos) { - String[] info = shopProductInfo.split(":"); - //通过优惠卷获取商品 - Set set = getShopProductByCoupon(couponEntity); - //比对用户优惠卷是否有此商品 - if(!set.add(Integer.parseInt(info[0]))){ - BigDecimal totalAmount = new BigDecimal(info[1]).multiply(new BigDecimal(info[2])); - if (new BigDecimal(couponEntity.getUseLevel()).compareTo(totalAmount)>0){ - couponHistory.setCanUse(0); - couponHistory.setCanUseReason("优惠券未到使用门槛"); - } - if (couponEntity.getCouponAmount().compareTo(totalAmount)>0){ - couponHistory.setCanUse(0); - couponHistory.setCanUseReason("优惠券面额大于商品价值"); - } - res.add(couponHistory); - } + //通过优惠卷获取商品 + Set set = getShopProductByCoupon(couponEntity); + //比对用户优惠卷是否有此商品 + if(!set.addAll(allProductIds)){ + res.add(couponHistory); } } } @@ -201,6 +202,15 @@ public class CouponServiceImpl extends ServiceImpl impl for (ShopProductCourseEntity shopProductCourseEntity : shopProductCourseList) { set.add(shopProductCourseEntity.getProductId()); } + }else if (couponEntity.getCouponRange()==4) { + //4商品 + String[] productIds = couponEntity.getRangeInfo().split(","); + for (String productId : productIds) { + set.add(Integer.parseInt(productId)); + } + }else if (couponEntity.getCouponRange()==5) { + //5全部商品 + set.addAll(shopProductDao.selectList(new LambdaQueryWrapper<>()).stream().map(ShopProduct::getProductId).collect(Collectors.toList())); } return set; }