Pu Zhibing
15 小时以前 574cd41b6e4aa65426c7597297aa94f6259d6666
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
@@ -638,14 +638,13 @@
               } else {
                  OrderPrivateCar orderPrivateCar1 = null;
                  OpenCity openCity = openCityService.openCity1(orderPrivateCar.getStartLon().toString(), orderPrivateCar.getStartLat().toString());
                  TbSpellOrderRule spellOrderRule = spellOrderRuleService.selectOne(new EntityWrapper<TbSpellOrderRule>().eq("openCityId", openCity.getId()));
                  //判断是否有相同线路的拼车-有直接拼成功,或者推送拼车订单
                  List<OrderPrivateCar> orderList = orderPrivateCarMapper.selectList(new EntityWrapper<OrderPrivateCar>().eq("rideType", 3).in("state", "2,3,4").le("totalPeopleNum", 4 - peopleNum));
                  for (OrderPrivateCar order : orderList) {
                     TbSpellOrderRule spellOrderRule = spellOrderRuleService.selectOne(new EntityWrapper<TbSpellOrderRule>().eq("openCityId", openCity.getId()));
                     if (spellOrderRule != null) {
                        JSONObject jsonObject = JSONObject.parseObject(spellOrderRule.getContent());
                        //判断时间
                        if (travelTime.getTime() >= order.getTravelTime().getTime() - jsonObject.getInteger("num5") * 60000L && travelTime.getTime() <= order.getTravelTime().getTime() + jsonObject.getInteger("num6") * 60000L) {
                           //                        Double dis1 = Double.valueOf(gdMapElectricFenceUtil.getDistance(orderPrivateCar.getStartLon() + "," + orderPrivateCar.getStartLat(), order.getStartLon() + "," + order.getStartLat(), 1).get("distance").toString());
                           //                        Double dis2 = Double.valueOf(gdMapElectricFenceUtil.getDistance(orderPrivateCar.getEndLon() + "," + orderPrivateCar.getEndLat(), order.getEndLon() + "," + order.getEndLat(), 1).get("distance").toString());
@@ -663,7 +662,6 @@
                  if (orderPrivateCar1 == null) {
                     orderList = orderPrivateCarMapper.selectList(new EntityWrapper<OrderPrivateCar>().eq("rideType", 3).eq("state", 5).le("totalPeopleNum", 4 - peopleNum));
                     for (OrderPrivateCar order : orderList) {
                        TbSpellOrderRule spellOrderRule = spellOrderRuleService.selectOne(new EntityWrapper<TbSpellOrderRule>().eq("openCityId", openCity.getId()));
                        if (spellOrderRule != null) {
                           JSONObject jsonObject = JSONObject.parseObject(spellOrderRule.getContent());
                           //判断时间
@@ -703,6 +701,15 @@
                     orderPrivateCar.setIsDelete(1);
                     orderPrivateCar.setPid(orderPrivateCar1.getPid() == null ? orderPrivateCar1.getId() : orderPrivateCar1.getPid());
                     Integer promotion1 = isPromotion(orderPrivateCar.getUserId());
                     if(promotion1!=null){
                        orderPrivateCar.setPromotion(2);
                        Driver driver1 = driverService.selectById(promotion);
                        orderPrivateCar.setPromotionUser(driver1.getName());
                        orderPrivateCar.setPromotionPhone(driver1.getPhone());
                        orderPrivateCar.setPromotionDriverId(promotion1);
                     }
                     Company company = companyService.selectById(driver.getCompanyId());
                     //调三方订单中心创建行程单
                     CreateTravelItineraryRequest request = new CreateTravelItineraryRequest();
@@ -717,8 +724,8 @@
                     request.setServiceType(2);
                     String travelItinerary = OrderUtil.createTravelItinerary(request);
                     orderPrivateCar.setTravelId(travelItinerary);
                     this.insertOrUpdate(orderPrivateCar);
                     //修改总订单人数
                     OrderPrivateCar orderPrivateCar2 = new OrderPrivateCar();
                     orderPrivateCar2.setSpellSuccess(1);
@@ -771,7 +778,7 @@
      UserInfo userInfo = userInfoService.selectById(userId);
      if(userInfo.getBindDriverId()!=null && userInfo.getBindExpireDate().getTime()<=System.currentTimeMillis()){
         String registAreaCode = userInfo.getRegistAreaCode();
         TDriverPromotionActivity tDriverPromotionActivity = driverPromotionActivityService.selectOne(new EntityWrapper<TDriverPromotionActivity>().eq("districtCode", registAreaCode).eq("state",1).ge("startTime", new Date()).lt("endTime", new Date()).last("AND FIND_IN_SET(" + 1 + ", bizType) limit 1"));
         TDriverPromotionActivity tDriverPromotionActivity = driverPromotionActivityService.selectOne(new EntityWrapper<TDriverPromotionActivity>().eq("districtCode", registAreaCode).eq("state",1).le("startTime", new Date()).ge("endTime", new Date()).last("AND FIND_IN_SET(" + 1 + ", bizType) limit 1"));
         if(tDriverPromotionActivity!=null){
            return userInfo.getBindDriverId();
         }
@@ -966,7 +973,7 @@
//            return ResultUtil.error("司机已到达预约点,取消会产生一定的费用");
//        }
      if (orderPrivateCar.getState() >= 5 && orderPrivateCar.getState() != 11) {
         return ResultUtil.error("取消订单失败,不合法的操作");
         return ResultUtil.error("订单已取消,请刷新页面");
      }
      Integer number1 = this.selectCount(new EntityWrapper<OrderPrivateCar>().eq("pid", orderPrivateCar.getPid() == null ? orderPrivateCar.getId() : orderPrivateCar.getPid()).lt("state", 6));
      Integer number2 = this.selectCount(new EntityWrapper<OrderPrivateCar>().eq("id", orderPrivateCar.getPid() == null ? orderPrivateCar.getId() : orderPrivateCar.getPid()).lt("state", 6));
@@ -991,73 +998,17 @@
               orderCancelService.saveData(orderPrivateCar1.getId(), 1, "无司机接单", "无司机接单", null, null, 2, 1, uid);
               orderPrivateCar1.setState(10);
               this.updateById(orderPrivateCar1);
               Driver driver1 = null;
               Company company = null;
               //中台修改订单状态
               ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest();
               request.setOrderId(orderPrivateCar1.getTravelId());
               request.setStatus(orderPrivateCar1.getState());
               if (null != orderPrivateCar1.getDriverId()) {
                  driver1 = driverService.selectById(orderPrivateCar1.getDriverId());
                  company = companyService.selectById(driver1.getCompanyId());
                  request.setDriverId(driver1.getEmpId().toString());
                  request.setSupplierShopId(company.getEnterCode());
               }
               if (2 == orderPrivateCar1.getPromotion()) {
                  Driver driver2 = driverService.selectById(orderPrivateCar1.getPromotionDriverId());
                  request.setPromoterId(driver2.getEmpId().toString());
               }
               OrderUtil.modifyTravelItinerary(request);
            }
            List<OrderTaxi> list1 = orderTaxiService.selectList(new EntityWrapper<OrderTaxi>().eq("type", 2).eq("crossCityOrderId", orderPrivateCar.getCrossCityOrderId()).eq("place", orderPrivateCar.getPlace()));
            for (OrderTaxi orderTaxi : list1) {
               orderCancelService.saveData(orderTaxi.getId(), 2, "无司机接单", "无司机接单", null, null, 2, 1, uid);
               orderTaxi.setState(10);
               orderTaxiService.updateById(orderTaxi);
               Driver driver1 = null;
               Company company = null;
               //中台修改订单状态
               ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest();
               request.setOrderId(orderTaxi.getTravelId());
               request.setStatus(orderTaxi.getState());
               if (null != orderTaxi.getDriverId()) {
                  driver1 = driverService.selectById(orderTaxi.getDriverId());
                  company = companyService.selectById(driver1.getCompanyId());
                  request.setDriverId(driver1.getEmpId().toString());
                  request.setSupplierShopId(company.getEnterCode());
               }
               if (2 == orderTaxi.getPromotion()) {
                  Driver driver2 = driverService.selectById(orderTaxi.getPromotionDriverId());
                  request.setPromoterId(driver2.getEmpId().toString());
               }
               OrderUtil.modifyTravelItinerary(request);
            }
         } else {
            integer = orderCancelService.saveData(id, 1, "无司机接单", "无司机接单", null, null, 2, 1, uid);
            orderPrivateCar.setState(10);
            this.updateById(orderPrivateCar);
            Driver driver1 = null;
            Company company = null;
            //中台修改订单状态
            ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest();
            request.setOrderId(orderPrivateCar.getTravelId());
            request.setStatus(orderPrivateCar.getState());
            if (null != orderPrivateCar.getDriverId()) {
               driver1 = driverService.selectById(orderPrivateCar.getDriverId());
               company = companyService.selectById(driver1.getCompanyId());
               request.setDriverId(driver1.getEmpId().toString());
               request.setSupplierShopId(company.getEnterCode());
            }
            if (2 == orderPrivateCar.getPromotion()) {
               Driver driver2 = driverService.selectById(orderPrivateCar.getPromotionDriverId());
               request.setPromoterId(driver2.getEmpId().toString());
            }
            if(orderPrivateCar.getTravelId()!=null){
               OrderUtil.modifyTravelItinerary(request);
            }
         }
      } else {
         OpenCity openCity = openCityService.openCity1(orderPrivateCar.getStartLon().toString(), orderPrivateCar.getStartLat().toString());
@@ -1154,7 +1105,7 @@
         return ResultUtil.error("取消订单失败,订单信息有误", "");
      }
      if (orderPrivateCar.getState() != 12) {
         return ResultUtil.error("取消订单失败,不合法的操作", "");
         return ResultUtil.error("订单已取消,请刷新页面", "");
      }
      OrderCancel orderCancel = null;
      if (null == cancleId) {
@@ -1270,14 +1221,10 @@
      if(Integer.valueOf(String.valueOf(map.get("state"))) == 11){
         map.put("state", map.get("oldState"));
      }
      if(Integer.valueOf(String.valueOf(map.get("state"))) ==7 &&  (map.get("responsibilityType")==null || Integer.valueOf(String.valueOf(map.get("responsibilityType")))<4)){
         map.put("appealButton", 1);
      }
      if(map.get("abnormalIntro")!=null){
         map.put("appealStatus", 1);
      }
      if(Integer.valueOf(String.valueOf(map.get("state"))) != 8 && Integer.valueOf(String.valueOf(map.get("state"))) != 9){
         map.put("redPacketMoney", null);
         map.put("couponMoney", null);
@@ -2192,6 +2139,7 @@
      orderMoney = new BigDecimal(orderMoney).setScale(2, RoundingMode.HALF_UP).doubleValue();
      System.out.println("!!!" + orderMoney + "!!!!");
      orderMoney = orderMoney < 0 ? 0 : orderMoney;
      orderPrivateCar.setPayMoney(orderMoney);
      if (payType == 1) {//微信支付
         if (orderMoney == 0) {
            return ResultUtil.error("请使用余额支付");
@@ -2327,7 +2275,6 @@
         
         orderPrivateCar.setState(8);
         orderPrivateCar.setPayType(3);
         orderPrivateCar.setPayMoney(orderMoney);
         
         //处理优惠券和红包
         if (null != userCouponRecord) {
@@ -2348,7 +2295,12 @@
         //添加收入
         Map<String, Object> map = incomeService.saveIncome(orderPrivateCar.getId(), 1, orderPrivateCar.getOrderMoney());
         orderPrivateCar.setSplitAllocation(JSON.toJSONString(map));
         this.updateAllColumnById(orderPrivateCar);
         promotion(orderPrivateCar.getId());
         // TODO: 2020/5/24 这里需要给司机和用户推送订单状态
         new Thread(new Runnable() {
            @Override
@@ -2376,8 +2328,12 @@
         resultUtil = appOrderController.placeAnOrder(new BigDecimal(orderMoney), 4, orderId, 6, integer);
         
      }
      this.updateAllColumnById(orderPrivateCar);
      if(payType != 3){
         this.updateAllColumnById(orderPrivateCar);
      }
      return resultUtil;
   }
   
@@ -2659,7 +2615,7 @@
            OpenCity openCity = openCityService.openCity1(orderPrivateCar.getStartLon().toString(), orderPrivateCar.getStartLat().toString());
            List<PushOrder> querys = pushOrderService.querys(null, 2, openCity.getId());//获取需要推送的次数
            int time = 0;
            for (int i = 1; i <= querys.size() + 5; i++) {
            for (int i = 1; i <= querys.size() + 15; i++) {
               int finalI = i;
               PushOrder pushOrder = querys.stream().filter(s -> s.getType() == (finalI <= 3 ? finalI : 3)).findFirst().orElse(null);
               time += pushOrder.getPushTime() * 1000;
@@ -2823,7 +2779,7 @@
               OpenCity openCity = openCityService.openCity1(startLon.toString(), startLat.toString());
               List<PushOrder> querys = pushOrderService.querys(null, 1, openCity.getId());//获取需要推送的次数
               //整轮派单结束,若无司机接单,系统自动增加派单5轮,若增加5轮后任无司机接单,则系统结束派单,乘客端显示无司机接单、是否再次打车
               for (int i = 1; i <= querys.size() + 5; i++) {
               for (int i = 1; i <= querys.size() + 15; i++) {
                  OrderPrivateCar orderPrivateCar = orderPrivateCarMapper.selectById(id);
                  if (null == orderPrivateCar || orderPrivateCar.getState() > 1) {
                     break;
@@ -2856,12 +2812,15 @@
                     }
                  }
                  Thread.sleep(pushOrder.getPushTime() * 1000);//设置等待时间
                  Integer state = orderPrivateCarMapper.selectById(orderPrivateCar.getId()).getState();
                  OrderPrivateCar orderPrivateCar1 = orderPrivateCarMapper.selectById(orderPrivateCar.getId());
                  Integer state =orderPrivateCar1.getState();
                  if (state > 1) {
                     orderIds.remove(orderPrivateCar.getId());
                     break;
                  }
                  if (i == querys.size() + 5) {
                  if (i == querys.size() + 15) {
                     orderPrivateCar1.setState(10);
                     orderPrivateCarMapper.updateById(orderPrivateCar1);
                     pushUtil.pushEndPush(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1);
                     orderIds.remove(orderPrivateCar.getId());
                  }
@@ -2894,7 +2853,7 @@
               }
               OpenCity openCity = openCityService.openCity1(orderPrivateCar.getStartLon().toString(), orderPrivateCar.getStartLat().toString());
               List<PushOrder> querys = pushOrderService.querys(null, 1, openCity.getId());//获取需要推送的次数
               for (int i = 1; i <= querys.size() + 5; i++) {
               for (int i = 1; i <= querys.size() + 15; i++) {
                  OrderPrivateCar orderPrivateCar = orderPrivateCarMapper.selectById(id);
                  if (null == orderPrivateCar || orderPrivateCar.getState() > 1) {
                     break;
@@ -2937,7 +2896,7 @@
                        orderIds.remove(orderPrivateCar.getId());
                        return;
                     }
                     if (i == querys.size() + 5 && state == 1) {
                     if (i == querys.size() + 15 && state == 1) {
                        pushUtil.pushEndPush(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1);
                        orderIds.remove(orderPrivateCar.getId());
                     }
@@ -2972,15 +2931,20 @@
      UserInfo userInfo = userInfoService.selectById(orderPrivateCar.getUserId());
//      if(userInfo.getBindDriverId()!=null && userInfo.getBindExpireDate().getTime()<=System.currentTimeMillis()){
      // 开始绑定的  后面到期也结算
      System.out.println("eeeee+"+orderPrivateCar.getPromotionDriverId());
      if(orderPrivateCar.getPromotionDriverId()!=null ){
         String registAreaCode = userInfo.getRegistAreaCode();
         TDriverPromotionActivity tDriverPromotionActivity = driverPromotionActivityService.selectOne(new EntityWrapper<TDriverPromotionActivity>().eq("districtCode", registAreaCode).ge("startTime", new Date()).lt("endTime", new Date()).last("AND FIND_IN_SET(" + 1 + ", bizType) limit 1"));
         TDriverPromotionActivity tDriverPromotionActivity = driverPromotionActivityService.selectOne(new EntityWrapper<TDriverPromotionActivity>().eq("districtCode", registAreaCode).le("startTime", new Date()).ge("endTime", new Date()).last("AND FIND_IN_SET(" + 1 + ", bizType) limit 1"));
         System.out.println("ddddd"+tDriverPromotionActivity);
         if(tDriverPromotionActivity!=null){
            Double payMoney = orderPrivateCar.getPayMoney();
            System.out.println(payMoney);
            BigDecimal bigDecimal = tDriverPromotionActivity.getCommissionRatio().divide(new BigDecimal(100), 2, RoundingMode.HALF_UP).multiply(new BigDecimal(payMoney)).setScale(2, RoundingMode.HALF_UP);
            System.out.println(bigDecimal);
            orderPrivateCar.setPromotionDriverId(userInfo.getBindDriverId());
            orderPrivateCar.setPromotionMoney(bigDecimal);
            orderPrivateCar.setPromotionActivityId(tDriverPromotionActivity.getId());
            orderPrivateCar.setSuccessTime(new Date());
            this.baseMapper.updateById(orderPrivateCar);
         }
      }