zhibing.pu
2024-08-10 155df5096da87c047ea5af3ce7f8b2284c02dd2d
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
@@ -7,7 +7,6 @@
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.stylefeng.guns.core.util.ToolUtil;
import com.stylefeng.guns.modular.crossCity.dao.OrderCrossCityMapper;
import com.stylefeng.guns.modular.crossCity.model.OrderCrossCity;
import com.stylefeng.guns.modular.crossCity.server.IOrderCrossCityService;
import com.stylefeng.guns.modular.crossCity.server.impl.OrderCrossCityServiceImpl;
import com.stylefeng.guns.modular.smallLogistics.model.OrderLogistics;
@@ -28,7 +27,6 @@
import com.stylefeng.guns.modular.system.util.itextpdf.HtmlToPdfUtils;
import com.stylefeng.guns.modular.system.warpper.BaseWarpper;
import com.stylefeng.guns.modular.system.warpper.EndPushWarpper;
import com.stylefeng.guns.modular.system.warpper.OrderInfoWarpper;
import com.stylefeng.guns.modular.system.warpper.OrderServerWarpper;
import com.stylefeng.guns.modular.taxi.dao.OrderTaxiMapper;
import com.stylefeng.guns.modular.taxi.model.OrderTaxi;
@@ -39,7 +37,6 @@
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.nodes.FormElement;
import org.jsoup.select.Elements;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -88,92 +85,92 @@
    @Resource
    private RegionMapper regionMapper;
    @Autowired
    @Resource
    private DateUtil dateUtil;
    @Autowired
    @Resource
    private IUserInfoService userInfoService;
    @Autowired
    @Resource
    private IDriverService driverService;
    @Autowired
    @Resource
    private IDriverServiceService driverServiceService;
    @Autowired
    @Resource
    private PushUtil pushUtil;
    @Autowired
    @Resource
    private ICompanyCityService companyCityService;
    @Autowired
    @Resource
    private IPushOrderService pushOrderService;
    @Autowired
    @Resource
    private ISystemNoticeService systemNoticeService;
    @Autowired
    @Resource
    private ICancleOrderService cancleOrderService;
    @Autowired
    @Resource
    private IOrderCancelService orderCancelService;
    @Autowired
    @Resource
    private RestTemplate internalRestTemplate;
    @Autowired
    @Resource
    private IPaymentRecordService paymentRecordService;
    @Autowired
    @Resource
    private ITransactionDetailsService transactionDetailsService;
    @Autowired
    @Resource
    private ChinaMobileUtil chinaMobileUtil;
    @Autowired
    @Resource
    private IIncomeService incomeService;
    @Autowired
    @Resource
    private IUserCouponRecordService userCouponRecordService;
    @Autowired
    @Resource
    private IUserRedPacketRecordService userRedPacketRecordService;
    @Autowired
    @Resource
    private ICompanyService companyService;
    @Autowired
    @Resource
    private IUserActivityRedenvelopeService userActivityRedenvelopeService;
    @Autowired
    @Resource
    private RedisUtil redisUtil;
    @Autowired
    @Resource
    private IOrderPositionService orderPositionService;
    @Autowired
    @Resource
    private IOrderCrossCityService orderCrossCityService;
    @Autowired
    @Resource
    private IAssignOrderService assignOrderService;
    @Resource
    private CarMapper carMapper;
    @Autowired
    @Resource
    private IOrderEvaluateService orderEvaluateService;
    @Autowired
    @Resource
    private IOrderLogisticsService orderLogisticsService;
    @Autowired
    @Resource
    private IBankCardService bankCardService;
    @Value("${filePath}")
    private String filePath;
    @Autowired
    @Resource
    private IOrderTaxiService orderTaxiService;
    public static List<Integer> orderIds = new ArrayList<>();
@@ -184,32 +181,35 @@
    @Value("${spring.mail.template-path}")
    private String templatePath;
    @Autowired
    @Resource
    private ISettlementDetailService settlementDetailService;
    @Autowired
    @Resource
    private ISettlementRecordService settlementRecordService;
    @Autowired
    @Resource
    private ISettlementAllocationService settlementAllocationService;
    @Autowired
    @Resource
    private TEmailService emailService;
    @Autowired
    @Resource
    private IPhoneService phoneService;
    
    @Autowired
    @Resource
    private IRedEnvelopePaymentSettingsService redEnvelopePaymentSettingsService;
    
    @Autowired
    @Resource
    private FleetEngineUtil fleetEngineUtil;
    
    @Resource
    private CarModelMapper carModelMapper;
    
    @Autowired
    @Resource
    private ICarService carService;
    @Resource
    private DriverWorkMapper driverWorkMapper;
@@ -371,7 +371,6 @@
    
        new Thread(() -> {
            try {
                String vehicleId = null;
                if(null != orderPrivateCar.getDriverId()){
                    Driver driver = driverService.selectById(orderPrivateCar.getDriverId());
                    Car car = carMapper.selectById(driver.getCarId());
@@ -379,6 +378,7 @@
                        car.setVehicleId(UUIDUtil.getRandomCode());
                        carMapper.updateById(car);
                    }
                    String vehicleId = car.getVehicleId();
                    //查询车辆信息,没有则创建信息
                    String vehicles = fleetEngineUtil.getVehicles(car.getVehicleId());
                    if(ToolUtil.isEmpty(vehicles)){
@@ -386,10 +386,12 @@
                        fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                        fleetEngineUtil.updateVehicles("ONLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                    }
                }
                //创建行程数据
                fleetEngineUtil.createTrip(vehicleId, 1, orderPrivateCar.getTripId(),
                        orderPrivateCar.getStartLat().toString(), orderPrivateCar.getStartLon().toString(), orderPrivateCar.getEndLat().toString(), orderPrivateCar.getEndLon().toString());
                }
            }catch (Exception e){
                e.printStackTrace();
            }
@@ -498,6 +500,10 @@
                        dr = drivers.get(0);
                    }
                    Driver driver = driverService.selectById(dr.getId());
                    DriverWork driverWork = driverWorkMapper.selectOne(new EntityWrapper<DriverWork>().eq("driverId", dr.getId())
                            .eq("state", 1).like("type", "1").getEntity());
                    if(driver.getState() == 2 && null != driverWork){
                    orderPrivateCar.setDriverId(dr.getId());
                    orderPrivateCar.setCompanyId(dr.getFranchiseeId() != null && dr.getFranchiseeId() != 0 ? dr.getFranchiseeId() : (
                            dr.getCompanyId() != null && dr.getCompanyId() != 0 ? dr.getCompanyId() : 1));
@@ -559,27 +565,12 @@
                }
            }
        }
        }
        //推单操作
        if(orderPrivateCar.getState() == 1){
            this.pushOrder(orderPrivateCar);
        }else{
//            //接单后定时任务判断司机是否去接乘客,没有则推送提醒
//            CancleOrder cancleOrder = cancleOrderService.query(orderPrivateCar.getCompanyId());
//            if(null != cancleOrder){
//                JSONObject object = JSON.parseObject(cancleOrder.getContent());
//                long time = object.getInteger("driverTimeout") * 60000L;
//                new Timer().schedule(new TimerTask() {
//                    @Override
//                    public void run() {
//                        OrderPrivateCar orderPrivateCar1 = OrderPrivateCarServiceImpl.this.selectById(orderPrivateCar.getId());
//                        if(orderPrivateCar1.getState() == 2){
//                            pushUtil.pushDriverTimeOut(1, orderPrivateCar1.getUserId(), orderPrivateCar1.getId(), 1);
//                        }
//                    }
//                }, time);
//            }
        }
@@ -1048,6 +1039,13 @@
                                    continue;
                                }
    
                                Driver driver1 = driverService.selectById(driver.getId());
                                DriverWork driverWork = driverWorkMapper.selectOne(new EntityWrapper<DriverWork>().eq("driverId", driver1.getId())
                                        .eq("state", 1).like("type", "1").getEntity());
                                if(driver1.getState() != 2 || null == driverWork){
                                    continue;
                                }
                                String text = "";
                                Integer language = driver.getLanguage();
                                switch (language){
@@ -1192,7 +1190,7 @@
            return ResultUtil.error(language == 1 ? "订单不在待支付状态,不允许支付" : language == 2 ? "The order is no longer with Pending Payment, making payments is not allowed." : "La commande n’est plus en attente de paiement, il n’est pas permis d’effectuer des paiements.", "");
        }
        Integer uid = orderPrivateCar.getUserId();
        Double orderMoney = orderPrivateCar.getOrderMoney();
        BigDecimal orderMoney = new BigDecimal(orderPrivateCar.getOrderMoney());
        UserInfo userInfo = userInfoService.selectById(uid);
        ResultUtil resultUtil = ResultUtil.success("");
        orderPrivateCar.setCouponMoney(0D);//初始化历史数据
@@ -1206,9 +1204,9 @@
                Double special = query2.getSpecial();
                if(null != special){
                    orderPrivateCar.setDiscount(special);
                    double v = new BigDecimal(orderMoney).multiply(new BigDecimal(special / 10)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue();
                    BigDecimal v = orderMoney.multiply(new BigDecimal(special / 10)).setScale(2, RoundingMode.HALF_EVEN);
                    if(orderMoney.compareTo(v) > 0){
                        orderPrivateCar.setDiscountMoney(orderMoney - v);
                        orderPrivateCar.setDiscountMoney(orderMoney.subtract(v).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                        orderPrivateCar.setActivityId(query2.getId());
                        orderMoney = v;
                    }
@@ -1235,14 +1233,13 @@
            if(userCouponRecord.getCouponUseType() != 0 && userCouponRecord.getCouponUseType() != 1){
                return ResultUtil.error(language == 1 ? "优惠券不能用于此订单" : language == 2 ? "Coupon cannot be used for this order." : "Le coupon ne peut pas être utilisé pour cette commande.", "");
            }
            if(userCouponRecord.getCouponType() == 2 && orderMoney.compareTo(userCouponRecord.getFullMoney()) < 0){
            if(userCouponRecord.getCouponType() == 2 && orderMoney.compareTo(new BigDecimal(userCouponRecord.getFullMoney())) < 0){
                return ResultUtil.error(language == 1 ? "优惠券不能用于此订单" : language == 2 ? "Coupon cannot be used for this order." : "Le coupon ne peut pas être utilisé pour cette commande.", "");
            }
            orderMoney = orderMoney - userCouponRecord.getMoney();
            orderMoney = orderMoney.subtract(new BigDecimal(userCouponRecord.getMoney())).setScale(2, RoundingMode.HALF_EVEN);
            orderPrivateCar.setCouponMoney(userCouponRecord.getMoney());
            orderPrivateCar.setCouponId(couponId);
        }
        orderMoney=new BigDecimal(orderMoney).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue();
        //计算红包
        if(null != redDeduction && 1 == redDeduction && null == orderPrivateCar.getRedPacketId()){
@@ -1253,10 +1250,10 @@
                        .eq("state", 1).eq("companyId", orderPrivateCar.getCompanyId()).gt("remainingAmount", 0).orderBy("insertTime", false));
    
                BigDecimal deductionRatio = redEnvelopePaymentSettings.getDeductionRatio();
                BigDecimal multiply1 = new BigDecimal(orderMoney).multiply(deductionRatio.divide(new BigDecimal(100))).setScale(2, RoundingMode.HALF_EVEN);
                if(total.compareTo(multiply1.doubleValue()) >= 0){
                BigDecimal multiply1 = orderMoney.multiply(deductionRatio.divide(new BigDecimal(100))).setScale(2, RoundingMode.HALF_EVEN);
                if(total > 0 && multiply1.doubleValue() > 0 && total.compareTo(multiply1.doubleValue()) >= 0){
                    orderPrivateCar.setRedPacketMoney(multiply1.doubleValue());
                    orderMoney = orderMoney - multiply1.doubleValue();
                    orderMoney = orderMoney.subtract(multiply1).setScale(2, RoundingMode.HALF_EVEN);
                    
                    //获取红包id
                    JSONArray jsonArray = new JSONArray();
@@ -1264,6 +1261,9 @@
                        JSONObject jsonObject = new JSONObject();
                        jsonObject.put("id", userRedPacketRecord.getId());
                        BigDecimal remainingAmount = new BigDecimal(userRedPacketRecord.getRemainingAmount());
                        if(multiply1.compareTo(BigDecimal.ZERO) == 0){
                            break;
                        }
                        if(multiply1.compareTo(remainingAmount) >= 0){
                            userRedPacketRecord.setRemainingAmount(0D);
                            userRedPacketRecord.setEndTime(new Date());
@@ -1272,25 +1272,29 @@
                            jsonObject.put("money", remainingAmount);
                            jsonArray.add(jsonObject);
                            userRedPacketRecordService.updateById(userRedPacketRecord);
                        }else{
                        }else if(remainingAmount.compareTo(multiply1) > 0){
                            userRedPacketRecord.setRemainingAmount(remainingAmount.subtract(multiply1).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                            jsonObject.put("money", multiply1);
                            jsonArray.add(jsonObject);
                            userRedPacketRecordService.updateById(userRedPacketRecord);
                            break;
                            multiply1 = BigDecimal.ZERO;
                        }
                    }
                    orderPrivateCar.setRedPacketId(jsonArray.toJSONString());
                }else{
                }
                if(total > 0 && total.compareTo(multiply1.doubleValue()) < 0){
                    orderPrivateCar.setRedPacketMoney(total);
                    orderMoney = orderMoney - total;
                    orderMoney = orderMoney.subtract(new BigDecimal(total)).setScale(2, RoundingMode.HALF_EVEN);
                    //获取红包id
                    JSONArray jsonArray = new JSONArray();
                    BigDecimal multiply = new BigDecimal(total);
                    for (UserRedPacketRecord userRedPacketRecord : userRedPacketRecords) {
                        JSONObject jsonObject = new JSONObject();
                        jsonObject.put("id", userRedPacketRecord.getId());
                        BigDecimal remainingAmount = new BigDecimal(userRedPacketRecord.getRemainingAmount());
                        BigDecimal remainingAmount = BigDecimal.valueOf(userRedPacketRecord.getRemainingAmount());
                        if(multiply.compareTo(BigDecimal.ZERO) == 0){
                            break;
                        }
                        if(multiply.compareTo(remainingAmount) >= 0){
                            userRedPacketRecord.setRemainingAmount(0D);
                            userRedPacketRecord.setEndTime(new Date());
@@ -1299,12 +1303,12 @@
                            jsonObject.put("money", remainingAmount);
                            jsonArray.add(jsonObject);
                            userRedPacketRecordService.updateById(userRedPacketRecord);
                        }else{
                        }else if(remainingAmount.compareTo(multiply) > 0){
                            userRedPacketRecord.setRemainingAmount(remainingAmount.subtract(multiply).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                            jsonObject.put("money", multiply);
                            jsonArray.add(jsonObject);
                            userRedPacketRecordService.updateById(userRedPacketRecord);
                            break;
                            multiply = BigDecimal.ZERO;
                        }
                    }
                    orderPrivateCar.setRedPacketId(jsonArray.toJSONString());
@@ -1322,7 +1326,7 @@
            checkoutRequest.setAccountNumber(userInfo.getPhone());
            checkoutRequest.setCustomerFirstName(userInfo.getFirstName());
            checkoutRequest.setCustomerLastName(userInfo.getLastName());
            checkoutRequest.setRequestAmount(orderMoney);
            checkoutRequest.setRequestAmount(orderMoney.setScale(2, RoundingMode.HALF_EVEN).doubleValue());
            checkoutRequest.setMerchantTransactionId(merchantTransactionId);
            checkoutRequest.setRequestDescription("Travel completion payment");
            checkoutRequest.setCallbackUrl(callbackPath + "/base/wxPayOrderTaxi");
@@ -1332,7 +1336,8 @@
            resultUtil = TinggPayUtil.checkoutRequest(checkoutRequest);
            if(resultUtil.getCode()==200){
                paymentRecordService.saveData(1, null, null, orderId, 1, 1, orderMoney, null, 1);//添加预支付数据
                paymentRecordService.saveData(1, null, null, orderId, 1, 1,
                        orderMoney.setScale(2, RoundingMode.HALF_EVEN).doubleValue(), null, 1);//添加预支付数据
            }else{
                resultUtil = ResultUtil.error(language == 1 ? "支付失败" : language == 2 ? "Payment failure" : "Paiement échoué", "");
            }
@@ -1348,7 +1353,7 @@
            checkoutRequest.setAccountNumber(bankCard.getCode());
            checkoutRequest.setCustomerFirstName(bankCard.getFirstName());
            checkoutRequest.setCustomerLastName(bankCard.getLastName());
            checkoutRequest.setRequestAmount(orderMoney);
            checkoutRequest.setRequestAmount(orderMoney.setScale(2, RoundingMode.HALF_EVEN).doubleValue());
            checkoutRequest.setMerchantTransactionId(merchantTransactionId);
            checkoutRequest.setRequestDescription("Travel completion payment");
            checkoutRequest.setCallbackUrl(callbackPath + "/base/wxPayOrderTaxi");
@@ -1358,28 +1363,30 @@
            resultUtil = TinggPayUtil.checkoutRequest(checkoutRequest);
            if(resultUtil.getCode()==200){
                paymentRecordService.saveData(1, null, null, orderId, 1, 2, orderMoney, null, 1);//添加预支付数据
                paymentRecordService.saveData(1, null, null, orderId, 1, 2,
                        orderMoney.setScale(2, RoundingMode.HALF_EVEN).doubleValue(), null, 1);//添加预支付数据
            }else{
                resultUtil = ResultUtil.error(language == 1 ? "支付失败" : language == 2 ? "Payment failure" : "Paiement échoué", "");
            }
        }
        if(payType == 3){//余额支付
            if(userInfo.getBalance() == null || userInfo.getBalance() < orderMoney){
            if(userInfo.getBalance() == null || new BigDecimal(userInfo.getBalance()).compareTo(orderMoney) < 0){
                return ResultUtil.error(language == 1 ? "账户余额不足" : language == 2 ? "Insufficient balance" : "Solde insuffisant", "");
            }
            userInfo.setBalance(new BigDecimal(userInfo.getBalance()).subtract(new BigDecimal(orderMoney)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
            userInfo.setBalance(new BigDecimal(userInfo.getBalance()).subtract(orderMoney).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
            SysIntegral query1 = sysIntegralMapper.query(orderPrivateCar.getCompanyId());
            userInfo.setIntegral(userInfo.getIntegral() + (orderMoney.intValue() * query1.getIntegral()));//积分
            //添加交易明细
            transactionDetailsService.saveData(uid, "完成订单", orderMoney, 2, 1, 1, 1, orderId);
            transactionDetailsService.saveData(uid, "完成订单", orderMoney.setScale(2, RoundingMode.HALF_EVEN).doubleValue(),
                    2, 1, 1, 1, orderId);
            userInfoService.updateById(userInfo);
            orderPrivateCar.setState(8);
            orderPrivateCar.setPayType(3);
            orderPrivateCar.setPayMoney(orderMoney);
            orderPrivateCar.setPayMoney(orderMoney.setScale(2, RoundingMode.HALF_EVEN).doubleValue());
            
            //处理优惠券和红包
            if(null != userCouponRecord){
@@ -1813,13 +1820,14 @@
            userInfo.setIntegral(userInfo.getIntegral() + (orderMoney.intValue() * query1.getIntegral()));//积分
            //添加交易明细
            transactionDetailsService.saveData(uid, "完成订单", orderMoney, 2, 1, 1, 1, orderId);
            transactionDetailsService.saveData(uid, "完成订单", orderMoney.setScale(2, RoundingMode.HALF_EVEN).doubleValue(),
                    2, 1, 1, 1, orderId);
            userInfoService.updateById(userInfo);
            orderPrivateCar.setState(8);
            orderPrivateCar.setPayType(4);
            orderPrivateCar.setDriverPay(2);
            orderPrivateCar.setPayMoney(orderMoney);
            orderPrivateCar.setPayMoney(orderMoney.setScale(2, RoundingMode.HALF_EVEN).doubleValue());
            Driver driver = driverService.selectById(orderPrivateCar.getDriverId());
@@ -1916,7 +1924,7 @@
                                    settlementRecord.setInsertTime(new Date());
                                    settlementRecordService.insert(settlementRecord);
                                }else{
                                    settlementRecord.setPayMoney(total.doubleValue());
                                    settlementRecord.setPayMoney(settlementRecord.getPayMoney() + total.doubleValue());
                                    settlementRecordService.updateById(settlementRecord);
                                }
                                for (SettlementDetail detail : settlementDetailList) {
@@ -3173,7 +3181,7 @@
                //读取文件(字符流)
                BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(file),"UTF-8"));
                //循环取出数据
                String str = null;
                String str;
                StringBuffer sb = new StringBuffer();
                while ((str = in.readLine()) != null) {
                    sb.append(str);