diff --git a/src/main/java/com/sqx/modules/artificer/controller/app/AppArtificerController.java b/src/main/java/com/sqx/modules/artificer/controller/app/AppArtificerController.java index 9d7cf77..5a7a22e 100644 --- a/src/main/java/com/sqx/modules/artificer/controller/app/AppArtificerController.java +++ b/src/main/java/com/sqx/modules/artificer/controller/app/AppArtificerController.java @@ -211,6 +211,14 @@ public class AppArtificerController { return ordersService.selectOrdersDetails(ordersId); } + @Login + @PostMapping("/updateOrders") + @ApiOperation("修改订单") + public Result updateOrders(@RequestBody Orders orders){ + return ordersService.updateOrders(orders); + } + + @Login @GetMapping("/selectOrdersList") @ApiOperation("查询订单列表") 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 3329923..d3c5832 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 @@ -32,7 +32,6 @@ import com.sqx.modules.artificer.entity.*; import com.sqx.modules.artificer.service.*; import com.sqx.modules.common.dao.CommonInfoDao; import com.sqx.modules.bl.order.entity.UserPackageDetail; -import com.sqx.modules.bl.order.entity.UserPackageOrder; import com.sqx.modules.bl.order.service.UserPackageDetailService; import com.sqx.modules.common.entity.CommonInfo; import com.sqx.modules.common.enums.CommonEnum; @@ -530,7 +529,7 @@ public class OrdersServiceImpl extends ServiceImpl implements orders.setCreateTime(sdf.format(new Date())); //留存订单生成时的技师分成比例 orders.setArtificerRate(artificer.getRate()); - orders.setSumMoney(orders.getPayMoney()); + orders.setSumMoney(orders.getPayMoney().setScale(2,BigDecimal.ROUND_HALF_UP)); //保存订单 baseMapper.insert(orders); @@ -798,7 +797,7 @@ public class OrdersServiceImpl extends ServiceImpl implements orders.setCreateTime(sdf.format(new Date())); //留存订单生成时的技师分成比例 orders.setArtificerRate(artificer.getRate()); - orders.setSumMoney(orders.getPayMoney()); + orders.setSumMoney(orders.getPayMoney().setScale(2,BigDecimal.ROUND_HALF_UP)); //保存订单 baseMapper.insert(orders); @@ -886,436 +885,38 @@ public class OrdersServiceImpl extends ServiceImpl implements @Override @Transactional public Result updateOrders(Orders orders) { - Orders oldOrders = baseMapper.selectById(orders.getOrdersId()); + try { + 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 (oldOrders.getStatus() == 3 || oldOrders.getStatus() == 5) { + return Result.error("已完成的订单不可修改!"); } - if(massageTypeId == null){ - return Result.error("当前订单没有选择服务项目!"); + if (oldOrders.getStatus() == 4) { + 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()); - + //待补单修改 + if (oldOrders.getStatus() == 10) { + //只能修改,技师和时间 (技师等级大于等于原单据等级) + Long massageTypeId; + if (orders.getOrdersMassageList() != null) { + List ordersMassageList = orders.getOrdersMassageList(); + massageTypeId = ordersMassageList.get(0).getMassageId(); } 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("预约时间正忙,请更换其他时间!"); - } - } - } + return Result.error("当前订单没有选择服务项目!"); + } + if (massageTypeId != oldOrders.getMassageTypeId()) { + 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); + Artificer oldArtificer = artificerService.getById(oldOrders.getArtificerId()); + if (artificer.getTechnicianType() != oldArtificer.getTechnicianType()) { + return Result.error("当前订单技师等级与原订单技师等级不一致!"); } - - //计算项目收益 - //获取项目应支付金额 - 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.setMassageTypeId(massageTypeId); 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); + orders.setPrice(BigDecimal.ZERO); + orders.setMassageMoney(oldOrders.getMassageMoney()); String value1 = commonInfoService.findOne(395).getValue(); int i = 0; @@ -1324,6 +925,7 @@ public class OrdersServiceImpl extends ServiceImpl implements Integer duration = massageType.getDuration(); //精油 String jyValue = commonInfoService.findOne(392).getValue(); + int minute = 0; int jyMinuteInt = Integer.parseInt(jyValue); //公交1h,出租30 , 免费 1h(加出行时间) @@ -1351,245 +953,912 @@ public class OrdersServiceImpl extends ServiceImpl implements } } - 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("预约时间正忙,请更换其他时间!"); - } + 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("预约时间正忙,请更换其他时间!"); } } } - //加上车费 - 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); + TravelPriceVo travelPriceVo = travelConfService.calcTravelPrice(orders.getArtificerId(), orders.getLongitude(), orders.getLatitude()); + if (travelPriceVo == null) { + return Result.error("暂不支持当前地址,请更换其他地址!"); } - - //计算项目收益 - //获取项目应支付金额 - 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()); + BigDecimal taxiMoney = new BigDecimal(travelPriceVo.getTravelPrice()); + orders.setTaxiMoney(taxiMoney); + orders.setKm(travelPriceVo.getKilometerNum()); + orders.setPayMoney(taxiMoney); orders.setStatus(1); - - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - orders.setCreateTime(sdf.format(new Date())); - //留存订单生成时的技师分成比例 + orders.setCreateTime(DateUtils.format(new Date())); +// Artificer artificer = artificerService.getById(orders.getArtificerId()); orders.setArtificerRate(artificer.getRate()); - orders.setSumMoney(orders.getPayMoney()); - //修改订单 - baseMapper.updateById(orders); + orders.setSumMoney(orders.getPayMoney().setScale(2, BigDecimal.ROUND_HALF_UP)); + orders.setIsSupplement(1); + orders.setOldMassageMoney(oldOrders.getMassageMoney()); + orders.setOldOrdersId(oldOrders.getOrdersId()); + baseMapper.insert(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); - } + List ordersMassageList = orders.getOrdersMassageList(); + for (OrdersMassage ordersMassage : ordersMassageList) { + ordersMassage.setOrdersId(orders.getOrdersId()); + ordersMassageService.save(ordersMassage); } + + Orders ordersOld = new Orders(); + ordersOld.setOrdersId(oldOrders.getOrdersId()); + ordersOld.setStatus(11); + baseMapper.updateById(ordersOld);//原单暂变成挂单状态 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 (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("当前订单无法修改技师!"); + } + if (oldOrders.getParentId() != null && oldOrders.getParentId() != 0) { + return Result.error("当前加钟订单无法升级套餐!"); + } - if (StringUtils.isNotBlank(orders.getServeTime()) && !orders.getServeTime().equals(oldOrders.getServeTime())) { - //修改预约时间 - //判断订单是否开始 - if (oldOrders.getStatus() != 2) { - return Result.error("只有待服务的订单可以修改预约时间!"); - } - String value1 = commonInfoService.findOne(395).getValue(); - List ordersMassageList = ordersMassageService.list(new QueryWrapper().eq("orders_id", orders.getOrdersId())); - int i = 0; - MassageType massageType = massageTypeService.getById(ordersMassageList.get(0).getMassageId()); - Integer duration = massageType.getDuration(); - String value = commonInfoService.findOne(392).getValue(); - int minute = Integer.parseInt(value); - if ("是".equals(value1)) { - if (duration % minute == 0) { - i = duration / minute; + Long massageTypeId; + BigDecimal price = BigDecimal.ZERO; + if (orders.getOrdersMassageList() != null) { + List ordersMassageList = orders.getOrdersMassageList(); + massageTypeId = ordersMassageList.get(0).getMassageId(); + MassageType massageType = massageTypeService.getById(massageTypeId); + for (OrdersMassage ordersMassage : ordersMassageList) { + price = massageType.getPrice().multiply(BigDecimal.valueOf(ordersMassage.getNum())); + } + orders.setPrice(price); + orders.setMassageTypeId(massageTypeId); + orders.setEntryName(massageType.getTitle()); + //判断新price是否大于旧price + if (orders.getPrice().compareTo(oldOrders.getPrice()) <= 0) { + return Result.error("要升级的服务项目金额应大于原服务项目金额!"); + } } else { - i = duration / minute; - i++; + return Result.error("当前订单没有选择服务项目!"); } - } - 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", oldOrders.getArtificerId()) - .eq("artificer_date", date).eq("artificer_time", time)); - if (artificerTime != null && (artificerTime.getOrdersId() == null || !artificerTime.getOrdersId().equals(orders.getOrdersId()))) { - return Result.error("预约时间正忙,请更换其他时间!"); - } + //使用原价计算差额 + orders.setUserId(oldOrders.getUserId()); + orders.setUserName(oldOrders.getUserName()); + orders.setPhone(oldOrders.getPhone()); + orders.setAddress(oldOrders.getAddress()); + orders.setRemark(oldOrders.getRemark()); + orders.setServeTime(oldOrders.getServeTime()); + orders.setArtificerStartTime(oldOrders.getArtificerStartTime()); + orders.setArtificerEndTime(oldOrders.getArtificerEndTime()); + orders.setLongitude(oldOrders.getLongitude()); + orders.setLatitude(oldOrders.getLatitude()); + orders.setStartLongitude(oldOrders.getStartLongitude()); + orders.setStartLatitude(oldOrders.getStartLatitude()); + orders.setTripWay(oldOrders.getTripWay()); + orders.setTaxiMoney(BigDecimal.ZERO); + orders.setKm(oldOrders.getKm()); + orders.setStartAddress(oldOrders.getStartAddress()); + orders.setStartTime(oldOrders.getStartTime()); + orders.setCouponId(oldOrders.getCouponId()); + orders.setCouponName(oldOrders.getCouponName()); + orders.setCouponMoney(oldOrders.getCouponMoney()); + orders.setEndTime(oldOrders.getEndTime()); + orders.setStartImg(oldOrders.getStartImg()); + orders.setOldOrdersId(oldOrders.getOrdersId()); + orders.setOldMassageMoney(oldOrders.getMassageMoney()); - if (i > 1) { - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); - Date parse = null; - try { - parse = sdf.parse(serveTime); - } catch (ParseException e) { - e.printStackTrace(); - } - Calendar calendar = Calendar.getInstance(); - calendar.setTime(parse); - for (int j = 1; j < i; j++) { - calendar.add(Calendar.MINUTE, minute); - String format = sdf.format(calendar.getTime()); - date = format.substring(0, 10); - time = format.substring(11, 16); - artificerTime = artificerTimeService.getOne( - new QueryWrapper() - .eq("artificer_id", oldOrders.getArtificerId()) - .eq("artificer_date", date).eq("artificer_time", time)); - if (artificerTime != null && (artificerTime.getOrdersId() == null || !artificerTime.getOrdersId().equals(orders.getOrdersId()))) { - return Result.error("预约时间正忙,请更换其他时间!"); + //获取用户VIP的优惠信息 + BigDecimal vipRate = new BigDecimal(100); + UserVip userVip = userVipService.selectUserVipByUserId(oldOrders.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(); + } } } - } - artificerTimeService.remove(new QueryWrapper().eq("orders_id", orders.getOrdersId())); - if (i > 0) { - SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm"); - Date parse = null; - try { - parse = sdf1.parse(serveTime); - } catch (ParseException e) { - e.printStackTrace(); + orders.setVipRate(vipRate); + Artificer artificer = artificerService.getById(oldOrders.getArtificerId()); + orders.setArtificerId(artificer.getArtificerId()); + orders.setTechnicianType(artificer.getTechnicianType()); + orders.setArtificerRate(oldOrders.getArtificerRate()); + + BigDecimal artificerVipRate = BigDecimal.ZERO; + VipDetails artificerVipDetails = vipDetailsDao.selectOne(new QueryWrapper().eq("vip_name_type", artificer.getTechnicianType())); + if (artificerVipDetails != null) { + artificerVipRate = artificerVipDetails.getRate(); } - Calendar calendar = Calendar.getInstance(); - calendar.setTime(parse); - for (int j = 0; j < i; j++) { - String format = sdf1.format(calendar.getTime()); - date = format.substring(0, 10); - time = format.substring(11, 16); - artificerTime = new ArtificerTime(); - artificerTime.setArtificerId(oldOrders.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); - } - } else { - date = serveTime.substring(0, 10); - time = serveTime.substring(11, 16); - artificerTime = new ArtificerTime(); - artificerTime.setArtificerId(oldOrders.getArtificerId()); - artificerTime.setArtificerDate(date); - artificerTime.setArtificerTime(time); - artificerTime.setClassify(1); - artificerTime.setOrdersId(orders.getOrdersId()); - artificerTime.setCreateTime(DateUtils.format(new Date())); - artificerTimeService.save(artificerTime); + orders.setTechnicianRate(artificerVipRate); + + BigDecimal massagePrice = price.multiply(orders.getTechnicianRate()).divide(new BigDecimal(100)).add(price);//技师等级加成金额 + massagePrice = massagePrice.multiply(orders.getVipRate()).divide(new BigDecimal(100));//会员优惠后金额 + massagePrice = massagePrice.subtract(oldOrders.getCouponMoney()); + orders.setMassageMoney(massagePrice); + + BigDecimal chajia = orders.getMassageMoney().subtract(oldOrders.getMassageMoney()); +// chajia = chajia.multiply(orders.getTechnicianRate()).divide(new BigDecimal(100)).add(price);//技师等级加成金额 +// chajia = chajia.multiply(orders.getVipRate()).divide(new BigDecimal(100)); + orders.setPayMoney(chajia);//差价 + + //计算技师项目提成金额 + BigDecimal artificerPrice = chajia.multiply(artificer.getRate()).setScale(2, BigDecimal.ROUND_HALF_UP); + orders.setProjectBenefits(artificerPrice); + orders.setArtificerMoney(artificerPrice); + orders.setSumArtificerMoney(artificerPrice); + orders.setOrdersNo(getGeneralOrder()); + orders.setStatus(1); + orders.setCreateTime(DateUtils.format(new Date())); + orders.setIsSupplement(2); + orders.setArtificerRate(artificer.getRate()); + orders.setSumMoney(orders.getPayMoney().setScale(2, BigDecimal.ROUND_HALF_UP)); + baseMapper.insert(orders); + + Orders ordersOld = new Orders(); + ordersOld.setOrdersId(oldOrders.getOrdersId()); + ordersOld.setStatus(11); + baseMapper.updateById(ordersOld);//原单暂变成挂单状态 + } + //临时单修改 + if (oldOrders.getStatus() == 1) { + //未支付随便改,更新原单据 + Long massageTypeId; + if (orders.getOrdersMassageList() != null) { + List ordersMassageList = orders.getOrdersMassageList(); + massageTypeId = ordersMassageList.get(0).getMassageId(); + } else { + return Result.error("当前订单没有选择服务项目!"); + } + if (oldOrders.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().setScale(2, BigDecimal.ROUND_HALF_UP)); + //修改订单 + 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 = true; + 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().setScale(2, BigDecimal.ROUND_HALF_UP)); + //修改订单 + 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); + } + } + if (oldOrders.getStatus() == 2 || oldOrders.getStatus() == 9) { + //只能修改,技师和时间 (技师等级大于等于原单据等级) + //判断是否是可修改,状态2 9 + boolean canUpdate = commonInfoService.isCheckEditOrder(DateUtils.stringToDate(oldOrders.getServeTime(), "yyyy-MM-dd HH:mm"), new Date()); + if (!canUpdate) { + return Result.error("当前订单无法修改!"); + } + //判断是否是修改后的订单再继续修改 + + if (oldOrders.getOldOrdersId() != null && oldOrders.getOldOrdersId() != 0) { + return Result.error("当前订单是修改后生成的新订单无法修改!"); + } + Long massageTypeId; + BigDecimal price = BigDecimal.ZERO; + MassageType massageType = null; + if (orders.getOrdersMassageList() != null) { + List ordersMassageList = orders.getOrdersMassageList(); + massageTypeId = ordersMassageList.get(0).getMassageId(); + massageType = massageTypeService.getById(massageTypeId); + for (OrdersMassage ordersMassage : ordersMassageList) { + price = massageType.getPrice().multiply(BigDecimal.valueOf(ordersMassage.getNum())); + } + orders.setMassageTypeId(massageTypeId); + orders.setEntryName(massageType.getTitle()); + //判断新price是否大于旧price + if (price.compareTo(oldOrders.getPrice()) < 0) { + return Result.error("要升级的服务项目金额不能小于原服务项目金额!"); + } + } else { + return Result.error("当前订单没有选择服务项目!"); + } + 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("预约时间正忙,请更换其他时间!"); + } + } + } + + Artificer artificer = artificerService.getById(orders.getArtificerId()); + Artificer oldArtificer = artificerService.getById(oldOrders.getArtificerId()); + if (artificer.getTechnicianType() < oldArtificer.getTechnicianType()) { + return Result.error("当前订单技师等级不能低于原订单技师等级!"); + } + orders.setArtificerId(artificer.getArtificerId()); + orders.setTechnicianType(artificer.getTechnicianType()); + orders.setArtificerRate(artificer.getRate()); + 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); + //获取用户VIP的优惠信息 + BigDecimal vipRate = new BigDecimal(100); + UserVip userVip = userVipService.selectUserVipByUserId(oldOrders.getUserId()); + if (userVip != null) { + if (userVip.getIsVip() == 1) { + //获取用户到期时间 + Date date2 = null; + try { + date2 = DateUtils.stringToDate(userVip.getEndTime(), DateUtils.DATE_TIME_PATTERN); + if (date2.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); + + BigDecimal massagePrice = price.multiply(orders.getTechnicianRate()).divide(new BigDecimal(100)).add(price);//技师等级加成金额 + massagePrice = massagePrice.multiply(orders.getVipRate()).divide(new BigDecimal(100));//会员优惠后金额 + massagePrice = massagePrice.subtract(oldOrders.getCouponMoney()); + orders.setMassageMoney(massagePrice); + + //项目差价 + BigDecimal xmchajia = orders.getMassageMoney().subtract(oldOrders.getMassageMoney()); + + TravelPriceVo travelPriceVo = travelConfService.calcTravelPrice(orders.getArtificerId(), orders.getLongitude(), orders.getLatitude()); + if (travelPriceVo == null) { + return Result.error("暂不支持当前地址,请更换其他地址!"); + } + + + BigDecimal taxiMoney = new BigDecimal(travelPriceVo.getTravelPrice()); + BigDecimal oldTaxiMoney = oldOrders.getTaxiMoney(); + if (taxiMoney.compareTo(oldTaxiMoney) < 0) { + taxiMoney = oldTaxiMoney; + } + orders.setTaxiMoney(taxiMoney); + orders.setKm(travelPriceVo.getKilometerNum()); + //出行交通费差价 + BigDecimal cxchajia = taxiMoney.subtract(oldTaxiMoney); + //总差价 + BigDecimal chajia = xmchajia.add(cxchajia); + + if (chajia.compareTo(BigDecimal.ZERO) == 0) { + BigDecimal pingMoney = oldOrders.getPayMoney(); + UserEntity artificerUser = userService.selectUserById(artificer.getUserId()); + UserEntity oneArtificerUser = userService.queryByInvitationCode(artificerUser.getInviterCode()); + BigDecimal oneArtificerMoney = BigDecimal.ZERO; + if (oneArtificerUser != null && oneArtificerUser.getIsAgency() != null && oneArtificerUser.getIsAgency() == 1) { + orders.setOneArtificerUserId(oneArtificerUser.getUserId()); + orders.setOneArtificerUserName(oneArtificerUser.getUserName()); + oneArtificerMoney = pingMoney.multiply(oneArtificerUser.getShopRate()); + } + BigDecimal shopMoney = BigDecimal.ZERO; + if (artificerUser.getConsortiaId() != null) { + Consortia consortia = consortiaService.getById(artificerUser.getConsortiaId()); + if (consortia != null && consortia.getUserId() != null) { + UserEntity consortiaUser = userService.getById(consortia.getUserId()); + if (consortiaUser != null) { + shopMoney = pingMoney.multiply(consortia.getRate()); + orders.setConsortiaId(consortia.getConsortiaId()); + orders.setShopUserId(consortiaUser.getUserId()); + orders.setShopUserName(consortiaUser.getUserName()); + } + } + } + orders.setShopMoney(shopMoney); + orders.setOneArtificerMoney(oneArtificerMoney); + //总差价不变,则修改原单据 + baseMapper.updateById(orders); + } else { + //新增单据 + orders.setPayMoney(chajia); + BigDecimal artificerPrice = new BigDecimal("0.00"); + //查询是否计算出租车扣费 + String taxi = commonInfoService.findOne(394).getValue(); + //计算技师出租车收益(按照技师表收益计算) + if ("是".equals(taxi)) { + //计算技师应该收取的出租车费用 + BigDecimal artificerTaxiMoney = cxchajia.multiply(artificer.getRate()); + //计算出租车扣款 + BigDecimal pingTaxiMoney = cxchajia.subtract(artificerTaxiMoney); + //赋值技师出租收款 + orders.setArtificerTaxiMoney(artificerTaxiMoney); + //赋值出租车扣款 + orders.setPingTaxiMoney(pingTaxiMoney); + //赋值技师收益 + artificerPrice = chajia.multiply(artificer.getRate()); + } else { + //平台不扣费 出租车收益全由技师收取 + orders.setArtificerTaxiMoney(cxchajia); + //设置出租车扣款为0 + orders.setPingTaxiMoney(BigDecimal.ZERO); + //计算用户收益 !计算前先减去通行费用再计算技师抽成 + artificerPrice = xmchajia.multiply(artificer.getRate()); + //用户收益加上通行费用 + artificerPrice = artificerPrice.add(cxchajia); + } + + //计算项目收益 + //计算技师项目提成金额 + orders.setProjectBenefits(xmchajia.multiply(artificer.getRate()).setScale(2, BigDecimal.ROUND_HALF_UP)); + orders.setArtificerMoney(artificerPrice); + orders.setSumArtificerMoney(artificerPrice); + orders.setOrdersNo(getGeneralOrder()); + orders.setStatus(1); + if (oldOrders.getStatus() == 2) { + orders.setIsSupplement(3); + } + if (oldOrders.getStatus() == 9) { + orders.setIsSupplement(4); + } + orders.setCreateTime(DateUtils.format(new Date())); + orders.setSumMoney(orders.getPayMoney().setScale(2, BigDecimal.ROUND_HALF_UP)); + orders.setOldMassageMoney(oldOrders.getMassageMoney()); + orders.setOldOrdersId(oldOrders.getOrdersId()); + //保存订单 + baseMapper.insert(orders); + + Orders ordersOld = new Orders(); + BigDecimal pingMoney = oldOrders.getPayMoney(); + UserEntity artificerUser = userService.selectUserById(artificer.getUserId()); + UserEntity oneArtificerUser = userService.queryByInvitationCode(artificerUser.getInviterCode()); + BigDecimal oneArtificerMoney = BigDecimal.ZERO; + if (oneArtificerUser != null && oneArtificerUser.getIsAgency() != null && oneArtificerUser.getIsAgency() == 1) { + ordersOld.setOneArtificerUserId(oneArtificerUser.getUserId()); + ordersOld.setOneArtificerUserName(oneArtificerUser.getUserName()); + oneArtificerMoney = pingMoney.multiply(oneArtificerUser.getShopRate()); + } + BigDecimal shopMoney = BigDecimal.ZERO; + if (artificerUser.getConsortiaId() != null) { + Consortia consortia = consortiaService.getById(artificerUser.getConsortiaId()); + if (consortia != null && consortia.getUserId() != null) { + UserEntity consortiaUser = userService.getById(consortia.getUserId()); + if (consortiaUser != null) { + shopMoney = pingMoney.multiply(consortia.getRate()); + ordersOld.setConsortiaId(consortia.getConsortiaId()); + ordersOld.setShopUserId(consortiaUser.getUserId()); + ordersOld.setShopUserName(consortiaUser.getUserName()); + } + } + } + ordersOld.setShopMoney(shopMoney); + ordersOld.setOneArtificerMoney(oneArtificerMoney); + ordersOld.setOrdersId(oldOrders.getOrdersId()); + ordersOld.setStatus(11); + baseMapper.updateById(ordersOld);//原单暂变成挂单状态 + } + } + return Result.success(); + }catch (Exception e){ + return Result.error(e.getMessage()); } - baseMapper.updateById(orders); - return Result.success(); } @Override @@ -2026,6 +2295,23 @@ public class OrdersServiceImpl extends ServiceImpl implements } } baseMapper.updateById(orders); + if(orders.getOldOrdersId()!=null && orders.getOldOrdersId() !=0){ + Orders ordersOld = new Orders(); + ordersOld.setOrdersId(orders.getOldOrdersId()); + if(orders.getIsSupplement() != null){ + if(orders.getIsSupplement() == 2){ + orders.setStatus(6); + }else if(orders.getIsSupplement() == 3){ + orders.setStatus(2); + }else{ + orders.setStatus(9);//用户已支付技师待接单 + } + }else{ + orders.setStatus(9);//用户已支付技师待接单 + } + ordersOld.setStatus(11); + baseMapper.updateById(ordersOld);//原单暂变成挂单状态 + } return Result.success(); } @@ -2250,6 +2536,23 @@ public class OrdersServiceImpl extends ServiceImpl implements } baseMapper.updateById(orders); + if(orders.getOldOrdersId()!=null && orders.getOldOrdersId() !=0){ + Orders ordersOld = new Orders(); + ordersOld.setOrdersId(orders.getOldOrdersId()); + if(orders.getIsSupplement() != null){ + if(orders.getIsSupplement() == 2){ + orders.setStatus(6); + }else if(orders.getIsSupplement() == 3){ + orders.setStatus(2); + }else{ + orders.setStatus(9);//用户已支付技师待接单 + } + }else{ + orders.setStatus(9);//用户已支付技师待接单 + } + ordersOld.setStatus(11); + baseMapper.updateById(ordersOld);//原单暂变成挂单状态 + } return Result.success(); } @@ -2264,6 +2567,10 @@ public class OrdersServiceImpl extends ServiceImpl implements public Result cancelSupplementOrders(Long userId, Long ordersId, Integer isAuto, Integer type) { Orders orders = baseMapper.selectById(ordersId); //状态 1待支付 2待服务 3待评论 4已取消 5已完成 6进行中 7技师出发 8技师到达 9用户已支付技师待接单 10待补单 + if(orders.getOldOrdersId()!=null && orders.getOldOrdersId() !=0 && type == 1){ + + return Result.error("补差价的单据无法生成待补单!"); + } if (orders.getStatus() == 8 || orders.getStatus() == 9) { if(orders.getUserPackageDetailId() !=null){ return cancelSupplementPackageOrders(userId,orders,isAuto,type); @@ -2422,7 +2729,7 @@ public class OrdersServiceImpl extends ServiceImpl implements BigDecimal payMoney = orders.getPayMoney().subtract(orders.getTaxiMoney()); orders.setPayMoney(payMoney); } - if(orders.getOldOrdersId() !=null){ + if(orders.getOldOrdersId()!=null && orders.getOldOrdersId() !=0){ //此笔单子退车费,并改为取消,再将原单改成待补单 orders.setRefusalContent(""); orders.setTaxiMoney(BigDecimal.ZERO); @@ -2663,7 +2970,7 @@ public class OrdersServiceImpl extends ServiceImpl implements userService.sendWxMessage(apkey, data, userEntity.getWxOpenId()); } - if(orders.getOldOrdersId()!=null){ + if(orders.getOldOrdersId()!=null && orders.getOldOrdersId() !=0){ cancelSupplementOrders(userId, orders.getOldOrdersId(), isAuto, 2);//退原单,原单的车费已被退/扣,所以只退项目 } } @@ -2816,7 +3123,7 @@ public class OrdersServiceImpl extends ServiceImpl implements BigDecimal payMoney = orders.getPayMoney().subtract(orders.getTaxiMoney()); orders.setPayMoney(payMoney); } - if(orders.getOldOrdersId() !=null){ + if(orders.getOldOrdersId()!=null && orders.getOldOrdersId() !=0){ //此笔单子退车费,并改为取消,再将原单改成待补单 orders.setRefusalContent(""); orders.setTaxiMoney(BigDecimal.ZERO); @@ -2988,7 +3295,7 @@ public class OrdersServiceImpl extends ServiceImpl implements userService.sendWxMessage(apkey, data, userEntity.getWxOpenId()); } - if(orders.getOldOrdersId()!=null){ + if(orders.getOldOrdersId()!=null && orders.getOldOrdersId() !=0){ cancelSupplementOrders(userId, orders.getOldOrdersId(), 0, 2);//退原单,原单的车费已被退/扣,所以只退项目 } } @@ -3239,9 +3546,6 @@ public class OrdersServiceImpl extends ServiceImpl implements orders.setGjPrice(payMoney.add(massageMoney)); orders.setGjcePrice(jzOrder.getPayMoney()); } - - - return Result.success().put("data", orders); } @@ -3561,49 +3865,91 @@ public class OrdersServiceImpl extends ServiceImpl implements userMoneyDetailsService.save(userMoneyDetails); // } - orders.setStatus(9);//用户已支付技师待接单 + if(orders.getIsSupplement() != null){ + if(orders.getIsSupplement() == 2){ + orders.setStatus(6); + }else if(orders.getIsSupplement() == 3){ + orders.setStatus(2); + }else{ + orders.setStatus(9);//用户已支付技师待接单 + } + }else{ + orders.setStatus(9);//用户已支付技师待接单 + } orders.setPayWay(5); orders.setPayTime(simpleDateFormat.format(new Date())); BigDecimal pingMoney = orders.getPayMoney(); -// 分佣在订单完成后进行计算 2024-06-20 by caolei -// UserEntity user = userService.selectUserById(orders.getUserId()); -// UserEntity oneUser = userService.queryByInvitationCode(user.getInviterCode()); -// + UserEntity user = userService.selectUserById(orders.getUserId()); + UserEntity oneUser = userService.queryByInvitationCode(user.getInviterCode()); BigDecimal oneUserMoney = BigDecimal.ZERO; -// if (oneUser != null && oneUser.getIsAgency() != null && oneUser.getIsAgency() == 1) { -// orders.setOneUserId(oneUser.getUserId()); -// orders.setOneUserName(oneUser.getUserName()); -// oneUserMoney = pingMoney.multiply(oneUser.getUserRate()); -// } + if (oneUser != null && oneUser.getIsAgency() != null && oneUser.getIsAgency() == 1) { + orders.setOneUserId(oneUser.getUserId()); + orders.setOneUserName(oneUser.getUserName()); + oneUserMoney = pingMoney.multiply(oneUser.getUserRate()); + } Artificer artificer = artificerService.getById(orders.getArtificerId()); -// -// UserEntity artificerUser = userService.selectUserById(artificer.getUserId()); -// -// UserEntity oneArtificerUser = userService.queryByInvitationCode(artificerUser.getInviterCode()); -// + + UserEntity artificerUser = userService.selectUserById(artificer.getUserId()); + UserEntity oneArtificerUser = userService.queryByInvitationCode(artificerUser.getInviterCode()); BigDecimal oneArtificerMoney = BigDecimal.ZERO; -// if (oneArtificerUser != null && oneArtificerUser.getIsAgency() != null && oneArtificerUser.getIsAgency() == 1) { -// orders.setOneArtificerUserId(oneArtificerUser.getUserId()); -// orders.setOneArtificerUserName(oneArtificerUser.getUserName()); -// oneArtificerMoney = pingMoney.multiply(oneArtificerUser.getShopRate()); -// } + if (oneArtificerUser != null && oneArtificerUser.getIsAgency() != null && oneArtificerUser.getIsAgency() == 1) { + orders.setOneArtificerUserId(oneArtificerUser.getUserId()); + orders.setOneArtificerUserName(oneArtificerUser.getUserName()); + oneArtificerMoney = pingMoney.multiply(oneArtificerUser.getShopRate()); + } BigDecimal shopMoney = BigDecimal.ZERO; -// if (artificerUser.getConsortiaId() != null) { -// Consortia consortia = consortiaService.getById(artificerUser.getConsortiaId()); -// if (consortia != null && consortia.getUserId() != null) { -// UserEntity consortiaUser = userService.getById(consortia.getUserId()); -// if (consortiaUser != null) { -// shopMoney = pingMoney.multiply(consortia.getRate()); -// orders.setConsortiaId(consortia.getConsortiaId()); -// orders.setShopUserId(consortiaUser.getUserId()); -// orders.setShopUserName(consortiaUser.getUserName()); -// } -// } -// } + if (artificerUser.getConsortiaId() != null) { + Consortia consortia = consortiaService.getById(artificerUser.getConsortiaId()); + if (consortia != null && consortia.getUserId() != null) { + UserEntity consortiaUser = userService.getById(consortia.getUserId()); + if (consortiaUser != null) { + shopMoney = pingMoney.multiply(consortia.getRate()); + orders.setConsortiaId(consortia.getConsortiaId()); + orders.setShopUserId(consortiaUser.getUserId()); + orders.setShopUserName(consortiaUser.getUserName()); + } + } + } + + BigDecimal rate = new BigDecimal(commonInfoService.findOne(449).getValue()); + rate = rate.divide(new BigDecimal(100)); + //钱包支付技师提成 + BigDecimal taxiMoney = orders.getTaxiMoney(); + BigDecimal artificerPrice = BigDecimal.ZERO; + //查询是否计算出租车扣费 + 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()).multiply(rate); + } else { + //平台不扣费 出租车收益全由技师收取 + orders.setArtificerTaxiMoney(orders.getTaxiMoney()); + //设置出租车扣款为0 + orders.setPingTaxiMoney(BigDecimal.ZERO); + //用户支付减去通行费用 + BigDecimal subtract = orders.getPayMoney().subtract(taxiMoney); + //计算用户收益 !计算前先减去通行费用再计算技师抽成 + artificerPrice = subtract.multiply(artificer.getRate()); + //用户收益加上通行费用 + artificerPrice = artificerPrice.multiply(rate).add(taxiMoney); + } + orders.setProjectBenefits(orders.getProjectBenefits().multiply(rate)); + orders.setArtificerMoney(artificerPrice); + orders.setSumArtificerMoney(orders.getArtificerMoney()); + pingMoney = pingMoney.subtract(orders.getArtificerMoney()); pingMoney = pingMoney.subtract(oneUserMoney); pingMoney = pingMoney.subtract(shopMoney); @@ -3642,29 +3988,31 @@ public class OrdersServiceImpl extends ServiceImpl implements orders1.setAddMoney(orders.getPayMoney()); orders1.setAddArtificerMoney(orders.getArtificerMoney()); } + orders1.setSumMoney(orders1.getSumMoney().add(orders.getPayMoney())); - orders1.setSumArtificerMoney(orders1.getSumArtificerMoney().add(orders.getArtificerMoney())); + orders1.setSumArtificerMoney(orders1.getSumArtificerMoney().multiply(rate).add(orders.getArtificerMoney())); + pingMoney = orders1.getSumMoney(); oneUserMoney = BigDecimal.ZERO; -// 分佣在订单完成后进行计算 2024-06-20 by caolei -// if (oneUser != null && oneUser.getIsAgency() != null && oneUser.getIsAgency() == 1) { -// oneUserMoney = pingMoney.multiply(oneUser.getUserRate()); -// } + if (oneUser != null && oneUser.getIsAgency() != null && oneUser.getIsAgency() == 1) { + oneUserMoney = pingMoney.multiply(oneUser.getUserRate()); + } oneArtificerMoney = BigDecimal.ZERO; -// if (oneArtificerUser != null && oneArtificerUser.getIsAgency() != null && oneArtificerUser.getIsAgency() == 1) { -// oneArtificerMoney = pingMoney.multiply(oneArtificerUser.getShopRate()); -// } + if (oneArtificerUser != null && oneArtificerUser.getIsAgency() != null && oneArtificerUser.getIsAgency() == 1) { + oneArtificerMoney = pingMoney.multiply(oneArtificerUser.getShopRate()); + } shopMoney = BigDecimal.ZERO; -// if (artificerUser.getConsortiaId() != null) { -// Consortia consortia = consortiaService.getById(artificerUser.getConsortiaId()); -// if (consortia != null && consortia.getUserId() != null) { -// UserEntity consortiaUser = userService.getById(consortia.getUserId()); -// if (consortiaUser != null) { -// shopMoney = pingMoney.multiply(consortia.getRate()); -// -// } -// } -// } + if (artificerUser.getConsortiaId() != null) { + Consortia consortia = consortiaService.getById(artificerUser.getConsortiaId()); + if (consortia != null && consortia.getUserId() != null) { + UserEntity consortiaUser = userService.getById(consortia.getUserId()); + if (consortiaUser != null) { + shopMoney = pingMoney.multiply(consortia.getRate()); + + } + } + } + pingMoney = pingMoney.subtract(orders1.getSumArtificerMoney()); pingMoney = pingMoney.subtract(oneUserMoney); pingMoney = pingMoney.subtract(oneArtificerMoney); @@ -3824,38 +4172,38 @@ public class OrdersServiceImpl extends ServiceImpl implements orders.setPayTime(simpleDateFormat.format(new Date())); BigDecimal pingMoney = orders.getPayMoney(); -// 分佣在订单完成后进行计算 2024-06-20 by caolei -// UserEntity user = userService.selectUserById(orders.getUserId()); -// UserEntity oneUser = userService.queryByInvitationCode(user.getInviterCode()); + UserEntity user = userService.selectUserById(orders.getUserId()); + UserEntity oneUser = userService.queryByInvitationCode(user.getInviterCode()); BigDecimal oneUserMoney = BigDecimal.ZERO; -// if (oneUser != null && oneUser.getIsAgency() != null && oneUser.getIsAgency() == 1) { -// orders.setOneUserId(oneUser.getUserId()); -// orders.setOneUserName(oneUser.getUserName()); -// oneUserMoney = pingMoney.multiply(oneUser.getUserRate()); -// } + if (oneUser != null && oneUser.getIsAgency() != null && oneUser.getIsAgency() == 1) { + orders.setOneUserId(oneUser.getUserId()); + orders.setOneUserName(oneUser.getUserName()); + oneUserMoney = pingMoney.multiply(oneUser.getUserRate()); + } Artificer artificer = artificerService.getById(orders.getArtificerId()); -// UserEntity artificerUser = userService.selectUserById(artificer.getUserId()); -// UserEntity oneArtificerUser = userService.queryByInvitationCode(artificerUser.getInviterCode()); + UserEntity artificerUser = userService.selectUserById(artificer.getUserId()); + UserEntity oneArtificerUser = userService.queryByInvitationCode(artificerUser.getInviterCode()); BigDecimal oneArtificerMoney = BigDecimal.ZERO; -// if (oneArtificerUser != null && oneArtificerUser.getIsAgency() != null && oneArtificerUser.getIsAgency() == 1) { -// orders.setOneArtificerUserId(oneArtificerUser.getUserId()); -// orders.setOneArtificerUserName(oneArtificerUser.getUserName()); -// oneArtificerMoney = pingMoney.multiply(oneArtificerUser.getShopRate()); -// } + if (oneArtificerUser != null && oneArtificerUser.getIsAgency() != null && oneArtificerUser.getIsAgency() == 1) { + orders.setOneArtificerUserId(oneArtificerUser.getUserId()); + orders.setOneArtificerUserName(oneArtificerUser.getUserName()); + oneArtificerMoney = pingMoney.multiply(oneArtificerUser.getShopRate()); + } BigDecimal shopMoney = BigDecimal.ZERO; -// if (artificerUser.getConsortiaId() != null) { -// Consortia consortia = consortiaService.getById(artificerUser.getConsortiaId()); -// if (consortia != null && consortia.getUserId() != null) { -// UserEntity consortiaUser = userService.getById(consortia.getUserId()); -// if (consortiaUser != null) { -// shopMoney = pingMoney.multiply(consortia.getRate()); -// orders.setConsortiaId(consortia.getConsortiaId()); -// orders.setShopUserId(consortiaUser.getUserId()); -// orders.setShopUserName(consortiaUser.getUserName()); -// } -// } -// } + if (artificerUser.getConsortiaId() != null) { + Consortia consortia = consortiaService.getById(artificerUser.getConsortiaId()); + if (consortia != null && consortia.getUserId() != null) { + UserEntity consortiaUser = userService.getById(consortia.getUserId()); + if (consortiaUser != null) { + shopMoney = pingMoney.multiply(consortia.getRate()); + orders.setConsortiaId(consortia.getConsortiaId()); + orders.setShopUserId(consortiaUser.getUserId()); + orders.setShopUserName(consortiaUser.getUserName()); + } + } + } + pingMoney = pingMoney.subtract(orders.getArtificerMoney()); pingMoney = pingMoney.subtract(oneUserMoney); pingMoney = pingMoney.subtract(shopMoney); @@ -3898,25 +4246,23 @@ public class OrdersServiceImpl extends ServiceImpl implements orders1.setSumArtificerMoney(orders1.getSumArtificerMoney().add(orders.getArtificerMoney())); pingMoney = orders1.getSumMoney(); oneUserMoney = BigDecimal.ZERO; -// 分佣在订单完成后进行计算 2024-06-20 by caolei -// if (oneUser != null && oneUser.getIsAgency() != null && oneUser.getIsAgency() == 1) { -// oneUserMoney = pingMoney.multiply(oneUser.getUserRate()); -// } + if (oneUser != null && oneUser.getIsAgency() != null && oneUser.getIsAgency() == 1) { + oneUserMoney = pingMoney.multiply(oneUser.getUserRate()); + } oneArtificerMoney = BigDecimal.ZERO; -// if (oneArtificerUser != null && oneArtificerUser.getIsAgency() != null && oneArtificerUser.getIsAgency() == 1) { -// oneArtificerMoney = pingMoney.multiply(oneArtificerUser.getShopRate()); -// } + if (oneArtificerUser != null && oneArtificerUser.getIsAgency() != null && oneArtificerUser.getIsAgency() == 1) { + oneArtificerMoney = pingMoney.multiply(oneArtificerUser.getShopRate()); + } shopMoney = BigDecimal.ZERO; -// if (artificerUser.getConsortiaId() != null) { -// Consortia consortia = consortiaService.getById(artificerUser.getConsortiaId()); -// if (consortia != null && consortia.getUserId() != null) { -// UserEntity consortiaUser = userService.getById(consortia.getUserId()); -// if (consortiaUser != null) { -// shopMoney = pingMoney.multiply(consortia.getRate()); -// -// } -// } -// } + if (artificerUser.getConsortiaId() != null) { + Consortia consortia = consortiaService.getById(artificerUser.getConsortiaId()); + if (consortia != null && consortia.getUserId() != null) { + UserEntity consortiaUser = userService.getById(consortia.getUserId()); + if (consortiaUser != null) { + shopMoney = pingMoney.multiply(consortia.getRate()); + } + } + } pingMoney = pingMoney.subtract(orders1.getSumArtificerMoney()); pingMoney = pingMoney.subtract(oneUserMoney); pingMoney = pingMoney.subtract(oneArtificerMoney); @@ -4122,7 +4468,6 @@ public class OrdersServiceImpl extends ServiceImpl implements return Result.success(); } - @Override public Result accomplishOrders(Long ordersId, Integer type, String accomplishLongitude, String accomplishLatitude,String jsFwcn,String jsPjtag,String jsTsbz,String earlyFinishReason) { reentrantReadWriteLock.writeLock().lock(); @@ -4166,7 +4511,7 @@ public class OrdersServiceImpl extends ServiceImpl implements massageType.setSales(num + ordersMassage.getNum()); massageTypeService.updateById(massageType); } - //修改用户钱包 1是加 2是减 + //修改技师钱包 1是加 2是减 UserEntity userEntity = userService.selectUserById(artificer.getUserId()); userMoneyService.updateMoney(1, userEntity.getUserId(), orders.getSumArtificerMoney().doubleValue()); @@ -4347,6 +4692,37 @@ public class OrdersServiceImpl extends ServiceImpl implements } //执行对应项目减去技师物料包 materialArtificerService.accomplishOrders(orders.getMassageTypeId(),orders.getArtificerId()); + + if(orders.getOldOrdersId()!=null && orders.getOldOrdersId() !=0){ + Orders oldOrders = baseMapper.selectById(orders.getOldOrdersId()); + oldOrders.setStatus(orders.getStatus()); + oldOrders.setArtificerId(orders.getArtificerId()); + oldOrders.setUserId(orders.getUserId()); + oldOrders.setUserName(orders.getUserName()); + oldOrders.setPhone(orders.getPhone()); + oldOrders.setAddress(orders.getAddress()); + oldOrders.setRemark(orders.getRemark()); + oldOrders.setServeTime(orders.getServeTime()); + oldOrders.setArtificerStartTime(orders.getArtificerStartTime()); + oldOrders.setArtificerEndTime(orders.getArtificerEndTime()); + oldOrders.setStartLongitude(orders.getStartLongitude()); + oldOrders.setStartLatitude(orders.getStartLatitude()); +// oldOrders.setTripWay(orders.getTripWay()); +// oldOrders.setTaxiMoney(BigDecimal.ZERO); +// oldOrders.setKm(orders.getKm()); + oldOrders.setStartTime(orders.getStartTime()); + oldOrders.setEndTime(orders.getEndTime()); + oldOrders.setStartImg(orders.getStartImg()); + oldOrders.setStartLongitude(orders.getStartLongitude()); + oldOrders.setStartLatitude(orders.getStartLatitude()); + oldOrders.setAccomplishLongitude(orders.getAccomplishLongitude()); + oldOrders.setAccomplishLatitude(orders.getAccomplishLongitude()); + oldOrders.setStartAddress(orders.getStartAddress()); + oldOrders.setAccomplishAddress(orders.getAccomplishAddress()); + oldOrders.setArtificerRate(orders.getArtificerRate()); + accomplishOldOrders(oldOrders,type,jsFwcn,jsPjtag,jsTsbz); + } + return Result.success(); } catch (Exception e) { e.printStackTrace(); @@ -4355,7 +4731,207 @@ public class OrdersServiceImpl extends ServiceImpl implements } finally { reentrantReadWriteLock.writeLock().unlock(); } + } + private Result accomplishOldOrders(Orders orders, Integer type, String jsFwcn,String jsPjtag,String jsTsbz) { + reentrantReadWriteLock.writeLock().lock(); + try { + if (type == 1) { + if (orders.getStatus().equals(1)) { + return Result.error("订单未付款!"); + } else if (orders.getStatus().equals(3) || orders.getStatus().equals(5)) { + return Result.error("订单已经完成了!"); + } else if (orders.getStatus().equals(4)) { + return Result.error("订单已经取消!"); + } + } else { + if (!orders.getStatus().equals(6)) { + return Result.error("请刷新页面后重试!"); + } + } + + Artificer artificer = artificerService.getById(orders.getArtificerId()); + //修改技师钱包 1是加 2是减 + UserEntity userEntity = userService.selectUserById(artificer.getUserId()); + userMoneyService.updateMoney(1, userEntity.getUserId(), orders.getSumArtificerMoney().doubleValue()); + + //--------添加钱包流水日志------------- + UserMoneyDetails userMoneyDetails = new UserMoneyDetails(); + //查询用户当前余额 + UserMoney userNowMoney1 = userMoneyService.selectUserMoneyByUserId(userEntity.getUserId()); + //插入余额 + userMoneyDetails.setBalance(userNowMoney1.getMoney()); + //插入操作类型为已操作用户余额 + userMoneyDetails.setManipulateType(2); + userMoneyDetails.setMoney(orders.getSumArtificerMoney()); + userMoneyDetails.setUserId(userEntity.getUserId()); + userMoneyDetails.setTitle("订单号:" + orders.getOrdersNo() + ",订单完成!"); + String value = commonInfoService.findOne(394).getValue(); + if ("是".equals(value)) { + if (orders.getShopUserId() != null) { + userMoneyDetails.setContent("支付金额:" + orders.getSumMoney() + ",平台扣除:" + orders.getPingMoney() + + ",商家扣除:" + orders.getShopMoney() + ",用户代理扣除:" + orders.getOneUserMoney() + ",技师代理扣除:" + orders.getOneArtificerMoney() + + ",打车费:" + orders.getTaxiMoney() + ",平台扣除打车费:" + orders.getPingTaxiMoney() + ",到账打车费:" + orders.getArtificerTaxiMoney() + + ",到账总金额:" + orders.getSumArtificerMoney()); + } else { + userMoneyDetails.setContent("支付金额:" + orders.getSumMoney() + ",平台扣除:" + orders.getPingMoney() + + ",用户代理扣除:" + orders.getOneUserMoney() + ",技师代理扣除:" + orders.getOneArtificerMoney() + + ",打车费:" + orders.getTaxiMoney() + ",平台扣除打车费:" + orders.getPingTaxiMoney() + ",到账打车费:" + orders.getArtificerTaxiMoney() + + ",到账总金额:" + orders.getSumArtificerMoney()); + } + } else { + if (orders.getShopUserId() != null) { + userMoneyDetails.setContent("支付金额:" + orders.getSumMoney() + ",平台扣除:" + orders.getPingMoney() + + ",商家扣除:" + orders.getShopMoney() + ",用户代理扣除:" + orders.getOneUserMoney() + ",技师代理扣除:" + orders.getOneArtificerMoney() + + ",打车费:" + orders.getTaxiMoney() + + ",到账总金额:" + orders.getSumArtificerMoney()); + } else { + userMoneyDetails.setContent("支付金额:" + orders.getSumMoney() + ",平台扣除:" + orders.getPingMoney() + + ",用户代理扣除:" + orders.getOneUserMoney() + ",技师代理扣除:" + orders.getOneArtificerMoney() + + ",打车费:" + orders.getTaxiMoney() + + ",到账总金额:" + orders.getSumArtificerMoney()); + } + } + userMoneyDetails.setType(1); + userMoneyDetails.setState(2); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + userMoneyDetails.setCreateTime(simpleDateFormat.format(new Date())); + userMoneyDetails.setBlRole(2); + userMoneyDetails.setBlFlag(1); + userMoneyDetailsService.save(userMoneyDetails); + + //--------添加钱包流水日志------------- + UserEntity user = userService.selectUserById(orders.getUserId()); + UserEntity oneUser = userService.queryByInvitationCode(user.getInviterCode()); + if (oneUser != null && oneUser.getIsAgency() != null && oneUser.getIsAgency() == 1) { + userMoneyService.updateMoney(1, oneUser.getUserId(), orders.getOneUserMoney().doubleValue()); + userMoneyDetails = new UserMoneyDetails(); + //查询用户当前余额 + UserMoney userNowMoney11 = userMoneyService.selectUserMoneyByUserId(orders.getUserId()); + //插入余额 + userMoneyDetails.setBalance(userNowMoney11.getMoney()); + //插入操作类型为已操作用户余额 + userMoneyDetails.setManipulateType(2); + userMoneyDetails.setMoney(orders.getOneUserMoney()); + userMoneyDetails.setUserId(oneUser.getUserId()); + userMoneyDetails.setContent("订单号:" + orders.getOrdersNo() + ",订单完成!"); + userMoneyDetails.setTitle("推广用户收益"); + userMoneyDetails.setType(1); + userMoneyDetails.setState(2); + userMoneyDetails.setClassify(5); + userMoneyDetails.setCreateTime(simpleDateFormat.format(new Date())); + userMoneyDetails.setBlRole(1); + userMoneyDetails.setBlFlag(1); + userMoneyDetailsService.save(userMoneyDetails); + orders.setOneUserId(oneUser.getUserId()); + orders.setOneUserName(oneUser.getUserName()); + } + UserEntity artificerUser = userService.selectUserById(artificer.getUserId()); + UserEntity oneArtificerUser = userService.queryByInvitationCode(artificerUser.getInviterCode()); + if (oneArtificerUser != null && oneArtificerUser.getIsAgency() != null && oneArtificerUser.getIsAgency() == 1) { + userMoneyService.updateMoney(1, oneArtificerUser.getUserId(), orders.getOneArtificerMoney().doubleValue()); + userMoneyDetails = new UserMoneyDetails(); + //查询用户当前余额 + UserMoney userNowMoney12 = userMoneyService.selectUserMoneyByUserId(oneArtificerUser.getUserId()); + //插入余额 + userMoneyDetails.setBalance(userNowMoney12.getMoney()); + //插入操作类型为已操作用户余额 + userMoneyDetails.setManipulateType(2); + userMoneyDetails.setMoney(orders.getOneArtificerMoney()); + userMoneyDetails.setUserId(oneArtificerUser.getUserId()); + userMoneyDetails.setContent("订单号:" + orders.getOrdersNo() + ",订单完成!"); + userMoneyDetails.setTitle("推广师傅收益"); + userMoneyDetails.setType(1); + userMoneyDetails.setState(2); + userMoneyDetails.setClassify(6); + userMoneyDetails.setCreateTime(simpleDateFormat.format(new Date())); + userMoneyDetails.setBlRole(2); + userMoneyDetails.setBlFlag(1); + userMoneyDetailsService.save(userMoneyDetails); + orders.setOneArtificerUserId(oneArtificerUser.getUserId()); + orders.setOneArtificerUserName(oneArtificerUser.getUserName()); + } + if (orders.getShopUserId() != null) { + userMoneyService.updateMoney(1, orders.getShopUserId(), orders.getShopMoney().doubleValue()); + userMoneyDetails = new UserMoneyDetails(); + //查询用户当前余额 + UserMoney userNowMoney9 = userMoneyService.selectUserMoneyByUserId(orders.getShopUserId()); + //插入余额 + userMoneyDetails.setBalance(userNowMoney9.getMoney()); + //插入操作类型为已操作用户余额 + userMoneyDetails.setManipulateType(2); + userMoneyDetails.setMoney(orders.getShopMoney()); + userMoneyDetails.setUserId(orders.getShopUserId()); + userMoneyDetails.setContent("订单号:" + orders.getOrdersNo() + ",订单完成!"); + userMoneyDetails.setTitle("商家收益"); + userMoneyDetails.setType(1); + userMoneyDetails.setState(2); + userMoneyDetails.setClassify(7); + userMoneyDetails.setCreateTime(simpleDateFormat.format(new Date())); + userMoneyDetails.setBlRole(3); + userMoneyDetails.setBlFlag(1); + userMoneyDetailsService.save(userMoneyDetails); + } + orders.setEndTimes(DateUtils.format(new Date())); + orders.setJsFwcn(jsFwcn); + orders.setJsPjtag(jsPjtag); + orders.setJsTsbz(jsTsbz); + //修改订单表类型 + baseMapper.updateById(orders); + //修改订单下所有加钟的状态为待评价 + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("parent_id", orders.getOrdersId()); + Orders orders2 = new Orders(); + orders2.setStatus(3); + baseMapper.update(orders2,updateWrapper); + //消息推送 + List msgList = new ArrayList<>(); + msgList.add(orders.getOrdersNo()); + //超过十个字 则截取 + String content = orders.getEntryName(); + if (content.length() >= 15) { + content = content.substring(0, 15) + "..."; + } + msgList.add(content); + msgList.add(userMoneyDetails.getCreateTime()); + if (StringUtils.isNotEmpty(userEntity.getArtificerOpenId())) { + CommonInfo one = commonInfoService.findOne(249); + SenInfoCheckUtil.sendMsg(userEntity.getArtificerOpenId(), one.getValue(), msgList, 4); + } + if (StringUtils.isNotEmpty(userEntity.getClientid())) { + userService.pushToSingle("订单通知", "订单完成了,请点击查看详细信息!", userEntity.getClientid()); + } + /*if(StringUtils.isNotBlank(userEntity.getWxOpenId())){ + String apkey = commonInfoService.findOne(314).getValue(); + LinkedHashMap data = new LinkedHashMap<>(); + data.put("character_string1", new TemplateMessageItem(orders.getOrdersNo(), "#d71345")); + data.put("thing3", new TemplateMessageItem(content, "#d71345")); + userService.sendWxMessage(apkey, data, userEntity.getWxOpenId()); + }*/ + if (StringUtils.isNotEmpty(user.getOpenId())) { + CommonInfo one = commonInfoService.findOne(250); + SenInfoCheckUtil.sendMsg(user.getOpenId(), one.getValue(), msgList, 3); + } + + if (StringUtils.isNotEmpty(user.getClientid())) { + userService.pushToSingle("订单通知", "订单完成了,请点击查看详细信息!", user.getClientid()); + } + + if (StringUtils.isNotBlank(user.getWxOpenId())) { + String apkey = commonInfoService.findOne(314).getValue(); + LinkedHashMap data = new LinkedHashMap<>(); + data.put("character_string1", new TemplateMessageItem(orders.getOrdersNo(), "#d71345")); + data.put("thing3", new TemplateMessageItem(content, "#d71345")); + userService.sendWxMessage(apkey, data, user.getWxOpenId()); + } + return Result.success(); + } catch (Exception e) { + e.printStackTrace(); + log.error("完成订单异常:" + e.getMessage(), e); + return Result.error("系统错误,请联系管理员"); + } finally { + reentrantReadWriteLock.writeLock().unlock(); + } } @Override @@ -4840,7 +5416,7 @@ public class OrdersServiceImpl extends ServiceImpl implements new PageUtils(baseMapper.selectArtificerOrdersList(new Page<>(page, limit), artificerName, artificerPhone, userName, phone, warning, overTimeOrders))); } - @Scheduled(cron = "0 */1 * * * ?") +// @Scheduled(cron = "0 */1 * * * ?") public void updateOrdersWarning() { String value = commonInfoService.findOne(376).getValue(); baseMapper.updateOrdersWarning(value); diff --git a/src/main/java/com/sqx/modules/coupon/controller/CouponUserController.java b/src/main/java/com/sqx/modules/coupon/controller/CouponUserController.java index 17212d2..e8a2704 100644 --- a/src/main/java/com/sqx/modules/coupon/controller/CouponUserController.java +++ b/src/main/java/com/sqx/modules/coupon/controller/CouponUserController.java @@ -22,8 +22,8 @@ public class CouponUserController extends AbstractController { @GetMapping("/selectCouponUserList") @ApiOperation("查询用户优惠券") - public Result selectCouponUserList(Integer page,Integer limit,Long userId,Integer status,String phone,String couponName){ - return couponUserService.selectCouponByUserId(page, limit, userId, status, phone,couponName); + public Result selectCouponUserList(Integer page,Integer limit,Long id,Long userId,Integer status,String phone,String couponName){ + return couponUserService.selectCouponByUserId(page, limit, id, userId, status, phone,couponName); } @PostMapping("/loseEfficacyCoupon") diff --git a/src/main/java/com/sqx/modules/coupon/controller/app/AppCouponUserController.java b/src/main/java/com/sqx/modules/coupon/controller/app/AppCouponUserController.java index 89d9ac4..3bfbd74 100644 --- a/src/main/java/com/sqx/modules/coupon/controller/app/AppCouponUserController.java +++ b/src/main/java/com/sqx/modules/coupon/controller/app/AppCouponUserController.java @@ -39,8 +39,8 @@ public class AppCouponUserController extends AbstractController { @Login @GetMapping("/selectCouponUserList") @ApiOperation("查询用户优惠券") - public Result selectCouponUserList(Integer page,Integer limit,@RequestAttribute Long userId,Integer status,String phone){ - return couponUserService.selectCouponByUserId(page, limit, userId, status, phone,null); + public Result selectCouponUserList(Integer page,Integer limit,Long id,@RequestAttribute Long userId,Integer status,String phone){ + return couponUserService.selectCouponByUserId(page, limit, id ,userId, status, phone,null); } //将所有超过失效时间的优惠券改为失效状态 diff --git a/src/main/java/com/sqx/modules/coupon/dao/CouponUserDao.java b/src/main/java/com/sqx/modules/coupon/dao/CouponUserDao.java index 3e3a604..e5be409 100644 --- a/src/main/java/com/sqx/modules/coupon/dao/CouponUserDao.java +++ b/src/main/java/com/sqx/modules/coupon/dao/CouponUserDao.java @@ -20,7 +20,7 @@ public interface CouponUserDao extends BaseMapper { void updateExpiration(@Param("date") String date); - IPage selectCouponByUserId(Page pages, @Param("userId") Long userId,@Param("status") Integer status, @Param("phone") String phone,@Param("couponName") String couponName); + IPage selectCouponByUserId(Page pages, @Param("id") Long id,@Param("userId") Long userId,@Param("status") Integer status, @Param("phone") String phone,@Param("couponName") String couponName); int selectCountCoupon(Long userId); diff --git a/src/main/java/com/sqx/modules/coupon/service/CouponUserService.java b/src/main/java/com/sqx/modules/coupon/service/CouponUserService.java index 321a839..13972d0 100644 --- a/src/main/java/com/sqx/modules/coupon/service/CouponUserService.java +++ b/src/main/java/com/sqx/modules/coupon/service/CouponUserService.java @@ -17,7 +17,7 @@ public interface CouponUserService extends IService { Result buyCoupon(Long userId, Long couponId); - Result selectCouponByUserId(Integer page, Integer limit, Long userId, Integer status, String phone,String couponName); + Result selectCouponByUserId(Integer page, Integer limit, Long id, Long userId, Integer status, String phone,String couponName); Result insertNewUserCoupon(UserEntity userEntity); diff --git a/src/main/java/com/sqx/modules/coupon/service/impl/CouponUserServiceImpl.java b/src/main/java/com/sqx/modules/coupon/service/impl/CouponUserServiceImpl.java index 41f4bb5..10b3c11 100644 --- a/src/main/java/com/sqx/modules/coupon/service/impl/CouponUserServiceImpl.java +++ b/src/main/java/com/sqx/modules/coupon/service/impl/CouponUserServiceImpl.java @@ -89,9 +89,9 @@ public class CouponUserServiceImpl extends ServiceImpl pages = new Page<>(page, limit); - PageUtils pageUtils = new PageUtils(CouponUserDao.selectCouponByUserId(pages, userId, status, phone,couponName)); + PageUtils pageUtils = new PageUtils(CouponUserDao.selectCouponByUserId(pages, id, userId, status, phone,couponName)); return Result.success().put("data", pageUtils); } diff --git a/src/main/java/com/sqx/modules/pay/controller/app/AliPayController.java b/src/main/java/com/sqx/modules/pay/controller/app/AliPayController.java index 352aa2c..52974f9 100644 --- a/src/main/java/com/sqx/modules/pay/controller/app/AliPayController.java +++ b/src/main/java/com/sqx/modules/pay/controller/app/AliPayController.java @@ -179,46 +179,51 @@ public class AliPayController { payDetailsDao.updateState(payDetails.getId(), 1, sdf.format(new Date()), tradeNo); if (payDetails.getType() == 1) { Orders orders = ordersService.selectOrdersByOrderNo(payDetails.getOrderId()); - orders.setStatus(9);//用户已支付技师待接单 + if(orders.getIsSupplement() == 2){ + orders.setStatus(6); + }else if(orders.getIsSupplement() == 3){ + orders.setStatus(2); + }else{ + orders.setStatus(9);//用户已支付技师待接单 + } orders.setPayWay(6); orders.setPayTime(sdf.format(new Date())); BigDecimal pingMoney=orders.getPayMoney(); -// 分佣在订单完成后进行计算 2024-06-20 by caolei -// UserEntity user = userService.selectUserById(orders.getUserId()); -// UserEntity oneUser = userService.queryByInvitationCode(user.getInviterCode()); + UserEntity user = userService.selectUserById(orders.getUserId()); + UserEntity oneUser = userService.queryByInvitationCode(user.getInviterCode()); BigDecimal oneUserMoney=BigDecimal.ZERO; -// if(oneUser!=null && oneUser.getIsAgency()!=null && oneUser.getIsAgency()==1){ -// orders.setOneUserId(oneUser.getUserId()); -// orders.setOneUserName(oneUser.getUserName()); -// oneUserMoney=pingMoney.multiply(oneUser.getUserRate()); -// } + if(oneUser!=null && oneUser.getIsAgency()!=null && oneUser.getIsAgency()==1){ + orders.setOneUserId(oneUser.getUserId()); + orders.setOneUserName(oneUser.getUserName()); + oneUserMoney=pingMoney.multiply(oneUser.getUserRate()); + } Artificer artificer = artificerService.getById(orders.getArtificerId()); -// UserEntity artificerUser = userService.selectUserById(artificer.getUserId()); -// UserEntity oneArtificerUser = userService.queryByInvitationCode(artificerUser.getInviterCode()); + UserEntity artificerUser = userService.selectUserById(artificer.getUserId()); + UserEntity oneArtificerUser = userService.queryByInvitationCode(artificerUser.getInviterCode()); BigDecimal oneArtificerMoney=BigDecimal.ZERO; -// if(oneArtificerUser!=null && oneArtificerUser.getIsAgency()!=null && oneArtificerUser.getIsAgency()==1){ -// orders.setOneArtificerUserId(oneArtificerUser.getUserId()); -// orders.setOneArtificerUserName(oneArtificerUser.getUserName()); -// oneArtificerMoney=pingMoney.multiply(oneArtificerUser.getShopRate()); -// -// } + if(oneArtificerUser!=null && oneArtificerUser.getIsAgency()!=null && oneArtificerUser.getIsAgency()==1){ + orders.setOneArtificerUserId(oneArtificerUser.getUserId()); + orders.setOneArtificerUserName(oneArtificerUser.getUserName()); + oneArtificerMoney=pingMoney.multiply(oneArtificerUser.getShopRate()); + + } BigDecimal shopMoney=BigDecimal.ZERO; -// if(artificerUser.getConsortiaId()!=null){ -// Consortia consortia = consortiaService.getById(artificerUser.getConsortiaId()); -// if(consortia!=null && consortia.getUserId()!=null){ -// UserEntity consortiaUser = userService.getById(consortia.getUserId()); -// if(consortiaUser!=null){ -// shopMoney = pingMoney.multiply(consortia.getRate()); -// orders.setConsortiaId(consortia.getConsortiaId()); -// orders.setShopUserId(consortiaUser.getUserId()); -// orders.setShopUserName(consortiaUser.getUserName()); -// -// } -// } -// } + if(artificerUser.getConsortiaId()!=null){ + Consortia consortia = consortiaService.getById(artificerUser.getConsortiaId()); + if(consortia!=null && consortia.getUserId()!=null){ + UserEntity consortiaUser = userService.getById(consortia.getUserId()); + if(consortiaUser!=null){ + shopMoney = pingMoney.multiply(consortia.getRate()); + orders.setConsortiaId(consortia.getConsortiaId()); + orders.setShopUserId(consortiaUser.getUserId()); + orders.setShopUserName(consortiaUser.getUserName()); + + } + } + } pingMoney=pingMoney.subtract(orders.getArtificerMoney()); pingMoney=pingMoney.subtract(oneUserMoney); pingMoney=pingMoney.subtract(oneArtificerMoney); @@ -297,25 +302,24 @@ public class AliPayController { orders1.setSumArtificerMoney(orders1.getSumArtificerMoney().add(orders.getArtificerMoney())); pingMoney=orders1.getSumMoney(); -// 分佣在订单完成后进行计算 2024-06-20 by caolei oneUserMoney=BigDecimal.ZERO; -// if(oneUser!=null && oneUser.getIsAgency()!=null && oneUser.getIsAgency()==1){ -// oneUserMoney=pingMoney.multiply(oneUser.getUserRate()); -// } + if(oneUser!=null && oneUser.getIsAgency()!=null && oneUser.getIsAgency()==1){ + oneUserMoney=pingMoney.multiply(oneUser.getUserRate()); + } oneArtificerMoney=BigDecimal.ZERO; -// if(oneArtificerUser!=null && oneArtificerUser.getIsAgency()!=null && oneArtificerUser.getIsAgency()==1){ -// oneArtificerMoney=pingMoney.multiply(oneArtificerUser.getShopRate()); -// } + if(oneArtificerUser!=null && oneArtificerUser.getIsAgency()!=null && oneArtificerUser.getIsAgency()==1){ + oneArtificerMoney=pingMoney.multiply(oneArtificerUser.getShopRate()); + } shopMoney=BigDecimal.ZERO; -// if(artificerUser.getConsortiaId()!=null){ -// Consortia consortia = consortiaService.getById(artificerUser.getConsortiaId()); -// if(consortia!=null && consortia.getUserId()!=null){ -// UserEntity consortiaUser = userService.getById(consortia.getUserId()); -// if(consortiaUser!=null){ -// shopMoney=pingMoney.multiply(consortia.getRate()); -// } -// } -// } + if(artificerUser.getConsortiaId()!=null){ + Consortia consortia = consortiaService.getById(artificerUser.getConsortiaId()); + if(consortia!=null && consortia.getUserId()!=null){ + UserEntity consortiaUser = userService.getById(consortia.getUserId()); + if(consortiaUser!=null){ + shopMoney=pingMoney.multiply(consortia.getRate()); + } + } + } pingMoney=pingMoney.subtract(orders1.getSumArtificerMoney()); pingMoney=pingMoney.subtract(oneUserMoney); pingMoney=pingMoney.subtract(oneArtificerMoney); diff --git a/src/main/java/com/sqx/modules/pay/service/impl/WxServiceImpl.java b/src/main/java/com/sqx/modules/pay/service/impl/WxServiceImpl.java index 55c03ca..980a3df 100644 --- a/src/main/java/com/sqx/modules/pay/service/impl/WxServiceImpl.java +++ b/src/main/java/com/sqx/modules/pay/service/impl/WxServiceImpl.java @@ -660,46 +660,48 @@ public class WxServiceImpl implements WxService { payDetailsDao.updateState(payDetails.getId(), 1, sdf.format(new Date()), ""); if(payDetails.getType()==1){ Orders orders = ordersService.selectOrdersByOrderNo(payDetails.getOrderId()); - orders.setStatus(9);//用户已支付技师待接单 + if(orders.getIsSupplement() == 2){ + orders.setStatus(6); + }else if(orders.getIsSupplement() == 3){ + orders.setStatus(2); + }else{ + orders.setStatus(9);//用户已支付技师待接单 + } orders.setPayWay(payDetails.getClassify()); orders.setPayTime(sdf.format(new Date())); BigDecimal pingMoney=orders.getPayMoney(); -// 分佣在订单完成后进行计算 2024-06-20 by caolei -// UserEntity user = userService.selectUserById(orders.getUserId()); -// UserEntity oneUser = userService.queryByInvitationCode(user.getInviterCode()); + UserEntity user = userService.selectUserById(orders.getUserId()); + UserEntity oneUser = userService.queryByInvitationCode(user.getInviterCode()); BigDecimal oneUserMoney=BigDecimal.ZERO; -// if(oneUser!=null && oneUser.getIsAgency()!=null && oneUser.getIsAgency()==1){ -// orders.setOneUserId(oneUser.getUserId()); -// orders.setOneUserName(oneUser.getUserName()); -// oneUserMoney=pingMoney.multiply(oneUser.getUserRate()); -// -// } + if(oneUser!=null && oneUser.getIsAgency()!=null && oneUser.getIsAgency()==1){ + orders.setOneUserId(oneUser.getUserId()); + orders.setOneUserName(oneUser.getUserName()); + oneUserMoney=pingMoney.multiply(oneUser.getUserRate()); + } Artificer artificer = artificerService.getById(orders.getArtificerId()); -// UserEntity artificerUser = userService.selectUserById(artificer.getUserId()); -// UserEntity oneArtificerUser = userService.queryByInvitationCode(artificerUser.getInviterCode()); + UserEntity artificerUser = userService.selectUserById(artificer.getUserId()); + UserEntity oneArtificerUser = userService.queryByInvitationCode(artificerUser.getInviterCode()); BigDecimal oneArtificerMoney=BigDecimal.ZERO; -// if(oneArtificerUser!=null && oneArtificerUser.getIsAgency()!=null && oneArtificerUser.getIsAgency()==1){ -// orders.setOneArtificerUserId(oneArtificerUser.getUserId()); -// orders.setOneArtificerUserName(oneArtificerUser.getUserName()); -// oneArtificerMoney=pingMoney.multiply(oneArtificerUser.getShopRate()); -// -// } + if(oneArtificerUser!=null && oneArtificerUser.getIsAgency()!=null && oneArtificerUser.getIsAgency()==1){ + orders.setOneArtificerUserId(oneArtificerUser.getUserId()); + orders.setOneArtificerUserName(oneArtificerUser.getUserName()); + oneArtificerMoney=pingMoney.multiply(oneArtificerUser.getShopRate()); + } BigDecimal shopMoney=BigDecimal.ZERO; -// if(artificerUser.getConsortiaId()!=null){ -// Consortia consortia = consortiaService.getById(artificerUser.getConsortiaId()); -// if(consortia!=null && consortia.getUserId()!=null){ -// UserEntity consortiaUser = userService.getById(consortia.getUserId()); -// if(consortiaUser!=null){ -// shopMoney = pingMoney.multiply(consortia.getRate()); -// orders.setConsortiaId(consortia.getConsortiaId()); -// orders.setShopUserId(consortiaUser.getUserId()); -// orders.setShopUserName(consortiaUser.getUserName()); -// -// } -// } -// } + if(artificerUser.getConsortiaId()!=null){ + Consortia consortia = consortiaService.getById(artificerUser.getConsortiaId()); + if(consortia!=null && consortia.getUserId()!=null){ + UserEntity consortiaUser = userService.getById(consortia.getUserId()); + if(consortiaUser!=null){ + shopMoney = pingMoney.multiply(consortia.getRate()); + orders.setConsortiaId(consortia.getConsortiaId()); + orders.setShopUserId(consortiaUser.getUserId()); + orders.setShopUserName(consortiaUser.getUserName()); + } + } + } pingMoney=pingMoney.subtract(orders.getArtificerMoney()); pingMoney=pingMoney.subtract(oneUserMoney); pingMoney=pingMoney.subtract(oneArtificerMoney); @@ -772,25 +774,24 @@ public class WxServiceImpl implements WxService { orders1.setSumArtificerMoney(orders1.getSumArtificerMoney().add(orders.getArtificerMoney())); pingMoney=orders1.getSumMoney(); -// 分佣在订单完成后进行计算 2024-06-20 by caolei oneUserMoney=BigDecimal.ZERO; -// if(oneUser!=null && oneUser.getIsAgency()!=null && oneUser.getIsAgency()==1){ -// oneUserMoney=pingMoney.multiply(oneUser.getUserRate()); -// } + if(oneUser!=null && oneUser.getIsAgency()!=null && oneUser.getIsAgency()==1){ + oneUserMoney=pingMoney.multiply(oneUser.getUserRate()); + } oneArtificerMoney=BigDecimal.ZERO; -// if(oneArtificerUser!=null && oneArtificerUser.getIsAgency()!=null && oneArtificerUser.getIsAgency()==1){ -// oneArtificerMoney=pingMoney.multiply(oneArtificerUser.getShopRate()); -// } + if(oneArtificerUser!=null && oneArtificerUser.getIsAgency()!=null && oneArtificerUser.getIsAgency()==1){ + oneArtificerMoney=pingMoney.multiply(oneArtificerUser.getShopRate()); + } shopMoney=BigDecimal.ZERO; -// if(artificerUser.getConsortiaId()!=null){ -// Consortia consortia = consortiaService.getById(artificerUser.getConsortiaId()); -// if(consortia!=null && consortia.getUserId()!=null){ -// UserEntity consortiaUser = userService.getById(consortia.getUserId()); -// if(consortiaUser!=null){ -// shopMoney=pingMoney.multiply(consortia.getRate()); -// } -// } -// } + if(artificerUser.getConsortiaId()!=null){ + Consortia consortia = consortiaService.getById(artificerUser.getConsortiaId()); + if(consortia!=null && consortia.getUserId()!=null){ + UserEntity consortiaUser = userService.getById(consortia.getUserId()); + if(consortiaUser!=null){ + shopMoney=pingMoney.multiply(consortia.getRate()); + } + } + } pingMoney=pingMoney.subtract(orders1.getSumArtificerMoney()); pingMoney=pingMoney.subtract(oneUserMoney); pingMoney=pingMoney.subtract(oneArtificerMoney); diff --git a/src/main/resources/mapper/coupon/TbCouponUserMapper.xml b/src/main/resources/mapper/coupon/TbCouponUserMapper.xml index 423f493..2b71a15 100644 --- a/src/main/resources/mapper/coupon/TbCouponUserMapper.xml +++ b/src/main/resources/mapper/coupon/TbCouponUserMapper.xml @@ -31,6 +31,9 @@ left join tb_user tu on tcu.user_id = tu.user_id left join sys_dict d on tcu.classify_id = d.id where 1 = 1 + + and tcu.id = #{id} + and tcu.user_id = #{userId}