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 ba63947..a402aae 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 @@ -76,6 +76,7 @@ import org.joda.time.format.DateTimeFormatter; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import weixin.popular.bean.message.templatemessage.TemplateMessageItem; import java.math.BigDecimal; @@ -876,9 +877,623 @@ public class OrdersServiceImpl extends ServiceImpl implements return Result.success().put("data", orders); } + /** + * 入参与insertOrders一致,就是没有代金券 + * 判断差额,如差额为0则修改原单据,如差额不为0则新增单据。 + * @param orders + * @return + */ @Override + @Transactional public Result updateOrders(Orders orders) { Orders oldOrders = baseMapper.selectById(orders.getOrdersId()); + + if (oldOrders.getStatus() == 3 || oldOrders.getStatus() == 5) { + return Result.error("已完成的订单不可修改!"); + } + if (oldOrders.getStatus() == 4) { + return Result.error("已取消的订单不可修改!"); + } + if (oldOrders.getStatus() == 10) { + //只能修改,技师和时间 (技师等级大于等于原单据等级) + Long massageTypeId; + if(orders.getOrdersMassageList() != null){ + List ordersMassageList = orders.getOrdersMassageList(); + massageTypeId = ordersMassageList.get(0).getMassageId(); + }else { + massageTypeId = orders.getMassageTypeId(); + } + if(massageTypeId == null){ + return Result.error("当前订单没有选择服务项目!"); + } + if (orders.getMassageTypeId()!=null && massageTypeId != oldOrders.getMassageTypeId()) { + return Result.error("当前订单无法修改服务项目!"); + } + MassageType massageType = massageTypeService.getById(massageTypeId); + orders.setMassageTypeId(massageTypeId); + orders.setEntryName(massageType.getTitle()); + orders.setPrice(BigDecimal.ZERO); + + String value1 = commonInfoService.findOne(395).getValue(); + int i = 0; + //1.锁定本单服务时间问题 + //项目时间 + Integer duration = massageType.getDuration(); + //精油 + String jyValue = commonInfoService.findOne(392).getValue(); + + int minute=0; + int jyMinuteInt = Integer.parseInt(jyValue); + //公交1h,出租30 , 免费 1h(加出行时间) + Integer tripWay = orders.getTripWay(); + if(Objects.nonNull(tripWay)&&(tripWay==1 || tripWay==3)){ + duration=duration+30; + } + if ("是".equals(value1)) { + if(orders.getClassifyId() == 91){ + minute=jyMinuteInt; + if (duration % minute == 0) { + i = duration / minute; + } else { + i = duration / minute; + i++; + } + }else{ + minute=jyMinuteInt; + if (duration % minute == 0) { + i = duration / minute; + } else { + i = duration / minute; + i++; + } + } + } + + String serveTime = orders.getServeTime(); + String date = serveTime.substring(0, 10); + String time = serveTime.substring(11, 16); + ArtificerTime artificerTime = artificerTimeService.getOne( + new QueryWrapper() + .eq("artificer_id", orders.getArtificerId()) + .eq("artificer_date", date).eq("artificer_time", time)); + if (artificerTime != null) { + return Result.error("预约时间正忙,请更换其他时间!"); + } + if (i > 1) { + Date parse = DateUtils.stringToDate(serveTime,"yyyy-MM-dd HH:mm");; + Calendar calendar = Calendar.getInstance(); + calendar.setTime(parse); + for (int j = 1; j < i; j++) { + calendar.add(Calendar.MINUTE, minute); + String format = DateUtils.format(calendar.getTime()); + date = format.substring(0, 10); + time = format.substring(11, 16); + artificerTime = artificerTimeService.getOne( + new QueryWrapper() + .eq("artificer_id", orders.getArtificerId()) + .eq("artificer_date", date).eq("artificer_time", time)); + if (artificerTime != null) { + return Result.error("预约时间正忙,请更换其他时间!"); + } + } + } + + TravelPriceVo travelPriceVo = travelConfService.calcTravelPrice(orders.getArtificerId(), orders.getLongitude(), orders.getLatitude()); + if (travelPriceVo == null) { + return Result.error("暂不支持当前地址,请更换其他地址!"); + } + BigDecimal taxiMoney = new BigDecimal(travelPriceVo.getTravelPrice()); + orders.setTaxiMoney(taxiMoney); + orders.setKm(travelPriceVo.getKilometerNum()); + orders.setPayMoney(taxiMoney); + orders.setStatus(1); + orders.setCreateTime(DateUtils.format(new Date())); + Artificer artificer = artificerService.getById(orders.getArtificerId()); + orders.setArtificerRate(artificer.getRate()); + orders.setSumMoney(orders.getPayMoney()); + baseMapper.insert(orders); + + if(orders.getOrdersMassageList() != null){ + List ordersMassageList = orders.getOrdersMassageList(); + for (OrdersMassage ordersMassage : ordersMassageList) { + ordersMassage.setOrdersId(orders.getOrdersId()); + ordersMassageService.save(ordersMassage); + } + }else { + OrdersMassage ordersMassage = new OrdersMassage(); + ordersMassage.setOrdersId(orders.getOrdersId()); + ordersMassage.setMassageId(massageTypeId); + ordersMassage.setNum(1); + ordersMassageService.save(ordersMassage); + } + Orders ordersOld = new Orders(); + ordersOld.setOrdersId(orders.getOrdersId()); + ordersOld.setStatus(11); + baseMapper.updateById(ordersOld);//原单暂变成挂单状态 + return Result.success().put("data", orders); + } + + if (oldOrders.getStatus() == 6) { + //升级项目操作,只能修改,项目(金额大于等于当前项目金额) + if (StringUtils.isNotBlank(orders.getServeTime()) && !orders.getServeTime().equals(oldOrders.getServeTime())) { + return Result.error("当前订单无法修改时间!"); + } + if (orders.getArtificerId() != null && orders.getArtificerId() != oldOrders.getArtificerId()) { + return Result.error("当前订单无法修改技师!"); + } + //判断新price是否大于旧price + //如果是套餐使用原价计算差额 + + + } + if (oldOrders.getStatus() == 1) { + //未支付随便改,更新原单据 + Long massageTypeId; + if(orders.getOrdersMassageList() != null){ + List ordersMassageList = orders.getOrdersMassageList(); + massageTypeId = ordersMassageList.get(0).getMassageId(); + }else { + return Result.error("当前订单没有选择服务项目!"); + } + if(orders.getUserPackageDetailId() !=null ){ + if (massageTypeId != oldOrders.getUserPackageDetailId()) { + return Result.error("当前套餐类订单无法修改项目!"); + } + UserPackageDetail userPackageDetail = userPackageDetailService.getById(massageTypeId); + //修改套餐类订单 + String value1 = commonInfoService.findOne(395).getValue(); + int i = 0; + //1.锁定本单服务时间问题 + //项目时间 + Integer duration = userPackageDetail.getDuration(); + //精油 + String jyValue = commonInfoService.findOne(392).getValue(); + int minute=0; + int jyMinuteInt = Integer.parseInt(jyValue); + //公交1h,出租30 , 免费 1h(加出行时间) + Integer tripWay = orders.getTripWay(); + if(Objects.nonNull(tripWay)&&(tripWay==1 || tripWay==3)){ + duration=duration+30; + } + if ("是".equals(value1)) { + if(orders.getClassifyId() == 91){ + minute=jyMinuteInt; + if (duration % minute == 0) { + i = duration / minute; + } else { + i = duration / minute; + i++; + } + }else{ + minute=jyMinuteInt; + if (duration % minute == 0) { + i = duration / minute; + } else { + i = duration / minute; + i++; + } + } + } + + BigDecimal taxiMoney = BigDecimal.ZERO; + if (orders.getParentId() == null || orders.getParentId() == 0) { + String serveTime = orders.getServeTime(); + String date = serveTime.substring(0, 10); + String time = serveTime.substring(11, 16); + ArtificerTime artificerTime = artificerTimeService.getOne( + new QueryWrapper() + .eq("artificer_id", orders.getArtificerId()) + .eq("artificer_date", date).eq("artificer_time", time)); + if (artificerTime != null) { + return Result.error("预约时间正忙,请更换其他时间!"); + } + + if (i > 1) { + Date parse = DateUtils.stringToDate(serveTime, "yyyy-MM-dd HH:mm"); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(parse); + for (int j = 1; j < i; j++) { + calendar.add(Calendar.MINUTE, minute); + String format = DateUtils.format(calendar.getTime()); + date = format.substring(0, 10); + time = format.substring(11, 16); + artificerTime = artificerTimeService.getOne( + new QueryWrapper() + .eq("artificer_id", orders.getArtificerId()) + .eq("artificer_date", date).eq("artificer_time", time)); + if (artificerTime != null) { + return Result.error("预约时间正忙,请更换其他时间!"); + } + } + } + + TravelPriceVo travelPriceVo = travelConfService.calcTravelPrice(orders.getArtificerId(), orders.getLongitude(), orders.getLatitude()); + if (travelPriceVo == null) { + return Result.error("暂不支持当前地址,请更换其他地址!"); + } + taxiMoney = new BigDecimal(travelPriceVo.getTravelPrice()); + orders.setTaxiMoney(taxiMoney); + orders.setKm(travelPriceVo.getKilometerNum()); + + } else { + if ("是".equals(value1)) { + ArtificerTime artificerTime = artificerTimeService.getOne(new QueryWrapper().eq("orders_id", orders.getParentId()).last(" order by artificer_time_id desc limit 1 ")); + String serveTime = artificerTime.getArtificerDate() + " " + artificerTime.getArtificerTime(); + String date = null; + String time = null; + Date parse = DateUtils.stringToDate(serveTime, "yyyy-MM-dd HH:mm"); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(parse); + for (int j = 0; j < i; j++) { + calendar.add(Calendar.MINUTE, minute); + String format = DateUtils.format(calendar.getTime()); + date = format.substring(0, 10); + time = format.substring(11, 16); + artificerTime = artificerTimeService.getOne( + new QueryWrapper() + .eq("artificer_id", orders.getArtificerId()) + .eq("artificer_date", date).eq("artificer_time", time)); + if (artificerTime != null) { + return Result.error("预约时间正忙,请更换其他时间!"); + } + } + } + } + //加上车费 + orders.setPayMoney(orders.getMassageMoney().add(taxiMoney)); + BigDecimal artificerPrice = BigDecimal.ZERO; + Artificer artificer = artificerService.getById(orders.getArtificerId()); + //查询是否计算出租车扣费 + String taxi = commonInfoService.findOne(394).getValue(); + //计算技师出租车收益(按照技师表收益计算) + if ("是".equals(taxi)) { + //计算技师应该收取的出租车费用 + BigDecimal artificerTaxiMoney = taxiMoney.multiply(artificer.getRate()); + //计算出租车扣款 + BigDecimal pingTaxiMoney = taxiMoney.subtract(artificerTaxiMoney); + //赋值技师出租收款 + orders.setArtificerTaxiMoney(artificerTaxiMoney); + //赋值出租车扣款 + orders.setPingTaxiMoney(pingTaxiMoney); + //赋值技师收益 + artificerPrice = orders.getPayMoney().multiply(artificer.getRate()); + } 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 projectBenefits = orders.getMassageMoney(); + //计算技师项目提成金额 + orders.setProjectBenefits(projectBenefits.multiply(artificer.getRate()).setScale(2,BigDecimal.ROUND_HALF_UP)); + + orders.setArtificerMoney(artificerPrice); + orders.setSumArtificerMoney(orders.getArtificerMoney()); + orders.setOrdersNo(getGeneralOrder()); + orders.setStatus(1); + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + orders.setCreateTime(sdf.format(new Date())); + //留存订单生成时的技师分成比例 + orders.setArtificerRate(artificer.getRate()); + orders.setSumMoney(orders.getPayMoney()); + //修改订单 + baseMapper.updateById(orders); + return Result.success().put("data", orders); + }else { + //修改一般订单 + MassageType massageType = massageTypeService.getById(massageTypeId); + orders.setMassageTypeId(massageType.getMassageTypeId()); + orders.setEntryName(massageType.getTitle()); + + //获取原优惠卷 + List oldCouponList = Lists.newArrayList(); + String oldCouponId = oldOrders.getCouponId(); + if (oldCouponId.length() > 0) { + String[] oldCouponArr = oldCouponId.trim().split(","); + for (int i = 0; i < oldCouponArr.length; i++) { + if (oldCouponArr[i] != null && !oldCouponArr[i].equals("")) { + oldCouponList.add(oldCouponArr[i]); + } + } + } + + //判断新优惠卷是否可用 + BigDecimal couponMinMoney = BigDecimal.ZERO;//所有代金券的使用额度总和 + //获取并判断代金券信息 + List CouponUserList = Lists.newArrayList(); + String couponIds = orders.getCouponId(); + if (couponIds.length() > 0) { + String[] couponArr = couponIds.trim().split(","); + BigDecimal couponMoney = new BigDecimal(0); + StringBuffer couponNameSb = new StringBuffer(); + for (int i = 0; i < couponArr.length; i++) { + if (couponArr[i] != null && !couponArr[i].equals("")) { + String couponIdStr = couponArr[i]; + Long couponId = Long.valueOf(couponIdStr); + CouponUser couponUser = couponUserService.getById(couponId); + boolean isGoon = false; + if (!couponUser.getStatus().equals(0)) { + isGoon = false;//被占用 + } + if (!isGoon) { + if (oldCouponList.size() > 0) { + if (oldCouponList.contains(couponIdStr)) { + isGoon = true;//被占用的新优惠卷在原优惠卷中存在则继续 + } + } + } + if (!isGoon) { + return Result.error("优惠券已被使用!"); + } + if (couponUser.getClassifyId() != 0) { + if (orders.getClassifyId() != couponUser.getClassifyId()) { + return Result.error("优惠券不满足使用条件!"); + } + } + couponMinMoney = couponMinMoney.add(couponUser.getMinMoney()); + CouponUserList.add(couponUser); + BigDecimal money = couponUser.getMoney(); + couponMoney = couponMoney.add(money); + couponNameSb.append(couponUser.getCouponName()); + couponNameSb.append(","); + } + } + orders.setCouponName(couponNameSb.toString()); + orders.setCouponMoney(couponMoney); + } else { + orders.setCouponName(""); + orders.setCouponMoney(BigDecimal.ZERO); + } + //获取用户VIP的优惠信息 + BigDecimal vipRate = new BigDecimal(100); + UserVip userVip = userVipService.selectUserVipByUserId(orders.getUserId()); + if (userVip != null) { + if (userVip.getIsVip() == 1) { + //获取用户到期时间 + Date date = null; + try { + date = DateUtils.stringToDate(userVip.getEndTime(), DateUtils.DATE_TIME_PATTERN); + 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(); + } + } + } + orders.setVipRate(vipRate); + Artificer artificer = artificerService.getById(orders.getArtificerId()); + orders.setTechnicianType(artificer.getTechnicianType()); + BigDecimal artificerVipRate = BigDecimal.ZERO; + VipDetails artificerVipDetails = vipDetailsDao.selectOne(new QueryWrapper().eq("vip_name_type", artificer.getTechnicianType())); + if (artificerVipDetails != null) { + artificerVipRate = artificerVipDetails.getRate(); + } + orders.setTechnicianRate(artificerVipRate); + + BigDecimal payMoney = BigDecimal.ZERO; + + List ordersMassageList = orders.getOrdersMassageList(); + + BigDecimal price = BigDecimal.ZERO; + String massageTypeName = ""; + BigDecimal artificerPrice = new BigDecimal("0.00"); + + for (OrdersMassage ordersMassage : ordersMassageList) { + price = massageType.getPrice().multiply(BigDecimal.valueOf(ordersMassage.getNum())); + 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()); + } + orders.setMassageTypeId(massageType.getMassageTypeId()); + } + //保存现价 + orders.setPrice(price); + orders.setEntryName(massageTypeName); + + //判断金额是否满足代金券金额最少消费额度 + if (payMoney.compareTo(couponMinMoney) < 0) { + return Result.error("当前应付总金额不满足优惠券使用的最小额度,请重新选择优惠卷!"); + } + + //减去代金券的金额 + payMoney = payMoney.subtract(orders.getCouponMoney()); + orders.setMassageMoney(payMoney); + + String value1 = commonInfoService.findOne(395).getValue(); + int i = 0; + //1.锁定本单服务时间问题 + //项目时间 + Integer duration = massageType.getDuration(); + //精油 + String jyValue = commonInfoService.findOne(392).getValue(); + int minute = 0; + int jyMinuteInt = Integer.parseInt(jyValue); + //公交1h,出租30 , 免费 1h(加出行时间) + Integer tripWay = orders.getTripWay(); + if (Objects.nonNull(tripWay) && (tripWay == 1 || tripWay == 3)) { + duration = duration + 30; + } + if ("是".equals(value1)) { + if (orders.getClassifyId() == 91) { + minute = jyMinuteInt; + if (duration % minute == 0) { + i = duration / minute; + } else { + i = duration / minute; + i++; + } + } else { + minute = jyMinuteInt; + if (duration % minute == 0) { + i = duration / minute; + } else { + i = duration / minute; + i++; + } + } + } + + BigDecimal taxiMoney = BigDecimal.ZERO; + if (orders.getParentId() == null || orders.getParentId() == 0) { + String serveTime = orders.getServeTime(); + String date = serveTime.substring(0, 10); + String time = serveTime.substring(11, 16); + ArtificerTime artificerTime = artificerTimeService.getOne( + new QueryWrapper() + .eq("artificer_id", orders.getArtificerId()) + .eq("artificer_date", date).eq("artificer_time", time)); + if (artificerTime != null) { + return Result.error("预约时间正忙,请更换其他时间!"); + } + + if (i > 1) { + Date parse = DateUtils.stringToDate(serveTime, "yyyy-MM-dd HH:mm"); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(parse); + for (int j = 1; j < i; j++) { + calendar.add(Calendar.MINUTE, minute); + String format = DateUtils.format(calendar.getTime()); + date = format.substring(0, 10); + time = format.substring(11, 16); + artificerTime = artificerTimeService.getOne( + new QueryWrapper() + .eq("artificer_id", orders.getArtificerId()) + .eq("artificer_date", date).eq("artificer_time", time)); + if (artificerTime != null) { + return Result.error("预约时间正忙,请更换其他时间!"); + } + } + } + + TravelPriceVo travelPriceVo = travelConfService.calcTravelPrice(orders.getArtificerId(), orders.getLongitude(), orders.getLatitude()); + if (travelPriceVo == null) { + return Result.error("暂不支持当前地址,请更换其他地址!"); + } + taxiMoney = new BigDecimal(travelPriceVo.getTravelPrice()); + orders.setTaxiMoney(taxiMoney); + orders.setKm(travelPriceVo.getKilometerNum()); + + } else { + if ("是".equals(value1)) { + ArtificerTime artificerTime = artificerTimeService.getOne(new QueryWrapper().eq("orders_id", orders.getParentId()).last(" order by artificer_time_id desc limit 1 ")); + String serveTime = artificerTime.getArtificerDate() + " " + artificerTime.getArtificerTime(); + String date = null; + String time = null; + Date parse = DateUtils.stringToDate(serveTime, "yyyy-MM-dd HH:mm"); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(parse); + for (int j = 0; j < i; j++) { + calendar.add(Calendar.MINUTE, minute); + String format = DateUtils.format(calendar.getTime()); + date = format.substring(0, 10); + time = format.substring(11, 16); + artificerTime = artificerTimeService.getOne( + new QueryWrapper() + .eq("artificer_id", orders.getArtificerId()) + .eq("artificer_date", date).eq("artificer_time", time)); + if (artificerTime != null) { + return Result.error("预约时间正忙,请更换其他时间!"); + } + } + } + } + //加上车费 + orders.setPayMoney(payMoney.add(taxiMoney)); + + //查询是否计算出租车扣费 + String taxi = commonInfoService.findOne(394).getValue(); + //计算技师出租车收益(按照技师表收益计算) + if ("是".equals(taxi)) { + //计算技师应该收取的出租车费用 + BigDecimal artificerTaxiMoney = taxiMoney.multiply(artificer.getRate()); + //计算出租车扣款 + BigDecimal pingTaxiMoney = taxiMoney.subtract(artificerTaxiMoney); + //赋值技师出租收款 + orders.setArtificerTaxiMoney(artificerTaxiMoney); + //赋值出租车扣款 + orders.setPingTaxiMoney(pingTaxiMoney); + //赋值技师收益 + artificerPrice = orders.getPayMoney().multiply(artificer.getRate()); + } 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 projectBenefits = orders.getMassageMoney(); + //计算技师项目提成金额 + orders.setProjectBenefits(projectBenefits.multiply(artificer.getRate()).setScale(2, BigDecimal.ROUND_HALF_UP)); + + orders.setArtificerMoney(artificerPrice); + orders.setSumArtificerMoney(orders.getArtificerMoney()); +// orders.setOrdersNo(getGeneralOrder()); + orders.setStatus(1); + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + orders.setCreateTime(sdf.format(new Date())); + //留存订单生成时的技师分成比例 + orders.setArtificerRate(artificer.getRate()); + orders.setSumMoney(orders.getPayMoney()); + //修改订单 + baseMapper.updateById(orders); + + //释放原优惠卷 + if (oldCouponList.size() > 0) { + for (String couponIdStr : oldCouponList) { + CouponUser couponUser = new CouponUser(); + couponUser.setId(Long.valueOf(couponIdStr)); + couponUser.setStatus(0); + couponUserService.updateById(couponUser); + } + } + //占用新代金券 + if (CouponUserList.size() > 0) { + for (CouponUser couponUser : CouponUserList) { + couponUser.setStatus(1); + couponUserService.updateById(couponUser); + } + } + return Result.success().put("data", orders); + } + }else{ + //判断是否是可修改 + boolean canUpdate = commonInfoService.isCheckEditOrder(DateUtils.stringToDate(orders.getServeTime(),"yyyy-MM-dd HH:mm") ,new Date()); + if(!canUpdate){ + return Result.error("当前订单无法修改!"); + } + //判断是否是修改后的订单再继续修改 + if(orders.getOrdersId() != null){ + return Result.error("当前订单是修改后生成的新订单无法修改!"); + } + } + if (StringUtils.isNotBlank(orders.getServeTime()) && !orders.getServeTime().equals(oldOrders.getServeTime())) { //修改预约时间 //判断订单是否开始 @@ -1641,7 +2256,7 @@ public class OrdersServiceImpl extends ServiceImpl implements /*** * 待补单处理及待补单全单退款 * @param userId - * @param isAuto 是否自动退款 1是 系统自动变成待补单,0否 用户点击操作变成待补单 + * @param isAuto 是否自动退款 1是 技师操作变成待补单,0否 用户点击操作变成待补单 * @param type 是否全额退款,1车费 2项目费 3全部 * @return */ @@ -1804,6 +2419,8 @@ public class OrdersServiceImpl extends ServiceImpl implements userMoneyDetails.setBlFlag(1); userMoneyDetailsService.save(userMoneyDetails); } + BigDecimal payMoney = orders.getPayMoney().subtract(orders.getTaxiMoney()); + orders.setPayMoney(payMoney); } if(orders.getOldOrdersId() !=null){ //此笔单子退车费,并改为取消,再将原单改成待补单 @@ -2196,6 +2813,8 @@ public class OrdersServiceImpl extends ServiceImpl implements userMoneyDetails.setBlFlag(1); userMoneyDetailsService.save(userMoneyDetails); } + BigDecimal payMoney = orders.getPayMoney().subtract(orders.getTaxiMoney()); + orders.setPayMoney(payMoney); } if(orders.getOldOrdersId() !=null){ //此笔单子退车费,并改为取消,再将原单改成待补单 diff --git a/src/main/java/com/sqx/modules/common/enums/CommonEnum.java b/src/main/java/com/sqx/modules/common/enums/CommonEnum.java index 6461a85..3470f09 100644 --- a/src/main/java/com/sqx/modules/common/enums/CommonEnum.java +++ b/src/main/java/com/sqx/modules/common/enums/CommonEnum.java @@ -22,10 +22,10 @@ public enum CommonEnum { /**服务开始n分钟后不可以取消订单*/ V3_ORDER_FORM_CANCEL_START_02(440, "v3_order_form", "服务开始n分钟后不可以取消订单", "15"), - /**距离服务开始前n个小时可修改*/ - V3_ORDER_FORM_EDIT_NOT_START_01(441, "v3_order_form", "距离服务开始前n个小时可修改", "2"), - /**距离服务开始n个小时内不可修改*/ - V3_ORDER_FORM_EDIT_NOT_START_02(442, "v3_order_form", "距离服务开始n个小时内不可修改", "2"), + /**距离服务开始前n分钟可修改*/ + V3_ORDER_FORM_EDIT_NOT_START_01(441, "v3_order_form", "距离服务开始前n分钟可修改", "120"), + /**距离服务开始n分钟内不可修改*/ + V3_ORDER_FORM_EDIT_NOT_START_02(442, "v3_order_form", "距离服务开始n分钟内不可修改", "120"), /**夏令时开始时间~结束时间*/ V3_TRAVEL_CONF_DAYLIGHT_SAVING_TIME(443, "v3_travel_conf", "夏令时开始时间~结束时间", "0521,0823"), diff --git a/src/main/java/com/sqx/modules/common/service/impl/CommonInfoServiceImpl.java b/src/main/java/com/sqx/modules/common/service/impl/CommonInfoServiceImpl.java index ea5dc7d..4b96735 100644 --- a/src/main/java/com/sqx/modules/common/service/impl/CommonInfoServiceImpl.java +++ b/src/main/java/com/sqx/modules/common/service/impl/CommonInfoServiceImpl.java @@ -195,29 +195,21 @@ public class CommonInfoServiceImpl extends ServiceImpl configMap = getMapByCondition(CommonEnum.GroupConditionEnum.V3_ORDER_FORM.getValue()); - //距离服务开始前n个小时可修改 - 2 + //距离服务开始前n分钟可修改 120 CommonInfo v3OrderFormEditNotStart01 = configMap.get(CommonEnum.V3_ORDER_FORM_EDIT_NOT_START_01.getKey()); - //距离服务开始n个小时内不可修改 - 2 - CommonInfo v3OrderFormEditNotStart02 = configMap.get(CommonEnum.V3_ORDER_FORM_EDIT_NOT_START_02.getKey()); - Double v3OrderFormEditNotStart01I = CommonConfigUtil.getDoubleValue(v3OrderFormEditNotStart01.getValue()); - if(v3OrderFormEditNotStart01I == null) v3OrderFormEditNotStart01I = -1D; - Double v3OrderFormEditNotStart02I = CommonConfigUtil.getDoubleValue(v3OrderFormEditNotStart02.getValue()); - if(v3OrderFormEditNotStart02I == null) v3OrderFormEditNotStart02I = -1D; + Long v3OrderFormEditNotStart01I = CommonConfigUtil.getLongValue(v3OrderFormEditNotStart01.getValue()); + if(v3OrderFormEditNotStart01I == null) v3OrderFormEditNotStart01I = 120L; - if(bnDiffDay >= 0) { - //正数,服务开始前 - if(v3OrderFormEditNotStart01I == -1) return true; - return bnDiffDay >= v3OrderFormEditNotStart01I; - } else { - //负数,服务开始后 - if(v3OrderFormEditNotStart02I == -1) return true; - double burdenV3OrderFormEditNotStart02I = - v3OrderFormEditNotStart02I; - return burdenV3OrderFormEditNotStart02I >= bnDiffDay; + if(bnDiffDay >= v3OrderFormEditNotStart01I) { + return true; + }else{ + return false; } + } } \ No newline at end of file