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 1e29acc..3329923 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 @@ -877,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())) { //修改预约时间 //判断订单是否开始 @@ -1642,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 */ @@ -1663,149 +2277,164 @@ public class OrdersServiceImpl extends ServiceImpl implements private Result cancelSupplementMassageOrders(Long userId, Orders orders, Integer isAuto, Integer type) { if(type == 1){ - //退车费或扣车费,成为待补单 - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - String time = simpleDateFormat.format(new Date()); - //退款金额 - BigDecimal userMoney = BigDecimal.ZERO; - UserMoneyDetails userMoneyDetails = new UserMoneyDetails(); - if(isAuto == 0){ - //退款车费 - userMoney = orders.getTaxiMoney(); - if (orders.getPayWay() == 1 || orders.getPayWay() == 2 || orders.getPayWay() == 3 || orders.getPayWay() == 4) { - boolean refund = wxService.refund(orders.getOrdersNo(), orders.getPayMoney(), userMoney, orders.getPayWay()); - if (!refund) { - return Result.error("退款失败,请联系客服!"); - } - userMoneyDetails.setManipulateType(1); - userMoneyDetails.setBlFlag(2); - } else if (orders.getPayWay() == 6) { - String data = aliPayController.alipayRefund(orders.getOrdersNo(), userMoney); - if (StringUtils.isNotBlank(data)) { - log.error(data); - JSONObject jsonObject = JSON.parseObject(data); - JSONObject alipay_trade_refund_response = jsonObject.getJSONObject("alipay_trade_refund_response"); - String code1 = alipay_trade_refund_response.getString("code"); - if (!"10000".equals(code1)) { - return Result.error("退款失败!" + alipay_trade_refund_response.getString("sub_msg")); + if(orders.getTaxiMoney().compareTo(BigDecimal.ZERO) != 0){ + //退车费或扣车费,成为待补单 + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String time = simpleDateFormat.format(new Date()); + //退款金额 + BigDecimal userMoney = BigDecimal.ZERO; + UserMoneyDetails userMoneyDetails = new UserMoneyDetails(); + if(isAuto == 0){ + //退款车费 + userMoney = orders.getTaxiMoney(); + if (orders.getPayWay() == 1 || orders.getPayWay() == 2 || orders.getPayWay() == 3 || orders.getPayWay() == 4) { + boolean refund = wxService.refund(orders.getOrdersNo(), orders.getPayMoney(), userMoney, orders.getPayWay()); + if (!refund) { + return Result.error("退款失败,请联系客服!"); } + userMoneyDetails.setManipulateType(1); + userMoneyDetails.setBlFlag(2); + } else if (orders.getPayWay() == 6) { + String data = aliPayController.alipayRefund(orders.getOrdersNo(), userMoney); + if (StringUtils.isNotBlank(data)) { + log.error(data); + JSONObject jsonObject = JSON.parseObject(data); + JSONObject alipay_trade_refund_response = jsonObject.getJSONObject("alipay_trade_refund_response"); + String code1 = alipay_trade_refund_response.getString("code"); + if (!"10000".equals(code1)) { + return Result.error("退款失败!" + alipay_trade_refund_response.getString("sub_msg")); + } + } else { + return Result.error("退款失败!"); + } + userMoneyDetails.setManipulateType(1); + userMoneyDetails.setBlFlag(2); } else { - return Result.error("退款失败!"); + userMoneyService.updateMoney(1, orders.getUserId(), userMoney.doubleValue()); + //查询用户当前余额 + UserMoney userNowMoney = userMoneyService.selectUserMoneyByUserId(orders.getUserId()); + //插入余额 + userMoneyDetails.setBalance(userNowMoney.getMoney()); + //插入操作类型为已操作用户余额 + userMoneyDetails.setManipulateType(2); + userMoneyDetails.setBlFlag(1); } - userMoneyDetails.setManipulateType(1); - userMoneyDetails.setBlFlag(2); - } else { - userMoneyService.updateMoney(1, orders.getUserId(), userMoney.doubleValue()); + userMoneyDetails.setMoney(userMoney); + userMoneyDetails.setUserId(orders.getUserId()); + userMoneyDetails.setContent("订单号:" + orders.getOrdersNo() + ",车费已原路退款!"); + userMoneyDetails.setTitle("订单退款"); + userMoneyDetails.setType(1); + userMoneyDetails.setCreateTime(time); + userMoneyDetails.setArtificerId(orders.getArtificerId()); + userMoneyDetails.setBlRole(1); + userMoneyDetailsService.save(userMoneyDetails); + + Artificer artificer2 = artificerService.getById(orders.getArtificerId()); + if (userId != null && artificer2.getUserId().equals(userId)) { + BigDecimal newCreditScore = BigDecimal.ZERO; + MessageInfo messageInfo = new MessageInfo(); + messageInfo.setState("8"); + messageInfo.setUserId(String.valueOf(artificer2.getUserId())); + messageInfo.setTitle("转待补单订单:" + orders.getOrdersNo()); + String value1 = commonInfoService.findOne(384).getValue(); + BigDecimal creditScore = new BigDecimal(value1); + newCreditScore = artificer2.getCreditScore().subtract(creditScore); + messageInfo.setContent("扣除信誉分:" + creditScore); + artificer2.setCreditScore(newCreditScore); + String value2 = commonInfoService.findOne(385).getValue(); + BigDecimal minScore = new BigDecimal(value2); + if (artificer2.getCreditScore().doubleValue() < minScore.doubleValue()) { + artificer2.setStatus(2); + } + artificerService.updateById(artificer2); + messageService.saveBody(messageInfo); + } + + UserEntity userEntity = userService.selectUserById(orders.getUserId()); + //超过十个字 则截取 + String content = "订单:"+orders.getOrdersNo()+",转为待补单"; + //消息推送 + if (StringUtils.isNotEmpty(userEntity.getOpenId())) { + CommonInfo one = commonInfoService.findOne(248); + List msgList = new ArrayList<>(); + msgList.add(orders.getOrdersNo()); + msgList.add(content); + msgList.add("车费已原路退还!"); + SenInfoCheckUtil.sendMsg(userEntity.getOpenId(), one.getValue(), msgList, 2); + } + + if (StringUtils.isNotEmpty(userEntity.getClientid())) { + userService.pushToSingle("订单通知", "订单已转为,车费已原路退还!", userEntity.getClientid()); + } + + if (StringUtils.isNotBlank(userEntity.getWxOpenId())) { + String apkey = commonInfoService.findOne(313).getValue(); + LinkedHashMap data = new LinkedHashMap<>(); + data.put("character_string12", new TemplateMessageItem(orders.getOrdersNo(), "#d71345")); + data.put("thing17", new TemplateMessageItem(content, "#d71345")); + data.put("time14", new TemplateMessageItem(DateUtils.format(new Date()), "#d71345")); + userService.sendWxMessage(apkey, data, userEntity.getWxOpenId()); + } + + } + if(isAuto == 1){ + //按照比例 将扣除的车费钱 + BigDecimal taxiMoney = orders.getTaxiMoney(); + BigDecimal sumMoney = orders.getTaxiMoney();//总扣费 + Artificer artificer = artificerService.getById(orders.getArtificerId()); + BigDecimal artificerTaxiMoney = orders.getTaxiMoney();//扣车费 + BigDecimal pingTaxiMoney = BigDecimal.ZERO; + + String taxi = commonInfoService.findOne(394).getValue(); + if ("是".equals(taxi)) { + artificerTaxiMoney = taxiMoney.multiply(artificer.getRate()); + pingTaxiMoney = taxiMoney.subtract(artificerTaxiMoney); + } + UserEntity artificerUser = userService.selectUserById(artificer.getUserId()); + + orders.setShopMoney(BigDecimal.ZERO); + orders.setArtificerMoney(BigDecimal.ZERO); + orders.setSumArtificerMoney(sumMoney.setScale(2, BigDecimal.ROUND_DOWN)); + orders.setOneUserMoney(BigDecimal.ZERO); + orders.setOneArtificerMoney(BigDecimal.ZERO); + orders.setPingMoney(BigDecimal.ZERO); + orders.setArtificerTaxiMoney(artificerTaxiMoney.setScale(2, BigDecimal.ROUND_DOWN)); + orders.setPingTaxiMoney(pingTaxiMoney.setScale(2, BigDecimal.ROUND_DOWN)); + + userMoneyService.updateMoney(1, artificerUser.getUserId(), orders.getSumArtificerMoney().doubleValue()); + userMoneyDetails = new UserMoneyDetails(); //查询用户当前余额 - UserMoney userNowMoney = userMoneyService.selectUserMoneyByUserId(orders.getUserId()); + UserMoney userNowMoney1 = userMoneyService.selectUserMoneyByUserId(artificerUser.getUserId()); //插入余额 - userMoneyDetails.setBalance(userNowMoney.getMoney()); + userMoneyDetails.setBalance(userNowMoney1.getMoney()); //插入操作类型为已操作用户余额 userMoneyDetails.setManipulateType(2); + userMoneyDetails.setMoney(orders.getSumArtificerMoney()); + userMoneyDetails.setUserId(artificerUser.getUserId()); + userMoneyDetails.setTitle("订单号:" + orders.getOrdersNo() + ",订单超时转为待补单!"); + userMoneyDetails.setContent("用户订单超时转为待补单,总扣除:" + sumMoney + ",到账总金额:" + orders.getSumArtificerMoney()); + userMoneyDetails.setType(1); + userMoneyDetails.setCreateTime(simpleDateFormat.format(new Date())); + userMoneyDetails.setBlRole(2); userMoneyDetails.setBlFlag(1); + userMoneyDetailsService.save(userMoneyDetails); } - userMoneyDetails.setMoney(userMoney); - userMoneyDetails.setUserId(orders.getUserId()); - userMoneyDetails.setContent("订单号:" + orders.getOrdersNo() + ",车费已原路退款!"); - userMoneyDetails.setTitle("订单退款"); - userMoneyDetails.setType(1); - userMoneyDetails.setCreateTime(time); - userMoneyDetails.setArtificerId(orders.getArtificerId()); - userMoneyDetails.setBlRole(1); - userMoneyDetailsService.save(userMoneyDetails); - - Artificer artificer2 = artificerService.getById(orders.getArtificerId()); - if (userId != null && artificer2.getUserId().equals(userId)) { - BigDecimal newCreditScore = BigDecimal.ZERO; - MessageInfo messageInfo = new MessageInfo(); - messageInfo.setState("8"); - messageInfo.setUserId(String.valueOf(artificer2.getUserId())); - messageInfo.setTitle("转待补单订单:" + orders.getOrdersNo()); - String value1 = commonInfoService.findOne(384).getValue(); - BigDecimal creditScore = new BigDecimal(value1); - newCreditScore = artificer2.getCreditScore().subtract(creditScore); - messageInfo.setContent("扣除信誉分:" + creditScore); - artificer2.setCreditScore(newCreditScore); - String value2 = commonInfoService.findOne(385).getValue(); - BigDecimal minScore = new BigDecimal(value2); - if (artificer2.getCreditScore().doubleValue() < minScore.doubleValue()) { - artificer2.setStatus(2); - } - artificerService.updateById(artificer2); - messageService.saveBody(messageInfo); - } - - UserEntity userEntity = userService.selectUserById(orders.getUserId()); - //超过十个字 则截取 - String content = "订单:"+orders.getOrdersNo()+",转为待补单"; - //消息推送 - if (StringUtils.isNotEmpty(userEntity.getOpenId())) { - CommonInfo one = commonInfoService.findOne(248); - List msgList = new ArrayList<>(); - msgList.add(orders.getOrdersNo()); - msgList.add(content); - msgList.add("车费已原路退还!"); - SenInfoCheckUtil.sendMsg(userEntity.getOpenId(), one.getValue(), msgList, 2); - } - - if (StringUtils.isNotEmpty(userEntity.getClientid())) { - userService.pushToSingle("订单通知", "订单已转为,车费已原路退还!", userEntity.getClientid()); - } - - if (StringUtils.isNotBlank(userEntity.getWxOpenId())) { - String apkey = commonInfoService.findOne(313).getValue(); - LinkedHashMap data = new LinkedHashMap<>(); - data.put("character_string12", new TemplateMessageItem(orders.getOrdersNo(), "#d71345")); - data.put("thing17", new TemplateMessageItem(content, "#d71345")); - data.put("time14", new TemplateMessageItem(DateUtils.format(new Date()), "#d71345")); - userService.sendWxMessage(apkey, data, userEntity.getWxOpenId()); - } + BigDecimal payMoney = orders.getPayMoney().subtract(orders.getTaxiMoney()); + orders.setPayMoney(payMoney); } - if(isAuto == 1){ - //按照比例 将扣除的车费钱 - BigDecimal taxiMoney = orders.getTaxiMoney(); - BigDecimal sumMoney = orders.getTaxiMoney();//总扣费 - Artificer artificer = artificerService.getById(orders.getArtificerId()); - BigDecimal artificerTaxiMoney = orders.getTaxiMoney();//扣车费 - BigDecimal pingTaxiMoney = BigDecimal.ZERO; - - String taxi = commonInfoService.findOne(394).getValue(); - if ("是".equals(taxi)) { - artificerTaxiMoney = taxiMoney.multiply(artificer.getRate()); - pingTaxiMoney = taxiMoney.subtract(artificerTaxiMoney); - } - UserEntity artificerUser = userService.selectUserById(artificer.getUserId()); - - orders.setShopMoney(BigDecimal.ZERO); - orders.setArtificerMoney(BigDecimal.ZERO); - orders.setSumArtificerMoney(sumMoney.setScale(2, BigDecimal.ROUND_DOWN)); - orders.setOneUserMoney(BigDecimal.ZERO); - orders.setOneArtificerMoney(BigDecimal.ZERO); - orders.setPingMoney(BigDecimal.ZERO); - orders.setArtificerTaxiMoney(artificerTaxiMoney.setScale(2, BigDecimal.ROUND_DOWN)); - orders.setPingTaxiMoney(pingTaxiMoney.setScale(2, BigDecimal.ROUND_DOWN)); - - userMoneyService.updateMoney(1, artificerUser.getUserId(), orders.getSumArtificerMoney().doubleValue()); - userMoneyDetails = new UserMoneyDetails(); - //查询用户当前余额 - UserMoney userNowMoney1 = userMoneyService.selectUserMoneyByUserId(artificerUser.getUserId()); - //插入余额 - userMoneyDetails.setBalance(userNowMoney1.getMoney()); - //插入操作类型为已操作用户余额 - userMoneyDetails.setManipulateType(2); - userMoneyDetails.setMoney(orders.getSumArtificerMoney()); - userMoneyDetails.setUserId(artificerUser.getUserId()); - userMoneyDetails.setTitle("订单号:" + orders.getOrdersNo() + ",订单超时转为待补单!"); - userMoneyDetails.setContent("用户订单超时转为待补单,总扣除:" + sumMoney + ",到账总金额:" + orders.getSumArtificerMoney()); - userMoneyDetails.setType(1); - userMoneyDetails.setCreateTime(simpleDateFormat.format(new Date())); - userMoneyDetails.setBlRole(2); - userMoneyDetails.setBlFlag(1); - userMoneyDetailsService.save(userMoneyDetails); + if(orders.getOldOrdersId() !=null){ + //此笔单子退车费,并改为取消,再将原单改成待补单 + orders.setRefusalContent(""); + orders.setTaxiMoney(BigDecimal.ZERO); + orders.setStatus(4); + baseMapper.updateById(orders); + cancelSupplementOrders(userId, orders.getOldOrdersId(), isAuto, 1);//退原单,原单的车费已被退/扣,所以只退项目 + }else{ + orders.setRefusalContent(""); + orders.setTaxiMoney(BigDecimal.ZERO); + orders.setStatus(10); + baseMapper.updateById(orders); } - orders.setRefusalContent(""); - orders.setStatus(10); - baseMapper.updateById(orders); } if(type == 2){ //退项目费 @@ -2035,7 +2664,7 @@ public class OrdersServiceImpl extends ServiceImpl implements } if(orders.getOldOrdersId()!=null){ - cancelSupplementOrders(userId, orders.getOldOrdersId(), 0, 2);//退原单,原单的车费已被退/扣,所以只退项目 + cancelSupplementOrders(userId, orders.getOldOrdersId(), isAuto, 2);//退原单,原单的车费已被退/扣,所以只退项目 } } return Result.success(); @@ -2043,149 +2672,163 @@ public class OrdersServiceImpl extends ServiceImpl implements private Result cancelSupplementPackageOrders(Long userId, Orders orders, Integer isAuto, Integer type) { if(type == 1){ - //退车费或扣车费,成为待补单 - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - String time = simpleDateFormat.format(new Date()); - //退款金额 - BigDecimal userMoney = BigDecimal.ZERO; - UserMoneyDetails userMoneyDetails = new UserMoneyDetails(); - if(isAuto == 0){ - //退款车费 - userMoney = orders.getTaxiMoney(); - if (orders.getPayWay() == 1 || orders.getPayWay() == 2 || orders.getPayWay() == 3 || orders.getPayWay() == 4) { - boolean refund = wxService.refund(orders.getOrdersNo(), orders.getPayMoney(), userMoney, orders.getPayWay()); - if (!refund) { - return Result.error("退款失败,请联系客服!"); - } - userMoneyDetails.setManipulateType(1); - userMoneyDetails.setBlFlag(2); - } else if (orders.getPayWay() == 6) { - String data = aliPayController.alipayRefund(orders.getOrdersNo(), userMoney); - if (StringUtils.isNotBlank(data)) { - log.error(data); - JSONObject jsonObject = JSON.parseObject(data); - JSONObject alipay_trade_refund_response = jsonObject.getJSONObject("alipay_trade_refund_response"); - String code1 = alipay_trade_refund_response.getString("code"); - if (!"10000".equals(code1)) { - return Result.error("退款失败!" + alipay_trade_refund_response.getString("sub_msg")); + if(orders.getTaxiMoney().compareTo(BigDecimal.ZERO) != 0) { + //退车费或扣车费,成为待补单 + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String time = simpleDateFormat.format(new Date()); + //退款金额 + BigDecimal userMoney = BigDecimal.ZERO; + UserMoneyDetails userMoneyDetails = new UserMoneyDetails(); + if (isAuto == 0) { + //退款车费 + userMoney = orders.getTaxiMoney(); + if (orders.getPayWay() == 1 || orders.getPayWay() == 2 || orders.getPayWay() == 3 || orders.getPayWay() == 4) { + boolean refund = wxService.refund(orders.getOrdersNo(), orders.getPayMoney(), userMoney, orders.getPayWay()); + if (!refund) { + return Result.error("退款失败,请联系客服!"); } + userMoneyDetails.setManipulateType(1); + userMoneyDetails.setBlFlag(2); + } else if (orders.getPayWay() == 6) { + String data = aliPayController.alipayRefund(orders.getOrdersNo(), userMoney); + if (StringUtils.isNotBlank(data)) { + log.error(data); + JSONObject jsonObject = JSON.parseObject(data); + JSONObject alipay_trade_refund_response = jsonObject.getJSONObject("alipay_trade_refund_response"); + String code1 = alipay_trade_refund_response.getString("code"); + if (!"10000".equals(code1)) { + return Result.error("退款失败!" + alipay_trade_refund_response.getString("sub_msg")); + } + } else { + return Result.error("退款失败!"); + } + userMoneyDetails.setManipulateType(1); + userMoneyDetails.setBlFlag(2); } else { - return Result.error("退款失败!"); + userMoneyService.updateMoney(1, orders.getUserId(), userMoney.doubleValue()); + //查询用户当前余额 + UserMoney userNowMoney = userMoneyService.selectUserMoneyByUserId(orders.getUserId()); + //插入余额 + userMoneyDetails.setBalance(userNowMoney.getMoney()); + //插入操作类型为已操作用户余额 + userMoneyDetails.setManipulateType(2); + userMoneyDetails.setBlFlag(1); } - userMoneyDetails.setManipulateType(1); - userMoneyDetails.setBlFlag(2); - } else { - userMoneyService.updateMoney(1, orders.getUserId(), userMoney.doubleValue()); + userMoneyDetails.setMoney(userMoney); + userMoneyDetails.setUserId(orders.getUserId()); + userMoneyDetails.setContent("订单号:" + orders.getOrdersNo() + ",车费已原路退款!"); + userMoneyDetails.setTitle("订单退款"); + userMoneyDetails.setType(1); + userMoneyDetails.setCreateTime(time); + userMoneyDetails.setArtificerId(orders.getArtificerId()); + userMoneyDetails.setBlRole(1); + userMoneyDetailsService.save(userMoneyDetails); + + Artificer artificer2 = artificerService.getById(orders.getArtificerId()); + if (userId != null && artificer2.getUserId().equals(userId)) { + BigDecimal newCreditScore = BigDecimal.ZERO; + MessageInfo messageInfo = new MessageInfo(); + messageInfo.setState("8"); + messageInfo.setUserId(String.valueOf(artificer2.getUserId())); + messageInfo.setTitle("转待补单订单:" + orders.getOrdersNo()); + String value1 = commonInfoService.findOne(384).getValue(); + BigDecimal creditScore = new BigDecimal(value1); + newCreditScore = artificer2.getCreditScore().subtract(creditScore); + messageInfo.setContent("扣除信誉分:" + creditScore); + artificer2.setCreditScore(newCreditScore); + String value2 = commonInfoService.findOne(385).getValue(); + BigDecimal minScore = new BigDecimal(value2); + if (artificer2.getCreditScore().doubleValue() < minScore.doubleValue()) { + artificer2.setStatus(2); + } + artificerService.updateById(artificer2); + messageService.saveBody(messageInfo); + } + + UserEntity userEntity = userService.selectUserById(orders.getUserId()); + //超过十个字 则截取 + String content = "订单:" + orders.getOrdersNo() + ",转为待补单"; + //消息推送 + if (StringUtils.isNotEmpty(userEntity.getOpenId())) { + CommonInfo one = commonInfoService.findOne(248); + List msgList = new ArrayList<>(); + msgList.add(orders.getOrdersNo()); + msgList.add(content); + msgList.add("车费已原路退还!"); + SenInfoCheckUtil.sendMsg(userEntity.getOpenId(), one.getValue(), msgList, 2); + } + + if (StringUtils.isNotEmpty(userEntity.getClientid())) { + userService.pushToSingle("订单通知", "订单已转为,车费已原路退还!", userEntity.getClientid()); + } + + if (StringUtils.isNotBlank(userEntity.getWxOpenId())) { + String apkey = commonInfoService.findOne(313).getValue(); + LinkedHashMap data = new LinkedHashMap<>(); + data.put("character_string12", new TemplateMessageItem(orders.getOrdersNo(), "#d71345")); + data.put("thing17", new TemplateMessageItem(content, "#d71345")); + data.put("time14", new TemplateMessageItem(DateUtils.format(new Date()), "#d71345")); + userService.sendWxMessage(apkey, data, userEntity.getWxOpenId()); + } + } + if (isAuto == 1) { + //按照比例 将扣除的车费钱 + BigDecimal taxiMoney = orders.getTaxiMoney(); + BigDecimal sumMoney = orders.getTaxiMoney();//总扣费 + Artificer artificer = artificerService.getById(orders.getArtificerId()); + BigDecimal artificerTaxiMoney = orders.getTaxiMoney();//扣车费 + BigDecimal pingTaxiMoney = BigDecimal.ZERO; + + String taxi = commonInfoService.findOne(394).getValue(); + if ("是".equals(taxi)) { + artificerTaxiMoney = taxiMoney.multiply(artificer.getRate()); + pingTaxiMoney = taxiMoney.subtract(artificerTaxiMoney); + } + UserEntity artificerUser = userService.selectUserById(artificer.getUserId()); + + orders.setShopMoney(BigDecimal.ZERO); + orders.setArtificerMoney(BigDecimal.ZERO); + orders.setSumArtificerMoney(sumMoney.setScale(2, BigDecimal.ROUND_DOWN)); + orders.setOneUserMoney(BigDecimal.ZERO); + orders.setOneArtificerMoney(BigDecimal.ZERO); + orders.setPingMoney(BigDecimal.ZERO); + orders.setArtificerTaxiMoney(artificerTaxiMoney.setScale(2, BigDecimal.ROUND_DOWN)); + orders.setPingTaxiMoney(pingTaxiMoney.setScale(2, BigDecimal.ROUND_DOWN)); + + userMoneyService.updateMoney(1, artificerUser.getUserId(), orders.getSumArtificerMoney().doubleValue()); + userMoneyDetails = new UserMoneyDetails(); //查询用户当前余额 - UserMoney userNowMoney = userMoneyService.selectUserMoneyByUserId(orders.getUserId()); + UserMoney userNowMoney1 = userMoneyService.selectUserMoneyByUserId(artificerUser.getUserId()); //插入余额 - userMoneyDetails.setBalance(userNowMoney.getMoney()); + userMoneyDetails.setBalance(userNowMoney1.getMoney()); //插入操作类型为已操作用户余额 userMoneyDetails.setManipulateType(2); + userMoneyDetails.setMoney(orders.getSumArtificerMoney()); + userMoneyDetails.setUserId(artificerUser.getUserId()); + userMoneyDetails.setTitle("订单号:" + orders.getOrdersNo() + ",订单超时转为待补单!"); + userMoneyDetails.setContent("用户订单超时转为待补单,总扣除:" + sumMoney + ",到账总金额:" + orders.getSumArtificerMoney()); + userMoneyDetails.setType(1); + userMoneyDetails.setCreateTime(simpleDateFormat.format(new Date())); + userMoneyDetails.setBlRole(2); userMoneyDetails.setBlFlag(1); + userMoneyDetailsService.save(userMoneyDetails); } - userMoneyDetails.setMoney(userMoney); - userMoneyDetails.setUserId(orders.getUserId()); - userMoneyDetails.setContent("订单号:" + orders.getOrdersNo() + ",车费已原路退款!"); - userMoneyDetails.setTitle("订单退款"); - userMoneyDetails.setType(1); - userMoneyDetails.setCreateTime(time); - userMoneyDetails.setArtificerId(orders.getArtificerId()); - userMoneyDetails.setBlRole(1); - userMoneyDetailsService.save(userMoneyDetails); - - Artificer artificer2 = artificerService.getById(orders.getArtificerId()); - if (userId != null && artificer2.getUserId().equals(userId)) { - BigDecimal newCreditScore = BigDecimal.ZERO; - MessageInfo messageInfo = new MessageInfo(); - messageInfo.setState("8"); - messageInfo.setUserId(String.valueOf(artificer2.getUserId())); - messageInfo.setTitle("转待补单订单:" + orders.getOrdersNo()); - String value1 = commonInfoService.findOne(384).getValue(); - BigDecimal creditScore = new BigDecimal(value1); - newCreditScore = artificer2.getCreditScore().subtract(creditScore); - messageInfo.setContent("扣除信誉分:" + creditScore); - artificer2.setCreditScore(newCreditScore); - String value2 = commonInfoService.findOne(385).getValue(); - BigDecimal minScore = new BigDecimal(value2); - if (artificer2.getCreditScore().doubleValue() < minScore.doubleValue()) { - artificer2.setStatus(2); - } - artificerService.updateById(artificer2); - messageService.saveBody(messageInfo); - } - - UserEntity userEntity = userService.selectUserById(orders.getUserId()); - //超过十个字 则截取 - String content = "订单:"+orders.getOrdersNo()+",转为待补单"; - //消息推送 - if (StringUtils.isNotEmpty(userEntity.getOpenId())) { - CommonInfo one = commonInfoService.findOne(248); - List msgList = new ArrayList<>(); - msgList.add(orders.getOrdersNo()); - msgList.add(content); - msgList.add("车费已原路退还!"); - SenInfoCheckUtil.sendMsg(userEntity.getOpenId(), one.getValue(), msgList, 2); - } - - if (StringUtils.isNotEmpty(userEntity.getClientid())) { - userService.pushToSingle("订单通知", "订单已转为,车费已原路退还!", userEntity.getClientid()); - } - - if (StringUtils.isNotBlank(userEntity.getWxOpenId())) { - String apkey = commonInfoService.findOne(313).getValue(); - LinkedHashMap data = new LinkedHashMap<>(); - data.put("character_string12", new TemplateMessageItem(orders.getOrdersNo(), "#d71345")); - data.put("thing17", new TemplateMessageItem(content, "#d71345")); - data.put("time14", new TemplateMessageItem(DateUtils.format(new Date()), "#d71345")); - userService.sendWxMessage(apkey, data, userEntity.getWxOpenId()); - } + BigDecimal payMoney = orders.getPayMoney().subtract(orders.getTaxiMoney()); + orders.setPayMoney(payMoney); } - if(isAuto == 1){ - //按照比例 将扣除的车费钱 - BigDecimal taxiMoney = orders.getTaxiMoney(); - BigDecimal sumMoney = orders.getTaxiMoney();//总扣费 - Artificer artificer = artificerService.getById(orders.getArtificerId()); - BigDecimal artificerTaxiMoney = orders.getTaxiMoney();//扣车费 - BigDecimal pingTaxiMoney = BigDecimal.ZERO; - - String taxi = commonInfoService.findOne(394).getValue(); - if ("是".equals(taxi)) { - artificerTaxiMoney = taxiMoney.multiply(artificer.getRate()); - pingTaxiMoney = taxiMoney.subtract(artificerTaxiMoney); - } - UserEntity artificerUser = userService.selectUserById(artificer.getUserId()); - - orders.setShopMoney(BigDecimal.ZERO); - orders.setArtificerMoney(BigDecimal.ZERO); - orders.setSumArtificerMoney(sumMoney.setScale(2, BigDecimal.ROUND_DOWN)); - orders.setOneUserMoney(BigDecimal.ZERO); - orders.setOneArtificerMoney(BigDecimal.ZERO); - orders.setPingMoney(BigDecimal.ZERO); - orders.setArtificerTaxiMoney(artificerTaxiMoney.setScale(2, BigDecimal.ROUND_DOWN)); - orders.setPingTaxiMoney(pingTaxiMoney.setScale(2, BigDecimal.ROUND_DOWN)); - - userMoneyService.updateMoney(1, artificerUser.getUserId(), orders.getSumArtificerMoney().doubleValue()); - userMoneyDetails = new UserMoneyDetails(); - //查询用户当前余额 - UserMoney userNowMoney1 = userMoneyService.selectUserMoneyByUserId(artificerUser.getUserId()); - //插入余额 - userMoneyDetails.setBalance(userNowMoney1.getMoney()); - //插入操作类型为已操作用户余额 - userMoneyDetails.setManipulateType(2); - userMoneyDetails.setMoney(orders.getSumArtificerMoney()); - userMoneyDetails.setUserId(artificerUser.getUserId()); - userMoneyDetails.setTitle("订单号:" + orders.getOrdersNo() + ",订单超时转为待补单!"); - userMoneyDetails.setContent("用户订单超时转为待补单,总扣除:" + sumMoney + ",到账总金额:" + orders.getSumArtificerMoney()); - userMoneyDetails.setType(1); - userMoneyDetails.setCreateTime(simpleDateFormat.format(new Date())); - userMoneyDetails.setBlRole(2); - userMoneyDetails.setBlFlag(1); - userMoneyDetailsService.save(userMoneyDetails); + if(orders.getOldOrdersId() !=null){ + //此笔单子退车费,并改为取消,再将原单改成待补单 + orders.setRefusalContent(""); + orders.setTaxiMoney(BigDecimal.ZERO); + orders.setStatus(4); + baseMapper.updateById(orders); + cancelSupplementOrders(userId, orders.getOldOrdersId(), isAuto, 1);//退原单,原单的车费已被退/扣,所以只退项目 + }else{ + orders.setRefusalContent(""); + orders.setTaxiMoney(BigDecimal.ZERO); + orders.setStatus(10); + baseMapper.updateById(orders); } - orders.setRefusalContent(""); - orders.setStatus(10); - baseMapper.updateById(orders); } if(type == 2){ //退项目费 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