插入订单,增加师加成后的价格,技师加成金额,VIP减免价格字段,并将数值改成整数

This commit is contained in:
曹磊 2024-07-16 11:16:34 +08:00
parent 64236e3179
commit 68ad7921f8
1 changed files with 45 additions and 94 deletions

View File

@ -717,24 +717,17 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersDao, Orders> implements
}
orders.setTechnicianRate(artificerVipRate);
BigDecimal payMoney = BigDecimal.ZERO;
List<OrdersMassage> 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<OrdersDao, Orders> 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<OrdersDao, Orders> 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<String, Object> 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<ArtificerTime>().eq("orders_id", orders.getParentId()).last(" order by artificer_time_id desc limit 1 "));
@ -818,49 +823,49 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersDao, Orders> 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<OrdersDao, Orders> 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);
}