Pu Zhibing
9 小时以前 55132b44cd49f2a312a8fb2523ffda35a7485fd7
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java
@@ -6,6 +6,7 @@
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.supersavedriving.driver.modular.system.dao.OrderMapper;
import com.supersavedriving.driver.modular.system.dao.TCompanyMapper;
import com.supersavedriving.driver.modular.system.model.*;
import com.supersavedriving.driver.modular.system.service.*;
import com.supersavedriving.driver.modular.system.util.*;
@@ -13,6 +14,14 @@
import com.supersavedriving.driver.modular.system.util.MallBook.model.*;
import com.supersavedriving.driver.modular.system.util.MallBook.util.TrhRequest;
import com.supersavedriving.driver.modular.system.util.mongodb.model.Location;
import com.supersavedriving.driver.modular.system.util.qianyuntong.EmployeeUtil;
import com.supersavedriving.driver.modular.system.util.qianyuntong.OrderUtil;
import com.supersavedriving.driver.modular.system.util.qianyuntong.model.AddAccountInfoRequest;
import com.supersavedriving.driver.modular.system.util.qianyuntong.model.CreateTravelItineraryRequest;
import com.supersavedriving.driver.modular.system.util.qianyuntong.model.ModifyTravelItineraryRequest;
import com.supersavedriving.driver.modular.system.util.zhenglian.ZhengLianUtil;
import com.supersavedriving.driver.modular.system.util.zhenglian.model.TradeTerminalInfo;
import com.supersavedriving.driver.modular.system.util.zhenglian.model.ZLUserInfo;
import com.supersavedriving.driver.modular.system.warpper.*;
import com.supersavedriving.driver.core.util.ToolUtil;
import com.supersavedriving.driver.modular.system.util.GaoDe.model.District;
@@ -37,6 +46,8 @@
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
@@ -129,6 +140,9 @@
    @Value("${callbackPath}")
    private String callbackPath;//支付回调网关地址
    @Autowired
    private TCompanyMapper companyMapper;
@@ -246,9 +260,23 @@
            order.setState(null == order.getDriverId() ? 101 : 102);
        }
        order.setStatus(1);
        this.insert(order);
        driverService.updateById(driver);
        if(null != appUser && null != order.getDriverId()){
            TCompany company = companyMapper.selectById(driver.getBranchOfficeId());
            //调三方订单中心创建行程单
            CreateTravelItineraryRequest request = new CreateTravelItineraryRequest();
            request.setOrderNo("DJ" + order.getId());
            request.setCustomerId(appUser.getOnconUUID());
            request.setDriverId(driver.getEmpId().toString());
            request.setSupplierShopId(company.getEnterCode());
            request.setServiceType(5);
            String travelItinerary = OrderUtil.createTravelItinerary(request);
            order.setTravelId(travelItinerary);
            this.updateById(order);
        }
        //推送状态
        if(null != order.getDriverId()){
            //推动订单数据
@@ -751,6 +779,43 @@
     */
    @Override
    public List<HallOrderList> queryOrderHall(Integer uid, Integer pageNum, Integer pageSize) throws Exception {
        Driver driver = driverService.selectById(uid);
        //获取证联数据
        if(null == driver.getCustId() || 0 == driver.getAccOpenFlag()){
            TradeTerminalInfo tradeTerminalInfo = new TradeTerminalInfo();
            tradeTerminalInfo.setTerminal("1");
            InetAddress inetAddress = InetAddress.getLocalHost();
            String ip = inetAddress.getHostAddress();
            tradeTerminalInfo.setIp(ip);
            NetworkInterface networkInterface = NetworkInterface.getByInetAddress(inetAddress);
            byte[] mac = networkInterface.getHardwareAddress();
            StringBuilder macAddress = new StringBuilder();
            for (int i = 0; i < mac.length; i++) {
                macAddress.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : ""));
            }
            tradeTerminalInfo.setMac(macAddress.toString());
            ZLUserInfo userInfo = ZhengLianUtil.getUserInfo(driver.getEmpId().toString(), tradeTerminalInfo);
            if(null != userInfo){
                driver.setCustId(userInfo.getCustId());
                driver.setAccOpenFlag(userInfo.getAccOpenFlag());
                driverService.updateById(driver);
            }
        }
        //同步到中台
        if(null != driver.getAccOpenFlag() && 1 == driver.getAccOpenFlag() && 0 == driver.getIsSynchronous()){
            AddAccountInfoRequest request = new AddAccountInfoRequest();
            request.setCustId(driver.getCustId());
            request.setAccountNo(driver.getEmpId().toString());
            request.setAccountName(driver.getName());
            request.setMobile(driver.getPhone());
            Integer status = EmployeeUtil.addAccountInfo(request);
            if(0 == status){
                driver.setIsSynchronous(1);
                driverService.updateById(driver);
            }
        }
        pageNum = (pageNum - 1) * pageSize;
        String value = redisUtil.getValue("daijia:DRIVER" + uid);
        List<HallOrderList> hallOrderLists = this.baseMapper.queryOrderHall(pageNum, pageSize);
@@ -894,6 +959,7 @@
            order.setState(102);
            order.setOrderTakingTime(new Date());
            this.updateById(order);
            redisUtil.unlock(orderId.toString());
            if(null != order.getUserId()){
@@ -901,6 +967,29 @@
                appUser.setCancelCount(0);
                appUser.setIsException(1);
                appUserService.updateById(appUser);
                if(null == order.getTravelId()){
                    TCompany company = companyMapper.selectById(driver.getBranchOfficeId());
                    //调三方订单中心创建行程单
                    CreateTravelItineraryRequest request = new CreateTravelItineraryRequest();
                    request.setOrderNo("DJ" + order.getId());
                    request.setCustomerId(appUser.getOnconUUID());
                    request.setDriverId(driver.getEmpId().toString());
                    request.setSupplierShopId(company.getEnterCode());
                    request.setServiceType(5);
                    String travelItinerary = OrderUtil.createTravelItinerary(request);
                    order.setTravelId(travelItinerary);
                    this.updateById(order);
                }else{
                    //中台修改订单状态
                    ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest();
                    request.setOrderId(order.getTravelId());
                    request.setStatus(getState(order.getState()));
                    TCompany company = companyMapper.selectById(driver.getBranchOfficeId());
                    request.setDriverId(driver.getEmpId().toString());
                    request.setSupplierShopId(company.getEnterCode());
                    OrderUtil.modifyTravelItinerary(request);
                }
            }
            driver.setServerStatus(2);
@@ -1133,6 +1222,18 @@
        }
        this.updateAllColumnById(order);
        if(null != order.getTravelId()){
            Driver driver = driverService.selectById(order.getDriverId());
            //中台修改订单状态
            ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest();
            request.setOrderId(order.getTravelId());
            request.setStatus(getState(order.getState()));
            TCompany company = companyMapper.selectById(driver.getBranchOfficeId());
            request.setDriverId(driver.getEmpId().toString());
            request.setSupplierShopId(company.getEnterCode());
            OrderUtil.modifyTravelItinerary(request);
        }
        //推送订单状态
        pushUtil.pushOrderStatus(order.getDriverId(), 2, order.getId(), order.getState());
        if(null != order.getUserId()){
@@ -1335,6 +1436,17 @@
        }
        this.updateById(order);
        if(null != order.getTravelId()){
            //中台修改订单状态
            ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest();
            request.setOrderId(order.getTravelId());
            request.setStatus(getState(order.getState()));
            TCompany company = companyMapper.selectById(driver.getBranchOfficeId());
            request.setDriverId(driver.getEmpId().toString());
            request.setSupplierShopId(company.getEnterCode());
            OrderUtil.modifyTravelItinerary(request);
        }
        orderTransfer.setOrderId(orderId);
        orderTransfer.setOldDriverId(order.getDriverId());
@@ -1361,6 +1473,35 @@
        }
        return ResultUtil.success();
    }
    private Integer getState(Integer state){
        switch (state){
            case 101://待接单
                return 1;
            case 102://已接单
                return 2;
            case 103://前往预约点
                return 3;
            case 104://到达预约点
                return 4;
            case 105://开始服务
                return 5;
            case 106://到达目的地
                return 6;
            case 107://待支付
                return 7;
            case 108://待评价
                return 8;
            case 109://已完成
                return 9;
            case 201://转单中
                return 11;
            case 301://已取消
                return 10;
        }
        return null;
    }
@@ -1431,6 +1572,18 @@
        order.setState(order.getOldState());
        order.setOldState(null);
        this.updateAllColumnById(order);
        Driver driver = driverService.selectById(order.getDriverId());
        if(null != order.getTravelId()){
            //中台修改订单状态
            ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest();
            request.setOrderId(order.getTravelId());
            request.setStatus(getState(order.getState()));
            TCompany company = companyMapper.selectById(driver.getBranchOfficeId());
            request.setDriverId(driver.getEmpId().toString());
            request.setSupplierShopId(company.getEnterCode());
            OrderUtil.modifyTravelItinerary(request);
        }
        OrderTransfer orderTransfer = orderTransferService.selectOne(new EntityWrapper<OrderTransfer>().eq("orderId", orderId)
                .eq("status", 1).isNull("successTime").orderBy("createTime desc limit 0, 1"));
@@ -1465,6 +1618,20 @@
        order.setState(301);
        this.updateById(order);
        Driver driver = driverService.selectById(order.getDriverId());
        if(null != order.getTravelId()){
            //中台修改订单状态
            ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest();
            request.setOrderId(order.getTravelId());
            request.setStatus(getState(order.getState()));
            TCompany company = companyMapper.selectById(driver.getBranchOfficeId());
            request.setDriverId(driver.getEmpId().toString());
            request.setSupplierShopId(company.getEnterCode());
            OrderUtil.modifyTravelItinerary(request);
        }
        redisUtil.delSetValue("orderService", orderId.toString());
        CancelOrder cancelOrder = new CancelOrder();
@@ -1475,7 +1642,6 @@
        cancelOrder.setStatus(1);
        cancelOrder.setCreateTime(new Date());
        cancelOrderService.insert(cancelOrder);
        Driver driver = driverService.selectById(order.getDriverId());
        if(null != driver){
            driver.setServerStatus(1);
            driverService.updateById(driver);
@@ -1583,13 +1749,14 @@
                order.setPayType(3);
            }
            Driver driver = driverService.selectById(order.getDriverId());
            if(payType == 2 && state == 108){
                order.setPayTime(new Date());
                if(null != order.getCouponId()){
                    UserToCoupon userToCoupon = userToCouponService.selectById(order.getCouponId());
                    Coupon coupon = couponService.selectById(userToCoupon.getCouponId());
                    Driver driver = driverService.selectById(order.getDriverId());
                    AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                    accountChangeDetail.setUserType(2);
@@ -1647,9 +1814,19 @@
            }
            this.updateById(order);
            if(null != order.getTravelId()){
                //中台修改订单状态
                ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest();
                request.setOrderId(order.getTravelId());
                request.setStatus(getState(order.getState()));
                TCompany company = companyMapper.selectById(driver.getBranchOfficeId());
                request.setDriverId(driver.getEmpId().toString());
                request.setSupplierShopId(company.getEnterCode());
                OrderUtil.modifyTravelItinerary(request);
            }
            if((payType == 1 && state == 107) || (payType == 2 && state == 108)){
                //修改司机状态和积分
                Driver driver = driverService.selectById(order.getDriverId());
                driver.setServerStatus(1);
                driverService.updateById(driver);
            }