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 93678d08..ddc296dc 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; }