From 7ee9bc8fb2e42ce2e82cd1eacb57ba584611dfc5 Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期五, 23 六月 2023 11:04:32 +0800 Subject: [PATCH] 修改bug --- driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java | 313 +++++++++++++++++++++++++++------------------------- 1 files changed, 163 insertions(+), 150 deletions(-) diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java index 6a25374..ed9b1de 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java @@ -196,10 +196,10 @@ .where("'" + geocode.getCity() + "' like CONCAT('%', city, '%') and '" + geocode.getDistrict() + "' like CONCAT('%', district, '%') ")); city = null != weatherCity ? weatherCity.getId().toString() : ""; } + order.setCreateTime(new Date()); order = getOrderPrice(1, d, 0, order, city); order.setState(null == order.getDriverId() ? 101 : 102); order.setStatus(1); - order.setCreateTime(new Date()); this.insert(order); driverService.updateById(driver); //推送状态 @@ -211,7 +211,7 @@ new Thread(new Runnable() { @Override public void run() { - pushOrder(finalOrder); + pushOrder(finalOrder.getId()); } }).start(); } @@ -230,6 +230,7 @@ */ public Order getOrderPrice(Integer type, Double distance, Integer waitTime, Order order, String city){ distance = new BigDecimal(distance).setScale(0, BigDecimal.ROUND_UP).doubleValue(); + waitTime = new BigDecimal(waitTime).setScale(0, BigDecimal.ROUND_UP).intValue(); order = getOrderInitialPrice(order); SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 5)); if(null == systemConfig){ @@ -244,7 +245,7 @@ JSONObject jsonObject = JSON.parseObject(systemConfig.getContent()); JSONArray chargeStandard = jsonObject.getJSONArray("ChargeStandard"); JSONObject extraCost = jsonObject.getJSONObject("ExtraCost"); - Date date = new Date(); + Date date = order.getCreateTime(); for (int i = 0; i < chargeStandard.size(); i++) { JSONObject jsonObject1 = chargeStandard.getJSONObject(i); String num1 = jsonObject1.getString("num1"); @@ -332,12 +333,12 @@ Double num9 = extraCost.getDouble("num9");//恶劣天气最高收取金额 //等待费用 - if(waitTime.compareTo(num1) >= 0){ + if(waitTime.compareTo(num1 * 60) >= 0){ order.setWaitTime(num1);//等待时长 order.setWaitTimePrice(num2);//等待费用 - Integer w = waitTime - num3; - BigDecimal multiply = new BigDecimal(w).multiply(new BigDecimal(num4)); + Integer w = waitTime - (num3 * 60); + BigDecimal multiply = new BigDecimal(w).divide(new BigDecimal(60), 0, RoundingMode.UP).multiply(new BigDecimal(num4)); order.setOutWaitTime(w);//等待时长超出分钟 order.setOutWaitTimePrice(multiply.doubleValue());//等待时长超出费用 } @@ -427,8 +428,16 @@ * 订单推送逻辑 * @param order */ - public void pushOrder(Order order){ + public void pushOrder(Long orderId){ try { + Order order = this.selectById(orderId); + /** + * 1.先找最大推单范围内的优推司机 -》 距离最近 + * 没有1 - 》 + * 2.按照后台推送配置在范围内查找合适司机 + * 合适司:积分 > 评分 > 距离 + * 3.司机没有接单直接将订单置入大厅 + */ boolean lock = redisUtil.lock(5); if(!lock){ int num1 = 1; @@ -442,13 +451,12 @@ } } } - /** - * 1.先找最大推单范围内的优推司机 -》 距离最近 - * 没有1 - 》 - * 2.按照后台推送配置在范围内查找合适司机 - * 合适司:积分 > 评分 > 距离 - * 3.司机没有接单直接将订单置入大厅 - */ + if(!lock){ + order.setHallOrder(1); + this.updateById(order); + ExtraPushOrder(order); + redisUtil.unlock(); + } SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 1)); if(null == systemConfig){ redisUtil.unlock(); @@ -476,14 +484,18 @@ YouTuiDriver youTuiDriver1 = null; if(driverIds.size() > 0){ List<YouTuiDriver> youTuiDrivers = youTuiDriverService.selectList(new EntityWrapper<YouTuiDriver>().in("driverId", driverIds) - .eq("state", 2).last(" and (surplusQuantity > 0 or now() < endTime) and now() < failureTime")); + .eq("state", 2).last(" and surplusQuantity > 0 and now() < endTime and now() < failureTime")); Double d = null; for (YouTuiDriver youTuiDriver : youTuiDrivers) { String value = redisUtil.getValue("DRIVER" + youTuiDriver.getDriverId()); if(ToolUtil.isEmpty(value)){ continue; } - DriverWork driverWork = driverWorkService.selectOne(new EntityWrapper<DriverWork>().eq("driverId", youTuiDriver.getDriverId()).eq("status", 1)); + Driver driver1 = driverService.selectById(youTuiDriver.getDriverId()); + if(driver1.getServerStatus() == 2 || driver1.getOpenOrderQRCode() == 1){ + continue; + } + DriverWork driverWork = driverWorkService.selectOne(new EntityWrapper<DriverWork>().eq("driverId", driver1.getId()).eq("status", 1)); if(null == driverWork){ continue; } @@ -496,7 +508,6 @@ } } } - if(null != youTuiDriver1 && youTuiDriver1.getType() == 1){ youTuiDriver1.setSurplusQuantity(youTuiDriver1.getSurplusQuantity() - 1); youTuiDriverService.updateById(youTuiDriver1); @@ -519,13 +530,14 @@ driverIds = locations.stream().map(Location::getDriverId).collect(Collectors.toList()); if(driverIds.size() > 0){ - List<Driver> drivers = driverService.selectList(new EntityWrapper<Driver>().eq("approvalStatus", 2).eq("serverStatus", 1).eq("status", 1).in("id", driverIds)); + List<Driver> drivers = driverService.selectList(new EntityWrapper<Driver>().eq("approvalStatus", 2) + .eq("serverStatus", 1).eq("openOrderQRCode", 0).eq("status", 1).in("id", driverIds)); if(drivers.size() == 0){ continue; } - Integer integral = null; - Double score = null; + Integer integral = null;//积分 + Double score = null;//评分 Double d = null; for (Driver driver1 : drivers) { String value = redisUtil.getValue("DRIVER" + driver1.getId()); @@ -536,27 +548,32 @@ if(null == driverWork){ continue; } + if(integral == null || integral.compareTo(driver1.getIntegral()) < 0){//积分大 integral = driver1.getIntegral(); score = driver1.getScore(); driver = driver1.getId(); + Map<String, Double> distance = GeodesyUtil.getDistance(value, order.getStartLng() + "," + order.getStartLat()); + Double wgs84 = distance.get("WGS84"); + d = wgs84; continue; } if(integral.compareTo(driver1.getIntegral()) == 0 && score.compareTo(driver1.getScore()) < 0){//积分相同对比评分 integral = driver1.getIntegral(); score = driver1.getScore(); driver = driver1.getId(); + Map<String, Double> distance = GeodesyUtil.getDistance(value, order.getStartLng() + "," + order.getStartLat()); + Double wgs84 = distance.get("WGS84"); + d = wgs84; continue; } if(integral.compareTo(driver1.getIntegral()) == 0 && score.compareTo(driver1.getScore()) == 0){//积分相同/评分相同对比距离 - String value1 = redisUtil.getValue("DRIVER" + driver1.getId()); - if(ToolUtil.isEmpty(value1)){ - continue; - } - Map<String, Double> distance = GeodesyUtil.getDistance(value1, order.getStartLng() + "," + order.getStartLat()); + Map<String, Double> distance = GeodesyUtil.getDistance(value, order.getStartLng() + "," + order.getStartLat()); Double wgs84 = distance.get("WGS84"); - if(d == null || d.compareTo(wgs84) > 0){ + if(d.compareTo(wgs84) > 0){ d = wgs84; + integral = driver1.getIntegral(); + score = driver1.getScore(); driver = driver1.getId(); continue; } @@ -577,13 +594,13 @@ new Timer().schedule(new TimerTask() { @Override public void run() { + driver1.setServerStatus(1); + driverService.updateById(driver1); + Order order1 = OrderServiceImpl.this.selectById(order.getId()); if(order1.getState() == 101 || order1.getState() == 201){ order1.setHallOrder(1); OrderServiceImpl.this.updateById(order1); - - driver1.setServerStatus(1); - driverService.updateById(driver1); ExtraPushOrder(order); } } @@ -595,8 +612,8 @@ } redisUtil.unlock(); }catch (Exception e){ - redisUtil.unlock(); e.printStackTrace(); + redisUtil.unlock(); } } @@ -694,6 +711,9 @@ orderRefusalService.insert(orderRefusal); Driver driver = driverService.selectById(uid); + driver.setServerStatus(1); + driverService.updateById(driver); + //扣除积分 SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 4)); if(null != systemConfig) { @@ -752,6 +772,9 @@ } } } + if(!lock){ + return ResultUtil.error("请重试"); + } Order order = this.selectById(orderId); Integer state = order.getState(); Integer oldDriverId = order.getDriverId(); @@ -787,15 +810,15 @@ timer.cancel(); timerMap.remove(order.getId().toString()); } - //原司机下班 + //原司机下班 TODO 2023-06-21 客户说取消此功能 Driver oldDriver = driverService.selectById(oldDriverId); oldDriver.setServerStatus(1); driverService.updateById(oldDriver); - DriverWork driverWork1 = driverWorkService.selectOne(new EntityWrapper<DriverWork>().eq("driverId", oldDriverId).eq("status", 1)); - driverWork1.setStatus(2); - driverWork1.setOffWorkTime(new Date()); - driverWorkService.updateById(driverWork1); +// DriverWork driverWork1 = driverWorkService.selectOne(new EntityWrapper<DriverWork>().eq("driverId", oldDriverId).eq("status", 1)); +// driverWork1.setStatus(2); +// driverWork1.setOffWorkTime(new Date()); +// driverWorkService.updateById(driverWork1); //添加关系数据 OrderTransfer orderTransfer = orderTransferService.selectOne(new EntityWrapper<OrderTransfer>().eq("orderId", order.getId()).eq("status", 1).isNull("successTime")); @@ -904,7 +927,7 @@ order.setStartTime(new Date()); } //计算等待用户时长 - Integer w = new BigDecimal((System.currentTimeMillis() - order.getStartWaitTime().getTime()) / 60000).setScale(0, BigDecimal.ROUND_UP).intValue(); + Integer w = new BigDecimal(Double.valueOf(System.currentTimeMillis() - order.getStartWaitTime().getTime()) / 1000).intValue(); order.setWaitTime(order.getWaitTime() + w); order.setStartWaitTime(null); break; @@ -944,6 +967,9 @@ } return ResultUtil.success(); } + + + /** @@ -1029,17 +1055,20 @@ pushOrderInfoWarpper.setDriverLat(split[1]); pushOrderInfoWarpper.setDriverLng(split[0]); } - int w = 0; + Integer w = 0; if(null != order.getStartWaitTime()){ - w = Double.valueOf((System.currentTimeMillis() - order.getStartWaitTime().getTime()) / 60000).intValue(); + w = Double.valueOf((System.currentTimeMillis() - order.getStartWaitTime().getTime()) / 1000).intValue(); } - pushOrderInfoWarpper.setWaitTime(order.getWaitTime() + w); + Integer wait = order.getWaitTime() + w; + Integer s = wait % 60; + pushOrderInfoWarpper.setWaitTime(Double.valueOf(wait / 60).intValue() + "." + s); pushOrderInfoWarpper.setState(order.getState()); pushOrderInfoWarpper.setActualMileage(Double.valueOf(order.getActualMileage() / 1000)); - pushOrderInfoWarpper.setTravelTime(0); + pushOrderInfoWarpper.setTravelTime("0"); if(null != order.getStartTime()){ - int travelTime = Double.valueOf((System.currentTimeMillis() - order.getStartTime().getTime()) / 60000).intValue(); - pushOrderInfoWarpper.setTravelTime(travelTime); + int travelTime = Double.valueOf((System.currentTimeMillis() - order.getStartTime().getTime()) / 1000).intValue(); + Integer ss = travelTime % 60; + pushOrderInfoWarpper.setTravelTime(Double.valueOf(travelTime / 60).intValue() + "." + ss); } if(null != order.getUserId()){ pushUtil.pushOrderInfo(order.getUserId(), 1, pushOrderInfoWarpper); @@ -1052,7 +1081,7 @@ } pushUtil.pushOrderInfo(uid, 2, pushOrderInfoWarpper); } - },0, 10000); + },0, 5000); timerMap.put(orderId.toString(), timer); } @@ -1091,7 +1120,7 @@ new Thread(new Runnable() { @Override public void run() { - pushOrder(finalOrder); + pushOrder(finalOrder.getId()); } }).start(); return ResultUtil.success(); @@ -1210,23 +1239,31 @@ Driver driver = driverService.selectById(uid); Order order = this.selectById(orderId); OrderPriceWarpper orderPriceWarpper = new OrderPriceWarpper(); - BeanUtils.copyProperties(order, orderPriceWarpper); - orderPriceWarpper.setWaitTime(orderPriceWarpper.getWaitTime() + orderPriceWarpper.getOutWaitTime()); - orderPriceWarpper.setWaitTimePrice(orderPriceWarpper.getWaitTimePrice() + orderPriceWarpper.getOutWaitTimePrice()); - orderPriceWarpper.setLongDistance(0D); - if(ToolUtil.isNotEmpty(order.getLongDistance())){ + orderPriceWarpper.setStartTime(order.getArrivalTimeAtTheAppointmentPoint().getTime()); + orderPriceWarpper.setEndTime(order.getGetoffTime().getTime()); + orderPriceWarpper.setActualMileage(Double.valueOf(order.getActualMileage() / 1000)); + if(null != order.getStartPrice() && 0 != order.getStartPrice()){ + orderPriceWarpper.setStartPrice(order.getStartPrice()); + orderPriceWarpper.setStartDistance(order.getStartDistance()); + orderPriceWarpper.setOverDriveDistance(order.getOverDriveDistance()); + orderPriceWarpper.setMileageFee(order.getOverDrivePrice()); + }else{ String[] split = order.getLongDistance().split("-"); - Double longDistanc = Double.valueOf(split[1]) - Double.valueOf(split[0]) + orderPriceWarpper.getOverLongDistance(); - orderPriceWarpper.setLongDistance(longDistanc); + orderPriceWarpper.setStartPrice(order.getLongDistancePrice()); + orderPriceWarpper.setStartDistance(Double.valueOf(split[1])); + orderPriceWarpper.setOverDriveDistance(order.getOverLongDistance()); + orderPriceWarpper.setMileageFee(order.getOverLongDistancePrice()); } - orderPriceWarpper.setLongDistancePrice(orderPriceWarpper.getLongDistancePrice() + orderPriceWarpper.getOverLongDistancePrice()); - orderPriceWarpper.setBadWeatherDistance(orderPriceWarpper.getBadWeatherDistance() + orderPriceWarpper.getOverBadWeatherDistance()); - orderPriceWarpper.setBadWeatherPrice(orderPriceWarpper.getBadWeatherPrice() + orderPriceWarpper.getOverBadWeatherPrice()); - - orderPriceWarpper.setActualMileage(new BigDecimal(order.getActualMileage() / 1000).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); - orderPriceWarpper.setTravelTime(0); - if(null != order.getGetoffTime()){ - orderPriceWarpper.setTravelTime(Double.valueOf((order.getGetoffTime().getTime() - order.getStartTime().getTime()) / 60000).intValue()); + Integer waitTime = order.getWaitTime() + order.getOutWaitTime(); + Integer s = waitTime % 60; + orderPriceWarpper.setWaitTime(Double.valueOf(waitTime / 60).intValue() + "." + s); + orderPriceWarpper.setWaitTimePrice(order.getWaitTimePrice() + order.getOutWaitTimePrice()); + orderPriceWarpper.setDiscountAmount(order.getDiscountAmount()); + orderPriceWarpper.setDiscountedPrice(order.getDiscountedPrice()); + orderPriceWarpper.setBadWeatherPrice(order.getBadWeatherPrice()); + orderPriceWarpper.setPayMoney(order.getPayMoney()); + if(order.getState() < 107){ + orderPriceWarpper.setPayMoney(order.getOrderMoney()); } orderPriceWarpper.setWxCollectionCode(driver.getWxCollectionCode()); orderPriceWarpper.setZfbCollectionCode(driver.getZfbCollectionCode()); @@ -1246,7 +1283,7 @@ public ResultUtil setOrderStatus(Integer uid, Long orderId, Integer payType, Integer state) throws Exception { List<Integer> s = Arrays.asList(107, 108); if(!s.contains(state)){ - return ResultUtil.error("操作失败"); + return ResultUtil.error("操作失败,请刷新订单"); } Order order = this.selectById(orderId); order.setState(state); @@ -1256,7 +1293,7 @@ Coupon coupon = userToCouponService.queryCoupon(order.getUserId(), order.getOrderMoney()); if(null != coupon){ order.setCouponId(coupon.getId()); - order.setDiscountAmount(coupon.getCouponPreferentialAmount()); + order.setDiscountedPrice(coupon.getCouponPreferentialAmount()); order.setPayMoney(order.getOrderMoney() - coupon.getCouponPreferentialAmount()); }else{ order.setPayMoney(order.getOrderMoney()); @@ -1446,21 +1483,36 @@ } - Double payMoney = order.getPayMoney(); + SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 3)); if(null != systemConfig){ JSONObject jsonObject = JSON.parseObject(systemConfig.getContent()); Double num2 = jsonObject.getDouble("num2"); Double num3 = jsonObject.getDouble("num3"); if(order.getOrderMoney() >= num2){//订单金额大于num2才有抽佣金 - payMoney = payMoney - num3; + driver = driverService.selectById(order.getDriverId()); + AccountChangeDetail accountChangeDetail1 = new AccountChangeDetail(); + accountChangeDetail1.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3)); + accountChangeDetail1.setUserType(2); + accountChangeDetail1.setUserId(driver.getId()); + accountChangeDetail1.setType(1); + accountChangeDetail1.setChangeType(9); + accountChangeDetail1.setOrderId(order.getId()); + accountChangeDetail1.setOldData(driver.getBalance() + driver.getBackgroundBalance()); + accountChangeDetail1.setExplain("线下收款服务费支出"); + accountChangeDetail1.setCreateTime(new Date()); + driver.setBalance(driver.getBalance() - num3); + accountChangeDetail1.setNewData(driver.getBalance() + driver.getBackgroundBalance()); + driverService.updateById(driver); + accountChangeDetailService.saveData(accountChangeDetail1); - //有分佣的情况,分佣的金额从司机充值金额中扣除转给平台,再由平台转账给各个分佣对象 + + //有分佣的情况,分佣的金额从司机充值金额中扣除转给分佣对象 SystemConfig systemConfig1 = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 2)); if(null != systemConfig1){ JSONObject jsonObject1 = JSON.parseObject(systemConfig1.getContent()); - //司机推荐首单收入 - if(null != appUser.getInviterType() && appUser.getInviterType() == 2 && count == 1){ + //司机推荐用户收入 + if(null != appUser.getInviterType() && appUser.getInviterType() == 2){ Double num1 = jsonObject1.getDouble("num1"); num1 = (num3 >= num1 ? num1 : num3); @@ -1474,7 +1526,7 @@ accountChangeDetail.setType(1); accountChangeDetail.setChangeType(5); accountChangeDetail.setOldData(driver1.getCouponBalance() + driver1.getCommission()); - accountChangeDetail.setExplain("邀请用户首单奖励"); + accountChangeDetail.setExplain("邀请用户奖励"); accountChangeDetail.setCreateTime(new Date()); driver1.setCommission(driver1.getCommission() + num1); accountChangeDetail.setNewData(driver1.getCouponBalance() + driver1.getCommission()); @@ -1491,19 +1543,19 @@ revenueService.insert(revenue); Double num1_1 = num1; - List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 4).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime")); + List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 2).eq("userId", driver.getId()).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime")); for (RechargeRecord rechargeRecord : rechargeRecords) { Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount(); if(surplusDividedAmount.compareTo(num1_1) >= 0){ - ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver1.getMerchantNumber(), num1_1, callbackPath + "/base/order/zhaunzhangCallback"); - if(zhaunzhang.getCode() == 10000){ + ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num1_1, 3); + if(fengzhang.getCode() == 10000){ rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - num1_1); rechargeRecordService.updateById(rechargeRecord); } break; }else{ - ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver1.getMerchantNumber(), surplusDividedAmount, callbackPath + "/base/order/zhaunzhangCallback"); - if(zhaunzhang.getCode() == 10000){ + ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3); + if(fengzhang.getCode() == 10000){ rechargeRecord.setSurplusDividedAmount(0d); rechargeRecordService.updateById(rechargeRecord); num1_1 -= surplusDividedAmount; @@ -1553,19 +1605,19 @@ accountChangeDetailService.saveData(accountChangeDetail); Double num5_1 = num5; - List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 4).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime")); + List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 2).eq("userId", driver.getId()).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime")); for (RechargeRecord rechargeRecord : rechargeRecords) { Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount(); if(surplusDividedAmount.compareTo(num5_1) >= 0){ - ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver1.getMerchantNumber(), num5_1, callbackPath + "/base/order/zhaunzhangCallback"); - if(zhaunzhang.getCode() == 10000){ + ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num5_1, 3); + if(fengzhang.getCode() == 10000){ rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - num5_1); rechargeRecordService.updateById(rechargeRecord); } break; }else{ - ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver1.getMerchantNumber(), surplusDividedAmount, callbackPath + "/base/order/zhaunzhangCallback"); - if(zhaunzhang.getCode() == 10000){ + ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3); + if(fengzhang.getCode() == 10000){ rechargeRecord.setSurplusDividedAmount(0d); rechargeRecordService.updateById(rechargeRecord); num5_1 -= surplusDividedAmount; @@ -1603,19 +1655,19 @@ accountChangeDetailService.saveData(accountChangeDetail); Double num6_1 = num6; - List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 4).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime")); + List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 2).eq("userId", driver.getId()).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime")); for (RechargeRecord rechargeRecord : rechargeRecords) { Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount(); if(surplusDividedAmount.compareTo(num6_1) >= 0){ - ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver2.getMerchantNumber(), num6_1, callbackPath + "/base/order/zhaunzhangCallback"); - if(zhaunzhang.getCode() == 10000){ + ResultUtil fengzhang = fengzhang(1, driver2.getId(), driver2.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num6_1, 3); + if(fengzhang.getCode() == 10000){ rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - num6_1); rechargeRecordService.updateById(rechargeRecord); } break; }else{ - ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver2.getMerchantNumber(), surplusDividedAmount, callbackPath + "/base/order/zhaunzhangCallback"); - if(zhaunzhang.getCode() == 10000){ + ResultUtil fengzhang = fengzhang(1, driver2.getId(), driver2.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3); + if(fengzhang.getCode() == 10000){ rechargeRecord.setSurplusDividedAmount(0d); rechargeRecordService.updateById(rechargeRecord); num6_1 -= surplusDividedAmount; @@ -1653,19 +1705,19 @@ accountChangeDetailService.saveData(accountChangeDetail); Double num7_1 = num7; - List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 4).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime")); + List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 2).eq("userId", driver.getId()).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime")); for (RechargeRecord rechargeRecord : rechargeRecords) { Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount(); if(surplusDividedAmount.compareTo(num7_1) >= 0){ - ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver3.getMerchantNumber(), num7_1, callbackPath + "/base/order/zhaunzhangCallback"); - if(zhaunzhang.getCode() == 10000){ + ResultUtil fengzhang = fengzhang(1, driver3.getId(), driver3.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num7_1, 3); + if(fengzhang.getCode() == 10000){ rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - num7_1); rechargeRecordService.updateById(rechargeRecord); } break; }else{ - ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver3.getMerchantNumber(), surplusDividedAmount, callbackPath + "/base/order/zhaunzhangCallback"); - if(zhaunzhang.getCode() == 10000){ + ResultUtil fengzhang = fengzhang(1, driver3.getId(), driver3.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3); + if(fengzhang.getCode() == 10000){ rechargeRecord.setSurplusDividedAmount(0d); rechargeRecordService.updateById(rechargeRecord); num7_1 -= surplusDividedAmount; @@ -1706,19 +1758,19 @@ accountChangeDetailService.saveData(accountChangeDetail); Double num3_1 = num3_; - List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 4).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime")); + List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 2).eq("userId", driver.getId()).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime")); for (RechargeRecord rechargeRecord : rechargeRecords) { Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount(); if(surplusDividedAmount.compareTo(num3_1) >= 0){ - ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver1.getMerchantNumber(), num3_1, callbackPath + "/base/order/zhaunzhangCallback"); - if(zhaunzhang.getCode() == 10000){ + ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num3_1, 3); + if(fengzhang.getCode() == 10000){ rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - num3_1); rechargeRecordService.updateById(rechargeRecord); } break; }else{ - ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver1.getMerchantNumber(), surplusDividedAmount, callbackPath + "/base/order/zhaunzhangCallback"); - if(zhaunzhang.getCode() == 10000){ + ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3); + if(fengzhang.getCode() == 10000){ rechargeRecord.setSurplusDividedAmount(0d); rechargeRecordService.updateById(rechargeRecord); num3_1 -= surplusDividedAmount; @@ -1756,19 +1808,19 @@ accountChangeDetailService.saveData(accountChangeDetail); Double num4_1 = num4; - List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 4).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime")); + List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 2).eq("userId", driver.getId()).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime")); for (RechargeRecord rechargeRecord : rechargeRecords) { Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount(); if(surplusDividedAmount.compareTo(num4_1) >= 0){ - ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver2.getMerchantNumber(), num4_1, callbackPath + "/base/order/zhaunzhangCallback"); - if(zhaunzhang.getCode() == 10000){ + ResultUtil fengzhang = fengzhang(1, driver2.getId(), driver2.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num4_1, 3); + if(fengzhang.getCode() == 10000){ rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - num4_1); rechargeRecordService.updateById(rechargeRecord); } break; }else{ - ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver2.getMerchantNumber(), surplusDividedAmount, callbackPath + "/base/order/zhaunzhangCallback"); - if(zhaunzhang.getCode() == 10000){ + ResultUtil fengzhang = fengzhang(1, driver2.getId(), driver2.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3); + if(fengzhang.getCode() == 10000){ rechargeRecord.setSurplusDividedAmount(0d); rechargeRecordService.updateById(rechargeRecord); num4_1 -= surplusDividedAmount; @@ -1809,19 +1861,19 @@ accountChangeDetailService.saveData(accountChangeDetail); Double num2_1 = num2_; - List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 4).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime")); + List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 2).eq("userId", driver.getId()).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime")); for (RechargeRecord rechargeRecord : rechargeRecords) { Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount(); if(surplusDividedAmount.compareTo(num2_1) >= 0){ - ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver1.getMerchantNumber(), num2_1, callbackPath + "/base/order/zhaunzhangCallback"); - if(zhaunzhang.getCode() == 10000){ + ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num2_1, 3); + if(fengzhang.getCode() == 10000){ rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - num2_1); rechargeRecordService.updateById(rechargeRecord); } break; }else{ - ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver1.getMerchantNumber(), surplusDividedAmount, callbackPath + "/base/order/zhaunzhangCallback"); - if(zhaunzhang.getCode() == 10000){ + ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3); + if(fengzhang.getCode() == 10000){ rechargeRecord.setSurplusDividedAmount(0d); rechargeRecordService.updateById(rechargeRecord); num2_1 -= surplusDividedAmount; @@ -1846,19 +1898,19 @@ revenueService.insert(revenue); Agent agent = agentService.selectById(driver.getAgentId()); - List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 4).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime")); + List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 2).eq("userId", driver.getId()).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime")); for (RechargeRecord rechargeRecord : rechargeRecords) { Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount(); if(surplusDividedAmount.compareTo(num3) >= 0){ - ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), agent.getMerchantNumber(), num3, callbackPath + "/base/order/zhaunzhangCallback"); - if(zhaunzhang.getCode() == 10000){ + ResultUtil fengzhang = fengzhang(2, agent.getId(), agent.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num3, 3); + if(fengzhang.getCode() == 10000){ rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - num3); rechargeRecordService.updateById(rechargeRecord); } break; }else{ - ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), agent.getMerchantNumber(), surplusDividedAmount, callbackPath + "/base/order/zhaunzhangCallback"); - if(zhaunzhang.getCode() == 10000){ + ResultUtil fengzhang = fengzhang(2, agent.getId(), agent.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3); + if(fengzhang.getCode() == 10000){ rechargeRecord.setSurplusDividedAmount(0d); rechargeRecordService.updateById(rechargeRecord); num3 -= surplusDividedAmount; @@ -1867,47 +1919,6 @@ } } } - } - } - } - } - //司机余额扣减抽佣金额,将金额先分账给平台 - if(order.getPayMoney() > payMoney){ - driver = driverService.selectById(order.getDriverId()); - Double m = order.getPayMoney() - payMoney; - AccountChangeDetail accountChangeDetail = new AccountChangeDetail(); - accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3)); - accountChangeDetail.setUserType(2); - accountChangeDetail.setUserId(driver.getId()); - accountChangeDetail.setType(1); - accountChangeDetail.setChangeType(9); - accountChangeDetail.setOrderId(order.getId()); - accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance()); - accountChangeDetail.setExplain("线下收款服务费支出"); - accountChangeDetail.setCreateTime(new Date()); - driver.setBalance(driver.getBalance() - m); - accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance()); - driverService.updateById(driver); - accountChangeDetailService.saveData(accountChangeDetail); - - List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 2).eq("userId", driver.getId()).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime")); - for (RechargeRecord rechargeRecord : rechargeRecords) { - Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount(); - if(surplusDividedAmount.compareTo(m) >= 0){ - ResultUtil fengzhang = fengzhang(3, null, "553021440975", rechargeRecord.getId().longValue(), rechargeRecord.getOrderNumber(), m, 1); - if(fengzhang.getCode() == 10000){ - rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - m); - rechargeRecordService.updateById(rechargeRecord); - } - break; - }else{ - ResultUtil fengzhang = fengzhang(3, null, "553021440975", rechargeRecord.getId().longValue(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 1); - if(fengzhang.getCode() == 10000){ - rechargeRecord.setSurplusDividedAmount(0d); - rechargeRecordService.updateById(rechargeRecord); - m -= surplusDividedAmount; - }else{ - break; } } } @@ -1921,11 +1932,12 @@ * @param amount */ @Override - public ResultUtil fengzhang(Integer userType, Integer id, String merchantNumber, Long orderId, String merOrderId, Double amount, Integer sourceType){ + public ResultUtil fengzhang(Integer userType, Integer id, String merchantNumber, Long orderId, Integer rechargeRecordId, String merOrderId, Double amount, Integer sourceType){ DivisionRecord divisionRecord = new DivisionRecord(); divisionRecord.setUserType(userType); divisionRecord.setUserId(id); divisionRecord.setOrderId(orderId); + divisionRecord.setRechargeRecordId(rechargeRecordId); divisionRecord.setSourceType(sourceType); divisionRecord.setAmount(amount); divisionRecord.setMerchantNumber(merchantNumber); @@ -2176,8 +2188,9 @@ @Override public void completeCollection() { List<Order> orders = this.selectList(new EntityWrapper<Order>().eq("state", 107).eq("status", 1) - .eq("payType", 3).last(" and UNIX_TIMESTAMP(getoffTime) + 120 <= UNIX_TIMESTAMP(now())")); + .eq("payType", 3).last(" and UNIX_TIMESTAMP(getoffTime) + 600 <= UNIX_TIMESTAMP(now())")); for (Order order : orders) { + order.setState(108); order.setPayTime(new Date()); if(null != order.getCouponId()){ UserToCoupon userToCoupon = userToCouponService.selectById(order.getCouponId()); -- Gitblit v1.7.1