xuhy
6 天以前 b4835ff468ab4a51aa05c4fdc290a667f8802b71
UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
@@ -35,6 +35,7 @@
import org.springframework.util.CollectionUtils;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.util.StringUtils;
import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
@@ -169,10 +170,10 @@
    private IOpenCityService openCityService;
    @Autowired
    private IServerCarModelService serverCarModelService;
//    @Autowired
//    private ALiSendSms aLiSendSms;
    @Autowired
    private IAppOpenInfoService appOpenInfoService;
    @Resource
    private UserInfoMapper userInfoMapper;
    @Value("${filePath}")
    private String filePath;
@@ -341,7 +342,25 @@
        // 查询预估价格
        ResultUtil<List<ServerCarModelWarpper>> listResultUtil = serverCarModelService.queryServerCarModel(startLon + "," + startLat, endLon + "," + endLat, 1);
        List<ServerCarModelWarpper> data = listResultUtil.getData();
        data = data.stream().filter(e -> serverCarModelId.equals(e.getId())).sorted(Comparator.comparing(ServerCarModelWarpper::getAmount)).collect(Collectors.toList());
        System.out.println("预估价格++++++++++:"+data);
        System.out.println("服务车型id++++++++++:"+serverCarModelId);
        if(Objects.isNull(serverCarModelId)){
            // 查询司机
            Driver driver2 = driverService.selectById(driverId);
            //获取经营业务
            CarService query = new CarService();
            query.setCarId(driver2.getCarId());
            CarService service = carServiceMapper.selectOne(query);
            System.out.println("服务车型========:"+service);
            if(Objects.nonNull(service)){
                serverCarModelId = service.getServerCarModelId();
                System.out.println("服务车型id++++++++++:"+serverCarModelId);
            }
        }
        Integer finalServerCarModelId = serverCarModelId;
        System.out.println("服务车型id++++++++++:"+finalServerCarModelId);
        data = data.stream().filter(e -> finalServerCarModelId.equals(e.getId())).sorted(Comparator.comparing(ServerCarModelWarpper::getAmount)).collect(Collectors.toList());
        System.out.println("匹配出来的车型++++++++++:"+finalServerCarModelId);
        if(Objects.nonNull(openCity) && !CollectionUtils.isEmpty(data) && BigDecimal.valueOf(data.get(0).getAmount()).compareTo(openCity.getOrderMagnitude()) > 0){
            orderPrivateCar.setIsReassign(1);
            orderPrivateCar.setIsDelete(1);
@@ -363,7 +382,9 @@
            return ResultUtil.success(baseWarpper);
        }else {
            if(orderSource == 2){
                orderPrivateCar.setEstimatedPrice(data.get(0).getAmount());
                if(!CollectionUtils.isEmpty(data)){
                    orderPrivateCar.setEstimatedPrice(data.get(0).getAmount());
                }
            }else {
                orderPrivateCar.setEstimatedPrice(data.get(carIndex).getAmount());
            }
@@ -905,7 +926,10 @@
        if(null == orderPrivateCar){
            return ResultUtil.error("取消订单失败,订单信息有误");
        }
        if(orderPrivateCar.getState() > 5 && orderPrivateCar.getState() != 11){
        if(orderPrivateCar.getPayMethod() == 0 && (Objects.nonNull(orderPrivateCar.getPaymentAdvanceMoney()) && orderPrivateCar.getPaymentAdvanceMoney()>0) && orderPrivateCar.getState() > 5 && orderPrivateCar.getState() != 11){
            return ResultUtil.error("取消订单失败,当前状态无法取消");
        }
        if(orderPrivateCar.getPayMethod() == 1 && orderPrivateCar.getState() > 5 && orderPrivateCar.getState() != 11){
            return ResultUtil.error("取消订单失败,不合法的操作");
        }
        if(null == orderPrivateCar.getDriverId()){//没有接单的情况
@@ -927,6 +951,26 @@
                integer = orderCancelService.saveData(id, 1, "无司机接单", "无司机接单", null, null, 2, 1, uid);
                orderPrivateCar.setState(10);
                this.updateById(orderPrivateCar);
                if (orderPrivateCar.getPayMethod() == 0 && (Objects.nonNull(orderPrivateCar.getPaymentAdvanceMoney()) && orderPrivateCar.getPaymentAdvanceMoney()>0)) {
                    // 退款
                    if (orderPrivateCar.getPayType() == 1 && orderPrivateCar.getOrderMoney() != 0) {//微信退款
                        // 微信退款
                        payMoneyUtil.wxRefund(orderPrivateCar.getTransactionId(), orderPrivateCar.getOrderNum(), String.valueOf(orderPrivateCar.getPaymentAdvanceMoney()), String.valueOf(new BigDecimal(orderPrivateCar.getPaymentAdvanceMoney())), "/base/transferWXNotify");
//                        orderPrivateCar.setPayMoney(new BigDecimal(orderPrivateCar.getOrderMoney()).doubleValue());
                    }
                    if (orderPrivateCar.getPayType() == 2 && orderPrivateCar.getOrderMoney() != 0) {//支付宝退款
                        // 支付宝退款
                        payMoneyUtil.aliRefund(orderPrivateCar.getTransactionId(), String.valueOf(new BigDecimal(orderPrivateCar.getPaymentAdvanceMoney()).multiply(new BigDecimal(100))));
//                        orderPrivateCar.setPayMoney(new BigDecimal(orderPrivateCar.getOrderMoney()).doubleValue());
                    }
                    if (orderPrivateCar.getPayType() == 3 && orderPrivateCar.getOrderMoney() != 0) {//余额支付
                        BigDecimal refundMoney = new BigDecimal(orderPrivateCar.getPaymentAdvanceMoney());
                        // 余额退款
                        UserInfo userInfo = userInfoMapper.selectById(orderPrivateCar.getUserId());
                        userInfo.setBalance(new BigDecimal(userInfo.getBalance()).add(refundMoney).doubleValue());
                        userInfoMapper.updateById(userInfo);
                    }
                }
            }
        }else {
            CancleOrder query = cancleOrderService.query(orderPrivateCar.getOrderType(), 1, orderPrivateCar.getCompanyId());
@@ -940,6 +984,26 @@
                    orderPrivateCar.setState(10);
                    this.updateById(orderPrivateCar);
                    if (orderPrivateCar.getPayMethod() == 0 && (Objects.nonNull(orderPrivateCar.getPaymentAdvanceMoney()) && orderPrivateCar.getPaymentAdvanceMoney()>0)) {
                        // 退款
                        if (orderPrivateCar.getPayType() == 1 && orderPrivateCar.getOrderMoney() != 0) {//微信退款
                            // 微信退款
                            payMoneyUtil.wxRefund(orderPrivateCar.getTransactionId(), orderPrivateCar.getOrderNum(), String.valueOf(orderPrivateCar.getPaymentAdvanceMoney()), String.valueOf(new BigDecimal(orderPrivateCar.getPaymentAdvanceMoney())), "/base/transferWXNotify");
//                            orderPrivateCar.setPayMoney(new BigDecimal(orderPrivateCar.getOrderMoney()).doubleValue());
                        }
                        if (orderPrivateCar.getPayType() == 2 && orderPrivateCar.getOrderMoney() != 0) {//支付宝退款
                            // 支付宝退款
                            payMoneyUtil.aliRefund(orderPrivateCar.getTransactionId(), String.valueOf(new BigDecimal(orderPrivateCar.getPaymentAdvanceMoney()).multiply(new BigDecimal(100))));
//                            orderPrivateCar.setPayMoney(new BigDecimal(orderPrivateCar.getOrderMoney()).doubleValue());
                        }
                        if (orderPrivateCar.getPayType() == 3 && orderPrivateCar.getOrderMoney() != 0) {//余额支付
                            BigDecimal refundMoney = new BigDecimal(orderPrivateCar.getPaymentAdvanceMoney());
                            // 余额退款
                            UserInfo userInfo = userInfoMapper.selectById(orderPrivateCar.getUserId());
                            userInfo.setBalance(new BigDecimal(userInfo.getBalance()).add(refundMoney).doubleValue());
                            userInfoMapper.updateById(userInfo);
                        }
                    }
                }
                this.deleteTask(id);//删除定时任务
@@ -1122,13 +1186,13 @@
                    Company company = companyService.selectById(orderPrivateCar.getCompanyId());
                    Double taxi = company.getSpeMoney();
                    BigDecimal c =new BigDecimal(query.getMoney());//司机收入
                    incomeService.saveData(2, orderPrivateCar.getDriverId(), 3, orderPrivateCar.getId(), 1, c.doubleValue());
                    Driver driver = driverService.selectById(orderPrivateCar.getDriverId());
                    driver.setBusinessMoney(new BigDecimal(null != driver.getBusinessMoney() ? driver.getBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                    driver.setLaveBusinessMoney(new BigDecimal(null != driver.getLaveBusinessMoney() ? driver.getLaveBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                    driver.setBalance(new BigDecimal(null != driver.getBalance() ? driver.getBalance() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                    driverService.updateById(driver);
                    incomeService.saveDriverData(2, orderPrivateCar.getDriverId(), 3, orderPrivateCar.getId(), 1, c.doubleValue(),driver.getLaveBusinessMoney());
                    this.deleteTask(id);//删除定时任务
//                new Thread(new Runnable() {
@@ -1188,11 +1252,10 @@
                            for(Driver driver : list){//开始进行推送
                                // 判断该司机是否有30分钟内预约单
                                long count = orderPrivateCars.stream().filter(orderPrivateCar1 -> driver.getId().equals(orderPrivateCar1.getDriverId())
                                        && DateUtil.dateToLocalDateTime(orderPrivateCar1.getTravelTime()).minusMinutes(query.getLimitationTime()).isBefore(LocalDateTime.now())
                                        && DateUtil.dateToLocalDateTime(orderPrivateCar1.getTravelTime()).isAfter(LocalDateTime.now())).count();
                                if(orderPrivateCar.getOrderType() == 2 && orderPrivateCarDriverIds.contains(driver.getId())){
                                    continue;
                                }
                                        && DateUtil.dateToLocalDateTime(orderPrivateCar1.getTravelTime()).minusMinutes(query.getLimitationTime()).isBefore(LocalDateTime.now())).count();
//                                if(orderPrivateCar.getOrderType() == 2 && orderPrivateCarDriverIds.contains(driver.getId())){
//                                    continue;
//                                }
                                if(count > 0){
                                    continue;
                                }
@@ -1221,10 +1284,26 @@
                            // 第三轮取消订单
                            orderPrivateCar.setState(10);
                            orderPrivateCarMapper.updateById(orderPrivateCar);
                            pushUtil.pushOrderState(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), 0);
                            // 添加站内信
                            systemNoticeService.addSystemNotice(1, "当前区域未能及时为您匹配到合适车辆。为避免耽误您的行程,系统已自动取消订单,建议您稍后重新尝试。", orderPrivateCar.getUserId(), 1);
                            // TODO 0731 添加短信发送
                            // 查询是否开启短信通知
                            AppOpenInfo appOpenInfo = appOpenInfoService.selectOne(new EntityWrapper<AppOpenInfo>()
                                    .eq("type", 3));
                            if(Objects.nonNull(appOpenInfo) && appOpenInfo.getIsOpen() == 1){
                                // 添加短信发送
                                //发送记录集合
                                JSONArray records = new JSONArray();
                                JSONObject record = new JSONObject();
                                UserInfo userInfo = userInfoService.selectById(orderPrivateCar.getUserId());
                                //手机号
                                record.put("mobile", userInfo.getPhone());
                                //替换变量
                                JSONObject param = new JSONObject();
                                record.put("tpContent", param);
                                records.add(record);
                                SMSUtil.sendSmsTp(380702L, records);
                            }
                        }
                    }
                } catch (Exception e) {
@@ -1556,7 +1635,6 @@
                        if(Objects.nonNull(query1)){
                            userInfo.setIntegral(userInfo.getIntegral() + (orderMoney.intValue() * query1.getIntegral()));//积分
                        }
                        userInfoService.updateById(userInfo);
                        //添加已收入明细
                        Company company = companyService.selectById(orderPrivateCar.getCompanyId());
                        Double speMoney = company.getSpeMoney();
@@ -1575,12 +1653,12 @@
                            c = new BigDecimal(orderPrivateCar.getOrderMoney()).subtract(d).setScale(2, BigDecimal.ROUND_HALF_EVEN);
                        }
                        incomeService.saveData(1, orderPrivateCar.getCompanyId(), 2, orderPrivateCar.getId(), 1, d.doubleValue());
                        incomeService.saveData(2, orderPrivateCar.getDriverId(), 2, orderPrivateCar.getId(), 1, c.doubleValue());
                        Driver driver = driverService.selectById(orderPrivateCar.getDriverId());
                        driver.setBusinessMoney(new BigDecimal(null != driver.getBusinessMoney() ? driver.getBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                        driver.setLaveBusinessMoney(new BigDecimal(null != driver.getLaveBusinessMoney() ? driver.getLaveBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                        driver.setBalance(new BigDecimal(null != driver.getBalance() ? driver.getBalance() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                        driverService.updateById(driver);
                        incomeService.saveDriverData(2, orderPrivateCar.getDriverId(), 2, orderPrivateCar.getId(), 1, c.doubleValue(), driver.getLaveBusinessMoney());
                        orderPrivateCar.setState(8);
                    }else {
                        if(orderPrivateCar.getOrderSource() == 2){
@@ -1592,13 +1670,14 @@
                        orderPrivateCar.setOrderMoney(orderMoney);
                        orderPrivateCar.setPayMoney(orderMoney);
                    }
                    new Thread(new Runnable() {
                        @Override
                        public void run() {
                            pushUtil.pushOrderState(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), 0);
                            pushUtil.pushOrderState(2, orderPrivateCar.getDriverId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), 0);
                        }
                    }).start();
//                    new Thread(new Runnable() {
//                        @Override
//                        public void run() {
//                            pushUtil.pushOrderState(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), 0);
//                            pushUtil.pushOrderState(2, orderPrivateCar.getDriverId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), 0);
//                        }
//                    }).start();
                    userInfoService.updateById(userInfo);
                    systemNoticeService.addSystemNotice(1, "您已使用余额成功完成出行订单支付,谢谢使用!", uid, 1);
                    if(orderPrivateCar.getState() == 1){
                        this.pushOrder(orderPrivateCar);
@@ -1606,6 +1685,7 @@
                }else {
                    // 后付
                    orderPrivateCar.setPayMoney(orderMoney);
                    orderPrivateCar.setState(8);
                    if(orderPrivateCar.getIsplatPay()==1){
                        //添加已收入明细
                        Company company = companyService.selectById(orderPrivateCar.getCompanyId());
@@ -1625,12 +1705,12 @@
                            c = new BigDecimal(orderPrivateCar.getOrderMoney()).subtract(d).setScale(2, BigDecimal.ROUND_HALF_EVEN);
                        }
                        incomeService.saveData(1, orderPrivateCar.getCompanyId(), 2, orderPrivateCar.getId(), 1, d.doubleValue());
                        incomeService.saveData(2, orderPrivateCar.getDriverId(), 2, orderPrivateCar.getId(), 1, c.doubleValue());
                        Driver driver = driverService.selectById(orderPrivateCar.getDriverId());
                        driver.setBusinessMoney(new BigDecimal(null != driver.getBusinessMoney() ? driver.getBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                        driver.setLaveBusinessMoney(new BigDecimal(null != driver.getLaveBusinessMoney() ? driver.getLaveBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                        driver.setBalance(new BigDecimal(null != driver.getBalance() ? driver.getBalance() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                        driverService.updateById(driver);
                        incomeService.saveDriverData(2, orderPrivateCar.getDriverId(), 2, orderPrivateCar.getId(), 1, c.doubleValue(), driver.getLaveBusinessMoney());
                    }
@@ -1813,12 +1893,12 @@
            Company company = companyService.selectById(orderPrivateCar.getCompanyId());
            Double taxi = company.getSpeMoney();
            BigDecimal c =new BigDecimal(query.getAmount());//司机收入
            incomeService.saveData(2, orderPrivateCar.getDriverId(), 3, orderPrivateCar.getId(), 1, c.doubleValue());
            Driver driver = driverService.selectById(orderPrivateCar.getDriverId());
            driver.setBusinessMoney(new BigDecimal(null != driver.getBusinessMoney() ? driver.getBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
            driver.setLaveBusinessMoney(new BigDecimal(null != driver.getLaveBusinessMoney() ? driver.getLaveBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
            driver.setBalance(new BigDecimal(null != driver.getBalance() ? driver.getBalance() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
            driverService.updateById(driver);
            incomeService.saveDriverData(2, orderPrivateCar.getDriverId(), 3, orderPrivateCar.getId(), 1, c.doubleValue(), driver.getLaveBusinessMoney());
            this.deleteTask(orderPrivateCar.getId());//删除定时任务
            // TODO: 2020/5/24 这里需要给司机和用户推送订单状态
@@ -1865,13 +1945,15 @@
                transactionDetailsService.saveData(orderPrivateCar.getUserId(), "完成订单", query.getAmount(), 2, 1, 1, 1, query.getOrderId());
//                orderPrivateCar.setState(8);
                orderPrivateCar.setPayType(type);
                orderPrivateCar.setTransactionId(order_id);
                if(!StringUtils.hasLength(orderPrivateCar.getTransactionId())){
                    orderPrivateCar.setTransactionId(order_id);
                }
                this.updateById(orderPrivateCar);
        
                UserInfo userInfo = userInfoService.selectById(orderPrivateCar.getUserId());
                SysIntegral query1 = sysIntegralMapper.query(orderPrivateCar.getCompanyId());
                userInfo.setIntegral(userInfo.getIntegral() + (query.getAmount().intValue() * query1.getIntegral()));//积分
                userInfoService.updateById(userInfo);
//                UserInfo userInfo = userInfoService.selectById(orderPrivateCar.getUserId());
//                SysIntegral query1 = sysIntegralMapper.query(orderPrivateCar.getCompanyId());
//                userInfo.setIntegral(userInfo.getIntegral() + (query.getAmount().intValue() * query1.getIntegral()));//积分
//                userInfoService.updateById(userInfo);
        
                //处理优惠券和红包
                if(null != orderPrivateCar.getCouponId()){
@@ -1916,12 +1998,12 @@
                            c = new BigDecimal(orderPrivateCar.getOrderMoney()).subtract(d).setScale(2, BigDecimal.ROUND_HALF_EVEN);
                        }
                        incomeService.saveData(1, orderPrivateCar.getCompanyId(), 2, orderPrivateCar.getId(), 1, d.doubleValue());
                        incomeService.saveData(2, orderPrivateCar.getDriverId(), 2, orderPrivateCar.getId(), 1, c.doubleValue());
                        Driver driver = driverService.selectById(orderPrivateCar.getDriverId());
                        driver.setBusinessMoney(new BigDecimal(null != driver.getBusinessMoney() ? driver.getBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                        driver.setLaveBusinessMoney(new BigDecimal(null != driver.getLaveBusinessMoney() ? driver.getLaveBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                        driver.setBalance(new BigDecimal(null != driver.getBalance() ? driver.getBalance() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                        driverService.updateById(driver);
                        incomeService.saveDriverData(2, orderPrivateCar.getDriverId(), 2, orderPrivateCar.getId(), 1, c.doubleValue(), driver.getLaveBusinessMoney());
                    }else {
                        if(orderPrivateCar.getOrderSource() == 2){
                            orderPrivateCar.setState(2);
@@ -1954,12 +2036,12 @@
                            c = new BigDecimal(orderPrivateCar.getOrderMoney()).subtract(d).setScale(2, BigDecimal.ROUND_HALF_EVEN);
                        }
                        incomeService.saveData(1, orderPrivateCar.getCompanyId(), 2, orderPrivateCar.getId(), 1, d.doubleValue());
                        incomeService.saveData(2, orderPrivateCar.getDriverId(), 2, orderPrivateCar.getId(), 1, c.doubleValue());
                        Driver driver = driverService.selectById(orderPrivateCar.getDriverId());
                        driver.setBusinessMoney(new BigDecimal(null != driver.getBusinessMoney() ? driver.getBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                        driver.setLaveBusinessMoney(new BigDecimal(null != driver.getLaveBusinessMoney() ? driver.getLaveBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                        driver.setBalance(new BigDecimal(null != driver.getBalance() ? driver.getBalance() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                        driverService.updateById(driver);
                        incomeService.saveDriverData(2, orderPrivateCar.getDriverId(), 2, orderPrivateCar.getId(), 1, c.doubleValue(), driver.getLaveBusinessMoney());
                    }
                }
                // TODO: 2020/5/24 这里需要给司机和用户推送订单状态