From 6d27e92e08a798a3d1eba30593168842b6b00b2a Mon Sep 17 00:00:00 2001 From: yangjun <1173114630@qq.com> Date: Wed, 7 Aug 2024 10:46:48 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/UserPackageOrderServiceImpl.java | 377 ++++++++++++------ 1 file changed, 261 insertions(+), 116 deletions(-) diff --git a/src/main/java/com/sqx/modules/bl/order/service/impl/UserPackageOrderServiceImpl.java b/src/main/java/com/sqx/modules/bl/order/service/impl/UserPackageOrderServiceImpl.java index 208ad1c..1bee55c 100644 --- a/src/main/java/com/sqx/modules/bl/order/service/impl/UserPackageOrderServiceImpl.java +++ b/src/main/java/com/sqx/modules/bl/order/service/impl/UserPackageOrderServiceImpl.java @@ -164,137 +164,282 @@ public class UserPackageOrderServiceImpl extends ServiceImpl classifyIdArr = Lists.newArrayList(); - List ordersPackageList = userPackageOrder.getOrdersPackageList(); - for (UserPackageOrdersMapping ordersPackage : ordersPackageList) { - MassagePackage massagePackage = massagePackageService.getById(ordersPackage.getPackageId()); - BigDecimal sum = massagePackage.getPrice().multiply(new BigDecimal(ordersPackage.getNum())); - if(massagePackage.getIsCanCoupon() == 1){ - canCouponMoney = canCouponMoney.add(sum); - } - if(massagePackage.getIsCanVip() == 1){ - canVipMoney = canVipMoney.add(sum); - } - totalMoney = totalMoney.add(sum); - Long classifyId = massagePackage.getClassifyId(); - classifyIdArr.add(classifyId); - } - BigDecimal couponMinMoney = BigDecimal.ZERO;//所有代金券的使用额度总和 - List CouponUserList = Lists.newArrayList(); - String couponIds = userPackageOrder.getCouponId(); - if(couponIds!=null && couponIds.length()>0){ - if(canCouponMoney.compareTo(BigDecimal.ZERO)==0){ - return Result.error("此次购买的服务不支持优惠券!"); - } - String[] couponArr = couponIds.trim().split(","); - BigDecimal couponMoney = new BigDecimal(0); - int count = 0; - for(int i=0;i classifyIdArr = Lists.newArrayList(); + List ordersPackageList = userPackageOrder.getOrdersPackageList(); + for (UserPackageOrdersMapping ordersPackage : ordersPackageList) { + MassagePackage massagePackage = massagePackageService.getById(ordersPackage.getPackageId()); + //获取企业预约实际项目的金额 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("main_id",massagePackage.getId()); + wrapper.last("limit 1"); + MassagePackageDetail massagePackageDetail = massagePackageDetailDao.selectOne(wrapper); + //根据项目的金额*数量算优惠券金额 + BigDecimal sum = massagePackageDetail.getPackagePrice().multiply(new BigDecimal(ordersPackage.getNum())); + if(massagePackage.getIsCanCoupon() == 1){ + canCouponMoney = canCouponMoney.add(sum); } + if(massagePackage.getIsCanVip() == 1){ + canVipMoney = canVipMoney.add(sum); + } + totalMoney = totalMoney.add(sum); + Long classifyId = massagePackage.getClassifyId(); + classifyIdArr.add(classifyId); } - userPackageOrder.setCouponCount(count); - userPackageOrder.setCouponMoney(couponMoney); - }else{ - userPackageOrder.setCouponCount(0); - userPackageOrder.setCouponMoney(BigDecimal.ZERO); - } - if(canCouponMoney.compareTo(couponMinMoney) < 0){ - return Result.error("当前应付总金额不满足优惠券使用的最小额度,请重新选择优惠券!"); - } - - //获取用户VIP的优惠信息 - BigDecimal vipRate = new BigDecimal(100); - //服务包支持vip时,获取vip优惠比例 - if(canVipMoney.compareTo(BigDecimal.ZERO)>0) { - UserVip userVip = userVipService.selectUserVipByUserId(userPackageOrder.getUserId()); - if (userVip != null) { - if (userVip.getIsVip() == 1) { - //获取用户到期时间 - Date date = null; - try { - date = simpleDateFormat.parse(userVip.getEndTime()); - if (date.getTime() >= System.currentTimeMillis()) { - VipDetails vipDetails = vipDetailsDao.selectOne(new QueryWrapper().eq("vip_name_type", userVip.getVipNameType())); - if (vipDetails != null) { - vipRate = vipDetails.getRate(); + BigDecimal couponMinMoney = BigDecimal.ZERO;//所有代金券的使用额度总和 + List CouponUserList = Lists.newArrayList(); + String couponIds = userPackageOrder.getCouponId(); + if(couponIds!=null && couponIds.length()>0){ + if(canCouponMoney.compareTo(BigDecimal.ZERO)==0){ + return Result.error("此次购买的服务不支持优惠券!"); + } + String[] couponArr = couponIds.trim().split(","); + BigDecimal couponMoney = new BigDecimal(0); + int count = 0; + for(int i=0;i0) { + UserVip userVip = userVipService.selectUserVipByUserId(userPackageOrder.getUserId()); + if (userVip != null) { + if (userVip.getIsVip() == 1) { + //获取用户到期时间 + Date date = null; + try { + date = simpleDateFormat.parse(userVip.getEndTime()); + if (date.getTime() >= System.currentTimeMillis()) { + VipDetails vipDetails = vipDetailsDao.selectOne(new QueryWrapper().eq("vip_name_type", userVip.getVipNameType())); + if (vipDetails != null) { + vipRate = vipDetails.getRate(); + } + } + } catch (Exception e) { + e.getMessage(); + } } } } - } - userPackageOrder.setVipRate(vipRate); - BigDecimal vipMoney = canVipMoney; - BigDecimal unCanVipMoney = totalMoney.subtract(canVipMoney);//非会员优惠金额 - canVipMoney = canVipMoney.multiply(userPackageOrder.getVipRate()).divide(new BigDecimal(100));//对可用vip的金额进行优惠 - canVipMoney = canVipMoney.setScale(0,BigDecimal.ROUND_UP); - BigDecimal vipReductionMoney = vipMoney.subtract(canVipMoney); - userPackageOrder.setVipReductionMoney(vipReductionMoney);//会员减免金额 - totalMoney = canVipMoney.add(unCanVipMoney);//优惠后的总金额 - totalMoney = totalMoney.subtract(userPackageOrder.getCouponMoney());//减去优惠券额度后的总金额 + userPackageOrder.setVipRate(vipRate); + BigDecimal vipMoney = canVipMoney; + BigDecimal unCanVipMoney = totalMoney.subtract(canVipMoney);//非会员优惠金额 + canVipMoney = canVipMoney.multiply(userPackageOrder.getVipRate()).divide(new BigDecimal(100));//对可用vip的金额进行优惠 + canVipMoney = canVipMoney.setScale(0,BigDecimal.ROUND_UP); + BigDecimal vipReductionMoney = vipMoney.subtract(canVipMoney); + userPackageOrder.setVipReductionMoney(vipReductionMoney);//会员减免金额 + totalMoney = canVipMoney.add(unCanVipMoney);//优惠后的总金额 + totalMoney = totalMoney.subtract(userPackageOrder.getCouponMoney());//减去优惠券额度后的总金额 - userPackageOrder.setPayMoney(totalMoney); - userPackageOrder.setCreateTime(simpleDateFormat.format(new Date())); - userPackageOrder.setStatus(0); - userPackageOrder.setOrdersNo(getGeneralOrder()); - //插入订单表 - baseMapper.insertOrders(userPackageOrder); - Long ordersId = userPackageOrder.getOrdersId(); + userPackageOrder.setPayMoney(totalMoney); + userPackageOrder.setCreateTime(simpleDateFormat.format(new Date())); + userPackageOrder.setStatus(0); + userPackageOrder.setOrdersNo(getGeneralOrder()); + //插入订单表 + baseMapper.insertOrders(userPackageOrder); + Long ordersId = userPackageOrder.getOrdersId(); - //插入订单代金券表 - if(CouponUserList.size()>0){ - for(int i=0;ilambdaUpdate().eq(CouponUser::getId, couponUser.getId()).set(CouponUser::getStatus, 1)); + //插入订单代金券表 + if(CouponUserList.size()>0){ + for(int i=0;ilambdaUpdate().eq(CouponUser::getId, couponUser.getId()).set(CouponUser::getStatus, 1)); + } + userPackageOrder.setCouponUserList(CouponUserList); } - userPackageOrder.setCouponUserList(CouponUserList); - } - //插入用户-服务包-订单-服务包与订单映射关系表 - for (UserPackageOrdersMapping ordersPackage : ordersPackageList) { - ordersPackage.setOrdersId(ordersId); - userPackageOrdersMappingService.insert(ordersPackage); - } + //插入用户-服务包-订单-服务包与订单映射关系表 + for (UserPackageOrdersMapping ordersPackage : ordersPackageList) { + ordersPackage.setOrdersId(ordersId); + userPackageOrdersMappingService.insert(ordersPackage); + } - } catch (Exception e) { - e.printStackTrace(); - log.error("添加订单异常" + e.getMessage(), e); - } finally { - reentrantReadWriteLock.writeLock().unlock(); + } catch (Exception e) { + e.printStackTrace(); + log.error("添加订单异常" + e.getMessage(), e); + } finally { + reentrantReadWriteLock.writeLock().unlock(); + } + return Result.success().put("data", userPackageOrder); + }else{ + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + try { + BigDecimal canCouponMoney = BigDecimal.ZERO;//当可用代金券时的金额 + BigDecimal canVipMoney = BigDecimal.ZERO;//当可用vip时的金额 + BigDecimal totalMoney = BigDecimal.ZERO;//总金额 + List classifyIdArr = Lists.newArrayList(); + List ordersPackageList = userPackageOrder.getOrdersPackageList(); + for (UserPackageOrdersMapping ordersPackage : ordersPackageList) { + MassagePackage massagePackage = massagePackageService.getById(ordersPackage.getPackageId()); + BigDecimal sum = massagePackage.getPrice().multiply(new BigDecimal(ordersPackage.getNum())); + if(massagePackage.getIsCanCoupon() == 1){ + canCouponMoney = canCouponMoney.add(sum); + } + if(massagePackage.getIsCanVip() == 1){ + canVipMoney = canVipMoney.add(sum); + } + totalMoney = totalMoney.add(sum); + Long classifyId = massagePackage.getClassifyId(); + classifyIdArr.add(classifyId); + } + + BigDecimal couponMinMoney = BigDecimal.ZERO;//所有代金券的使用额度总和 + List CouponUserList = Lists.newArrayList(); + String couponIds = userPackageOrder.getCouponId(); + if(couponIds!=null && couponIds.length()>0){ + if(canCouponMoney.compareTo(BigDecimal.ZERO)==0){ + return Result.error("此次购买的服务不支持优惠券!"); + } + String[] couponArr = couponIds.trim().split(","); + BigDecimal couponMoney = new BigDecimal(0); + int count = 0; + for(int i=0;i0) { + UserVip userVip = userVipService.selectUserVipByUserId(userPackageOrder.getUserId()); + if (userVip != null) { + if (userVip.getIsVip() == 1) { + //获取用户到期时间 + Date date = null; + try { + date = simpleDateFormat.parse(userVip.getEndTime()); + if (date.getTime() >= System.currentTimeMillis()) { + VipDetails vipDetails = vipDetailsDao.selectOne(new QueryWrapper().eq("vip_name_type", userVip.getVipNameType())); + if (vipDetails != null) { + vipRate = vipDetails.getRate(); + } + } + } catch (Exception e) { + e.getMessage(); + } + } + } + } + userPackageOrder.setVipRate(vipRate); + BigDecimal vipMoney = canVipMoney; + BigDecimal unCanVipMoney = totalMoney.subtract(canVipMoney);//非会员优惠金额 + canVipMoney = canVipMoney.multiply(userPackageOrder.getVipRate()).divide(new BigDecimal(100));//对可用vip的金额进行优惠 + canVipMoney = canVipMoney.setScale(0,BigDecimal.ROUND_UP); + BigDecimal vipReductionMoney = vipMoney.subtract(canVipMoney); + userPackageOrder.setVipReductionMoney(vipReductionMoney);//会员减免金额 + totalMoney = canVipMoney.add(unCanVipMoney);//优惠后的总金额 + totalMoney = totalMoney.subtract(userPackageOrder.getCouponMoney());//减去优惠券额度后的总金额 + + userPackageOrder.setPayMoney(totalMoney); + userPackageOrder.setCreateTime(simpleDateFormat.format(new Date())); + userPackageOrder.setStatus(0); + userPackageOrder.setOrdersNo(getGeneralOrder()); + //插入订单表 + baseMapper.insertOrders(userPackageOrder); + Long ordersId = userPackageOrder.getOrdersId(); + + //插入订单代金券表 + if(CouponUserList.size()>0){ + for(int i=0;ilambdaUpdate().eq(CouponUser::getId, couponUser.getId()).set(CouponUser::getStatus, 1)); + } + userPackageOrder.setCouponUserList(CouponUserList); + } + + //插入用户-服务包-订单-服务包与订单映射关系表 + for (UserPackageOrdersMapping ordersPackage : ordersPackageList) { + ordersPackage.setOrdersId(ordersId); + userPackageOrdersMappingService.insert(ordersPackage); + } + + } catch (Exception e) { + e.printStackTrace(); + log.error("添加订单异常" + e.getMessage(), e); + } finally { + reentrantReadWriteLock.writeLock().unlock(); + } + return Result.success().put("data", userPackageOrder); } - return Result.success().put("data", userPackageOrder); } @Override