| | |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 获取司机端首页订单列表 |
| | | * @param state 1=服务中,2=待服务(30分钟定义预约) |
| | |
| | | int num = 0; |
| | | Double serverMoney = 0D; |
| | | Double totalMoney = 0D; |
| | | for(Map<String, Object> m : order){ |
| | | for (Map<String, Object> m : order) { |
| | | num += Integer.valueOf(m.get("peopleNumber").toString()); |
| | | totalMoney += Double.valueOf(m.get("payMoney").toString()); |
| | | List<Income> incomes = incomeService.queryData(1, null, 2, Integer.valueOf(m.get("orderId").toString()), 3); |
| | | for (Income income : incomes){ |
| | | for (Income income : incomes) { |
| | | serverMoney += income.getMoney(); |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 走订单流程操作 |
| | | * @param orderId |
| | |
| | | @Override |
| | | public ResultUtil process(Integer orderId, Integer state, Double lon, Double lat, String address) throws Exception { |
| | | OrderCrossCity orderCrossCity = this.selectById(orderId); |
| | | switch (state){ |
| | | switch (state) { |
| | | case 3://出发前往预约点 |
| | | orderCrossCity.setState(3); |
| | | orderCrossCity.setSetOutTime(new Date()); |
| | |
| | | |
| | | //还原座位数 |
| | | LineShiftDriver lineShiftDriver = lineShiftDriverMapper.selectById(orderCrossCity.getLineShiftDriverId()); |
| | | lineShiftDriver.setLaveSeat(lineShiftDriver.getLaveSeat() + orderCrossCity.getPeopleNumber()); |
| | | lineShiftDriver.setLaveSeatNumber( |
| | | (ToolUtil.isNotEmpty(lineShiftDriver.getLaveSeatNumber()) ? lineShiftDriver.getLaveSeatNumber() + "," : "") + |
| | | orderCrossCity.getSeatNumber() |
| | | ); |
| | | lineShiftDriverMapper.updateById(lineShiftDriver); |
| | | if (lineShiftDriver != null) { |
| | | lineShiftDriver.setLaveSeat(lineShiftDriver.getLaveSeat() + orderCrossCity.getPeopleNumber()); |
| | | lineShiftDriver.setLaveSeatNumber( |
| | | (ToolUtil.isNotEmpty(lineShiftDriver.getLaveSeatNumber()) ? lineShiftDriver.getLaveSeatNumber() + "," : "") + |
| | | orderCrossCity.getSeatNumber() |
| | | ); |
| | | lineShiftDriverMapper.updateById(lineShiftDriver); |
| | | } |
| | | |
| | | //修改司机空闲状态 |
| | | List<OrderCrossCity> orderCrossCities = orderCrossCityMapper.queryWithin30Minutes(orderCrossCity.getDriverId(), 2, 3, 4, 5, 11); |
| | | Driver driver = driverService.selectById(orderCrossCity.getDriverId()); |
| | | if(orderCrossCities.size() == 0){ |
| | | if (orderCrossCities.size() == 0) { |
| | | driver.setState(2); |
| | | driverService.updateById(driver); |
| | | } |
| | | |
| | | Integer placeOrderWay = null; |
| | | switch (orderCrossCity.getOrderSource()){ |
| | | switch (orderCrossCity.getOrderSource()) { |
| | | case 2: |
| | | placeOrderWay = 4; |
| | | break; |
| | |
| | | } |
| | | |
| | | Company company = companyService.selectById(driver.getFranchiseeId()); |
| | | if(Objects.isNull(company)){ |
| | | if (Objects.isNull(company)) { |
| | | company = companyService.selectById(driver.getCompanyId()); |
| | | } |
| | | // 司机收入 |
| | | double moneyTwo; |
| | | // 平台收入 |
| | | double money; |
| | | if(orderCrossCity.getOrderSource() == 2 || orderCrossCity.getOrderSource() == 3){ |
| | | if (orderCrossCity.getOrderSource() == 2 || orderCrossCity.getOrderSource() == 3) { |
| | | double v = company.getPercentageDeduction() / 100; |
| | | money = v * orderCrossCity.getOrderMoney(); |
| | | moneyTwo = orderCrossCity.getOrderMoney()-money; |
| | | }else { |
| | | moneyTwo = orderCrossCity.getOrderMoney() - money; |
| | | } else { |
| | | money = company.getFixedDeduction(); |
| | | moneyTwo = orderCrossCity.getOrderMoney()-money; |
| | | moneyTwo = orderCrossCity.getOrderMoney() - money; |
| | | } |
| | | driver.setBalance(driver.getBalance() + moneyTwo); |
| | | // 新增扣除使用费记录 |
| | | transactionDetailsService.saveDataTaxi(driver.getId(), "软件使用费", money, 2, 1, 2, 6, orderCrossCity.getId(),placeOrderWay,company.getId()); |
| | | transactionDetailsService.saveDataTaxi(driver.getId(), "软件使用费", money, 2, 1, 2, 6, orderCrossCity.getId(), placeOrderWay, company.getId()); |
| | | // 司机订单收入 |
| | | transactionDetailsService.saveDataTaxi(driver.getId(), "完成订单", moneyTwo, 1, 1, 2, 3, orderCrossCity.getId(),placeOrderWay,company.getId()); |
| | | transactionDetailsService.saveDataTaxi(driver.getId(), "完成订单", moneyTwo, 1, 1, 2, 3, orderCrossCity.getId(), placeOrderWay, company.getId()); |
| | | |
| | | driverService.updateById(driver); |
| | | |
| | |
| | | public void setOrderCrossCitySort(Integer orderId) throws Exception { |
| | | OrderCrossCity orderCrossCity = this.selectById(orderId); |
| | | List<OrderCrossCity> orderCrossCities = orderCrossCityMapper.selectList(new EntityWrapper<OrderCrossCity>().eq("orderNum", orderCrossCity.getOrderNum()).ne("state", 10).orderBy("sort")); |
| | | for(int i = 0; i < orderCrossCities.size(); i++){ |
| | | if(orderCrossCities.get(i).getId().compareTo(orderId) == 0){ |
| | | if(i == 0){ |
| | | for (int i = 0; i < orderCrossCities.size(); i++) { |
| | | if (orderCrossCities.get(i).getId().compareTo(orderId) == 0) { |
| | | if (i == 0) { |
| | | break; |
| | | } |
| | | OrderCrossCity orderCrossCity2 = orderCrossCities.get(i); |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 跨城下单操作 |
| | | * @param orderCrossCityWarpper |
| | |
| | | * 先判断司机座位数是否符合出行人数 |
| | | */ |
| | | LineShiftDriver lineShiftDriver = lineShiftDriverMapper.selectById(orderCrossCityWarpper.getLineShiftDriverId()); |
| | | if(orderCrossCityWarpper.getTravelMode() == 1){ |
| | | if(lineShiftDriver.getLaveSeat() < orderCrossCityWarpper.getPeopleNumber()){ |
| | | if (orderCrossCityWarpper.getTravelMode() == 1) { |
| | | if (lineShiftDriver.getLaveSeat() < orderCrossCityWarpper.getPeopleNumber()) { |
| | | return ResultUtil.error("司机剩余座位数小于出行人数"); |
| | | } |
| | | }else{ |
| | | if(lineShiftDriver.getLaveSeat() != lineShiftDriver.getTotalSeat()){ |
| | | } else { |
| | | if (lineShiftDriver.getLaveSeat() != lineShiftDriver.getTotalSeat()) { |
| | | return ResultUtil.error("司机车辆上已经有人占座了,不能下包车订单"); |
| | | } |
| | | if(lineShiftDriver.getLaveSeat() == 0){ |
| | | if (lineShiftDriver.getLaveSeat() == 0) { |
| | | return ResultUtil.error("司机剩余座位数不足"); |
| | | } |
| | | } |
| | | Driver driver = driverService.selectById(orderCrossCityWarpper.getDriverId()); |
| | | if(driver.getState() == 1){ |
| | | if (driver.getState() == 1) { |
| | | return ResultUtil.error("司机处于离线状态"); |
| | | } |
| | | OrderCrossCity orderCrossCity = new OrderCrossCity(); |
| | | UserInfo userInfo = userInfoMapper.queryByPhone(orderCrossCityWarpper.getPassengersPhone()); |
| | | if(userInfo == null){//添加用户信息 |
| | | if (userInfo == null) {//添加用户信息 |
| | | userInfo = new UserInfo(); |
| | | Integer integer = userInfoMapper.selectCount(null) + 1000001; |
| | | userInfo.setNickName(ToolUtil.isNotEmpty(orderCrossCityWarpper.getPassengers()) ? orderCrossCityWarpper.getPassengers() : "OK" + String.valueOf(integer).substring(1)); |
| | |
| | | * 2.下了预约单和再下一张即时单不能再下预约单 |
| | | */ |
| | | List<OrderPrivateCar> orderPrivateCars = orderPrivateCarMapper.queryByState(orderCrossCity.getUserId(), 1, 1, 1, 2, 3, 4, 5, 6, 7, 11); |
| | | if(orderPrivateCars.size() > 0){ |
| | | if (orderPrivateCars.size() > 0) { |
| | | return ResultUtil.error("有未完成的订单"); |
| | | } |
| | | List<OrderTaxi> list = orderTaxiMapper.queryByState_(orderCrossCity.getUserId(), 1, 1, 1, 2, 3, 4, 5, 6, 11); |
| | | if(list.size() > 0){ |
| | | if (list.size() > 0) { |
| | | return ResultUtil.error("有未完成的订单"); |
| | | } |
| | | List<OrderCrossCity> orderCrossCities1 = orderCrossCityMapper.queryByState(orderCrossCity.getUserId(), 1, 2, 3, 4, 5, 7, 11); |
| | | if(orderCrossCities1.size() > 0){ |
| | | if (orderCrossCities1.size() > 0) { |
| | | return ResultUtil.error("有未完成的订单"); |
| | | } |
| | | |
| | | List<OrderCrossCity> orderCrossCities2 = orderCrossCityMapper.queryOrders(orderCrossCityWarpper.getDriverId(), orderCrossCityWarpper.getLineShiftDriverId(), Arrays.asList(5)); |
| | | if(orderCrossCities2.size() > 0){ |
| | | if (orderCrossCities2.size() > 0) { |
| | | return ResultUtil.error("司机正在服务中"); |
| | | } |
| | | |
| | |
| | | Map<String, String> geocode = gdMapGeocodingUtil.geocode(orderCrossCity.getStartLon().toString(), orderCrossCity.getStartLat().toString()); |
| | | Region region = regionMapper.query(geocode.get("districtCode")); |
| | | Map<String, String> map = chinaMobileUtil.midAxbBindSend(orderCrossCity.getPassengersPhone(), driver.getPhone(), Integer.valueOf(region.getCitycode().substring(1))); |
| | | if(String.valueOf(map.get("code")).equals("200")){ |
| | | if (String.valueOf(map.get("code")).equals("200")) { |
| | | orderCrossCity.setTelX(map.get("telX")); |
| | | orderCrossCity.setBindId(map.get("bindId")); |
| | | } |
| | | if(orderCrossCityWarpper.getTravelMode() == 2){//包车 |
| | | if (orderCrossCityWarpper.getTravelMode() == 2) {//包车 |
| | | orderCrossCity.setSeatNumber(lineShiftDriver.getLaveSeatNumber()); |
| | | orderCrossCity.setPeopleNumber(lineShiftDriver.getLaveSeat()); |
| | | } |
| | | this.insert(orderCrossCity); |
| | | |
| | | if(driver.getState() == 2){ |
| | | if (driver.getState() == 2) { |
| | | driver.setState(3); |
| | | driverService.updateById(driver); |
| | | } |
| | | |
| | | //修改预约班次的数据 |
| | | if(orderCrossCity.getTravelMode() == 2){//包车 |
| | | if (orderCrossCity.getTravelMode() == 2) {//包车 |
| | | lineShiftDriver.setLaveSeat(0); |
| | | lineShiftDriver.setLaveSeatNumber(""); |
| | | }else{//拼车 |
| | | } else {//拼车 |
| | | lineShiftDriver.setLaveSeat(lineShiftDriver.getLaveSeat() - orderCrossCity.getPeopleNumber()); |
| | | String[] split = orderCrossCity.getSeatNumber().split(","); |
| | | String[] split1 = lineShiftDriver.getLaveSeatNumber().split(","); |
| | | String seatNumber = ""; |
| | | //先判断选中座位号和剩余座位号是否匹配 |
| | | for(String spl : split){ |
| | | for (String spl : split) { |
| | | boolean b = true; |
| | | for(String sp : split1){ |
| | | if(ToolUtil.isNotEmpty(spl) && ToolUtil.isNotEmpty(sp) && sp.equals(spl)){ |
| | | for (String sp : split1) { |
| | | if (ToolUtil.isNotEmpty(spl) && ToolUtil.isNotEmpty(sp) && sp.equals(spl)) { |
| | | b = false; |
| | | break; |
| | | } |
| | | } |
| | | if(b){ |
| | | if (b) { |
| | | throw new SystemException("您选中的" + spl + "号座位已被占用,请选择其他座位!"); |
| | | } |
| | | } |
| | | for(String sp : split1){ |
| | | for (String sp : split1) { |
| | | boolean b = true; |
| | | for(String spl : split){ |
| | | if(ToolUtil.isNotEmpty(spl) && ToolUtil.isNotEmpty(sp) && sp.equals(spl)){ |
| | | for (String spl : split) { |
| | | if (ToolUtil.isNotEmpty(spl) && ToolUtil.isNotEmpty(sp) && sp.equals(spl)) { |
| | | b = false; |
| | | break; |
| | | } |
| | | } |
| | | if(b && ToolUtil.isNotEmpty(sp)){ |
| | | if (b && ToolUtil.isNotEmpty(sp)) { |
| | | seatNumber += (sp + ","); |
| | | } |
| | | } |
| | |
| | | @Override |
| | | public void run() { |
| | | OrderCrossCity orderCrossCity1 = orderCrossCityMapper.selectById(orderCrossCity.getId()); |
| | | if(orderCrossCity1.getState() == 7 && orderCrossCity1.getPayMoney() == null){ |
| | | if (orderCrossCity1.getState() == 7 && orderCrossCity1.getPayMoney() == null) { |
| | | orderCrossCity1.setState(10); |
| | | orderCrossCityMapper.updateById(orderCrossCity1); |
| | | |
| | |
| | | |
| | | //修改司机为空闲 |
| | | List<OrderCrossCity> orderCrossCities = orderCrossCityMapper.queryByDriverId(orderCrossCity.getDriverId(), 2, 3, 4, 5, 11); |
| | | if(orderCrossCities.size() == 0){ |
| | | if (orderCrossCities.size() == 0) { |
| | | Driver driver = driverService.selectById(orderCrossCity.getDriverId()); |
| | | driver.setState(2); |
| | | driverService.updateById(driver); |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 计算支付金额 |
| | | * @param startLonLat |
| | |
| | | public ResultUtil queryOrderMoney(String startLonLat, String endLonLat, Integer peopleNumber, Integer travelMode, Integer lineId, |
| | | Integer serverCarModelId, Integer totalSeat, String seatNumber) throws Exception { |
| | | Map<String, String> distance = gdMapElectricFenceUtil.getDistance(startLonLat, endLonLat, 1);//调用高德计算距离 |
| | | if(null != distance){ |
| | | if (null != distance) { |
| | | return this.getPrice(Double.valueOf(distance.get("distance")), peopleNumber, travelMode, lineId, serverCarModelId, totalSeat, seatNumber); |
| | | } |
| | | return ResultUtil.error("计算行程距离出错啦!"); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | |
| | | @Override |
| | | public ResultUtil payCrossCityOrder(Integer payType, Integer orderId, Integer couponId, Integer type) throws Exception { |
| | | OrderCrossCity orderCrossCity = this.selectById(orderId); |
| | | if(orderCrossCity.getState() != 7){ |
| | | if (orderCrossCity.getState() != 7) { |
| | | return ResultUtil.error("订单已被支付,不允许重复支付"); |
| | | } |
| | | Integer uid = orderCrossCity.getUserId(); |
| | |
| | | orderCrossCity.setCouponMoney(0D);//初始化历史数据 |
| | | orderCrossCity.setCouponId(null); |
| | | |
| | | if(payType == 1){//微信支付 |
| | | if (payType == 1) {//微信支付 |
| | | // Map<String, String> map = icbcPayUtil.placeAnOrder(orderId + ",3", 9, 5, uid.toString(), "完成订单", orderMoney, callbackPath + "/base/wxPayCrossCity", "", type, null); |
| | | // if(map.get("code").equals("200")){ |
| | | // paymentRecordService.saveData(1, orderCrossCity.getDriverId(), 2, orderId, 3, 1, orderMoney, map.get("order_id"), 1);//添加预支付数据 |
| | |
| | | // resultUtil = ResultUtil.error(map.get("msg"), ""); |
| | | // } |
| | | } |
| | | if(payType == 2){//支付宝支付 |
| | | if (payType == 2) {//支付宝支付 |
| | | // Map<String, String> map = icbcPayUtil.placeAnOrder(orderId + ",3", 10, 5, uid.toString(), "完成订单", orderMoney, callbackPath + "/base/aliPayCrossCity", "", type, null); |
| | | // if(map.get("code").equals("200")){ |
| | | // paymentRecordService.saveData(1, orderCrossCity.getDriverId(), 2, orderId, 3, 2, orderMoney, map.get("order_id"), 1);//添加预支付数据 |
| | |
| | | // resultUtil = ResultUtil.error(map.get("msg"), ""); |
| | | // } |
| | | } |
| | | if(payType == 3){//扫码支付 |
| | | if (payType == 3) {//扫码支付 |
| | | //调用支付获取收款二维码数据 |
| | | // ResultUtil<Map<String, Object>> generate = icbcPayUtil.generate(orderCrossCity.getId() + ",3", orderMoney, orderCrossCity.getInsertTime(), orderCrossCity.getOrderNum(), callbackPath + "/base/order/generatePay"); |
| | | // resultUtil = ResultUtil.success(generate.getData().get("qrcode").toString()); |
| | |
| | | this.updateAllColumnById(orderCrossCity); |
| | | return resultUtil; |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | |
| | | @Override |
| | | public void payOrderCrossCityCallback(Integer id, String order_id, Integer type) throws Exception { |
| | | OrderCrossCity orderCrossCity = this.selectById(id); |
| | | if(orderCrossCity.getState() == 7){ |
| | | if (orderCrossCity.getState() == 7) { |
| | | PaymentRecord query = paymentRecordService.query(1, orderCrossCity.getDriverId(), 2, id, 3, type, 1); |
| | | if(null == query){ |
| | | System.err.println("预支付数据异常(orderId = " + id + ")"); |
| | | if (null == query) { |
| | | System.err.println("预支付数据异常(orderId = " + id + ")"); |
| | | } |
| | | //添加交易明细 |
| | | transactionDetailsService.saveData(orderCrossCity.getUserId(), "完成订单", query.getAmount(), 2, 1, 1, 3, query.getOrderId()); |
| | |
| | | String lon = orderPosition.getLon(); |
| | | String lat = orderPosition.getLat(); |
| | | OrderCrossCity order = this.selectById(orderId); |
| | | if(null == order){ |
| | | if (null == order) { |
| | | System.err.println("订单数据异常:" + orderId); |
| | | return false; |
| | | } |
| | | |
| | | //跨城记录所有服务完成之前的订单服务距离 |
| | | List<OrderCrossCity> orderCrossCities = this.selectList(new EntityWrapper<OrderCrossCity>().eq("orderNum", order.getOrderNum()).eq("isDelete", 1).in("state", Arrays.asList(2, 3, 4, 5))); |
| | | for(OrderCrossCity orderCrossCity : orderCrossCities){ |
| | | for (OrderCrossCity orderCrossCity : orderCrossCities) { |
| | | boolean b = false; |
| | | OrderPosition orderPosition1 = orderPositionService.queryNew(orderCrossCity.getId(), 3); |
| | | if(null != orderPosition1){ |
| | | if (null != orderPosition1) { |
| | | String now = lon + "," + lat; |
| | | String old = orderPosition1.getLon() + "," + orderPosition1.getLat(); |
| | | // Map<String, String> distance = gdMapElectricFenceUtil.getDistance(now, old, 0);//直线距离 |
| | | Map<String, Double> distance = geodesyUtil.getDistance(now, old); |
| | | if(null != distance){ |
| | | if (null != distance) { |
| | | Double distance1 = distance.get("WGS84"); |
| | | if(Double.valueOf(distance1) > 50 && orderCrossCity.getState() == 5){//大于50米表示在移动 |
| | | if (Double.valueOf(distance1) > 50 && orderCrossCity.getState() == 5) {//大于50米表示在移动 |
| | | orderCrossCity.setMileage(new BigDecimal(orderCrossCity.getMileage()).add(new BigDecimal(distance1)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | this.updateById(orderCrossCity); |
| | | b = true; |
| | | } |
| | | }else{ |
| | | } else { |
| | | System.err.println("调用高德计算距离出错"); |
| | | } |
| | | }else{ |
| | | } else { |
| | | orderCrossCity.setMileage(0D); |
| | | this.updateById(orderCrossCity); |
| | | b = true;//第一条数据不作处理,直接存储 |
| | | } |
| | | if(b){ |
| | | if (b) { |
| | | //先计算里程,在存储最新位置 |
| | | orderPosition.setInsertTime(new Date()); |
| | | //将数据存储到文件中 |
| | | List<OrderPosition> orderPositions = orderPositionService.queryPosition(orderCrossCity.getId(), 3); |
| | | File file = new File(filePath + orderCrossCity.getId() + "_3" + ".txt"); |
| | | if(!file.exists()){ |
| | | if (!file.exists()) { |
| | | file.getParentFile().mkdirs(); |
| | | file.createNewFile(); |
| | | } |
| | |
| | | * @param seatNumber |
| | | * @return |
| | | */ |
| | | public ResultUtil<Map<String, Object>> getPrice(Double distance, Integer peopleNumber, Integer travelMode, Integer lineId, Integer serverCarModelId, Integer totalSeat, String seatNumber){ |
| | | if(0 >= peopleNumber && peopleNumber > 6){ |
| | | public ResultUtil<Map<String, Object>> getPrice(Double distance, Integer peopleNumber, Integer travelMode, Integer lineId, Integer serverCarModelId, Integer totalSeat, String seatNumber) { |
| | | if (0 >= peopleNumber && peopleNumber > 6) { |
| | | return ResultUtil.error("请输入正确的乘车人数"); |
| | | } |
| | | |
| | |
| | | * 4.浮动计费拼车如果选中中间特殊位置既享受优惠系数又享受中间特殊位置的优惠折扣 |
| | | */ |
| | | Map<String, Object> query = linePriceMapper.query(lineId, serverCarModelId); |
| | | if(null == query){ |
| | | if (null == query) { |
| | | map.put("distance", 0); |
| | | map.put("price", 0); |
| | | return ResultUtil.success(map); |
| | | } |
| | | String content = query.get("content").toString(); |
| | | JSONObject jsonObject = JSON.parseObject(content); |
| | | if(Integer.valueOf(query.get("type").toString()) == 1){//固定金额 |
| | | if (Integer.valueOf(query.get("type").toString()) == 1) {//固定金额 |
| | | double num1 = Double.valueOf(jsonObject.getString("num1")).doubleValue(); |
| | | double num2 = Double.valueOf(jsonObject.getString("num2")).doubleValue(); |
| | | double num3 = Double.valueOf(jsonObject.getString("num3")).doubleValue(); |
| | | double num4 = Double.valueOf(jsonObject.getString("num4")).doubleValue(); |
| | | if(travelMode == 1){//拼车 |
| | | if (travelMode == 1) {//拼车 |
| | | String[] split = seatNumber.split(","); |
| | | boolean b = false; |
| | | for(String s : split){ |
| | | if((totalSeat == 4 && s.equals("3")) || (totalSeat == 6 && s.equals("5"))){ |
| | | for (String s : split) { |
| | | if ((totalSeat == 4 && s.equals("3")) || (totalSeat == 6 && s.equals("5"))) { |
| | | b = true; |
| | | break; |
| | | } |
| | | } |
| | | double price1 = 0D; |
| | | if(b){ |
| | | if (b) { |
| | | price1 = num1 * (totalSeat == 4 ? num3 : num4); |
| | | peopleNumber -= 1; |
| | | } |
| | | double price = (num1 * peopleNumber) + price1; |
| | | map.put("price", new BigDecimal(price).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | }else{ |
| | | } else { |
| | | map.put("price", num2);//包车价 |
| | | } |
| | | |
| | | }else{//浮动计费 |
| | | } else {//浮动计费 |
| | | //计算公式:实际历程 * 基础单价 * (参考费用 / (参考里程 * 基础单价)) + (实际历程 - 参考里程) * 基础单价 * 优惠系数 |
| | | double num1 = Double.valueOf(jsonObject.getString("num1")).doubleValue();//参考费用 |
| | | double num2 = Double.valueOf(jsonObject.getString("num2")).doubleValue();//参考里程 |
| | |
| | | double num5 = Double.valueOf(jsonObject.getString("num5")).doubleValue();//包车系数 |
| | | double num6 = Double.valueOf(jsonObject.getString("num6")).doubleValue();//五座系数 |
| | | double num7 = Double.valueOf(jsonObject.getString("num7")).doubleValue();//七座系数 |
| | | if(travelMode == 1){//拼车 |
| | | if (travelMode == 1) {//拼车 |
| | | double unitPrice = (distance1 * num3 * (num1 / (num2 * num3))) + ((distance1 - num2) * num3 * num4); |
| | | String[] split = seatNumber.split(","); |
| | | boolean b = false; |
| | | for(String s : split){ |
| | | if((totalSeat == 4 && s.equals("3")) || (totalSeat == 6 && s.equals("5"))){ |
| | | for (String s : split) { |
| | | if ((totalSeat == 4 && s.equals("3")) || (totalSeat == 6 && s.equals("5"))) { |
| | | b = true; |
| | | break; |
| | | } |
| | | } |
| | | double price1 = 0D; |
| | | if(b){ |
| | | if (b) { |
| | | price1 = unitPrice * (totalSeat == 4 ? num6 : num7); |
| | | peopleNumber -= 1; |
| | | } |
| | | double price = (unitPrice * peopleNumber) + price1; |
| | | map.put("price", new BigDecimal(price).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | }else{ |
| | | } else { |
| | | double unitPrice = (distance1 * num3 * (num1 / (num2 * num3))) + ((distance1 - num2) * num3 * num5); |
| | | double price = unitPrice * totalSeat; |
| | | map.put("price", new BigDecimal(price).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 获取订单编号 |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @Override |
| | | public synchronized String getOrderNum(Integer driverId, Integer lineShiftDriverId) throws Exception{ |
| | | public synchronized String getOrderNum(Integer driverId, Integer lineShiftDriverId) throws Exception { |
| | | List<OrderCrossCity> orderCrossCities = orderCrossCityMapper.queryOrders(driverId, lineShiftDriverId, Arrays.asList(2, 3, 4, 7)); |
| | | if(orderCrossCities.size() > 0){ |
| | | if (orderCrossCities.size() > 0) { |
| | | return orderCrossCities.get(0).getOrderNum(); |
| | | } |
| | | int size = this.selectCount(null); |
| | | while (true){ |
| | | while (true) { |
| | | String orderNum = "CROSS" + String.valueOf(1000000 + size + 1).substring(1); |
| | | List<OrderCrossCity> orderNum1 = this.selectList(new EntityWrapper<OrderCrossCity>().eq("orderNum", orderNum)); |
| | | if(orderNum1.size() == 0){ |
| | | if (orderNum1.size() == 0) { |
| | | return orderNum; |
| | | } |
| | | size++; |
| | |
| | | public synchronized ResultUtil grabOrder(Integer orderId, Integer uid) throws Exception { |
| | | OrderCrossCity orderCrossCity = selectById(orderId); |
| | | |
| | | if(orderCrossCity.getState() == 9){ |
| | | if (orderCrossCity.getState() == 9) { |
| | | return ResultUtil.error("订单已取消"); |
| | | } |
| | | if(orderCrossCity.getState() != 1){ |
| | | if (orderCrossCity.getState() != 1) { |
| | | return ResultUtil.error("手速有点慢哦,订单已被抢啦!"); |
| | | } |
| | | Driver driver = driverService.selectById(uid); |
| | |
| | | // } |
| | | |
| | | |
| | | |
| | | orderCrossCity.setDriverId(uid); |
| | | orderCrossCity.setCarId(driver.getCarId()); |
| | | orderCrossCity.setCompanyId(driver.getFranchiseeId() != null && driver.getFranchiseeId() != 0 ? driver.getFranchiseeId() : ( |
| | |
| | | Map<String, String> geocode = gdMapGeocodingUtil.geocode(orderCrossCity.getStartLon().toString(), orderCrossCity.getStartLat().toString()); |
| | | Region region = regionMapper.query(geocode.get("districtCode")); |
| | | Map<String, String> map = chinaMobileUtil.midAxbBindSend(orderCrossCity.getPassengersPhone(), driver.getPhone(), Integer.valueOf(region.getCitycode().substring(1))); |
| | | if(String.valueOf(map.get("code")).equals("200")){ |
| | | if (String.valueOf(map.get("code")).equals("200")) { |
| | | orderCrossCity.setTelX(map.get("telX")); |
| | | orderCrossCity.setBindId(map.get("bindId")); |
| | | } |
| | | |
| | | this.updateById(orderCrossCity); |
| | | |
| | | //修改司机为服务中 |
| | | //修改司机为服务中 |
| | | if (driver.getState() == 2) { |
| | | driver.setState(3); |
| | | |
| | |
| | | new Thread(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | if(pushMinistryOfTransport){ |
| | | if (pushMinistryOfTransport) { |
| | | //上传数据 |
| | | pushMinistryOfTransportUtil.orderCreate(orderId); |
| | | pushMinistryOfTransportUtil.orderMatch(orderId); |
| | |
| | | } |
| | | }).start(); |
| | | //发送短信 |
| | | try{ |
| | | try { |
| | | Car car = carService.selectById(orderCrossCity.getCarId()); |
| | | SMSUtil.send(orderCrossCity.getPassengersPhone(), "您的订单已被司机" + driver.getName() + "接单,联系电话" + driver.getPhone() + "车牌号" + car.getCarLicensePlate() + "请耐心等待。", "2431012312845"); |
| | | // String sData = aLiSendSms.sendSms(orderPrivateCar.getPassengersPhone(), "SMS_476900230", "{\"code1\":\"" + driver.getName() + "\",\"code2\":\"" + driver.getPhone() + "\",\"code3\":\"" + car.getCarLicensePlate() + "\"}"); |
| | | }catch (Exception e){ |
| | | } catch (Exception e) { |
| | | |
| | | } |
| | | return ResultUtil.success(); |