diff --git a/src/main/java/com/sqx/modules/artificer/service/impl/OrdersServiceImpl.java b/src/main/java/com/sqx/modules/artificer/service/impl/OrdersServiceImpl.java index 96f465d..5c840f7 100644 --- a/src/main/java/com/sqx/modules/artificer/service/impl/OrdersServiceImpl.java +++ b/src/main/java/com/sqx/modules/artificer/service/impl/OrdersServiceImpl.java @@ -717,24 +717,17 @@ public class OrdersServiceImpl extends ServiceImpl implements } orders.setTechnicianRate(artificerVipRate); - BigDecimal payMoney = BigDecimal.ZERO; - List ordersMassageList = orders.getOrdersMassageList(); MassageType massageType = massageTypeService.getById(ordersMassageList.get(0).getMassageId()); BigDecimal price = BigDecimal.ZERO; String massageTypeName = ""; - BigDecimal artificerPrice = new BigDecimal("0.00"); + BigDecimal artificerPrice = BigDecimal.ZERO; for (OrdersMassage ordersMassage : ordersMassageList) { orders.setDuration(massageType.getDuration()); orders.setMassageNum(ordersMassage.getNum()); price = massageType.getPrice().multiply(BigDecimal.valueOf(ordersMassage.getNum())); - orders.setMassagePrice(price); - BigDecimal massagePrice = price.multiply(orders.getTechnicianRate()).divide(new BigDecimal(100)).add(price);//技师等级加成金额 - massagePrice = massagePrice.multiply(orders.getVipRate()).divide(new BigDecimal(100));//会员优惠后金额 - massageTypeName = massageType.getTitle(); - payMoney = massagePrice.add(payMoney); if (orders.getParentId() != null && orders.getParentId() != 0) { orders.setAddTime(massageType.getDuration()); @@ -754,16 +747,37 @@ public class OrdersServiceImpl extends ServiceImpl implements } orders.setMassageTypeId(massageType.getMassageTypeId()); } + massageTypeName = massageType.getTitle(); + orders.setEntryName(massageTypeName); + orders.setMassagePrice(price); //保存现价 orders.setPrice(price); - orders.setEntryName(massageTypeName); + + //技师加成金额 + BigDecimal technicianMoney = price.multiply(orders.getTechnicianRate()).divide(new BigDecimal(100)); + technicianMoney = technicianMoney.setScale(0,BigDecimal.ROUND_UP); + orders.setTechnicianMoney(technicianMoney); + + //技师加成后总额 + BigDecimal priceMarkup = technicianMoney.add(price); + priceMarkup = priceMarkup.setScale(0,BigDecimal.ROUND_UP); + orders.setPriceMarkup(priceMarkup); + + //会员优惠后金额,及会员减免金额 + BigDecimal vipMoney = price.multiply(orders.getVipRate()).divide(new BigDecimal(100)); + vipMoney = vipMoney.setScale(0,BigDecimal.ROUND_UP); + BigDecimal vipReductionMoney = price.subtract(vipMoney); + orders.setVipReductionMoney(vipReductionMoney); + + //项目价格 = 原金额+技师加成金额-会员减免金额 + BigDecimal payMoney = price.add(technicianMoney).subtract(vipReductionMoney).setScale(0,BigDecimal.ROUND_UP); + orders.setMassageMoney(payMoney); //判断金额是否满足代金券金额最少消费额度 if(orders.getMassagePrice().compareTo(couponMinMoney) < 0){ return Result.error("当前应付总金额不满足优惠券使用的最小额度,请重新选择优惠券!"); } - orders.setMassageMoney(payMoney); //减去代金券的金额 payMoney = payMoney.subtract(orders.getCouponMoney()); @@ -789,24 +803,15 @@ public class OrdersServiceImpl extends ServiceImpl implements if(map.get("code").toString().equals("1")){ return Result.error("预约时间正忙,请更换其他时间!"); } - //计算车费 TravelPriceVo travelPriceVo = travelConfService.calcTravelPrice(orders.getArtificerId(), orders.getLongitude(), orders.getLatitude(),orders.getServeTime()); -// TravelPriceVo travelPriceVo = travelConfService.calcTravelPrice(orders.getArtificerId(), orders.getLongitude(), orders.getLatitude()); if (travelPriceVo == null) { return Result.error("暂不支持当前地址,请更换其他地址!"); } taxiMoney = new BigDecimal(travelPriceVo.getTravelPrice()); + taxiMoney = taxiMoney.setScale(0,BigDecimal.ROUND_UP); orders.setTaxiMoney(taxiMoney); orders.setKm(travelPriceVo.getKilometerNum()); - -// WSSsdrAddress wsSsdrAddress = AddressUtil.resolveAddress(orders.getAddress()); -// Map result = selectTaxiMoney(orders.getArtificerId(), orders.getLatitude(), orders.getLongitude(), wsSsdrAddress.getCity()); -// if (result == null) { -// return Result.error("暂不支持当前地址,请更换其他地址!"); -// } -// taxiMoney = new BigDecimal(String.valueOf(result.get("taxiMoney"))); -// orders.setTaxiMoney(taxiMoney); } else { if ("是".equals(value1)) { ArtificerTime artificerTime = artificerTimeService.getOne(new QueryWrapper().eq("orders_id", orders.getParentId()).last(" order by artificer_time_id desc limit 1 ")); @@ -818,49 +823,49 @@ public class OrdersServiceImpl extends ServiceImpl implements } } //加上车费 + BigDecimal subtract = payMoney; payMoney = payMoney.add(taxiMoney); - payMoney = payMoney.setScale(2,BigDecimal.ROUND_HALF_UP); + payMoney = payMoney.setScale(0,BigDecimal.ROUND_UP); orders.setPayMoney(payMoney); + //计算用户收益 !计算前先减去通行费用再计算技师抽成 + artificerPrice = subtract.multiply(artificer.getRate()).setScale(0,BigDecimal.ROUND_UP); //查询是否计算出租车扣费 String taxi = commonInfoService.findOne(394).getValue(); //计算技师出租车收益(按照技师表收益计算) if ("是".equals(taxi)) { //计算技师应该收取的出租车费用 - BigDecimal artificerTaxiMoney = taxiMoney.multiply(artificer.getRate()); + BigDecimal artificerTaxiMoney = taxiMoney.multiply(artificer.getRate()).setScale(0,BigDecimal.ROUND_UP); //计算出租车扣款 - BigDecimal pingTaxiMoney = taxiMoney.subtract(artificerTaxiMoney); + BigDecimal pingTaxiMoney = taxiMoney.subtract(artificerTaxiMoney).setScale(0,BigDecimal.ROUND_UP); //赋值技师出租收款 orders.setArtificerTaxiMoney(artificerTaxiMoney); //赋值出租车扣款 orders.setPingTaxiMoney(pingTaxiMoney); - //赋值技师收益 - artificerPrice = orders.getPayMoney().multiply(artificer.getRate()); + //用户收益加上通行费用 + artificerPrice = artificerPrice.add(artificerTaxiMoney); } else { //平台不扣费 出租车收益全由技师收取 orders.setArtificerTaxiMoney(orders.getTaxiMoney()); //设置出租车扣款为0 orders.setPingTaxiMoney(BigDecimal.ZERO); - //用户支付减去通行费用 - BigDecimal subtract = orders.getPayMoney().subtract(taxiMoney); - //计算用户收益 !计算前先减去通行费用再计算技师抽成 - artificerPrice = subtract.multiply(artificer.getRate()); //用户收益加上通行费用 artificerPrice = artificerPrice.add(taxiMoney); } - - //计算项目收益 - BigDecimal massageMoney = orders.getMassageMoney(); - if(orders.getCouponMoney()!=null){ - massageMoney = massageMoney.subtract(orders.getCouponMoney()); - } - //获取项目应支付金额 - BigDecimal projectBenefits = massageMoney; - //计算技师项目提成金额 - orders.setProjectBenefits(projectBenefits.multiply(artificer.getRate()).setScale(2,BigDecimal.ROUND_HALF_UP)); - orders.setArtificerMoney(artificerPrice); orders.setSumArtificerMoney(orders.getArtificerMoney()); + +// //计算项目收益 +// BigDecimal massageMoney = orders.getMassageMoney(); +// if(orders.getCouponMoney()!=null){ +// massageMoney = massageMoney.subtract(orders.getCouponMoney()); +// } +// //获取项目应支付金额 +// BigDecimal projectBenefits = massageMoney; + BigDecimal projectBenefits = subtract; + //计算技师项目提成金额 + orders.setProjectBenefits(projectBenefits.multiply(artificer.getRate()).setScale(0,BigDecimal.ROUND_UP)); + orders.setOrdersNo(getGeneralOrder()); orders.setStatus(1); @@ -896,60 +901,6 @@ public class OrdersServiceImpl extends ServiceImpl implements ordersMassage.setOrdersId(orders.getOrdersId()); ordersMassageService.save(ordersMassage); } - - //todo 改成支付时插入技师占用时间表 -// if (orders.getParentId() == null || orders.getParentId() == 0) { -// String serveTime = orders.getServeTime(); -// if (i > 0) { -// SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm"); -// Date parse = sdf1.parse(serveTime); -// Calendar calendar = Calendar.getInstance(); -// calendar.setTime(parse); -// //3.预约时间前及服务完成时间后问题 -// DateTime dateTime = DateUtil.offsetMinute(parse, -30); -// Calendar calendar1 = Calendar.getInstance(); -// calendar1.setTime(dateTime); -// String format1 = sdf1.format(calendar1.getTime()); -// String date1 = format1.substring(0, 10); -// String time1 = format1.substring(11, 16); -// ArtificerTime artificerTime1 = new ArtificerTime(); -// artificerTime1.setArtificerId(orders.getArtificerId()); -// artificerTime1.setArtificerDate(date1); -// artificerTime1.setArtificerTime(time1); -// artificerTime1.setClassify(1); -// artificerTime1.setOrdersId(orders.getOrdersId()); -// artificerTime1.setCreateTime(DateUtils.format(new Date())); -// artificerTimeService.save(artificerTime1); -// -// for (int j = 0; j < i; j++) { -// String format = sdf1.format(calendar.getTime()); -// String date = format.substring(0, 10); -// String time = format.substring(11, 16); -// ArtificerTime artificerTime = new ArtificerTime(); -// artificerTime.setArtificerId(orders.getArtificerId()); -// artificerTime.setArtificerDate(date); -// artificerTime.setArtificerTime(time); -// artificerTime.setClassify(1); -// artificerTime.setOrdersId(orders.getOrdersId()); -// artificerTime.setCreateTime(DateUtils.format(new Date())); -// artificerTimeService.save(artificerTime); -// calendar.add(Calendar.MINUTE, minute); -// } -// } - // todo 这块只是满足当时的需求注释的 (后续有变化需要改动!!!) -// else { -// String date = serveTime.substring(0, 10); -// String time = serveTime.substring(11, 16); -// ArtificerTime artificerTime = new ArtificerTime(); -// artificerTime.setArtificerId(orders.getArtificerId()); -// artificerTime.setArtificerDate(date); -// artificerTime.setArtificerTime(time); -// artificerTime.setClassify(1); -// artificerTime.setOrdersId(orders.getOrdersId()); -// artificerTime.setCreateTime(DateUtils.format(new Date())); -// artificerTimeService.save(artificerTime); -// } -// } return Result.success().put("data", orders); }