xuhy
2025-01-14 a50197bd1a429d903718e40b54685bb2a241bd4a
修改
26个文件已修改
7个文件已删除
4913 ■■■■■ 已修改文件
DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/TWithdrawalController.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TUseMoney.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITWithdrawalService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TWithdrawalServiceImpl.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GDFalconUtil.java 50 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GDMapGeocodingUtil.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/TraceTrack.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/dao/mapping/OrderTaxiMapper.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/IOrderTaxiService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java 47 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverOKTravel/guns-admin/src/main/resources/application.yml 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/taxi/SearchHttpAK.java 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/taxi/TOrderTaxiController.java 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderPositionBaiDu.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GDMapGeocodingUtil.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementOKTravel/guns-admin/src/main/resources/application.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/common/_container.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderTaxi/tOrderTaxi_edit.html 56 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderTaxi/tOrderTaxi_trajectory.html 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementOKTravel/guns-admin/src/main/webapp/static/js/track1.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementOKTravel/guns-admin/src/main/webapp/static/js/track2.js 3856 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementOKTravel/guns-admin/src/main/webapp/static/js/track3.js 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementOKTravel/guns-admin/src/main/webapp/static/modular/system/tOrderTaxi/tOrderTaxi_info.js 218 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GDMapGeocodingUtil.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PayMoneyUtil.java 50 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/TraceTrack.java 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/OrderInfoWarpper.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/dao/mapping/OrderTaxiMapper.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/warpper/OrderTaxiWarpper.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserOKTravel/guns-admin/src/main/resources/application.yml 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZuulOKTravel/src/main/resources/redis.properties 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/TWithdrawalController.java
@@ -64,8 +64,7 @@
            if(null == uid){
                return ResultUtil.tokenErr();
            }
            withdrawalService.addWithdrawal(receivePaymentName, receivePaymentAccount, withdrawalType, openBank, withdrawalMoney, uid);
            return ResultUtil.success();
            return withdrawalService.addWithdrawal(receivePaymentName, receivePaymentAccount, withdrawalType, openBank, withdrawalMoney, uid);
        }catch (Exception e){
            e.printStackTrace();
            return ResultUtil.runErr();
@@ -105,15 +104,17 @@
    @PostMapping("/queryList")
    @ApiOperation(value = "提现查看分页列表", tags = {"司机端-个人中心"}, notes = "")
    @ApiImplicitParams({
            @ApiImplicitParam(value = "pageNum", name = "pageNum", required = true, dataType = "int"),
            @ApiImplicitParam(value = "size", name = "size", required = true, dataType = "int"),
            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
    })
    public ResultUtil queryList(HttpServletRequest request){
    public ResultUtil queryList(Integer pageNum,Integer size,HttpServletRequest request){
        try {
            Integer uid = driverService.getUserIdFormRedis(request);
            if(null == uid){
                return ResultUtil.tokenErr();
            }
            Page<TWithdrawal> page = new PageFactory<TWithdrawal>().defaultPage();
            Page<TWithdrawal> page = new Page<>(pageNum,size);
            List<TWithdrawal> result = withdrawalService.queryList(page, uid);
            page.setRecords(result);
            return ResultUtil.success(super.packForBT(page));
@@ -142,7 +143,7 @@
            Driver driver = driverService.selectById(uid);
            Company company = companyService.selectById(driver.getCompanyId());
            Double driverRestriction = company.getDriverRestriction();
            if(driverRestriction>=driver.getBalance()){
            if(driverRestriction>driver.getBalance()){
                return ResultUtil.success(0);
            }else {
                return ResultUtil.success(1);
DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TUseMoney.java
@@ -33,14 +33,6 @@
     * 每笔订单扣除的使用费
     */
    private Double money;
    /**
     * 线上订单扣除比例%
     */
    private Double onlineMoney;
    /**
     * 司机接单余额限制
     */
    private Double balance;
    private Integer companyId;
    @Override
DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITWithdrawalService.java
@@ -23,7 +23,7 @@
     * @param withdrawalMoney
     * @param uid
     */
    void addWithdrawal(String receivePaymentName, String receivePaymentAccount, Integer withdrawalType, String openBank, BigDecimal withdrawalMoney, Integer uid);
    ResultUtil addWithdrawal(String receivePaymentName, String receivePaymentAccount, Integer withdrawalType, String openBank, BigDecimal withdrawalMoney, Integer uid);
    /**
     * 查询提现记录
DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java
@@ -1093,7 +1093,7 @@
            case 1:
                return orderPrivateCarService.queryMoneyInfo(orderId);
            case 2:
                break;
                return orderTaxiService.queryMoneyInfo(orderId);
        }
        return null;
    }
DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TWithdrawalServiceImpl.java
@@ -22,8 +22,22 @@
@Service
public class TWithdrawalServiceImpl extends ServiceImpl<TWithdrawalMapper, TWithdrawal> implements ITWithdrawalService {
    @Autowired
    private IDriverService driverService;
    @Override
    public void addWithdrawal(String receivePaymentName, String receivePaymentAccount, Integer withdrawalType, String openBank, BigDecimal withdrawalMoney, Integer uid) {
    public ResultUtil addWithdrawal(String receivePaymentName, String receivePaymentAccount, Integer withdrawalType, String openBank, BigDecimal withdrawalMoney, Integer uid) {
        // 查询司机余额是否足够
        Driver driver = driverService.selectById(uid);
        if(withdrawalMoney.compareTo(BigDecimal.valueOf(driver.getBalance())) > 0){
            return ResultUtil.error("提现金额大于余额");
        }
        driver.setBalance(BigDecimal.valueOf(driver.getBalance()).subtract(withdrawalMoney).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
        driverService.updateById(driver);
        TWithdrawal tWithdrawal = new TWithdrawal();
        tWithdrawal.setDriverId(uid);
        tWithdrawal.setReceivePaymentName(receivePaymentName);
@@ -34,6 +48,7 @@
        tWithdrawal.setStatus(1);
        tWithdrawal.setOpenBank(openBank);
        this.insert(tWithdrawal);
        return ResultUtil.success();
    }
    @Override
DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GDFalconUtil.java
@@ -3,7 +3,6 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.aliyun.oss.ServiceException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
@@ -24,7 +23,7 @@
@Component
public class GDFalconUtil implements ApplicationRunner {
    private String key = "94fb3bba5b141c701cbdcab72fe9d9cf";
    private String key = "5053ca611c0106e01a665ce7ab84ff26";
    @Autowired
    private RestTemplate restTemplate;
@@ -43,7 +42,7 @@
     */
    @Override
    public void run(ApplicationArguments args) throws Exception {
        this.init();
//        this.init();
    }
@@ -51,17 +50,17 @@
    /**
     * 初始化创建服务
     */
    public void init(){
        if(serverId == null){
            JSONArray jsonArray = this.selectServer();
            if(null == jsonArray){
                serverId = this.createServer("server");
            }else{
                serverId = jsonArray.getJSONObject(0).getString("sid");
            }
        }
    }
//    public void init(){
//        if(serverId == null){
//            JSONArray jsonArray = this.selectServer();
//            if(null == jsonArray){
//                serverId = this.createServer("server");
//            }else{
//                serverId = jsonArray.getJSONObject(0).getString("sid");
//            }
//        }
//
//    }
    /**
@@ -147,7 +146,7 @@
     * @return
     */
    public String selectTerminal(String name){
        String url = "https://tsapi.amap.com/v1/track/terminal/list?key=" + key + "&sid=" + serverId + "&name=" + name;
        String url = "https://tsapi.amap.com/v1/track/terminal/list?key=" + key + "&name=" + name;
        String forObject = restTemplate.getForObject(url, String.class);
        JSONObject jsonObject = JSON.parseObject(forObject);
        if(jsonObject.getIntValue("errcode") == 10000){
@@ -218,27 +217,6 @@
            System.err.println(jsonObject.getString("errmsg"));
        }
    }
    /**
     * 查询轨迹
     * @param tid       终端id
     */
    public String selectTrack(String tid, String trid,Integer page){
        String url = "https://tsapi.amap.com/v1/track/terminal/trsearch?key=" + key + "&sid=" + serverId + "&tid=" + tid + "&trid=" + trid + "&page=" + page + "&pagesize=" + 999;
//        String url = "https://tsapi.amap.com/v1/track/terminal/trsearch?key=" + key + "&sid=" + serverId + "&tid=" + tid + "&starttime=1708410190000" + "&endtime=1708419641315";
        //将请求头部和参数合成一个请求
        String s = restTemplate.getForObject(url , String.class);
        JSONObject jsonObject = JSON.parseObject(s);
        if(jsonObject.getIntValue("errcode") == 10000){
            return jsonObject.getString("data");
        }
        System.err.println(jsonObject.getString("errmsg"));
        if(jsonObject.getIntValue("errcode") != 10000){
            throw new ServiceException(jsonObject.getString("errmsg"));
        }
        return null;
    }
//
DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GDMapGeocodingUtil.java
@@ -20,7 +20,7 @@
@Component
public class GDMapGeocodingUtil {
    private String key = "WQhfsluNzEeUHUxoH4jc4JiCQOXw4Mnx";
    private String key = "3491db7ed190e5e4757fcb838e012130";
    @Autowired
    private RestTemplate restTemplate;
@@ -31,26 +31,25 @@
    /**
     * 将行政区域名称转化为坐标
     *
     * @param province
     * @param city
     * @param county
     * @param address
     * @return
     */
    public Map<String, Object> geocoding(String province, String city, String county, String address) {
    public Map<String, Object> geocoding(String province, String city, String county, String address){
        Map<String, Object> map = new HashMap<>();
        if (ToolUtil.isEmpty(province)) {
        if(ToolUtil.isEmpty(province)){
            map.put("status", -1);
            map.put("data", "省不能为空");
            return map;
        }
        if ((ToolUtil.isEmpty(city) && ToolUtil.isNotEmpty(county)) || (ToolUtil.isEmpty(city) && ToolUtil.isNotEmpty(address))) {
        if((ToolUtil.isEmpty(city) && ToolUtil.isNotEmpty(county)) || (ToolUtil.isEmpty(city) && ToolUtil.isNotEmpty(address))){
            map.put("status", -1);
            map.put("data", "市不能为空");
            return map;
        }
        if ((ToolUtil.isEmpty(county) && ToolUtil.isNotEmpty(address))) {
        if((ToolUtil.isEmpty(county) && ToolUtil.isNotEmpty(address))){
            map.put("status", -1);
            map.put("data", "县/区不能为空");
            return map;
@@ -65,9 +64,9 @@
//        gdInterfaceService.saveData("https://restapi.amap.com/v3/geocode/geo", "行政区域转经纬度");
        if (status.equals("1")) {
        if(status.equals("1")){
            JSONArray geocodes = jsonObject.getJSONArray("geocodes");
            for (int i = 0; i < geocodes.size(); i++) {
            for(int i = 0; i < geocodes.size(); i++){
                String location = geocodes.getJSONObject(i).getString("location");
                list.add(location);
            }
@@ -78,42 +77,25 @@
    }
    public Map<String, Object> geocoding(String address) {
        Map<String, Object> map = new HashMap<>();
        String url = "https://api.map.baidu.com/geocoding/v3/?address"+ address+"&output=json&ak=" +key+"&ret_coordtype="+"bd09ll";
        String forObject = restTemplate.getForObject(url, String.class);
        JSONObject jsonObject = JSON.parseObject(forObject);
        String status = jsonObject.getString("status");
        List<String> list = new ArrayList<>();
        if (status.equals("0")) {
            JSONObject result = jsonObject.getJSONObject("result");
            JSONObject location = result.getJSONObject("location");
            String lng = location.getString("lng");
            String lat = location.getString("lat");
            list.add(lat + "," + lng);
        }
        map.put("status", 0);
        map.put("data", list);
        return map;
    }
    /**
     * 根据经纬度获取行政区域信息
     *
     * @param lon
     * @param lan
     * @return
     * @throws Exception
     */
    public Map<String, String> geocode(String lon, String lan) throws Exception {
        String url = "https://api.map.baidu.com/reverse_geocoding/v3/?ak=" + key + "&output=json&coordtype=bd09ll" + "&location=" + lan + "," + lon;
    public Map<String, String> geocode(String lon, String lan) throws Exception{
        String url = "https://restapi.amap.com/v3/geocode/regeo?key=" + key + "&location=" + lon + "," + lan;
        String forObject = restTemplate.getForObject(url, String.class);
        JSONObject jsonObject = JSON.parseObject(forObject);
        Map<String, String> map = new HashMap<>();
        if (jsonObject.getString("status").equals("0")) {
            JSONObject result = jsonObject.getJSONObject("result");
            JSONObject addressComponent = result.getJSONObject("addressComponent");
            String address = result.getString("formatted_address");
//        gdInterfaceService.saveData("https://restapi.amap.com/v3/geocode/regeo", "经纬度转行政区域");
        if(jsonObject.getString("status").equals("1")){
            JSONObject regeocode = jsonObject.getJSONObject("regeocode");
            JSONObject addressComponent = regeocode.getJSONObject("addressComponent");
            String address = regeocode.getString("formatted_address");
            map.put("address", address);
            String code = addressComponent.getString("adcode");
            String province = addressComponent.getString("province");
@@ -129,4 +111,3 @@
        return map;
    }
}
DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/TraceTrack.java
File was deleted
DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/dao/mapping/OrderTaxiMapper.xml
@@ -82,6 +82,7 @@
            tipMoney as redMoney,
            state as state,
            orderType as reservation,
            payManner as payManner,
            driverId as driverId
            from t_order_taxi where 1 = 1
            <if test="null != driverId">
@@ -101,6 +102,7 @@
            tipMoney as redMoney,
            state as state,
            orderType as reservation,
            payManner as payManner,
            driverId as driverId
            from t_order_taxi where 1 = 1
            <if test="null != driverId">
@@ -119,6 +121,7 @@
            tipMoney as redMoney,
            state as state,
            orderType as reservation,
            payManner as payManner,
            driverId as driverId
            from t_order_taxi where 1 = 1
            <if test="null != driverId">
DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/IOrderTaxiService.java
@@ -153,4 +153,6 @@
     * @throws Exception
     */
    List<OrderTaxi> taskMidAxbUnBindSend() throws Exception;
    Map<String, Object> queryMoneyInfo(Integer orderId) throws Exception;
}
DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java
@@ -499,7 +499,7 @@
        orderTaxi.setPayManner(type);
        if(type == 2){//其他支付,不需要操作,直接完成订单
            orderTaxi = this.setMoney1(orderTaxi, travelFee, parkingFee, crossingFee);
            orderTaxi.setState(8);
            orderTaxi.setState(7);
        }else{
            orderTaxi = this.setMoney2(orderTaxi, parkingFee, crossingFee);
            orderTaxi.setState(7);
@@ -769,6 +769,39 @@
    public List<OrderTaxi> taskMidAxbUnBindSend() throws Exception {
        return orderTaxiMapper.taskMidAxbUnBindSend();
    }
    @Override
    public Map<String, Object> queryMoneyInfo(Integer orderId) throws Exception {
        OrderTaxi orderTaxi = this.selectById(orderId);
        if(orderTaxi.getState() == 5 || orderTaxi.getState() == 6){//服务中的时候获取实时费用数据
            if(orderTaxi.getPayManner() == 2){//其他支付,不需要操作,直接完成订单
                orderTaxi = this.setMoney1(orderTaxi, 0D, 0D, 0D);
            }else{
                orderTaxi = this.setMoney2(orderTaxi, 0D, 0D);
            }
        }
        Map<String, Object> map = new HashMap<>();
        map.put("orderMoney", orderTaxi.getOrderMoney());//订单金额
        map.put("startMileage", orderTaxi.getStartMileage());//起步价
        map.put("startMoney", orderTaxi.getStartMoney());//起步价
        map.put("mileageKilometers", orderTaxi.getMileageKilometers());//里程费
        map.put("mileageMoney", orderTaxi.getMileageMoney());//里程费
        map.put("duration", orderTaxi.getDuration());//时长费
        map.put("durationMoney", orderTaxi.getDurationMoney());//时长费
        map.put("wait", orderTaxi.getWait());//等待费
        map.put("waitMoney", orderTaxi.getWaitMoney());//等待费
        map.put("longDistance", orderTaxi.getLongDistance());//远途费
        map.put("longDistanceMoney", orderTaxi.getLongDistanceMoney());//远途费
        map.put("parkMoney", orderTaxi.getParkMoney());//停车费
        map.put("roadTollMoney", orderTaxi.getRoadTollMoney());//过路费
        map.put("redPacketMoney", orderTaxi.getRedPacketMoney());//红包抵扣金额
        map.put("couponMoney", orderTaxi.getCouponMoney());//优惠券抵扣金额
        map.put("discountMoney", orderTaxi.getDiscountMoney());//折扣抵扣金额
        map.put("discount", orderTaxi.getDiscount());//折扣
        return map;
    }
    /**
     * 计算价格
     * @param orderTaxi
@@ -887,8 +920,8 @@
//            OrderTaxi.setLongDistance(new BigDecimal((d > rule.getDouble("num6")) ? d - rule.getDouble("num6") : 0).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
            OrderTaxi.setLongDistance(new BigDecimal((d > rule.getDouble("num6")) ? d - rule.getDouble("num6") : 0).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
            OrderTaxi.setLongDistanceMoney(new BigDecimal(yt1 + yt2 + yt3).setScale(2, BigDecimal.ROUND_DOWN).doubleValue());//远途费
            OrderTaxi.setParkMoney(parkingFee);//停车费
            OrderTaxi.setRoadTollMoney(crossingFee);//过路费
            OrderTaxi.setParkMoney(Objects.isNull(parkingFee)?0D:parkingFee);//停车费
            OrderTaxi.setRoadTollMoney(Objects.isNull(crossingFee)?0D:crossingFee);//过路费
            OrderTaxi.setRedPacketMoney(0D);//红包抵扣
            OrderTaxi.setCouponMoney(0D);//优惠券抵扣
            OrderTaxi.setDiscount(0D);//优惠抵扣
@@ -945,8 +978,8 @@
//                OrderTaxi.setLongDistance(new BigDecimal((d > rule.getDouble("num6")) ? d - rule.getDouble("num6") : 0).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                OrderTaxi.setLongDistance(new BigDecimal((d > rule.getDouble("num6")) ? d - rule.getDouble("num6") : 0).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                OrderTaxi.setLongDistanceMoney(new BigDecimal(yt1 + yt2 + yt3).setScale(2, BigDecimal.ROUND_DOWN).doubleValue());//远途费
                OrderTaxi.setParkMoney(parkingFee);//停车费
                OrderTaxi.setRoadTollMoney(crossingFee);//过路费
                OrderTaxi.setParkMoney(Objects.isNull(parkingFee)?0D:parkingFee);//停车费
                OrderTaxi.setRoadTollMoney(Objects.isNull(crossingFee)?0D:crossingFee);//过路费
                OrderTaxi.setRedPacketMoney(0D);//红包抵扣
                OrderTaxi.setCouponMoney(0D);//优惠券抵扣
                OrderTaxi.setDiscount(0D);//优惠抵扣
@@ -989,8 +1022,8 @@
//                OrderTaxi.setLongDistance(new BigDecimal((d > rule.getDouble("num6")) ? d - rule.getDouble("num6") : 0).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                OrderTaxi.setLongDistance(new BigDecimal((d > rule.getDouble("num6")) ? d - rule.getDouble("num6") : 0).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                OrderTaxi.setLongDistanceMoney(new BigDecimal(yt1 + yt2 + yt3).setScale(2, BigDecimal.ROUND_DOWN).doubleValue());//远途费
                OrderTaxi.setParkMoney(parkingFee);//停车费
                OrderTaxi.setRoadTollMoney(crossingFee);//过路费
                OrderTaxi.setParkMoney(Objects.isNull(parkingFee)?0D:parkingFee);//停车费
                OrderTaxi.setRoadTollMoney(Objects.isNull(crossingFee)?0D:crossingFee);//过路费
                OrderTaxi.setRedPacketMoney(0D);//红包抵扣
                OrderTaxi.setCouponMoney(0D);//优惠券抵扣
                OrderTaxi.setDiscount(0D);//优惠抵扣
DriverOKTravel/guns-admin/src/main/resources/application.yml
@@ -51,12 +51,12 @@
spring:
  datasource:
#    url: jdbc:mysql://127.0.0.1:3306/ziang?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai
#    username: root
#    password: fVa%egqp_1du
    url: jdbc:mysql://127.0.0.1:10633/xianning?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    url: jdbc:mysql://127.0.0.1:3306/xianning?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    username: root
    password: XianNing@2024!
    password: 123456
#    url: jdbc:mysql://127.0.0.1:10633/xianning?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
#    username: root
#    password: XianNing@2024!
    db-name: guns #用来搜集数据库的所有表
    filters: wall,mergeStat
ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/taxi/SearchHttpAK.java
File was deleted
ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/taxi/TOrderTaxiController.java
@@ -113,24 +113,13 @@
                .eq("userType", 6)
                .eq("payState", 2)
                .last("LIMIT 1"));
        if (tPubTransactionDetails==null){
            model.addAttribute("companyMoney","");
            model.addAttribute("driverMoney","");
        }else{
            model.addAttribute("companyMoney",tPubTransactionDetails.getMoney());
            model.addAttribute("driverMoney",new BigDecimal(tOrderTaxi.get("payMoney").toString()).subtract(tPubTransactionDetails.getMoney()));
        model.addAttribute("companyMoney",tPubTransactionDetails.getMoney());
        model.addAttribute("driverMoney",new BigDecimal(tOrderTaxi.get("payMoney").toString()).subtract(tPubTransactionDetails.getMoney()));
        if(tOrderTaxi.get("payManner").equals("1")){
            model.addAttribute("payMannerStr","线上收款");
        }else {
            model.addAttribute("payMannerStr","计费打表");
        }
        if (tOrderTaxi.get("payManner")!=null){
            if(tOrderTaxi.get("payManner").equals("1")){
                model.addAttribute("payMannerStr","线上收款");
            }else {
                model.addAttribute("payMannerStr","计费打表");
            }
        }
        LogObjectHolder.me().set(tOrderTaxi);
        return PREFIX + "tOrderTaxi_edit.html";
    }
@@ -202,9 +191,6 @@
     * @param orderDetailId
     * @return
     */
    public static String URL = "https://yingyan.baidu.com/api/v3/track/gettrack?";
    public static String AK = "WQhfsluNzEeUHUxoH4jc4JiCQOXw4Mnx";
    @ResponseBody
    @RequestMapping(value = "/getOrderTrack", method = RequestMethod.POST)
    public ResultUtil getOrderTrack(String orderDetailId){
ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderPositionBaiDu.java
File was deleted
ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GDMapGeocodingUtil.java
@@ -45,18 +45,21 @@
            return map;
        }
        String url = "https://api.map.baidu.com/geocoding/v3/"+"?output=json&ak=" +key+"&ret_coordtype="+"bd09ll";
        String url = "https://restapi.amap.com/v3/geocode/geo?key=" + key + "&output=JSON";
        url += "&address=" + (ToolUtil.isNotEmpty(province) ? province : "") + (ToolUtil.isNotEmpty(city) ? city : "") + (ToolUtil.isNotEmpty(county) ? county : "") + address;
        String forObject = restTemplate.getForObject(url, String.class);
        JSONObject jsonObject = JSON.parseObject(forObject);
        String status = jsonObject.getString("status");
        List<String> list = new ArrayList<>();
        if(status.equals("0")){
            JSONObject result = jsonObject.getJSONObject("result");
            JSONObject location = result.getJSONObject("location");
            String lng = location.getString("lng");
            String lat = location.getString("lat");
            list.add(lat+","+lng);
        gdInterfaceService.saveData("https://restapi.amap.com/v3/geocode/geo", "行政区域转经纬度");
        if(status.equals("1")){
            JSONArray geocodes = jsonObject.getJSONArray("geocodes");
            for(int i = 0; i < geocodes.size(); i++){
                String location = geocodes.getJSONObject(i).getString("location");
                list.add(location);
            }
        }
        map.put("status", 0);
        map.put("data", list);
@@ -67,17 +70,20 @@
    public Map<String, Object> geocoding(String address){
        Map<String, Object> map = new HashMap<>();
        String url = "https://api.map.baidu.com/geocoding/v3/?address"+ address+"&output=json&ak=" +key+"&ret_coordtype="+"bd09ll";
        String url = "https://restapi.amap.com/v3/geocode/geo?key=" + key + "&output=JSON&address=" + address;
        String forObject = restTemplate.getForObject(url, String.class);
        JSONObject jsonObject = JSON.parseObject(forObject);
        String status = jsonObject.getString("status");
        List<String> list = new ArrayList<>();
        if(status.equals("0")){
            JSONObject result = jsonObject.getJSONObject("result");
            JSONObject location = result.getJSONObject("location");
            String lng = location.getString("lng");
            String lat = location.getString("lat");
            list.add(lat+","+lng);
        gdInterfaceService.saveData("https://restapi.amap.com/v3/geocode/geo", "行政区域转经纬度");
        if(status.equals("1")){
            JSONArray geocodes = jsonObject.getJSONArray("geocodes");
            for(int i = 0; i < geocodes.size(); i++){
                String location = geocodes.getJSONObject(i).getString("location");
                list.add(location);
            }
        }
        map.put("status", 0);
        map.put("data", list);
@@ -94,17 +100,17 @@
     * @throws Exception
     */
    public Map<String, String> geocode(String lon, String lan) throws Exception{
        String url = "https://api.map.baidu.com/reverse_geocoding/v3/?ak=" + key + "&output=json&coordtype=bd09ll" + "&location=" + lan + "," + lon;
        String url = "https://restapi.amap.com/v3/geocode/regeo?key=" + key + "&location=" + lon + "," + lan;
        String forObject = restTemplate.getForObject(url, String.class);
        JSONObject jsonObject = JSON.parseObject(forObject);
        Map<String, String> map = new HashMap<>();
        gdInterfaceService.saveData("https://api.map.baidu.com/reverse_geocoding", "经纬度转行政区域");
        gdInterfaceService.saveData("https://restapi.amap.com/v3/geocode/regeo", "经纬度转行政区域");
        if (jsonObject.getString("status").equals("0")) {
            JSONObject result = jsonObject.getJSONObject("result");
            JSONObject addressComponent = result.getJSONObject("addressComponent");
            String address = result.getString("formatted_address");
        if(jsonObject.getString("status").equals("1")){
            JSONObject regeocode = jsonObject.getJSONObject("regeocode");
            JSONObject addressComponent = regeocode.getJSONObject("addressComponent");
            String address = regeocode.getString("formatted_address");
            map.put("address", address);
            String code = addressComponent.getString("adcode");
            String province = addressComponent.getString("province");
ManagementOKTravel/guns-admin/src/main/resources/application.yml
@@ -67,7 +67,7 @@
#    url: jdbc:mysql://127.0.0.1:3306/ziang?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai
#    username: root
#    password: fVa%egqp_1du
    url: jdbc:mysql://192.168.110.34:3306/xianning?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    url: jdbc:mysql://127.0.0.1:3306/xianning?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    username: root
    password: 123456
    db-name: guns #用来搜集数据库的所有表
ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/common/_container.html
@@ -6,14 +6,8 @@
    <meta name="renderer" content="webkit"/><!-- 让360浏览器默认选择webkit内核 -->
    <!--地图-->
<!--    <script type="text/javascript" src="https://api.map.baidu.com/api?v=1.0&ak=3mHKIXMArjgIkgADzOlTYp4XssNSNkwr"></script>-->
<!--    <script type="text/javascript" src="https://api.map.baidu.com/api?v=1.0&ak=3mHKIXMArjgIkgADzOlTYp4XssNSNkwr"></script>-->
    <!--    <script src="https://webapi.amap.com/maps?v=1.4.8&key=e17d799b2506d05faf7f88320a266803"></script>-->
    <script src="https://webapi.amap.com/maps?v=1.4.8&key=e17d799b2506d05faf7f88320a266803"></script>
    <!--<script type="text/javascript" src="https://api.map.baidu.com/api?v=2.0&ak=IRKL4FLGKZUFr6T3gFk3t9X6kKarKu1K"></script>-->
<!--    <script src="https://api.map.baidu.com/api?v=3.0&ak=3mHKIXMArjgIkgADzOlTYp4XssNSNkwr"></script>-->
<!--    <script src="https://api.map.baidu.com/api?v=1.0&ak=3mHKIXMArjgIkgADzOlTYp4XssNSNkwr"></script>-->
<!--    <script src="${ctxPath}/static/js/track1.js"></script>-->
    <!-- 全局css -->
    <link rel="shortcut icon" href="${ctxPath}/static/img/logo.jpg">
ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderTaxi/tOrderTaxi_edit.html
@@ -1,49 +1,17 @@
@layout("/common/_container.html"){
<style type="text/css">
    body,
    html {
        width: 100%;
        height: 100%;
        margin: 0;
    }
    #allmap {
    html, body, #container {
        height: 100%;
        width: 100%;
    }
    ul li {
        list-style: none;
    .input-card .btn{
        margin-right: 1.2rem;
        width: 9rem;
    }
    .btn-wrap {
        z-index: 999;
        position: fixed;
        bottom: 3.5rem;
        margin-left: 3rem;
        padding: 1rem 1rem;
        border-radius: .25rem;
        background-color: #fff;
        box-shadow: 0 2px 6px 0 rgba(27, 142, 236, 0.5);
    }
    .btn {
        width: 75px;
        height: 30px;
        float: left;
        background-color: #fff;
        color: rgba(27, 142, 236, 1);
        font-size: 14px;
        border: 1px solid rgba(27, 142, 236, 1);
        border-radius: 5px;
        margin: 0 5px;
        text-align: center;
        line-height: 30px;
    }
    .btn:hover {
        background-color: rgba(27, 142, 236, 0.8);
        color: #fff;
    .input-card .btn:last-child{
        margin-right: 0;
    }
</style>
<div class="ibox float-e-margins">
@@ -108,7 +76,7 @@
            </div>
            <div class="row">
                <div class="col-sm-10">
                    <div class="form-horizontal" id="allmap" style="margin-left: 50px;width: 100%; height: 500px;"></div>
                    <div class="form-horizontal" id="container" style="margin-left: 50px;width: 100%; height: 500px;"></div>
                    <div class="input-card" style="margin-left: 50px;">
                        <h4>轨迹回放控制</h4>
                        <div class="input-item">
@@ -125,13 +93,11 @@
            </div>
        </div>
    </div>
</div>
<script type="text/javascript" src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=t5pcBZB5G4D11G9MzHq8Kik7jqzlTrAL"></script>
<script src="${ctxPath}/static/js/track1.js"></script>
<script src="${ctxPath}/static/js/track2.js"></script>
<script src="${ctxPath}/static/js/track3.js"></script>
<script type="text/javascript" src="//mapopen-pub-jsapi.bj.bcebos.com/jsapiGlgeo/track.js"></script>
<script src="https://a.amap.com/jsapi_demos/static/demo-center/js/demoutils.js"></script>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=3mHKIXMArjgIkgADzOlTYp4XssNSNkwr"></script>
<script src="https://cache.amap.com/lbs/static/addToolbar.js"></script>
<script src="${ctxPath}/static/modular/system/tOrderTaxi/tOrderTaxi_info.js"></script>
@}
ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderTaxi/tOrderTaxi_trajectory.html
@@ -23,9 +23,9 @@
                    <h2 class="h3Class" style="font-weight: 700;">线路轨迹</h2>
                </div>
            </div>
            <div class="row">
            <div class="row" style="margin-top: 30px;">
                <div class="col-sm-10">
                    <div class="form-horizontal" id="allmap" style="margin-left: 50px;width: 100%; height: 500px;"></div>
                    <div class="form-horizontal" id="container" style="margin-left: 50px;width: 100%; height: 500px;"></div>
                    <div class="input-card" style="margin-left: 50px;">
                        <h4>轨迹回放控制</h4>
                        <div class="input-item">
@@ -40,13 +40,13 @@
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script type="text/javascript" src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=t5pcBZB5G4D11G9MzHq8Kik7jqzlTrAL"></script>
<script src="${ctxPath}/static/js/track1.js"></script>
<script src="${ctxPath}/static/js/track2.js"></script>
<script src="${ctxPath}/static/js/track3.js"></script>
<script type="text/javascript" src="//mapopen-pub-jsapi.bj.bcebos.com/jsapiGlgeo/track.js"></script>
<script src="https://a.amap.com/jsapi_demos/static/demo-center/js/demoutils.js"></script>
<script src="https://webapi.amap.com/maps?v=1.4.8&key=e17d799b2506d05faf7f88320a266803"></script>
<script src="https://cache.amap.com/lbs/static/addToolbar.js"></script>
<script src="${ctxPath}/static/modular/system/tOrderTaxi/tOrderTaxi_info.js"></script>
@}
ManagementOKTravel/guns-admin/src/main/webapp/static/js/track1.js
File was deleted
ManagementOKTravel/guns-admin/src/main/webapp/static/js/track2.js
File was deleted
ManagementOKTravel/guns-admin/src/main/webapp/static/js/track3.js
File was deleted
ManagementOKTravel/guns-admin/src/main/webapp/static/modular/system/tOrderTaxi/tOrderTaxi_info.js
@@ -125,157 +125,11 @@
    ajax.start();
}
var map = new BMapGL.Map('allmap', {
    style: 'grayed-out',
    displayOptions: {
        indoor: false,
        poiText: false,
        poiIcon: false,
        building: false,
    }
var map = new AMap.Map("container", {
    resizeEnable: true,
    zoom: 14
});
var point = new BMapGL.Point(demo_data[0][0], demo_data[0][1]);
map.centerAndZoom(point, 18);
map.enableScrollWheelZoom(true);
map.setTilt(35);
var track = new Track.View(map, {
    lineLayerOptions: {
        style: {
            strokeWeight: 8,
            strokeLineJoin: 'round',
            strokeLineCap: 'round'
        },
    }
});
var trackData = [];
var colorOffset = [];
function orderTrack(data) {
    for(var item in data){
        var point = new BMapGL.Point(data[item].lon, data[item].lat);
        var trackPoint = new Track.TrackPoint(point);
        trackData.push(trackPoint);
        // 不同速度区间对应颜色
        var choose = [0.9, 0.5, 0.1];
        var color = choose[Math.floor(Math.random() * choose.length)];
        colorOffset.push(color);
    }
}
var startMarker = new BMapGL.Marker(trackData[0].getPoint(), {
    icon: new BMapGL.Icon('https://mapopen-pub-jsapi.bj.bcebos.com/jsapiGlgeo/img/start.png', new BMapGL.Size(25, 40)),
    offset: new BMapGL.Size(0, -16),
});
map.addOverlay(startMarker);
var endMarker = new BMapGL.Marker(trackData[trackData.length-1].getPoint(), {
    icon: new BMapGL.Icon('https://mapopen-pub-jsapi.bj.bcebos.com/jsapiGlgeo/img/end.png', new BMapGL.Size(25, 40)),
    offset: new BMapGL.Size(0, -16),
});
map.addOverlay(endMarker);
var duration = 60000;
var step = duration / trackData.length;
var trackRoad = new Track.LiveTrack({
    // visible: false,
    duration: step,
    linearTexture: [[0, '#f45e0c'], [0.5, '#f6cd0e'], [1, '#2ad61d']],
    guideStyle: {
        style:{
            traceDisappear: false,
            traceStart: true,
            sequence: true,
            marginLength: 32,
            arrowColor: '#fff',
            strokeColor: 'rgba(27, 142, 236, 1)',
            strokeTextureUrl: 'https://mapopen-pub-jsapi.bj.bcebos.com/jsapiGlgeo/img/down.png',
            strokeTextureWidth: 64,
            strokeTextureHeight: 32,
        }
    },
});
trackRoad.setGuidTrackPath(trackData);
trackRoad.on(Track.LineCodes.GUIDE_STATUS, (e) => {
    if (e.status === Track.GuidCodes.ADD_TO_MAP) {
        var guidTrack = trackRoad.getGuidTrack();
        guidTrack.on(Track.LineCodes.STATUS, (status) => {
            switch (status) {
                case Track.StatusCodes.FINISH:
                    var box = trackRoad.getBBox();
                    if(box){
                        var bounds = [new BMapGL.Point(box[0], box[1]), new BMapGL.Point(box[2], box[3])];
                        map.setViewport(bounds);
                    }
                    break;
                default:
                    break;
            }
        });
    }
});
var movePoint = new Track.ModelPoint({ point: trackData[0].getPoint(), style:{
        url: 'https://mapopen-pub-jsapi.bj.bcebos.com/jsapiGlgeo/img/bus.glb',
        scale: 9,
        level: 18,
        rotationX: 90,
        rotationY: 90,
        rotationZ: 0
    } });
movePoint.setRotation(trackRoad.getGuidTrack().getStepInfoByIndex(0).angle);
trackRoad.setMovePoint(movePoint);
track.addTrackLine(trackRoad);
track.focusTrack(trackRoad);
var ani;
var start = null;
var index = 0;
var finishIndex = 0;
function startAnimation(timestamp) {
    if (!start) start = timestamp;
    var progress = timestamp - start;
    var next = step * (index - finishIndex);
    if(progress > next){
        if(index<trackData.length){
            movePoint.moveTo(trackData[index]);
            var obj = trackRoad.getGuidTrack().getStepInfoByIndex(index);
            trackRoad.setGradientColors(colorOffset.slice(0,index+1));
            index++;
        }else{
            pauseAnimation();
        }
    }
    ani = requestAnimationFrame(startAnimation);
}
function stopAnimation() {
    pauseAnimation();
    index = 0;
    finishIndex = index;
    start = null;
    trackRoad.clearTrackPoint();
    movePoint.setPoint(trackData[0].getPoint());
    movePoint.setRotation(trackRoad.getGuidTrack().getStepInfoByIndex(0).angle);
}
function pauseAnimation() {
    cancelAnimationFrame(ani);
    finishIndex = index;
    start = null;
}
function resumeAnimation() {
    startAnimation();
}
$(function() {
    $('#orderType').on('change', function () {
        if($(this).val() == 1){
@@ -311,4 +165,68 @@
    });
}
var marker, lineArr = [];
function orderTrack(data) {
    for(var i in data){
        var waypoints = [];
        var lon = parseFloat(data[i].lon);
        var lat = parseFloat(data[i].lat);
        waypoints.push(lon);
        waypoints.push(lat);
        lineArr.push(waypoints);
    }
    marker = new AMap.Marker({
        map: map,
        position: lineArr[0],
        icon: "https://webapi.amap.com/images/car.png",
        offset: new AMap.Pixel(-26, -13),
        autoRotation: true,
        angle:-90,
    });
    // 绘制轨迹
    var polyline = new AMap.Polyline({
        map: map,
        path: lineArr,
        showDir:true,
        strokeColor: "#28F",  //线颜色
        // strokeOpacity: 1,     //线透明度
        strokeWeight: 6,      //线宽
        // strokeStyle: "solid"  //线样式
    });
    var passedPolyline = new AMap.Polyline({
        map: map,
        // path: lineArr,
        strokeColor: "#AF5",  //线颜色
        // strokeOpacity: 1,     //线透明度
        strokeWeight: 6,      //线宽
        // strokeStyle: "solid"  //线样式
    });
    marker.on('moving', function (e) {
        passedPolyline.setPath(e.passedPath);
    });
    map.setFitView();
}
function startAnimation () {
    marker.moveAlong(lineArr, 200);
}
function pauseAnimation () {
    marker.pauseMove();
}
function resumeAnimation () {
    marker.resumeMove();
}
function stopAnimation () {
    marker.stopMove();
}
UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GDMapGeocodingUtil.java
@@ -20,7 +20,7 @@
@Component
public class GDMapGeocodingUtil {
    private String key = "WQhfsluNzEeUHUxoH4jc4JiCQOXw4Mnx";
    private String key = "9de4f857805bc84051aa13adeb2c44c8";
    @Autowired
    private RestTemplate restTemplate;
@@ -80,22 +80,25 @@
    public Map<String, Object> geocoding(String address){
        Map<String, Object> map = new HashMap<>();
        String url = "https://api.map.baidu.com/geocoding/v3/?address"+ address+"&output=json&ak=" +key+"&ret_coordtype="+"bd09ll";
        String url = "https://restapi.amap.com/v3/geocode/geo?key=" + key + "&output=JSON&address=" + address;
        String forObject = restTemplate.getForObject(url, String.class);
        JSONObject jsonObject = JSON.parseObject(forObject);
        String status = jsonObject.getString("status");
        List<String> list = new ArrayList<>();
        if(status.equals("0")){
            JSONObject result = jsonObject.getJSONObject("result");
            JSONObject location = result.getJSONObject("location");
            String lng = location.getString("lng");
            String lat = location.getString("lat");
            list.add(lat+","+lng);
        if(status.equals("1")){
            JSONArray geocodes = jsonObject.getJSONArray("geocodes");
            for(int i = 0; i < geocodes.size(); i++){
                String location = geocodes.getJSONObject(i).getString("location");
                list.add(location);
            }
        }
        map.put("status", 0);
        map.put("data", list);
        return map;
    }
    /**
     * 根据经纬度获取行政区域信息
     * @param lon
@@ -104,14 +107,17 @@
     * @throws Exception
     */
    public Map<String, String> geocode(String lon, String lan) throws Exception{
        String url = "https://api.map.baidu.com/reverse_geocoding/v3/?ak=" + key +"&output=json&coordtype=bd09ll"+"&location=" + lan + "," + lon;
        String url = "https://restapi.amap.com/v3/geocode/regeo?key=" + key + "&location=" + lon + "," + lan;
        String forObject = restTemplate.getForObject(url, String.class);
        JSONObject jsonObject = JSON.parseObject(forObject);
        Map<String, String> map = new HashMap<>();
        if(jsonObject.getString("status").equals("0")){
            JSONObject result = jsonObject.getJSONObject("result");
            JSONObject addressComponent = result.getJSONObject("addressComponent");
            String address = result.getString("formatted_address");
//        gdInterfaceService.saveData("https://restapi.amap.com/v3/geocode/regeo", "经纬度转行政区域");
        if(jsonObject.getString("status").equals("1")){
            JSONObject regeocode = jsonObject.getJSONObject("regeocode");
            JSONObject addressComponent = regeocode.getJSONObject("addressComponent");
            String address = regeocode.getString("formatted_address");
            map.put("address", address);
            String code = addressComponent.getString("adcode");
            String province = addressComponent.getString("province");
UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PayMoneyUtil.java
@@ -64,6 +64,9 @@
    @Value("${wx.appid}")
    private String appid;//微信appid
    @Value("${wx.appletsAppid}")
    private String appletsAppid;//微信小程序appid
    @Value("${wx.mchId}")
    private String mchId;//微信商户号
@@ -221,7 +224,7 @@
     * @param tradeType     交易类型
     * @return
     */
    public ResultUtil weixinpay(String body, String attach, String out_trade_no, String total_fee, String notify_url, String tradeType) throws Exception{
    public ResultUtil weixinpay(String body, String attach, String out_trade_no, String total_fee, String notify_url, String tradeType, String openId) throws Exception{
        int i = new BigDecimal(total_fee).multiply(new BigDecimal("100")).intValue();
        String hostAddress = null;
        try {
@@ -231,7 +234,7 @@
        }
        String nonce_str = UUIDUtil.getRandomCode(16);
        Map<String, Object> map = new HashMap<>();
        map.put("appid", appid);
        map.put("appid", "APP".equals(tradeType) ? appid : appletsAppid);
        map.put("mch_id", mchId);
        map.put("nonce_str", nonce_str);
        map.put("body", body);
@@ -241,6 +244,9 @@
        map.put("spbill_create_ip", hostAddress);
        map.put("notify_url", callbackPath + notify_url);
        map.put("trade_type", tradeType);
        if("JSAPI".equals(tradeType)){
            map.put("openid", openId);
        }
        String s = this.weixinSignature(map);
        map.put("sign", s);
@@ -276,26 +282,40 @@
            String result_code = map1.get("result_code");
            if("SUCCESS".equals(result_code)){
                String type = map1.get("trade_type");
                String prepay_id = map1.get("prepay_id");
                switch (type){
                    case "JSAPI":
                        break;
                        //重新进行签名后返回给前端
                        Map<String, Object> map2 = new HashMap<>();
                        map2.put("appId", map1.get("appid"));
                        map2.put("nonceStr", map1.get("nonce_str"));
                        map2.put("package", "prepay_id=" + prepay_id);
                        map2.put("signType", "MD5");
                        map2.put("timeStamp", new Date().getTime() + "");
                        String s2 = this.weixinSignature(map2);
                        map2.put("prepay_id", prepay_id);
                        map2.put("mch_id", map1.get("mch_id"));
                        map2.put("trade_type", map1.get("trade_type"));
                        map2.put("sign", s2);
                        return ResultUtil.success(map2);
                    case "NATIVE":
                        String code_url = map1.get("code_url");
                        return ResultUtil.success(code_url);
                    case "APP":
                        String prepay_id = map1.get("prepay_id");
                        //重新进行签名后返回给前端
                        Map<String, Object> map2 = new HashMap<>();
                        map2.put("appid", appid);
                        map2.put("noncestr", nonce_str);
                        map2.put("package", "Sign=WXPay");
                        map2.put("partnerid", mchId);
                        map2.put("prepayid", prepay_id);
                        map2.put("timestamp", new Date().getTime() / 1000);
                        String s1 = this.weixinSignature(map2);
                        map2.put("sign", s1);
                        System.err.println(map2);
                        return ResultUtil.success(map2);
                        Map<String, Object> map3 = new HashMap<>();
                        map3.put("appid", appid);
                        map3.put("noncestr", nonce_str);
                        map3.put("package", "Sign=WXPay");
                        map3.put("partnerid", mchId);
                        map3.put("prepayid", prepay_id);
                        map3.put("timestamp", new Date().getTime() / 1000);
                        String s1 = this.weixinSignature(map3);
                        map3.put("sign", s1);
                        System.err.println(map3);
                        return ResultUtil.success(map3);
                }
                return null;
            }else{
UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/TraceTrack.java
File was deleted
UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/OrderInfoWarpper.java
@@ -123,6 +123,16 @@
    private String cancelRemark;
    @ApiModelProperty("备注")
    private String remark;
    @ApiModelProperty("1=线上 2=打表")
    private Integer payManner;
    public Integer getPayManner() {
        return payManner;
    }
    public void setPayManner(Integer payManner) {
        this.payManner = payManner;
    }
    public Integer getOrderId() {
        return orderId;
@@ -710,6 +720,7 @@
            orderInfoWarpper.setEndCity(null != map.get("endCity") ? map.get("endCity").toString() : "");
            orderInfoWarpper.setRemark(null != map.get("remark") ? map.get("remark").toString() : "");
            orderInfoWarpper.setLineShiftTime(null != map.get("lineShiftTime") ? map.get("lineShiftTime").toString() : "");
            orderInfoWarpper.setPayManner(null != map.get("payManner") ? Integer.valueOf(map.get("payManner").toString()) : 1);
        }
        return orderInfoWarpper;
    }
UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/dao/mapping/OrderTaxiMapper.xml
@@ -214,6 +214,16 @@
        a.endAddress as endAddress,
        a.driverId as driverId,
        a.orderMoney as orderMoney,
        a.startMileage as startMileage,
        a.startMoney as startMoney,
        a.mileageKilometers as mileageKilometers,
        a.mileageMoney as mileageMoney,
        a.duration as duration,
        a.durationMoney as durationMoney,
        a.wait as wait,
        a.waitMoney as waitMoney,
        a.longDistance as longDistance,
        a.longDistanceMoney as longDistanceMoney,
        a.travelMoney as travelMoney,
        a.parkMoney as parkMoney,
        a.roadTollMoney as roadTollMoney,
UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java
@@ -751,12 +751,15 @@
                appletsOpenId = userInfo.getAppletsOpenId();
            }
            Map<String, String> map = icbcPayUtil.placeAnOrder(orderId + ",2", 9, 5, uid.toString(), "完成订单", orderMoney, callbackPath + "/base/wxPayOrderTaxi", "", type, appletsOpenId);
            if(map.get("code").equals("200")){
                paymentRecordService.saveData(1, orderTaxi.getUserId(), 1, orderId, 2, 1, orderMoney, map.get("order_id"), 1);//添加预支付数据
                resultUtil = ResultUtil.success(map.get("data"));
            }else{
                resultUtil = ResultUtil.error(map.get("msg"), "");
            }
            String app = type == 1 ? "APP" : "JSAPI";
            resultUtil = payMoneyUtil.weixinpay("完成订单", "", orderId + "_2_" + UUIDUtil.getRandomCode(5), orderMoney.toString(), "/base/wxPayOrderTaxi", app, userInfo.getAppletsOpenId());
            paymentRecordService.saveData(1, orderTaxi.getUserId(), 1, orderId, 2, 1, orderMoney, "", 1);//添加预支付数据
//            if(map.get("code").equals("200")){
//                paymentRecordService.saveData(1, orderTaxi.getUserId(), 1, orderId, 2, 1, orderMoney, map.get("order_id"), 1);//添加预支付数据
//                resultUtil = ResultUtil.success(map.get("data"));
//            }else{
//                resultUtil = ResultUtil.error(map.get("msg"), "");
//            }
        }
        if(payType == 2){//支付宝支付
            Map<String, String> map = icbcPayUtil.placeAnOrder(orderId + ",2", 10, 5, uid.toString(), "完成订单", orderMoney, callbackPath + "/base/aliPayOrderTaxi", "", type, null);
@@ -1387,20 +1390,15 @@
            @Override
            public void run() {
                try {
                    System.out.println("进入订单推送111111111111");
                    orderIds.add(orderTaxi.getId());//添加记录,防止调用接口重复提醒无人接单
                    String vehicle = redisUtil.getValue("VEHICLE");
                    List<Integer> integers = new ArrayList<>();
                    if(ToolUtil.isNotEmpty(vehicle)){
                        integers = JSON.parseArray(vehicle).toJavaList(Integer.class);
                    }
                    System.out.println("进入订单推送22222222222222=========="+integers);
                    Company query = companyCityService.query(String.valueOf(orderTaxi.getStartLon()), String.valueOf(orderTaxi.getStartLat()));//获取起点所属分公司
                    System.out.println("进入订单推送=========3==========="+query);
                    List<PushOrder> querys = pushOrderService.querys(null, 2, query.getId());//获取需要推送的次数
                    System.out.println("进入订单推送=========4==========="+querys);
                    for(int i = 1; i <= querys.size(); i++){
                        System.out.println("进入订单推送");
                        PushOrder pushOrder = pushOrderService.querys(i, 2, query.getId()).get(0);
                        System.out.println("进入订单推送");
                        //获取空闲司机
@@ -1409,11 +1407,8 @@
                        if(list.size() > 0){
                            System.out.println("进入司机推送");
                            double driverProportion = pushOrder.getDriverProportion() / 100;//推送占比计算成小数
                            System.out.println("推送占比计算成小数======="+driverProportion);
                            int lastIndex = Double.valueOf(list.size() * driverProportion).intValue();//计算占比转成整数(下标截取)
                            System.out.println("计算占比转成整数======="+lastIndex);
                            list = list.subList(0, lastIndex);//获取空闲司机中占比数据
                            System.out.println("获取空闲司机中占比数据======="+list);
                            for(Driver driver : list){//开始进行推送
                                System.out.println("开始进行推送======="+driver);
                                //查询是否在限制推单范围内
@@ -1427,7 +1422,6 @@
                                if(bo){
                                    continue;
                                }
                                System.out.println("推送订单前");
                                pushUtil.pushOrderState(2, driver.getId(), orderTaxi.getId(), 2, orderTaxi.getState(), pushOrder.getPushTime());
                                System.out.println("推送订单后");
                            }
UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/warpper/OrderTaxiWarpper.java
@@ -46,6 +46,16 @@
    @ApiModelProperty(dataType = "int", required = true, value = "是否是老年人(0=否,1=是)")
    private Integer oldPeople;
    @ApiModelProperty(dataType = "int", required = true, value = "支付方式 1=平台支付 2=其他支付")
    private Integer payManner;
    public Integer getPayManner() {
        return payManner;
    }
    public void setPayManner(Integer payManner) {
        this.payManner = payManner;
    }
    public Integer getOldPeople() {
        return oldPeople;
@@ -233,6 +243,7 @@
        orderTaxi.setStartAddress(orderTaxiWarpper.getStartAddress());
        orderTaxi.setEndAddress(orderTaxiWarpper.getEndAddress());
        orderTaxi.setOldPeople(orderTaxiWarpper.getOldPeople());
        orderTaxi.setPayManner(orderTaxiWarpper.getPayManner());
        return orderTaxi;
    }
}
UserOKTravel/guns-admin/src/main/resources/application.yml
@@ -58,9 +58,12 @@
spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:10633/xianning?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    url: jdbc:mysql://127.0.0.1:3306/xianning?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    username: root
    password: XianNing@2024!
    password: 123456
#    url: jdbc:mysql://127.0.0.1:10633/xianning?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
#    username: root
#    password: XianNing@2024!
#    url: jdbc:mysql://116.169.59.170:3306/ziang?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai
#    username: root
#    password: fVa%egqp_1du
@@ -99,8 +102,8 @@
  appSecret: f3874e9c813f31a2e90c37346eb74d82 #应用密钥AppSecret,在微信开放平台提交应用审核通过后获得
  appletsAppid: wx4d36488fa2cd2718 #小程序APPid
  appletsAppSecret: f3874e9c813f31a2e90c37346eb74d82 #
  mchId: 1593080081 #微信支付分配的商户号
  key: JnhREmZwHNKyFUQPEhijp1gdaCUzKg8P #key为商户平台设置的密钥key:
  mchId: 1680621323 #微信支付分配的商户号
  key: g2sHcxXkfQ7HO92B5qhTgrA6XTLm9KYj #key为商户平台设置的密钥key:
---
ZuulOKTravel/src/main/resources/redis.properties
@@ -7,8 +7,8 @@
#spring.redis.port=16379
spring.redis.port=6379
# Redis·þÎñÆ÷Á¬½ÓÃÜÂ루ĬÈÏΪ¿Õ£©
spring.redis.password=XianNing@2024!
#spring.redis.password=123456
#spring.redis.password=XianNing@2024!
spring.redis.password=123456
# Á¬½Ó³Ø×î´óÁ¬½ÓÊý£¨Ê¹ÓøºÖµ±íʾûÓÐÏÞÖÆ£©
spring.redis.jedis.pool.max-active=1024
# Á¬½Ó³Ø×î´ó×èÈûµÈ´ýʱ¼ä£¨Ê¹ÓøºÖµ±íʾûÓÐÏÞÖÆ£©