插入订单,增加师加成后的价格,技师加成金额,VIP减免价格字段,并将数值改成整数
This commit is contained in:
parent
64236e3179
commit
68ad7921f8
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue