liujie
6 天以前 f78a1ad6fd6c0d70f33dd2edc6170104e9ed6429
Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/QianYunTong
3个文件已修改
2个文件已添加
161 ■■■■ 已修改文件
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/OrderPosition.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/DriverPosition.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/DriverPosition.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java
@@ -35,25 +35,19 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.geo.Point;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.geo.GeoJsonPoint;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.http.*;
import org.springframework.util.Base64Utils;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.math.BigDecimal;
import java.security.SecureRandom;
import java.text.MessageFormat;
import java.text.SimpleDateFormat;
import java.util.*;
@@ -87,7 +81,7 @@
    @Autowired
    private ICarService carService;
    
    @Autowired
    @Resource
    private RegionMapper regionMapper;
    
    @Autowired
@@ -108,7 +102,6 @@
    @Autowired
    private GunsProperties gunsProperties;
    @Autowired
    private ICompanyService companyService;
@@ -118,9 +111,23 @@
    @Autowired
    private TDriverPromotionActivityService driverPromotionActivityService;
    @Autowired
    private QianYunTongConfig qianYunTongConfig;
    @Value("${wx.url}")
    private String ACCESS_TOKEN_URL;
    @Value("${wx.appletsAppSecret}")
    private String memberAppSecret;
    @Value("${wx.appletsAppid}")
    private String wxAppId;
    @Autowired
    private RestTemplate restTemplate;
    @Autowired
    private MongoTemplate mongoTemplate;
    
    /**
     * 获取短信验证码
@@ -599,17 +606,7 @@
        return ResultUtil.error("获取二维码失败");
    }
    @Value("${wx.url}")
    private String ACCESS_TOKEN_URL;
    @Value("${wx.appletsAppSecret}")
    private String memberAppSecret;
    @Value("${wx.appletsAppid}")
    private String wxAppId;
    @Autowired
    private RestTemplate restTemplate;
    public  String getAccessToken() {
@@ -733,6 +730,17 @@
    @PostMapping("/base/savePosition")
    public String savePosition(OrderPosition orderPosition){
        try {
            //将最新定位存储mongodb中
            GeoJsonPoint point = new GeoJsonPoint(new Point(Double.parseDouble(orderPosition.getLon()),
                    Double.parseDouble(orderPosition.getLat())));
            DriverPosition position = mongoTemplate.findOne(Query.query(Criteria.where("driverId")
                    .is(orderPosition.getDriverId())), DriverPosition.class);
            if(null == position){
                position = new DriverPosition();
            }
            position.setPoint(point);
            mongoTemplate.save(position);
            //处理业务上的功能
            orderPositionService.saveData(orderPosition);
            return JSON.toJSONString(ResultUtil.success());
        }catch (Exception e){
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/OrderPosition.java
@@ -2,6 +2,7 @@
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.data.mongodb.core.geo.GeoJsonPoint;
import org.springframework.data.mongodb.core.mapping.Document;
import java.util.Date;
@@ -47,4 +48,8 @@
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date insertTime;
    /**
     * 坐标点
     */
    private GeoJsonPoint point;
}
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/DriverPosition.java
New file
@@ -0,0 +1,22 @@
package com.stylefeng.guns.modular.system.warpper;
import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.geo.GeoJsonPoint;
import org.springframework.data.mongodb.core.mapping.Document;
/**
 * @author zhibing.pu
 * @Date 2025/7/27 10:07
 */
@Data
@Document(collection = "driver_position")
public class DriverPosition {
    @Id
    private Integer driverId;
    /**
     * 点位
     */
    private GeoJsonPoint point;
}
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java
@@ -1,25 +1,33 @@
package com.stylefeng.guns.modular.api;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.stylefeng.guns.modular.system.model.Driver;
import com.stylefeng.guns.modular.system.service.IDriverService;
import com.stylefeng.guns.modular.system.service.IOrderEvaluateService;
import com.stylefeng.guns.modular.system.util.ResultUtil;
import com.stylefeng.guns.modular.system.warpper.BaseWarpper;
import com.stylefeng.guns.modular.system.warpper.DriverInfoWarpper;
import com.stylefeng.guns.modular.system.warpper.DriverPosition;
import com.stylefeng.guns.modular.system.warpper.OrderEvaluateWarpper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.geo.GeoResult;
import org.springframework.data.geo.GeoResults;
import org.springframework.data.geo.Point;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.NearQuery;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
 * 司机控制器
@@ -34,6 +42,9 @@
    @Autowired
    private IOrderEvaluateService orderEvaluateService;
    @Autowired
    private MongoTemplate mongoTemplate;
@@ -117,6 +128,39 @@
            return ResultUtil.runErr();
        }
    }
    @ResponseBody
    @PostMapping("/base/driver/queryNearbyCar")
    @ApiOperation(value = "首页查询5公里范围内的车辆位置(黔云通)", tags = {"用户端-首页"}, notes = "")
    @ApiImplicitParams({
            @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){
        //mongodb查询附近5公里范围内的坐标
        NearQuery query = NearQuery.near(new Point(Double.parseDouble(lon), Double.parseDouble(lat)));
        query.query(Query.query(Criteria.where("point")));
        query.maxDistance(5000);
        GeoResults<DriverPosition> results = mongoTemplate.geoNear(query, DriverPosition.class);
        List<Map<String, Object>> collect = new ArrayList<>();
        if(collect.size() > 0){
            List<GeoResult<DriverPosition>> content1 = results.getContent();
            List<DriverPosition> positionList = content1.stream().map(GeoResult::getContent).collect(Collectors.toList());
            List<Integer> driverIds = positionList.stream().map(DriverPosition::getDriverId).collect(Collectors.toList());
            List<Driver> drivers = driverService.selectList(new EntityWrapper<Driver>().in("driverId", driverIds)
                    .eq("authState", 2).eq("state", 2));
            collect = drivers.stream().map(driver -> {
                Optional<DriverPosition> driverPosition = positionList.stream().filter(position -> position.getDriverId().equals(driver.getId())).findFirst();
                Map<String, Object> map = new HashMap<>();
                map.put("driverId", driver.getId());
                map.put("name", driver.getName());
                map.put("lot", driverPosition.isPresent() ? driverPosition.get().getPoint().getX() : "");
                map.put("lat", driverPosition.isPresent() ? driverPosition.get().getPoint().getY() : "");
                return map;
            }).collect(Collectors.toList());
        }
        return ResultUtil.success(collect);
    }
}
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/DriverPosition.java
New file
@@ -0,0 +1,22 @@
package com.stylefeng.guns.modular.system.warpper;
import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.geo.GeoJsonPoint;
import org.springframework.data.mongodb.core.mapping.Document;
/**
 * @author zhibing.pu
 * @Date 2025/7/27 10:07
 */
@Data
@Document(collection = "driver_position")
public class DriverPosition {
    @Id
    private Integer driverId;
    /**
     * 点位
     */
    private GeoJsonPoint point;
}