曾富康
2026-06-26 1e611ab0e7bcc9089dc066d3ebc89ee0b630257e
新增需求
2个文件已添加
4个文件已修改
298 ■■■■■ 已修改文件
DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/core/intercept/RestApiInteceptor.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/EmbeddedPageController.java 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/embedded/iframe.html 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java
@@ -447,7 +447,19 @@
            @ApiImplicitParam(value = "经度", name = "lon", required = true, dataType = "String"),
            @ApiImplicitParam(value = "纬度", name = "lat", required = true, dataType = "String")
    })
    public ResultUtil<List<Map<String, Object>>> queryNearbyCar(String lon, String lat){
    public ResultUtil<List<Map<String, Object>>> queryNearbyCar(String lon, String lat,HttpServletRequest request){
        Integer uid = null;
        try {
             uid = driverService.getUserIdFormRedis(request);
            if(null == uid){
                return ResultUtil.tokenErr();
            }
        } catch (Exception e) {
            e.printStackTrace();
            return ResultUtil.runErr();
        }
        GeoJsonPoint geoJsonPoint = new GeoJsonPoint(Double.parseDouble(lon), Double.parseDouble(lat));
        Distance distanceR = new Distance(5, Metrics.KILOMETERS);
        Circle circle = new Circle(geoJsonPoint, distanceR);
@@ -459,6 +471,7 @@
            List<Integer> driverIds = driverPositions.stream().map(DriverPosition::getDriverId).collect(Collectors.toList());
            List<Driver> drivers = driverService.selectList(new EntityWrapper<Driver>().in("id", driverIds)
                    .eq("authState", 2).eq("state", 2));
            Integer finalUid = uid;
            collect = drivers.stream().map(driver -> {
                String value = (String) redisTemplate.opsForValue().get("dache:DRIVER" + driver.getId());
                if(ToolUtil.isNotEmpty(value)){
@@ -471,7 +484,7 @@
                    return map;
                }
                return null;
            }).filter(Objects::nonNull).collect(Collectors.toList());
            }).filter(s -> Objects.nonNull(s) && !finalUid.equals(s.get("driverId"))).collect(Collectors.toList());
        }
//        addMockNearbyDrivers(collect);
        return ResultUtil.success(collect);
DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java
@@ -47,6 +47,7 @@
import java.io.File;
import java.io.InputStream;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.util.*;
@@ -1799,7 +1800,7 @@
//        double sum1 = orderCrossCities.stream().mapToDouble(OrderCrossCity::getOrderMoney).sum();
//        double sum2 = orderTaxis.stream().mapToDouble(OrderTaxi::getOrderMoney).sum();
        double sum4 = incomes.stream().mapToDouble(Income::getMoney).sum();
        driverOrderDataVo.setAllOrderMoney(new BigDecimal(sum4));
        driverOrderDataVo.setAllOrderMoney(BigDecimal.valueOf(sum4).setScale(2, RoundingMode.HALF_UP));
DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java
@@ -1,5 +1,6 @@
package com.stylefeng.guns.modular.system.service.impl;
import cn.hutool.core.map.MapUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
@@ -296,17 +297,24 @@
        Map<String, Object> map = null;
        switch (orderType){
            case 1://专车
                String distance = "";
                String order = "";
                map = orderPrivateCarService.queryPushOrder(orderId);
                String order = String.valueOf(map.get("startLon")) + "," + String.valueOf(map.get("startLat"));
                // TODO: 2023/11/4 无法修改
                String distance = gdMapElectricFenceUtil.getDistance(lon + "," + lat, order, 1).get("distance");
                map.put("startDistance", ToolUtil.isNotEmpty(distance) ? Double.valueOf(distance) / 1000 : 0);
                if (MapUtil.get(map,"startLon",String.class) != null){
                     order = String.valueOf(map.get("startLon")) + "," + String.valueOf(map.get("startLat"));
                    // TODO: 2023/11/4 无法修改
                    distance = gdMapElectricFenceUtil.getDistance(lon + "," + lat, order, 1).get("distance");
                    map.put("startDistance", ToolUtil.isNotEmpty(distance) ? Double.valueOf(distance) / 1000 : 0);
                }
                //总距离
                String end = String.valueOf(map.get("endLon")) + "," + String.valueOf(map.get("endLat"));
                // TODO: 2023/11/4 无法修改
                distance = gdMapElectricFenceUtil.getDistance(end, order, 1).get("distance");
                map.put("totalDistance", ToolUtil.isNotEmpty(distance) ? Double.valueOf(distance) / 1000 : 0);
                if (MapUtil.get(map,"endLon",String.class) != null){
                    //总距离
                    String end = String.valueOf(map.get("endLon")) + "," + String.valueOf(map.get("endLat"));
                    // TODO: 2023/11/4 无法修改
                    distance = gdMapElectricFenceUtil.getDistance(end, order, 1).get("distance");
                    map.put("totalDistance", ToolUtil.isNotEmpty(distance) ? Double.valueOf(distance) / 1000 : 0);
                }
                Integer orderSource = Integer.valueOf(String.valueOf(map.get("orderSource")));
                if(orderSource == 1 || orderSource == 2 || orderSource == 3){
@@ -350,25 +358,32 @@
                        map = orderTaxiService.queryPushOrder(orderId);
                    }
                }
                String order1 = String.valueOf(map.get("startLon")) + "," + String.valueOf(map.get("startLat"));
                // TODO: 2023/11/4 无法修改
                String distance1 = gdMapElectricFenceUtil.getDistance(lon + "," + lat, order1, 1).get("distance");
                map.put("startDistance", ToolUtil.isNotEmpty(distance1) ? Double.valueOf(distance1) / 1000 : 0);
                //总距离
                String end1 = String.valueOf(map.get("endLon")) + "," + String.valueOf(map.get("endLat"));
                if(end1.equals(",")){
                    map.put("totalDistance", 0);
                }else{
                String order1 = "";
                if (MapUtil.get(map,"startLon",String.class) != null){
                     order1 = String.valueOf(map.get("startLon")) + "," + String.valueOf(map.get("startLat"));
                    // TODO: 2023/11/4 无法修改
                    Map<String, String> disMap = gdMapElectricFenceUtil.getDistance(end1, order1, 1);
                    if(ToolUtil.isEmpty(disMap)){
                    String distance1 = gdMapElectricFenceUtil.getDistance(lon + "," + lat, order1, 1).get("distance");
                    map.put("startDistance", ToolUtil.isNotEmpty(distance1) ? Double.valueOf(distance1) / 1000 : 0);
                }
                if (MapUtil.get(map,"endLon",String.class) != null){
                    //总距离
                    String end1 = String.valueOf(map.get("endLon")) + "," + String.valueOf(map.get("endLat"));
                    if(end1.equals(",")){
                        map.put("totalDistance", 0);
                    }else{
                        distance = disMap.get("distance");
                        map.put("totalDistance", ToolUtil.isNotEmpty(distance) ? Double.valueOf(distance) / 1000 : 0);
                    }
                        // TODO: 2023/11/4 无法修改
                        Map<String, String> disMap = gdMapElectricFenceUtil.getDistance(end1, order1, 1);
                        if(ToolUtil.isEmpty(disMap)){
                            map.put("totalDistance", 0);
                        }else{
                            distance = disMap.get("distance");
                            map.put("totalDistance", ToolUtil.isNotEmpty(distance) ? Double.valueOf(distance) / 1000 : 0);
                        }
                    }
                }
                Integer orderSource1 = Integer.valueOf(String.valueOf(map.get("orderSource")));
                if(orderSource1 == 1 || orderSource1 == 2 || orderSource1 == 3){
@@ -402,16 +417,22 @@
                break;
            case 3://城际
                map = orderCrossCityService.queryPushOrder(orderId);
                String order2 = String.valueOf(map.get("startLon")) + "," + String.valueOf(map.get("startLat"));
                // TODO: 2023/11/4 无法修改
                String distance2 = gdMapElectricFenceUtil.getDistance(lon + "," + lat, order2, 1).get("distance");
                map.put("startDistance", ToolUtil.isNotEmpty(distance2) ? Double.valueOf(distance2) / 1000 : 0);
                String order2 = "";
                if (MapUtil.get(map,"startLon",String.class) != null){
                     order2 = String.valueOf(map.get("startLon")) + "," + String.valueOf(map.get("startLat"));
                    // TODO: 2023/11/4 无法修改
                    String distance2 = gdMapElectricFenceUtil.getDistance(lon + "," + lat, order2, 1).get("distance");
                    map.put("startDistance", ToolUtil.isNotEmpty(distance2) ? Double.valueOf(distance2) / 1000 : 0);
                }
                //总距离
                String end2 = String.valueOf(map.get("endLon")) + "," + String.valueOf(map.get("endLat"));
                // TODO: 2023/11/4 无法修改
                distance = gdMapElectricFenceUtil.getDistance(end2, order2, 1).get("distance");
                map.put("totalDistance", ToolUtil.isNotEmpty(distance) ? Double.valueOf(distance) / 1000 : 0);
                if (MapUtil.get(map,"endLon",String.class) != null){
                    //总距离
                    String end2 = String.valueOf(map.get("endLon")) + "," + String.valueOf(map.get("endLat"));
                    // TODO: 2023/11/4 无法修改
                    distance = gdMapElectricFenceUtil.getDistance(end2, order2, 1).get("distance");
                    map.put("totalDistance", ToolUtil.isNotEmpty(distance) ? Double.valueOf(distance) / 1000 : 0);
                }
                Integer orderSource2 = Integer.valueOf(String.valueOf(map.get("orderSource")));
                if(orderSource2 == 1 || orderSource2 == 2 || orderSource2 == 3){
@@ -433,16 +454,23 @@
                break;
            case 4://同城小件物流
                map = orderLogisticsService.queryPushOrder(orderId);
                String order3 = String.valueOf(map.get("startLon")) + "," + String.valueOf(map.get("startLat"));
                // TODO: 2023/11/4 无法修改
                String distance3 = gdMapElectricFenceUtil.getDistance(lon + "," + lat, order3, 1).get("distance");
                map.put("startDistance", ToolUtil.isNotEmpty(distance3) ? Double.valueOf(distance3) / 1000 : 0);
                String order3 = "";
                if (MapUtil.get(map,"startLon",String.class) != null){
                     order3 = String.valueOf(map.get("startLon")) + "," + String.valueOf(map.get("startLat"));
                    // TODO: 2023/11/4 无法修改
                    String distance3 = gdMapElectricFenceUtil.getDistance(lon + "," + lat, order3, 1).get("distance");
                    map.put("startDistance", ToolUtil.isNotEmpty(distance3) ? Double.valueOf(distance3) / 1000 : 0);
                //总距离
                String end3 = String.valueOf(map.get("endLon")) + "," + String.valueOf(map.get("endLat"));
                // TODO: 2023/11/4 无法修改
                distance = gdMapElectricFenceUtil.getDistance(end3, order3, 1).get("distance");
                map.put("totalDistance", ToolUtil.isNotEmpty(distance) ? Double.valueOf(distance) / 1000 : 0);
                }
                if (MapUtil.get(map,"endLon",String.class) != null){
                    //总距离
                    String end3 = String.valueOf(map.get("endLon")) + "," + String.valueOf(map.get("endLat"));
                    // TODO: 2023/11/4 无法修改
                    distance = gdMapElectricFenceUtil.getDistance(end3, order3, 1).get("distance");
                    map.put("totalDistance", ToolUtil.isNotEmpty(distance) ? Double.valueOf(distance) / 1000 : 0);
                }
                Integer orderSource3 = Integer.valueOf(String.valueOf(map.get("orderSource")));
                if(orderSource3 == 1 || orderSource3 == 2 || orderSource3 == 3){
@@ -464,16 +492,22 @@
                break;
            case 5://跨城小件物流
                map = orderLogisticsService.queryPushOrder(orderId);
                String order4 = String.valueOf(map.get("startLon")) + "," + String.valueOf(map.get("startLat"));
                // TODO: 2023/11/4 无法修改
                String distance4 = gdMapElectricFenceUtil.getDistance(lon + "," + lat, order4, 1).get("distance");
                map.put("startDistance", ToolUtil.isNotEmpty(distance4) ? Double.valueOf(distance4) / 1000 : 0);
                String order4 = "";
                if (MapUtil.get(map,"startLon",String.class) != null){
                     order4 = String.valueOf(map.get("startLon")) + "," + String.valueOf(map.get("startLat"));
                    // TODO: 2023/11/4 无法修改
                    String distance4 = gdMapElectricFenceUtil.getDistance(lon + "," + lat, order4, 1).get("distance");
                    map.put("startDistance", ToolUtil.isNotEmpty(distance4) ? Double.valueOf(distance4) / 1000 : 0);
                }
                //总距离
                String end4 = String.valueOf(map.get("endLon")) + "," + String.valueOf(map.get("endLat"));
                // TODO: 2023/11/4 无法修改
                distance = gdMapElectricFenceUtil.getDistance(end4, order4, 1).get("distance");
                map.put("totalDistance", ToolUtil.isNotEmpty(distance) ? Double.valueOf(distance) / 1000 : 0);
                if (MapUtil.get(map,"endLon",String.class) != null){
                    //总距离
                    String end4 = String.valueOf(map.get("endLon")) + "," + String.valueOf(map.get("endLat"));
                    // TODO: 2023/11/4 无法修改
                    distance = gdMapElectricFenceUtil.getDistance(end4, order4, 1).get("distance");
                    map.put("totalDistance", ToolUtil.isNotEmpty(distance) ? Double.valueOf(distance) / 1000 : 0);
                }
                Integer orderSource4 = Integer.valueOf(String.valueOf(map.get("orderSource")));
                if(orderSource4 == 1 || orderSource4 == 2 || orderSource4 == 3){
ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/core/intercept/RestApiInteceptor.java
@@ -23,7 +23,15 @@
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        addCorsHeaders(request, response);
        if ("OPTIONS".equalsIgnoreCase(request.getMethod())) {
            response.setStatus(HttpServletResponse.SC_OK);
            return false;
        }
        if (handler instanceof org.springframework.web.servlet.resource.ResourceHttpRequestHandler) {
            return true;
        }
        if (!(handler instanceof HandlerMethod)) {
            return true;
        }
        HandlerMethod handlerMethod = (HandlerMethod) handler;
@@ -64,4 +72,15 @@
        return true;
    }
    private void addCorsHeaders(HttpServletRequest request, HttpServletResponse response) {
        String origin = request.getHeader("Origin");
        if (origin != null && origin.length() > 0) {
            response.setHeader("Access-Control-Allow-Origin", origin);
            response.setHeader("Vary", "Origin");
        }
        response.setHeader("Access-Control-Allow-Credentials", "true");
        response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization");
        response.setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
    }
}
ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/EmbeddedPageController.java
New file
@@ -0,0 +1,96 @@
package com.stylefeng.guns.modular.system.controller.system;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.stylefeng.guns.core.common.constant.JwtConstants;
import com.stylefeng.guns.core.shiro.ShiroKit;
import com.stylefeng.guns.core.shiro.ShiroUser;
import com.stylefeng.guns.core.util.JwtTokenUtil;
import com.stylefeng.guns.modular.system.model.MenuEntryConfig;
import com.stylefeng.guns.modular.system.model.User;
import com.stylefeng.guns.modular.system.service.IMenuEntryConfigService;
import com.stylefeng.guns.modular.system.service.IUserService;
import com.stylefeng.guns.modular.system.util.ResultUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.List;
/**
 * 后台嵌入外部页面。
 */
@Controller
@RequestMapping("")
public class EmbeddedPageController {
    private static final String EMBEDDED_IFRAME_VIEW = "/system/embedded/iframe.html";
    private static final String ROUTE_SWITCH_URL = "http://192.168.110.22:8087/#/?token=";
    private static final String STATISTICAL_TABLE_URL = "http://192.168.110.22:8087/#/statistical-table?token=";
    @Autowired
    private IMenuEntryConfigService menuEntryConfigService;
    @Autowired
    private IUserService userService;
    @RequestMapping("/embedded/route-switch")
    public String routeSwitch(Model model) throws UnsupportedEncodingException {
        model.addAttribute("title", "路由切换页");
        model.addAttribute("iframeSrc", ROUTE_SWITCH_URL + generateCurrentUserToken());
        return EMBEDDED_IFRAME_VIEW;
    }
    @RequestMapping("/embedded/statistical-table")
    public String statisticalTable(Model model) throws UnsupportedEncodingException {
        model.addAttribute("title", "统计板");
        model.addAttribute("iframeSrc", STATISTICAL_TABLE_URL + generateCurrentUserToken());
        return EMBEDDED_IFRAME_VIEW;
    }
    @RequestMapping("/gunsApi/tCompany/entry_config_list")
    @ResponseBody
    public Object entryConfigList(HttpServletRequest request) {
        Integer companyId = getCurrentCompanyId(request);
        if (companyId == null) {
            return ResultUtil.tokenErr("登录信息无效");
        }
        return ResultUtil.success(getMenuEntryConfigList(companyId));
    }
    private List<MenuEntryConfig> getMenuEntryConfigList(Integer companyId) {
        return menuEntryConfigService.selectList(
                new EntityWrapper<MenuEntryConfig>().eq("openCityId", companyId).orderBy("id", true));
    }
    private Integer getCurrentCompanyId(HttpServletRequest request) {
        String token = getBearerToken(request);
        if (token == null) {
            return null;
        }
        String userId = JwtTokenUtil.getUsernameFromToken(token);
        User user = userService.selectById(userId);
        return user == null ? null : user.getObjectId();
    }
    private String getBearerToken(HttpServletRequest request) {
        String requestHeader = request.getHeader(JwtConstants.AUTH_HEADER);
        if (requestHeader != null && requestHeader.startsWith("Bearer ")) {
            return requestHeader.substring(7);
        }
        return null;
    }
    private String generateCurrentUserToken() throws UnsupportedEncodingException {
        ShiroUser user = ShiroKit.getUser();
        if (user == null || user.getId() == null) {
            return "";
        }
        String token = JwtTokenUtil.generateToken(user.getId().toString());
        return URLEncoder.encode(token, "UTF-8");
    }
}
ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/embedded/iframe.html
New file
@@ -0,0 +1,29 @@
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="renderer" content="webkit">
    <title>${title}</title>
    <style>
        html,
        body {
            width: 100%;
            height: 100%;
            margin: 0;
            overflow: hidden;
            background: #fff;
        }
        .embedded-frame {
            display: block;
            width: 100%;
            height: 100vh;
            border: 0;
        }
    </style>
</head>
<body>
<iframe class="embedded-frame" src="${iframeSrc}" frameborder="0" seamless></iframe>
</body>
</html>