| | |
| | | city = null != weatherCity ? weatherCity.getId().toString() : ""; |
| | | } |
| | | order.setCreateTime(new Date()); |
| | | order = getOrderPrice(1, d, 0D, order, city); |
| | | order = getOrderPrice(1, d, 0, order, city); |
| | | order.setState(null == order.getDriverId() ? 101 : 102); |
| | | order.setStatus(1); |
| | | this.insert(order); |
| | |
| | | new Thread(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | pushOrder(finalOrder); |
| | | pushOrder(finalOrder.getId()); |
| | | } |
| | | }).start(); |
| | | } |
| | |
| | | * @param city 查询天气的城市 |
| | | * @return |
| | | */ |
| | | public Order getOrderPrice(Integer type, Double distance, Double waitTime, Order order, String city){ |
| | | 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).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){ |
| | |
| | | } |
| | | |
| | | //计算额外费用 |
| | | Double num1 = extraCost.getDouble("num1");//等待时长 |
| | | Integer num1 = extraCost.getInteger("num1");//等待时长 |
| | | Double num2 = extraCost.getDouble("num2");//等待费 |
| | | Double num3 = extraCost.getDouble("num3");//等待超出时长 |
| | | Integer num3 = extraCost.getInteger("num3");//等待超出时长 |
| | | Double num4 = extraCost.getDouble("num4");//等到超出时长费用单价 X/分钟 |
| | | Double num5 = extraCost.getDouble("num5");//恶劣天气公里 |
| | | Double num6 = extraCost.getDouble("num6");//恶劣天气费 |
| | |
| | | Double num9 = extraCost.getDouble("num9");//恶劣天气最高收取金额 |
| | | |
| | | //等待费用 |
| | | if(waitTime.compareTo(num1) >= 0){ |
| | | if(waitTime.compareTo(num1 * 60) >= 0){ |
| | | order.setWaitTime(num1);//等待时长 |
| | | order.setWaitTimePrice(num2);//等待费用 |
| | | |
| | | Double w = waitTime - num1 - 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());//等待时长超出费用 |
| | | } |
| | |
| | | order.setOverLongDistancePrice(0d);//超出长途里程费 |
| | | // order.setWaitTime(0);//等待时长 |
| | | order.setWaitTimePrice(0D);//等待费 |
| | | order.setOutWaitTime(0D);//超出等待时长 |
| | | order.setOutWaitTime(0);//超出等待时长 |
| | | order.setOutWaitTimePrice(0D);//超出等待时长费 |
| | | order.setBadWeatherDistance(0D);//恶劣天气里程 |
| | | order.setBadWeatherPrice(0D);//恶劣天气里程费 |
| | |
| | | * 订单推送逻辑 |
| | | * @param order |
| | | */ |
| | | public void pushOrder(Order order){ |
| | | public void pushOrder(Long orderId){ |
| | | try { |
| | | Order order = this.selectById(orderId); |
| | | /** |
| | | * 1.先找最大推单范围内的优推司机 -》 距离最近 |
| | | * 没有1 - 》 |
| | |
| | | } |
| | | } |
| | | if(!lock){ |
| | | redisUtil.unlock(); |
| | | order.setHallOrder(1); |
| | | this.updateById(order); |
| | | ExtraPushOrder(order); |
| | | return; |
| | | redisUtil.unlock(); |
| | | } |
| | | SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 1)); |
| | | if(null == systemConfig){ |
| | |
| | | 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; |
| | | } |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | if(null != youTuiDriver1 && youTuiDriver1.getType() == 1){ |
| | | youTuiDriver1.setSurplusQuantity(youTuiDriver1.getSurplusQuantity() - 1); |
| | | youTuiDriverService.updateById(youTuiDriver1); |
| | |
| | | |
| | | 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()); |
| | |
| | | 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; |
| | | } |
| | |
| | | } |
| | | redisUtil.unlock(); |
| | | }catch (Exception e){ |
| | | redisUtil.unlock(); |
| | | e.printStackTrace(); |
| | | redisUtil.unlock(); |
| | | } |
| | | } |
| | | |
| | |
| | | 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")); |
| | |
| | | order.setStartTime(new Date()); |
| | | } |
| | | //计算等待用户时长 |
| | | Double w = new BigDecimal(Double.valueOf(System.currentTimeMillis() - order.getStartWaitTime().getTime()) / 60000).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue(); |
| | | Integer w = new BigDecimal(Double.valueOf(System.currentTimeMillis() - order.getStartWaitTime().getTime()) / 1000).intValue(); |
| | | order.setWaitTime(order.getWaitTime() + w); |
| | | order.setStartWaitTime(null); |
| | | break; |
| | |
| | | pushOrderInfoWarpper.setDriverLat(split[1]); |
| | | pushOrderInfoWarpper.setDriverLng(split[0]); |
| | | } |
| | | Double w = 0D; |
| | | Integer w = 0; |
| | | if(null != order.getStartWaitTime()){ |
| | | w = Double.valueOf((System.currentTimeMillis() - order.getStartWaitTime().getTime()) / 60000); |
| | | 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); |
| | |
| | | } |
| | | pushUtil.pushOrderInfo(uid, 2, pushOrderInfoWarpper); |
| | | } |
| | | },0, 10000); |
| | | },0, 5000); |
| | | timerMap.put(orderId.toString(), timer); |
| | | } |
| | | |
| | |
| | | new Thread(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | pushOrder(finalOrder); |
| | | pushOrder(finalOrder.getId()); |
| | | } |
| | | }).start(); |
| | | return ResultUtil.success(); |
| | |
| | | .where("'" + geocode.getCity() + "' like CONCAT('%', city, '%') and '" + geocode.getDistrict() + "' like CONCAT('%', district, '%') ")); |
| | | city = null != weatherCity ? weatherCity.getId().toString() : ""; |
| | | } |
| | | order = getOrderPrice(1, d, 0D, order, city); |
| | | order = getOrderPrice(1, d, 0, order, city); |
| | | this.updateById(order); |
| | | return ResultUtil.success(); |
| | | } |
| | |
| | | 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()); |
| | |
| | | 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); |
| | | if(state == 107 && order.getState() != 106){ |
| | | return ResultUtil.error("操作失败"); |
| | | } |
| | | if(state == 108 && order.getState() != 107){ |
| | | return ResultUtil.error("操作失败"); |
| | | } |
| | | order.setState(state); |
| | | |
| | | if(payType == 2 && state == 107){ |
| | |
| | | } |
| | | |
| | | |
| | | 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()); |
| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | //司机余额扣减抽佣金额,将金额先分账给平台 |
| | | if(order.getPayMoney().compareTo(payMoney) > 0){ |
| | | 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; |
| | | } |
| | | } |
| | | } |
| | |
| | | * @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); |