zhibing.pu
2024-08-01 656ac293601d6da08d25e892a79604fe3edcd086
DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java
@@ -2,6 +2,7 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.stylefeng.guns.core.common.constant.state.Order;
import com.stylefeng.guns.core.util.DateUtil;
@@ -15,10 +16,7 @@
import com.stylefeng.guns.modular.system.dao.PhoneMapper;
import com.stylefeng.guns.modular.system.dao.RegionMapper;
import com.stylefeng.guns.modular.system.dao.SysReformistMapper;
import com.stylefeng.guns.modular.system.model.BankCard;
import com.stylefeng.guns.modular.system.model.Driver;
import com.stylefeng.guns.modular.system.model.OrderPosition;
import com.stylefeng.guns.modular.system.model.Region;
import com.stylefeng.guns.modular.system.model.*;
import com.stylefeng.guns.modular.system.service.*;
import com.stylefeng.guns.modular.system.util.*;
import com.stylefeng.guns.modular.system.util.GoogleMap.DistancematrixVo;
@@ -93,6 +91,18 @@
    @Autowired
    private IBankCardService bankCardService;
    @Autowired
    private ICancleOrderService cancleOrderService;
    @Autowired
    private ISettlementDetailService settlementDetailService;
    @Autowired
    private ISettlementRecordService settlementRecordService;
    @Resource
    private IBalanceUsageRecordService balanceUsageRecordService;
@@ -123,7 +133,7 @@
//        List<Map<String, Object>> list2 = orderCrossCityService.queryOrderList(state, uid);
//        datas.addAll(list2);
        //小件物流
        List<Map<String, Object>> list3 = orderLogisticsService.queryOrderList(uid, language);
        List<Map<String, Object>> list3 = orderLogisticsService.queryOrderList(state, uid, language);
        datas.addAll(list3);
        //分页
@@ -163,7 +173,7 @@
            List<Map<String, Object>> list2 = orderCrossCityService.queryOrderList(language, state, uid);
            datas.addAll(list2);
        }else{//小件物流
            List<Map<String, Object>> list3 = orderLogisticsService.queryOrderList(uid, language);
            List<Map<String, Object>> list3 = orderLogisticsService.queryOrderList(state, uid, language);
            datas.addAll(list3);
        }
@@ -199,12 +209,30 @@
//        datas.addAll(list);
        //专车
        List<Map<String, Object>> list1 = orderPrivateCarService.queryMyAllOrder(state, uid, language);
        for (Map<String, Object> map : list1) {
            Integer id = Integer.valueOf(map.get("id").toString());
            map.put("settleAccounts", 0);
            SettlementDetail settlementDetail = settlementDetailService.selectOne(new EntityWrapper<SettlementDetail>().eq("orderId", id).eq("orderType", 1));
            if(null != settlementDetail){
                SettlementRecord settlementRecord = settlementRecordService.selectById(settlementDetail.getSettlementRecordId());
                map.put("settleAccounts", null == settlementRecord || settlementRecord.getPaymentStatus() == 1 ? 0 : 1);
            }
        }
        datas.addAll(list1);
        //跨城
//        List<Map<String, Object>> list2 = orderCrossCityService.queryMyAllOrder(state, uid);
//        datas.addAll(list2);
        //小件物流
        List<Map<String, Object>> list3 = orderLogisticsService.queryMyAllOrder(state, uid, language);
        for (Map<String, Object> map : list3) {
            Integer id = Integer.valueOf(map.get("id").toString());
            map.put("settleAccounts", 0);
            SettlementDetail settlementDetail = settlementDetailService.selectOne(new EntityWrapper<SettlementDetail>().eq("orderId", id).eq("orderType", 4));
            if(null != settlementDetail){
                SettlementRecord settlementRecord = settlementRecordService.selectById(settlementDetail.getSettlementRecordId());
                map.put("settleAccounts", null == settlementRecord || settlementRecord.getPaymentStatus() == 1 ? 0 : 1);
            }
        }
        datas.addAll(list3);
        List<OrderListWarpper> orderListWarpper = OrderListWarpper.getOrderListWarpper(datas);
@@ -539,7 +567,7 @@
     * @throws Exception
     */
    @Override
    public ResultUtil process(Integer orderId, Integer orderType, Integer state, Integer uid, Double lon, Double lat,String phone, Integer language) throws Exception {
    public ResultUtil process(Integer orderId, Integer orderType, Integer state, Integer uid, Double lon, Double lat,String phone, String pickUpCode, Integer language) throws Exception {
        ReverseGeocodeVo reverseGeocode = GoogleMapUtil.getReverseGeocode(lat, lon);
        if(null == reverseGeocode){
            return ResultUtil.error(language == 1 ? "无效的经纬度" : language == 2 ? "Invalid longitude and latitude" : "Longitude et latitude non valides");
@@ -553,7 +581,7 @@
            case 3://城际
//                return orderCrossCityService.process(orderId, state, lon, lat, address);
            case 4://同城小件
                return orderLogisticsService.process(orderId, state, lon, lat, address, language);
                return orderLogisticsService.process(orderId, state, lon, lat, address, pickUpCode, language);
            case 5://跨城小件
//                return orderLogisticsService.process(orderId, state, lon, lat, address);
            case 6:
@@ -575,16 +603,16 @@
     * @throws Exception
     */
    @Override
    public ResultUtil confirmFees(Integer orderId, Integer orderType, Integer type, Double travelFee, Double parkingFee, Double crossingFee) throws Exception {
    public ResultUtil confirmFees(Integer language, Integer orderId, Integer orderType, Integer type, Double travelFee, Double parkingFee, Double crossingFee) throws Exception {
        switch (orderType){
            case 1://专车
                return orderPrivateCarService.confirmFees(orderId, type, parkingFee, crossingFee);
                return orderPrivateCarService.confirmFees(language, orderId, type, parkingFee, crossingFee);
            case 2://出租
                return orderTaxiService.confirmFees(orderId, type, travelFee, parkingFee, crossingFee);
            case 3://城际(没有此流程)
                break;
            case 4://
                break;
                return orderLogisticsService.confirmFees(language, orderId, type, parkingFee, crossingFee);
            case 5:
                break;
            case 6:
@@ -675,7 +703,7 @@
            case 3://城际(没有此流程)
                return null;
            case 4://
                break;
                return orderLogisticsService.queryOrderInfo(language, orderId);
            case 5:
                break;
            case 6:
@@ -700,7 +728,7 @@
            case 3://城际
                return orderCrossCityService.calculateMileage(orderPosition);
            case 4://
                break;
                return orderLogisticsService.calculateMileage(orderPosition.getOrderId(), orderPosition.getLon(), orderPosition.getLat());
            case 5:
                break;
            case 6:
@@ -721,8 +749,8 @@
    @Override
    public Integer queryOrderNum(Integer driverId, Date start, Date end) throws Exception {
        //出租车
        Integer[] state = new Integer[]{6, 7, 8, 9};
        int i = orderPrivateCarService.selectCount(new EntityWrapper<OrderPrivateCar>().eq("driverId", driverId).between("insertTime", start, end).in("", state));
        int i = orderPrivateCarService.selectCount(new EntityWrapper<OrderPrivateCar>().eq("driverId", driverId)
                .between("insertTime", start, end).in("state", Arrays.asList(6, 7, 8, 9)));
        return i;
    }
@@ -980,6 +1008,26 @@
                    redisUtil.setStrValue("VEHICLE", jsonArray.toJSONString());
                }
                break;
            case 4:
                OrderLogistics orderLogistics = orderLogisticsService.selectById(orderId);
                if(orderLogistics.getState() == 8 || orderLogistics.getState() == 9){
                    return ResultUtil.error(language == 1 ? "订单已完成支付,不允许重复支付" : language == 2 ? "The order has been paid, recurring payments is not allowed." : "La commande a été payée, les paiements récurrents ne sont pas autorisés.");
                }
                if(orderLogistics.getState() != 7){
                    return ResultUtil.error(language == 1 ? "订单不在待支付,无法完成订单" : language == 2 ? "The order is no longer with Pending Payment, unable to complete the order." : "La commande n’est plus en attente de paiement, il est impossible de terminer la commande.");
                }
                orderLogistics.setPayManner(2);//其他方式支付
                orderLogistics.setRedPacketMoney(0D);
                orderLogistics.setCouponMoney(0D);
                orderLogistics.setDiscount(0D);
                orderLogistics.setDiscountMoney(0D);
                orderLogistics.setPayMoney(orderLogistics.getOrderMoney());
                orderLogistics.setState(8);
                orderLogisticsService.updateById(orderLogistics);
                userId = orderLogistics.getUserId();
                driverId = orderLogistics.getDriverId();
                state = orderLogistics.getState();
                break;
        }
@@ -989,8 +1037,8 @@
        new Thread(new Runnable() {
            @Override
            public void run() {
                pushUtil.pushOrderState(1, finalUserId, orderId, orderType, finalState);
                pushUtil.pushOrderState(2, finalDriverId, orderId, orderType, finalState);
                pushUtil.pushOrderState(1, finalUserId, orderId, orderType, finalState, 0, "");
                pushUtil.pushOrderState(2, finalDriverId, orderId, orderType, finalState, 0, "");
            }
        }).start();
        return ResultUtil.success();
@@ -1011,6 +1059,8 @@
                return orderPrivateCarService.queryMoneyInfo(orderId);
            case 2:
                break;
            case 4:
                return orderLogisticsService.queryMoneyInfo(orderId);
        }
        return null;
    }
@@ -1027,13 +1077,14 @@
     */
    @Override
    public void taskSmsSend() throws Exception {
        Integer language = 2;
        //获取未支付订单
        Date day = new Date();
        List<OrderPrivateCar> orderList = orderPrivateCarService.getSmsOrderList();
        for(OrderPrivateCar order : orderList){
            if(order.getSmsTime()==null ){
                if(order.getGetoffTime().getTime()+24*60*60*1000L<day.getTime()){
                if(null != order.getGetoffTime() && order.getGetoffTime().getTime()+24*60*60*1000L<day.getTime()){
                    order.setSmsNumber(order.getSmsNumber()+1);
                    order.setSmsTime(day);
                    //发送短信
@@ -1041,7 +1092,7 @@
                        String sData = aLiSendSms.sendSms1(order.getPassengersPhone(), "SMS_215342869", "{\"time\":\"" + DateUtil.format(order.getGetoffTime(),"yyyy-MM-dd HH:mm:ss") + "\",\"money\":\"" + order.getOrderMoney() + "\"}");
                    }
                    //添加消息记录
                    systemNoticeService.addSystemNotice(1, "有一笔订单未付款,请前往支付!", order.getUserId());
                    systemNoticeService.addSystemNotice(1, language == 1 ? "有一笔订单未付款,请前往支付!" : language == 2 ? "There is an order pending payment, please pay." : "Il y a une commande en attente de paiement, veuillez payer.", order.getUserId());
                }
            }else{
                if(order.getSmsTime().getTime()+24*60*60*1000L<day.getTime()){
@@ -1053,7 +1104,7 @@
                    }
                    //添加消息记录
                    systemNoticeService.addSystemNotice(1, "有一笔订单未付款,请前往支付!", order.getUserId());
                    systemNoticeService.addSystemNotice(1, language == 1 ? "有一笔订单未付款,请前往支付!" : language == 2 ? "There is an order pending payment, please pay." : "Il y a une commande en attente de paiement, veuillez payer.", order.getUserId());
                }
            }
        }
@@ -1152,14 +1203,18 @@
            }
            if(payType == 3){//余额支付
                driver.setBalance(driver.getBalance() - money);
                if(driver.getLaveBusinessMoney().compareTo(money) < 0){
                    double b = money - driver.getLaveBusinessMoney();
                Double laveBusinessMoney = driver.getLaveBusinessMoney();
                if(laveBusinessMoney.compareTo(money) < 0){
                    double b = money - laveBusinessMoney;
                    driver.setLaveBusinessMoney(0D);
                    driver.setLaveActivityMoney(driver.getLaveActivityMoney() - b);
                    driverService.updateById(driver);
                    balanceUsageRecordService.saveBalanceUsageRecord(driver.getId(), 1, b, orderType == 1 ? 1 : 2);
                    balanceUsageRecordService.saveBalanceUsageRecord(driver.getId(), 2, laveBusinessMoney, orderType == 1 ? 1 : 2);
                }else{
                    driver.setLaveBusinessMoney(driver.getLaveBusinessMoney() - money);
                    driverService.updateById(driver);
                    balanceUsageRecordService.saveBalanceUsageRecord(driver.getId(), 2, money, orderType == 1 ? 1 : 2);
                }
                if(orderType == 1){//专车