zhibing.pu
2024-06-21 0f9a91a7609e6623ada0f8b5a9ee878e77e5aa32
DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java
@@ -18,6 +18,7 @@
import com.stylefeng.guns.modular.system.service.*;
import com.stylefeng.guns.modular.system.util.*;
import com.stylefeng.guns.modular.system.util.GoogleMap.AddressComponentsVo;
import com.stylefeng.guns.modular.system.util.GoogleMap.FleetEngineUtil;
import com.stylefeng.guns.modular.system.util.GoogleMap.GoogleMapUtil;
import com.stylefeng.guns.modular.system.util.GoogleMap.ReverseGeocodeVo;
import com.stylefeng.guns.modular.system.util.itextpdf.HtmlToPdfUtils;
@@ -28,6 +29,7 @@
import org.apache.shiro.authc.credential.HashedCredentialsMatcher;
import org.apache.shiro.crypto.hash.Md5Hash;
import org.apache.shiro.util.ByteSource;
import org.apache.shiro.util.StringUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
@@ -153,6 +155,13 @@
    @Autowired
    private TEmailService emailService;
    @Autowired
    private FleetEngineUtil fleetEngineUtil;
    @Resource
    private CarModelMapper carModelMapper;
    @Override
@@ -266,7 +275,7 @@
            Element email1_user = document.getElementById("email1_user");
            email1_user.text("Hello ,");
            Element email1_content = document.getElementById("email1_content");
            email1_content.text("Your package pickup code is " + authCode + ", please complete the verification within 5 minutes");
            email1_content.text("Your delivery pickup code is " + authCode + ", please complete the verification within 5 minutes");
        }
        if(3 == language){
            document.getElementById("chinese").remove();
@@ -285,7 +294,7 @@
            Element email2_user = document.getElementById("email2_user");
            email2_user.text("Hello ,");
            Element email2_content = document.getElementById("email2_content");
            email2_content.text("Le code de ramassage de votre colis est " + authCode + ", veuillez effectuer la verification dans les 5minutes.");
            email2_content.text("Le code de ramassage de votre livraison est " + authCode + ", veuillez effectuer la verification dans les 5minutes.");
        }
        EmailUtil.send(email, language == 1 ? "邮箱验证" : language == 2 ? "Verification code" : "Code de validation",  document.html());
        return ResultUtil.success();
@@ -327,9 +336,16 @@
                List<Map<String, Object>> query = driverActivityRegisteredMapper.query(userType, driver.getCompanyId());
                BigDecimal bigDecimal = new BigDecimal("0");
                for(Map<String, Object> map : query){
                    DriverActivityHistory dah = new DriverActivityHistory();
                    dah.setActivityId(Integer.valueOf(map.get("id").toString()));
                    dah.setDriverId(uid);
                    dah.setType(1);
                    DriverActivityHistory driverActivityHistory = driverActivityHistoryMapper.selectOne(dah);
                    driverActivityHistory.setCarryOut(2);
                    driverActivityHistoryMapper.updateById(driverActivityHistory);
                    if(Double.valueOf(String.valueOf(map.get("money"))).compareTo(0D) > 0){
                        bigDecimal = bigDecimal.add(new BigDecimal(String.valueOf(map.get("money"))));
                        incomeService.saveData(2, driver.getId(), 1, Integer.valueOf(String.valueOf(map.get("id"))), null, Double.valueOf(String.valueOf(map.get("money"))));
                        incomeService.saveData(2, driver.getId(), 1, driverActivityHistory.getId(), null, Double.valueOf(String.valueOf(map.get("money"))));
                    }
                }
                driver.setActivityMoney(bigDecimal.add(new BigDecimal(driver.getActivityMoney())).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
@@ -425,9 +441,9 @@
                    tEmail.setWeek(week);
                    boolean am = cn.hutool.core.date.DateUtil.isAM(new Date());
                    if(am){
                        tEmail.setAmOrPm(language==1?"上午":language==2?"AM":"Dans la matinée");
                        tEmail.setAmOrPm(language==1?"上午":language==2?"morning":"matin");
                    }else {
                        tEmail.setAmOrPm(language==1?"下午":language==2?"PM":"après-midi");
                        tEmail.setAmOrPm(language==1?"下午":language==2?"afternoon":"après-midi");
                    }
                    emailService.insert(tEmail);
                }
@@ -515,9 +531,16 @@
                List<Map<String, Object>> query = driverActivityRegisteredMapper.query(userType, driver.getCompanyId());
                BigDecimal bigDecimal = new BigDecimal("0");
                for(Map<String, Object> map : query){
                    DriverActivityHistory dah = new DriverActivityHistory();
                    dah.setActivityId(Integer.valueOf(map.get("id").toString()));
                    dah.setDriverId(uid);
                    dah.setType(1);
                    DriverActivityHistory driverActivityHistory = driverActivityHistoryMapper.selectOne(dah);
                    driverActivityHistory.setCarryOut(2);
                    driverActivityHistoryMapper.updateById(driverActivityHistory);
                    if(Double.valueOf(String.valueOf(map.get("money"))).compareTo(0D) > 0){
                        bigDecimal = bigDecimal.add(new BigDecimal(String.valueOf(map.get("money"))));
                        incomeService.saveData(2, driver.getId(), 1, Integer.valueOf(String.valueOf(map.get("id"))), null, Double.valueOf(String.valueOf(map.get("money"))));
                        incomeService.saveData(2, driver.getId(), 1, driverActivityHistory.getId(), null, Double.valueOf(String.valueOf(map.get("money"))));
                    }
                }
                driver.setActivityMoney(bigDecimal.add(new BigDecimal(driver.getActivityMoney())).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
@@ -613,9 +636,9 @@
                    tEmail.setWeek(week);
                    boolean am = cn.hutool.core.date.DateUtil.isAM(new Date());
                    if(am){
                        tEmail.setAmOrPm(language==1?"上午":language==2?"AM":"Dans la matinée");
                        tEmail.setAmOrPm(language==1?"上午":language==2?"morning":"matin");
                    }else {
                        tEmail.setAmOrPm(language==1?"下午":language==2?"PM":"après-midi");
                        tEmail.setAmOrPm(language==1?"下午":language==2?"afternoon":"après-midi");
                    }
                    emailService.insert(tEmail);
                }
@@ -880,9 +903,9 @@
            tEmail.setWeek(week);
            boolean am = cn.hutool.core.date.DateUtil.isAM(new Date());
            if(am){
                tEmail.setAmOrPm(language==1?"上午":language==2?"AM":"Dans la matinée");
                tEmail.setAmOrPm(language==1?"上午":language==2?"morning":"matin");
            }else {
                tEmail.setAmOrPm(language==1?"下午":language==2?"PM":"après-midi");
                tEmail.setAmOrPm(language==1?"下午":language==2?"afternoon":"après-midi");
            }
            emailService.insert(tEmail);
        }
@@ -994,9 +1017,9 @@
            tEmail.setWeek(week);
            boolean am = cn.hutool.core.date.DateUtil.isAM(new Date());
            if(am){
                tEmail.setAmOrPm(language==1?"上午":language==2?"AM":"Dans la matinée");
                tEmail.setAmOrPm(language==1?"上午":language==2?"morning":"matin");
            }else {
                tEmail.setAmOrPm(language==1?"下午":language==2?"PM":"après-midi");
                tEmail.setAmOrPm(language==1?"下午":language==2?"afternoon":"après-midi");
            }
            emailService.insert(tEmail);
        }
@@ -1077,6 +1100,18 @@
                loginWarpper.setJumpCode("200000");
            }
        }
        //司机登录,添加谷歌上的车辆信息
        Car car = carService.selectById(driver.getCarId());
        if(!StringUtils.hasLength(car.getVehicleId())){
            car.setVehicleId(UUIDUtil.getRandomCode());
            carService.updateById(car);
        }
        String vehicles = fleetEngineUtil.getVehicles(car.getVehicleId());
        if(ToolUtil.isEmpty(vehicles)){
            CarModel carModel = carModelMapper.selectById(car.getCarModelId());
            fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
        }
        return ResultUtil.success(loginWarpper);
    }
@@ -1150,6 +1185,7 @@
    public ResultUtil work(Integer uid, String type, Integer language) throws Exception {
        DriverWork driverWork = driverWorkMapper.queryNewWork(uid, null, 1);
        Driver driver = this.selectById(uid);
        Car car = carService.selectById(driver.getCarId());
        if(null != driverWork){//作下班操作
            //检测是否有未完成的订单
            List<Map<String, Object>> list = orderService.queryOrderList(1, 1, 10, uid, language);
@@ -1160,6 +1196,20 @@
            driverWork.setState(2);
            driverWorkMapper.updateById(driverWork);
            driver.setState(1);
            if(!StringUtils.hasLength(car.getVehicleId())){
                car.setVehicleId(UUIDUtil.getRandomCode());
                carService.updateById(car);
            }
            //司机下班,修改谷歌上的车辆信息
            CarModel carModel = carModelMapper.selectById(car.getCarModelId());
            String vehicles = fleetEngineUtil.getVehicles(car.getVehicleId());
            if(ToolUtil.isEmpty(vehicles)){
                fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
            }else{
                fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
            }
        }else{
            LoginWarpper loginWarpper = new LoginWarpper();
            if(driver.getCompanyId()==null){
@@ -1178,7 +1228,6 @@
            if(driver.getAuthState()==4){
                return ResultUtil.error(language == 1 ? "请完善资料后再出车" : language == 2 ? "Please complete data before driving." : "Veuillez compléter les données avant de conduire.");
            }
            Car car = carService.selectById(driver.getCarId());
            if(car==null){
                return ResultUtil.error(language == 1 ? "请完善资料后再出车" : language == 2 ? "Please complete data before driving." : "Veuillez compléter les données avant de conduire.");
            }
@@ -1195,6 +1244,20 @@
            driverWork.setType(type);
            driverWorkMapper.insert(driverWork);
            driver.setState(2);
            if(!StringUtils.hasLength(car.getVehicleId())){
                car.setVehicleId(UUIDUtil.getRandomCode());
                carService.updateById(car);
            }
            //司机上班,修改谷歌上的车辆信息
            CarModel carModel = carModelMapper.selectById(car.getCarModelId());
            String vehicles = fleetEngineUtil.getVehicles(car.getVehicleId());
            if(ToolUtil.isEmpty(vehicles)){
                fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
            }else{
                fleetEngineUtil.updateVehicles("ONLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
            }
        }
        this.updateById(driver);
        return ResultUtil.success();
@@ -1314,7 +1377,7 @@
                    baseWarpper.setName(language == 1 ? "跨城出行" : language == 2 ? "Cross-town travel" : "Se déplacer à travers la ville");
                    break;
                case 4:
                    baseWarpper.setName(language == 1 ? "包裹" : language == 2 ? "Package" : "Livraison");
                    baseWarpper.setName(language == 1 ? "包裹" : language == 2 ? "Delivery" : "Livraison");
                    break;
                case 5:
                    baseWarpper.setName(language == 1 ? "跨城小件物流" : language == 2 ? "Cross-city small parts logistics" : "Logistique des petites pièces à travers la ville");
@@ -1505,9 +1568,9 @@
            tEmail.setWeek(week);
            boolean am = cn.hutool.core.date.DateUtil.isAM(new Date());
            if(am){
                tEmail.setAmOrPm(language==1?"上午":language==2?"AM":"Dans la matinée");
                tEmail.setAmOrPm(language==1?"上午":language==2?"morning":"matin");
            }else {
                tEmail.setAmOrPm(language==1?"下午":language==2?"PM":"après-midi");
                tEmail.setAmOrPm(language==1?"下午":language==2?"afternoon":"après-midi");
            }
            emailService.insert(tEmail);
        }
@@ -1630,7 +1693,7 @@
     */
    @Override
    public List<Map<String, Object>> queryActivityIncome(Integer language, Integer uid, Integer pageNum, Integer size) throws Exception {
        List<Map<String, Object>> query = incomeService.query(language,2, uid, 1, pageNum, size);
        List<Map<String, Object>> query = incomeService.query(language,2, uid, Arrays.asList(1), pageNum, size);
        return query;
    }
@@ -1645,7 +1708,7 @@
     */
    @Override
    public List<Map<String, Object>> queryTotalRevenue(Integer language, Integer uid, Integer pageNum, Integer size) throws Exception {
        List<Map<String, Object>> query = incomeService.query(language, 2, uid, 2, pageNum, size);
        List<Map<String, Object>> query = incomeService.query(language, 2, uid, Arrays.asList(2, 3, 5, 6, 7), pageNum, size);
        return query;
    }
@@ -1669,14 +1732,14 @@
                case 1://邀请司机注册
                    DriverActivityRegistered driverActivityRegistered = driverActivityRegisteredMapper.selectById(dah.getActivityId());
                    activityWarpper.setId(driverActivityRegistered.getId());
                    activityWarpper.setContent(language == 1 ? "邀请司机注册奖励" + driverActivityRegistered.getMoney() + "元" :
                    activityWarpper.setContent(language == 1 ? "邀请司机注册奖励GHS" + driverActivityRegistered.getMoney() :
                            language == 2 ? " Invite drivers to register for a reward of GHS" + driverActivityRegistered.getMoney():
                                    "Invitez les chauffeurs à s’inscrire pour une récompense de GHS" + driverActivityRegistered.getMoney());
                    break;
                case 2://邀请用户注册
                    DriverActivityRegistered driverActivityRegistered1 = driverActivityRegisteredMapper.selectById(dah.getActivityId());
                    activityWarpper.setId(driverActivityRegistered1.getId());
                    activityWarpper.setContent(language == 1 ? "邀请用户注册奖励" + driverActivityRegistered1.getMoney() + "元" :
                    activityWarpper.setContent(language == 1 ? "邀请用户注册奖励GHS" + driverActivityRegistered1.getMoney() :
                            language == 2 ? "Invite users to register for a reward of GHS" + driverActivityRegistered1.getMoney():
                                    "Invitez les utilisateurs à s’inscrire pour une récompense de GHS" + driverActivityRegistered1.getMoney());
                    break;
@@ -1685,7 +1748,7 @@
                    activityWarpper.setId(driverActivityOnline.getId());
                    StringBuffer sb = new StringBuffer(language == 1 ? "今日" :
                            language == 2 ? "Today, stay online receiving orders of " : "Aujourd’hui, reste en ligne à recevoir des commandes ");
                    DriverOnline query = driverOnlineMapper.query(uid, sdf1.format(new Date()), 0);
                    DriverOnline query = driverOnlineMapper.query(uid, sdf1.format(new Date()), driverActivityOnline.getType(), 0);
                    Integer hour = 0;
                    if(null != query){
                        hour = Long.valueOf(query.getDuration() / 3600).intValue();
@@ -1701,10 +1764,10 @@
                            sb.append("城际出行");
                            continue;
                        case 4:
                            sb.append(language == 1 ? "包裹" : language == 2 ? "package" : "de colis");
                            sb.append(language == 1 ? "包裹" : language == 2 ? "delivery" : "de livraison");
                            break;
                    }
                    String str = language == 1 ? "累计在线" +driverActivityOnline.getOnline() + "小时奖励" +driverActivityOnline.getMoney() + "元" :
                    String str = language == 1 ? "累计在线" +driverActivityOnline.getOnline() + "小时奖励GHS" +driverActivityOnline.getMoney():
                            language == 2 ? " for " + driverActivityOnline.getOnline() + " hours to get a reward of GHS" + driverActivityOnline.getMoney():
                                    " pendant " + driverActivityOnline.getOnline() + " heures afin d'obtenir une récompense de GHS" + driverActivityOnline.getMoney();
                    activityWarpper.setContent(sb.append(str).toString());
@@ -1713,14 +1776,14 @@
                case 4://订单量
                    DriverActivityOrder driverActivityOrder = driverActivityOrderMapper.selectById(dah.getActivityId());
                    activityWarpper.setId(driverActivityOrder.getId());
                    activityWarpper.setContent(language == 1 ? "今日" + driverActivityOrder.getStart() + "-" + driverActivityOrder.getEnd() + "累计接单" + driverActivityOrder.getOrderNum() + "单奖励" + driverActivityOrder.getMoney() + "元" :
                    activityWarpper.setContent(language == 1 ? "今日" + driverActivityOrder.getStart() + "-" + driverActivityOrder.getEnd() + "累计接单" + driverActivityOrder.getOrderNum() + "单奖励GHS" + driverActivityOrder.getMoney():
                            language == 2 ? "Today " + driverActivityOrder.getStart() + "-" + driverActivityOrder.getEnd() + ", complete " + driverActivityOrder.getOrderNum() + " orders for a reward of GHS" + driverActivityOrder.getMoney() :
                                    "Aujourd’hui de " + driverActivityOrder.getStart() + " à " + driverActivityOrder.getEnd() + ", complétez " + driverActivityOrder.getOrderNum() + " commandes pour une récompense de GHS" + driverActivityOrder.getMoney());
                    SimpleDateFormat sdf = new SimpleDateFormat("H:m");
                    Date start = sdf.parse(driverActivityOrder.getStart());
                    Date end = sdf.parse(driverActivityOrder.getEnd());
                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                    Date start = sdf.parse(sdf1.format(time) + " " + driverActivityOrder.getStart() + ":00");
                    Date end = sdf.parse(sdf1.format(time) + " " + driverActivityOrder.getEnd() + ":59");
                    Integer integer = orderService.queryOrderNum(uid, start, end);
                    activityWarpper.setCarryOut(integer > driverActivityOrder.getOrderNum() ? driverActivityOrder.getOrderNum() + "/" + driverActivityOrder.getOrderNum() : integer + "/" + driverActivityOrder.getOrderNum());
                    activityWarpper.setCarryOut(integer.compareTo(driverActivityOrder.getOrderNum()) > 0 ? driverActivityOrder.getOrderNum() + "/" + driverActivityOrder.getOrderNum() : integer + "/" + driverActivityOrder.getOrderNum());
                    break;
            }
            list.add(activityWarpper);
@@ -1869,9 +1932,9 @@
                        tEmail.setWeek(week);
                        boolean am = cn.hutool.core.date.DateUtil.isAM(new Date());
                        if(am){
                            tEmail.setAmOrPm(language==1?"上午":language==2?"AM":"Dans la matinée");
                            tEmail.setAmOrPm(language==1?"上午":language==2?"morning":"matin");
                        }else {
                            tEmail.setAmOrPm(language==1?"下午":language==2?"PM":"après-midi");
                            tEmail.setAmOrPm(language==1?"下午":language==2?"afternoon":"après-midi");
                        }
                        emailService.insert(tEmail);
                    }
@@ -1985,9 +2048,9 @@
                        tEmail.setWeek(week);
                        boolean am = cn.hutool.core.date.DateUtil.isAM(new Date());
                        if(am){
                            tEmail.setAmOrPm(language==1?"上午":language==2?"AM":"Dans la matinée");
                            tEmail.setAmOrPm(language==1?"上午":language==2?"morning":"matin");
                        }else {
                            tEmail.setAmOrPm(language==1?"下午":language==2?"PM":"après-midi");
                            tEmail.setAmOrPm(language==1?"下午":language==2?"afternoon":"après-midi");
                        }
                        emailService.insert(tEmail);
                    }
@@ -2102,9 +2165,9 @@
                        tEmail.setWeek(week);
                        boolean am = cn.hutool.core.date.DateUtil.isAM(new Date());
                        if(am){
                            tEmail.setAmOrPm(language==1?"上午":language==2?"AM":"Dans la matinée");
                            tEmail.setAmOrPm(language==1?"上午":language==2?"morning":"matin");
                        }else {
                            tEmail.setAmOrPm(language==1?"下午":language==2?"PM":"après-midi");
                            tEmail.setAmOrPm(language==1?"下午":language==2?"afternoon":"après-midi");
                        }
                        emailService.insert(tEmail);
                    }
@@ -2219,9 +2282,9 @@
                        tEmail.setWeek(week);
                        boolean am = cn.hutool.core.date.DateUtil.isAM(new Date());
                        if(am){
                            tEmail.setAmOrPm(language==1?"上午":language==2?"AM":"Dans la matinée");
                            tEmail.setAmOrPm(language==1?"上午":language==2?"morning":"matin");
                        }else {
                            tEmail.setAmOrPm(language==1?"下午":language==2?"PM":"après-midi");
                            tEmail.setAmOrPm(language==1?"下午":language==2?"afternoon":"après-midi");
                        }
                        emailService.insert(tEmail);
                    }
@@ -2248,7 +2311,7 @@
                continue;
            }
            Long duration = Long.valueOf(dao.getOnline() * 3600);
            List<DriverOnline> driverOnlines = driverOnlineMapper.queryList(sdf.format(new Date()), duration);
            List<DriverOnline> driverOnlines = driverOnlineMapper.queryList(sdf.format(new Date()), dao.getType(), duration);
            for (DriverOnline driverOnline : driverOnlines) {
                if(dah.getDriverId().compareTo(driverOnline.getDriverId()) == 0){
                    dah.setCarryOut(2);//完成状态
@@ -2264,7 +2327,7 @@
                    this.updateById(driver);
                    //添加收入记录
                    incomeService.saveData(2, driverOnline.getDriverId(), 1, dao.getId(), null, dah.getMoney());
                    incomeService.saveData(2, driverOnline.getDriverId(), 1, dah.getId(), null, dah.getMoney());
                    if(ToolUtil.isNotEmpty(driver.getEmail())) {
@@ -2355,9 +2418,9 @@
                        tEmail.setWeek(week);
                        boolean am = cn.hutool.core.date.DateUtil.isAM(new Date());
                        if(am){
                            tEmail.setAmOrPm(language==1?"上午":language==2?"AM":"Dans la matinée");
                            tEmail.setAmOrPm(language==1?"上午":language==2?"morning":"matin");
                        }else {
                            tEmail.setAmOrPm(language==1?"下午":language==2?"PM":"après-midi");
                            tEmail.setAmOrPm(language==1?"下午":language==2?"afternoon":"après-midi");
                        }
                        emailService.insert(tEmail);
                    }
@@ -2384,7 +2447,7 @@
                this.updateById(driver);
                //添加收入记录
                incomeService.saveData(2, dah.getDriverId(), 1, dao.getId(), null, dah.getMoney());
                incomeService.saveData(2, dah.getDriverId(), 1, dah.getId(), null, dah.getMoney());
                if(ToolUtil.isNotEmpty(driver.getEmail())) {
                    String path1 = templatePath + "driver/index.html";
@@ -2475,9 +2538,9 @@
                    tEmail.setWeek(week);
                    boolean am = cn.hutool.core.date.DateUtil.isAM(new Date());
                    if(am){
                        tEmail.setAmOrPm(language==1?"上午":language==2?"AM":"Dans la matinée");
                        tEmail.setAmOrPm(language==1?"上午":language==2?"morning":"matin");
                    }else {
                        tEmail.setAmOrPm(language==1?"下午":language==2?"PM":"après-midi");
                        tEmail.setAmOrPm(language==1?"下午":language==2?"afternoon":"après-midi");
                    }
                    emailService.insert(tEmail);
                }