zhibing.pu
2024-08-27 6dc22dacd66325af53559369f2911400f13b48ba
修改bug
8个文件已修改
521 ■■■■■ 已修改文件
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TOrderPrivateCarController.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TServerCarmodel.java 43 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/ChinaMobileUtil.java 374 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GoogleMap/GoogleMapUtil.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementIGOTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tServerCarmodel/tServerCarmodel_add.html 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementIGOTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tServerCarmodel/tServerCarmodel_edit.html 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementIGOTravel/guns-admin/src/main/webapp/static/modular/system/tServerCarmodel/tServerCarmodel.js 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementIGOTravel/guns-admin/src/main/webapp/static/modular/system/tServerCarmodel/tServerCarmodel_info.js 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TOrderPrivateCarController.java
@@ -15,12 +15,10 @@
import com.stylefeng.guns.core.util.SinataUtil;
import com.stylefeng.guns.core.util.ToolUtil;
import com.stylefeng.guns.modular.system.controller.util.PushUtil;
import com.stylefeng.guns.modular.system.controller.util.TextToSpeechUtil;
import com.stylefeng.guns.modular.system.dao.OrderCancelMapper;
import com.stylefeng.guns.modular.system.dao.TSystemPriceMapper;
import com.stylefeng.guns.modular.system.model.*;
import com.stylefeng.guns.modular.system.service.*;
import com.stylefeng.guns.modular.system.util.ChinaMobileUtil;
import com.stylefeng.guns.modular.system.util.GoogleMap.FleetEngineUtil;
import com.stylefeng.guns.modular.system.util.HttpRequestUtil;
import com.stylefeng.guns.modular.system.util.PushURL;
@@ -310,11 +308,11 @@
                orderPrivateCar1.setState(7);
            }
            Map<String, String> map = chinaMobileUtil.midAxbUnBindSend(orderPrivateCar1.getBindId(),orderPrivateCar1.getTelX());
            if(String.valueOf(map.get("code")).equals("200")){
                orderPrivateCar1.setTelX("");
                orderPrivateCar1.setBindId("");
            }
//            Map<String, String> map = chinaMobileUtil.midAxbUnBindSend(orderPrivateCar1.getBindId(),orderPrivateCar1.getTelX());
//            if(String.valueOf(map.get("code")).equals("200")){
//                orderPrivateCar1.setTelX("");
//                orderPrivateCar1.setBindId("");
//            }
            tOrderPrivateCarService.updateById(orderPrivateCar1);
@@ -361,8 +359,6 @@
        return SUCCESS_TIP;
    }
    @Autowired
    private ChinaMobileUtil chinaMobileUtil;
    @Autowired
    private PushUtil pushUtil;
    @Autowired
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TServerCarmodel.java
@@ -35,7 +35,15 @@
    /**
     * 车型名称
     */
    private String name;
    private String chineseName;
    /**
     * 车型名称
     */
    private String englishName;
    /**
     * 车型名称
     */
    private String frenchName;
    /**
     * 车型图片
     */
@@ -86,12 +94,28 @@
        this.type = type;
    }
    public String getName() {
        return name;
    public String getChineseName() {
        return chineseName;
    }
    public void setName(String name) {
        this.name = name;
    public void setChineseName(String chineseName) {
        this.chineseName = chineseName;
    }
    public String getEnglishName() {
        return englishName;
    }
    public void setEnglishName(String englishName) {
        this.englishName = englishName;
    }
    public String getFrenchName() {
        return frenchName;
    }
    public void setFrenchName(String frenchName) {
        this.frenchName = frenchName;
    }
    public String getImg() {
@@ -128,10 +152,13 @@
        return "TServerCarmodel{" +
        "id=" + id +
        ", type=" + type +
        ", name=" + name +
        ", img=" + img +
                ", chineseName='" + chineseName + '\'' +
                ", englishName='" + englishName + '\'' +
                ", frenchName='" + frenchName + '\'' +
                ", img='" + img + '\'' +
                ", price='" + price + '\'' +
        ", state=" + state +
        ", insertTime=" + insertTime +
        "}";
                '}';
    }
}
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/ChinaMobileUtil.java
@@ -1,188 +1,188 @@
package com.stylefeng.guns.modular.system.util;
import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import com.stylefeng.guns.core.util.MD5Util;
import org.apache.commons.codec.binary.Base64;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
/**
 * 中国移动工具类
 */
@Component
public class ChinaMobileUtil {
    private static String APIKey = "LTAI4G1BpRaihVRZp1RS8Stn";
    private static String SecretKey = "PDR7uUEGNf0wIPPVCPCVdySgTwCr90";
    @Autowired
    private HttpClientUtil httpClientUtil;
    /**
     * 绑定小号
     * @param phoneA
     * @param phoneB
     * @param areaCode
     * @return
     * @throws Exception
     */
    public static Map<String, String> midAxbBindSend(String phoneA, String phoneB, Integer areaCode) throws Exception{
        Map<String, String> map1 = new HashMap<>();
        map1.put("code", "-1");
        map1.put("msg", "");
        map1.put("telX", "");
        map1.put("bindId", "");
        return map1;
        //暂时屏蔽-后期放开
        /*DefaultProfile profile = DefaultProfile.getProfile(
                "cn-hangzhou",            // 地域ID
                APIKey,        // 您的AccessKey ID
                SecretKey );  // 您的AccessKey Secret
        IAcsClient client = new DefaultAcsClient(profile);
        CommonRequest request = new CommonRequest();
        request.setMethod(MethodType.POST);
        request.setDomain("dyplsapi.aliyuncs.com");
        request.setVersion("2017-05-25");
        request.setAction("BindAxb");
        // 绑定关系的过期时间。必须晚于当前时间1分钟以上。
        request.putQueryParameter("Expiration", DateUtil.format(new Date(new Date().getTime()+7 * 24 * 60 * 60*1000L),"yyyy-MM-dd HH:mm:ss"));
        // 号码池Key
        request.putQueryParameter("PoolKey", "FC100000119206151");
        // AXB中的B号码
        request.putQueryParameter("PhoneNoB", phoneB);
        // AXB中的A号码
        request.putQueryParameter("PhoneNoA", phoneA);
        // 指定城市进行X号码的选号。
        request.putQueryParameter("ExpectCity", "北京");
        // 是否需要针对该绑定关系产生的所有通话录制通话录音。
        request.putQueryParameter("IsRecordingEnabled", "false");
        Map<String, String> map1 = new HashMap<>();
        try {
            CommonResponse response = client.getCommonResponse(request);
            // 处理请求结果
            System.out.println(response.getData());
            JSONObject jsonObject = JSONObject.parseObject(response.getData());
            if(jsonObject.getString("Code").equals("OK")){
                map1.put("code", "200");
                map1.put("msg", jsonObject.getString("Message"));
                map1.put("telX", jsonObject.getJSONObject("SecretBindDTO").getString("SecretNo"));
                map1.put("bindId", jsonObject.getJSONObject("SecretBindDTO").getString("SubsId"));
            }else{
                map1.put("code", jsonObject.getString("Code"));
                map1.put("msg", jsonObject.getString("Message"));
            }
        } catch (ServerException e) {
            e.printStackTrace();
            map1.put("code", "-1");
            map1.put("msg", e.getErrMsg());
        } catch (ClientException e) {
            System.out.println("ErrCode:" + e.getErrCode());
            System.out.println("ErrMsg:" + e.getErrMsg());
            System.out.println("RequestId:" + e.getRequestId());
            map1.put("code", "-1");
            map1.put("msg", e.getErrMsg());
        }
        return map1;*/
    }
    /**
     * 解绑小号关系
     * @param bindId    绑定关系id
     * @return
     * @throws Exception
     */
    public static Map<String, String> midAxbUnBindSend(String bindId,String secretNo) throws Exception{
        DefaultProfile profile = DefaultProfile.getProfile(
                "cn-hangzhou",            // 地域ID
                APIKey,        // 您的AccessKey ID
                SecretKey );  // 您的AccessKey Secret
        IAcsClient client = new DefaultAcsClient(profile);
        CommonRequest request = new CommonRequest();
        request.setMethod(MethodType.POST);
        request.setDomain("dyplsapi.aliyuncs.com");
        request.setVersion("2017-05-25");
        request.setAction("UnbindSubscription");
        // 绑定关系的过期时间。必须晚于当前时间1分钟以上。
        // 号码池Key
        request.putQueryParameter("PoolKey", "FC100000119206151");
        // 隐私号码。调用BindAXG等号码绑定接口时指定或自动分配的X号码。
        request.putQueryParameter("SecretNo", secretNo);
        // 绑定关系ID。
//package com.stylefeng.guns.modular.system.util;
        //
        //可以在控制台的号码管理 > 号码详情中查看绑定关系ID,或者在调用BindAxb等号码绑定API时查看返回参数中的SubsId。
        request.putQueryParameter("SubsId", bindId);
        Map<String, String> map1 = new HashMap<>();
        try {
            CommonResponse response = client.getCommonResponse(request);
            // 处理请求结果
            System.out.println(response.getData());
            JSONObject jsonObject = JSONObject.parseObject(response.getData());
            if(jsonObject.getString("Code").equals("OK")){
                map1.put("code", "200");
                map1.put("msg", jsonObject.getString("Message"));
            }else{
                map1.put("code", jsonObject.getString("Code"));
                map1.put("msg", jsonObject.getString("Message"));
            }
        } catch (ServerException e) {
            e.printStackTrace();
            map1.put("code", "-1");
            map1.put("msg", e.getErrMsg());
        } catch (ClientException e) {
            System.out.println("ErrCode:" + e.getErrCode());
            System.out.println("ErrMsg:" + e.getErrMsg());
            System.out.println("RequestId:" + e.getRequestId());
            map1.put("code", "-1");
            map1.put("msg", e.getErrMsg());
        }
        return map1;
    }
    public static  void main(String[] args) throws IOException {
        try{
            // System.out.println(midAxbBindSend("18380476116","13688394165",null));
         System.out.println(midAxbUnBindSend("1000031640138366","17150145472"));
        }catch (Exception e){
        }
    }
    public Map<String, String> HeaderUtils(String APIKey, String SecretKey) throws Exception{
        Map<String, String> header = new HashMap<>();
        long time = System.currentTimeMillis();
        String signStr = MD5Util.encrypt(APIKey + SecretKey + time);
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("apiKey", APIKey);
        jsonObject.put("time", time);
        jsonObject.put("sign", signStr);
        Base64 base64 = new Base64();
        String s = base64.encodeToString(jsonObject.toJSONString().getBytes("UTF-8"));
        header.put("header", s);
        jsonObject = new JSONObject();
        jsonObject.put("platformId", "");
        jsonObject.put("secret", "");
        s = base64.encodeToString(jsonObject.toJSONString().getBytes("UTF-8"));
        header.put("accessCode", s);
        return header;
    }
}
//import com.alibaba.fastjson.JSONObject;
//import com.aliyuncs.CommonRequest;
//import com.aliyuncs.CommonResponse;
//import com.aliyuncs.DefaultAcsClient;
//import com.aliyuncs.IAcsClient;
//import com.aliyuncs.exceptions.ClientException;
//import com.aliyuncs.exceptions.ServerException;
//import com.aliyuncs.http.MethodType;
//import com.aliyuncs.profile.DefaultProfile;
//import com.stylefeng.guns.core.util.MD5Util;
//import org.apache.commons.codec.binary.Base64;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Component;
//
//import java.io.IOException;
//import java.util.HashMap;
//import java.util.Map;
//
///**
// * 中国移动工具类
// */
//@Component
//public class ChinaMobileUtil {
//
//    private static String APIKey = "LTAI4G1BpRaihVRZp1RS8Stn";
//
//    private static String SecretKey = "PDR7uUEGNf0wIPPVCPCVdySgTwCr90";
//
//    @Autowired
//    private HttpClientUtil httpClientUtil;
//
//
//    /**
//     * 绑定小号
//     * @param phoneA
//     * @param phoneB
//     * @param areaCode
//     * @return
//     * @throws Exception
//     */
//    public static Map<String, String> midAxbBindSend(String phoneA, String phoneB, Integer areaCode) throws Exception{
//        Map<String, String> map1 = new HashMap<>();
//        map1.put("code", "-1");
//        map1.put("msg", "");
//        map1.put("telX", "");
//        map1.put("bindId", "");
//        return map1;
//        //暂时屏蔽-后期放开
//        /*DefaultProfile profile = DefaultProfile.getProfile(
//                "cn-hangzhou",            // 地域ID
//                APIKey,        // 您的AccessKey ID
//                SecretKey );  // 您的AccessKey Secret
//        IAcsClient client = new DefaultAcsClient(profile);
//
//        CommonRequest request = new CommonRequest();
//        request.setMethod(MethodType.POST);
//        request.setDomain("dyplsapi.aliyuncs.com");
//        request.setVersion("2017-05-25");
//        request.setAction("BindAxb");
//        // 绑定关系的过期时间。必须晚于当前时间1分钟以上。
//        request.putQueryParameter("Expiration", DateUtil.format(new Date(new Date().getTime()+7 * 24 * 60 * 60*1000L),"yyyy-MM-dd HH:mm:ss"));
//        // 号码池Key
//        request.putQueryParameter("PoolKey", "FC100000119206151");
//        // AXB中的B号码
//        request.putQueryParameter("PhoneNoB", phoneB);
//        // AXB中的A号码
//        request.putQueryParameter("PhoneNoA", phoneA);
//        // 指定城市进行X号码的选号。
//        request.putQueryParameter("ExpectCity", "北京");
//        // 是否需要针对该绑定关系产生的所有通话录制通话录音。
//        request.putQueryParameter("IsRecordingEnabled", "false");
//        Map<String, String> map1 = new HashMap<>();
//        try {
//            CommonResponse response = client.getCommonResponse(request);
//            // 处理请求结果
//            System.out.println(response.getData());
//            JSONObject jsonObject = JSONObject.parseObject(response.getData());
//            if(jsonObject.getString("Code").equals("OK")){
//                map1.put("code", "200");
//                map1.put("msg", jsonObject.getString("Message"));
//                map1.put("telX", jsonObject.getJSONObject("SecretBindDTO").getString("SecretNo"));
//                map1.put("bindId", jsonObject.getJSONObject("SecretBindDTO").getString("SubsId"));
//            }else{
//                map1.put("code", jsonObject.getString("Code"));
//                map1.put("msg", jsonObject.getString("Message"));
//            }
//        } catch (ServerException e) {
//            e.printStackTrace();
//            map1.put("code", "-1");
//            map1.put("msg", e.getErrMsg());
//        } catch (ClientException e) {
//            System.out.println("ErrCode:" + e.getErrCode());
//            System.out.println("ErrMsg:" + e.getErrMsg());
//            System.out.println("RequestId:" + e.getRequestId());
//            map1.put("code", "-1");
//            map1.put("msg", e.getErrMsg());
//        }
//        return map1;*/
//    }
//
//
//    /**
//     * 解绑小号关系
//     * @param bindId    绑定关系id
//     * @return
//     * @throws Exception
//     */
//    public static Map<String, String> midAxbUnBindSend(String bindId,String secretNo) throws Exception{
//        DefaultProfile profile = DefaultProfile.getProfile(
//                "cn-hangzhou",            // 地域ID
//                APIKey,        // 您的AccessKey ID
//                SecretKey );  // 您的AccessKey Secret
//        IAcsClient client = new DefaultAcsClient(profile);
//
//        CommonRequest request = new CommonRequest();
//        request.setMethod(MethodType.POST);
//        request.setDomain("dyplsapi.aliyuncs.com");
//        request.setVersion("2017-05-25");
//        request.setAction("UnbindSubscription");
//        // 绑定关系的过期时间。必须晚于当前时间1分钟以上。
//        // 号码池Key
//        request.putQueryParameter("PoolKey", "FC100000119206151");
//        // 隐私号码。调用BindAXG等号码绑定接口时指定或自动分配的X号码。
//        request.putQueryParameter("SecretNo", secretNo);
//        // 绑定关系ID。
//        //
//        //可以在控制台的号码管理 > 号码详情中查看绑定关系ID,或者在调用BindAxb等号码绑定API时查看返回参数中的SubsId。
//        request.putQueryParameter("SubsId", bindId);
//        Map<String, String> map1 = new HashMap<>();
//        try {
//            CommonResponse response = client.getCommonResponse(request);
//            // 处理请求结果
//            System.out.println(response.getData());
//            JSONObject jsonObject = JSONObject.parseObject(response.getData());
//            if(jsonObject.getString("Code").equals("OK")){
//                map1.put("code", "200");
//                map1.put("msg", jsonObject.getString("Message"));
//            }else{
//                map1.put("code", jsonObject.getString("Code"));
//                map1.put("msg", jsonObject.getString("Message"));
//            }
//        } catch (ServerException e) {
//            e.printStackTrace();
//            map1.put("code", "-1");
//            map1.put("msg", e.getErrMsg());
//        } catch (ClientException e) {
//            System.out.println("ErrCode:" + e.getErrCode());
//            System.out.println("ErrMsg:" + e.getErrMsg());
//            System.out.println("RequestId:" + e.getRequestId());
//            map1.put("code", "-1");
//            map1.put("msg", e.getErrMsg());
//        }
//        return map1;
//    }
//
//    public static  void main(String[] args) throws IOException {
//        try{
//            // System.out.println(midAxbBindSend("18380476116","13688394165",null));
//         System.out.println(midAxbUnBindSend("1000031640138366","17150145472"));
//        }catch (Exception e){
//
//        }
//
//    }
//
//
//    public Map<String, String> HeaderUtils(String APIKey, String SecretKey) throws Exception{
//        Map<String, String> header = new HashMap<>();
//        long time = System.currentTimeMillis();
//        String signStr = MD5Util.encrypt(APIKey + SecretKey + time);
//        JSONObject jsonObject = new JSONObject();
//        jsonObject.put("apiKey", APIKey);
//        jsonObject.put("time", time);
//        jsonObject.put("sign", signStr);
//        Base64 base64 = new Base64();
//        String s = base64.encodeToString(jsonObject.toJSONString().getBytes("UTF-8"));
//        header.put("header", s);
//
//        jsonObject = new JSONObject();
//        jsonObject.put("platformId", "");
//        jsonObject.put("secret", "");
//        s = base64.encodeToString(jsonObject.toJSONString().getBytes("UTF-8"));
//        header.put("accessCode", s);
//        return header;
//    }
//}
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GoogleMap/GoogleMapUtil.java
@@ -5,6 +5,7 @@
import com.google.gson.GsonBuilder;
import com.google.maps.*;
import com.google.maps.model.*;
import com.stylefeng.guns.core.util.ToolUtil;
/**
 * 谷歌地图工具类
@@ -47,11 +48,14 @@
     * @return
     * @throws Exception
     */
    public static ReverseGeocodeVo getReverseGeocode(double lat, double lng) throws Exception{
    public static ReverseGeocodeVo getReverseGeocode(double lat, double lng, String tripId) throws Exception{
        GeoApiContext context = new GeoApiContext.Builder()
                .apiKey(key)
                .build();
        GeocodingApiRequest request = GeocodingApi.reverseGeocode(context, new LatLng(lat, lng));
        if(ToolUtil.isNotEmpty(tripId)){
            request.header("X-Goog-Maps-Experience-ID", tripId);//行程id
        }
        GeocodingResult[] results = request.await();
        ReverseGeocodeVo vo = null;
        if(results.length > 0){
@@ -83,13 +87,16 @@
     * @return
     * @throws Exception
     */
    public static FindPlaceFromTextVo findplacefromtext(String input) throws Exception{
    public static FindPlaceFromTextVo findplacefromtext(String input, String tripId) throws Exception{
        GeoApiContext context = new GeoApiContext.Builder()
                .apiKey(key)
                .build();
        FindPlaceFromTextRequest request = new FindPlaceFromTextRequest(context);
        request.input(input);
        request.inputType(FindPlaceFromTextRequest.InputType.TEXT_QUERY);
        if(ToolUtil.isNotEmpty(tripId)){
            request.header("X-Goog-Maps-Experience-ID", tripId);//行程id
        }
        System.err.println("findplacefromtext(请求参数)--->" + input);
        FindPlaceFromText findPlaceFromText = request.await();
        PlacesSearchResult[] candidates = findPlaceFromText.candidates;
@@ -119,12 +126,15 @@
     * @return
     * @throws Exception
     */
    public static FindPlaceFromTextVo textsearch(String query) throws Exception{
    public static FindPlaceFromTextVo textsearch(String query, String tripId) throws Exception{
        GeoApiContext context = new GeoApiContext.Builder()
                .apiKey(key)
                .build();
        TextSearchRequest request = new TextSearchRequest(context);
        request.query(query);
        if(ToolUtil.isNotEmpty(tripId)){
            request.header("X-Goog-Maps-Experience-ID", tripId);//行程id
        }
        PlacesSearchResponse placesSearchResponse = request.await();
        PlacesSearchResult[] results = placesSearchResponse.results;
        System.err.println("textsearch--->" + JSON.toJSONString(results));
@@ -155,12 +165,15 @@
     * @return
     * @throws Exception
     */
    public static DistancematrixVo getDistancematrix(String origin, String destination) throws Exception{
    public static DistancematrixVo getDistancematrix(String origin, String destination, String tripId) throws Exception{
        GeoApiContext context = new GeoApiContext.Builder()
                .apiKey(key)
                .build();
        DistanceMatrixApiRequest request = DistanceMatrixApi.getDistanceMatrix(context, new String[]{origin}, new String[]{destination});
        request.mode(TravelMode.DRIVING);//出行方式(驾车)
        if(ToolUtil.isNotEmpty(tripId)){
            request.header("X-Goog-Maps-Experience-ID", tripId);//行程id
        }
        DistanceMatrix distanceMatrix = request.await();
        Gson gson = new GsonBuilder().setPrettyPrinting().create();
        System.out.println(gson.toJson(distanceMatrix));
@@ -183,13 +196,13 @@
     * @return
     * @throws Exception
     */
    public static DistancematrixVo getDistancematrix(Double sLat, Double sLnt, Double eLat, Double eLnt) throws Exception{
        ReverseGeocodeVo reverseGeocode = getReverseGeocode(sLat, sLnt);
        ReverseGeocodeVo reverseGeocode1 = getReverseGeocode(eLat, eLnt);
    public static DistancematrixVo getDistancematrix(Double sLat, Double sLnt, Double eLat, Double eLnt, String tripId) throws Exception{
        ReverseGeocodeVo reverseGeocode = getReverseGeocode(sLat, sLnt, tripId);
        ReverseGeocodeVo reverseGeocode1 = getReverseGeocode(eLat, eLnt, tripId);
        if(null != reverseGeocode && null != reverseGeocode1){
            String origin = reverseGeocode.getAddress();
            String destination = reverseGeocode1.getAddress();
            return getDistancematrix(origin, destination);
            return getDistancematrix(origin, destination, tripId);
        }
        return null;
    }
@@ -201,12 +214,15 @@
     * @param destination   终点 要计算方向的位置ID、地址或文本纬度/经度值。目标参数的选项与原点参数的相同。
     *
     */
    public static void getDirections(String origin, String destination) throws Exception{
    public static void getDirections(String origin, String destination, String tripId) throws Exception{
        GeoApiContext context = new GeoApiContext.Builder()
                .apiKey(key)
                .build();
        DirectionsApiRequest directions = DirectionsApi.getDirections(context, origin, destination);
        directions.mode(TravelMode.DRIVING);//出行方式(驾车)
        if(ToolUtil.isNotEmpty(tripId)){
            directions.header("X-Goog-Maps-Experience-ID", tripId);//行程id
        }
        DirectionsResult result = directions.await();
        Gson gson = new GsonBuilder().setPrettyPrinting().create();
@@ -216,14 +232,6 @@
    public static void main(String[] ages){
        try {
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
ManagementIGOTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tServerCarmodel/tServerCarmodel_add.html
@@ -5,7 +5,9 @@
            <div class="row">
                <div class="col-sm-11">
                    <#input id="name" name="车型名称"/>
                    <#input id="chineseName" name="车型名称(中文)" />
                    <#input id="englishName" name="车型名称(英文)" />
                    <#input id="frenchName" name="车型名称(法文)" />
                    <#avatar id="img" name="车型图片:" />
                </div>
            </div>
ManagementIGOTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tServerCarmodel/tServerCarmodel_edit.html
@@ -5,7 +5,9 @@
            <input type="hidden" id="id" value="${data.id}">
            <div class="row">
                <div class="col-sm-11">
                    <#input id="name" name="车型名称" value="${data.name}"/>
                    <#input id="chineseName" name="车型名称(中文)" value="${data.chineseName}"/>
                    <#input id="englishName" name="车型名称(英文)" value="${data.englishName}"/>
                    <#input id="frenchName" name="车型名称(法文)" value="${data.frenchName}"/>
                    <#avatar id="img" name="车型图片:"  avatarImg="${data.img}"/>
                </div>
            </div>
ManagementIGOTravel/guns-admin/src/main/webapp/static/modular/system/tServerCarmodel/tServerCarmodel.js
@@ -25,7 +25,25 @@
                return btn;
            }
        },
        {title: '车型名称', field: 'name', visible: true, align: 'center', valign: 'middle',
        {title: '车型名称(中文)', field: 'chineseName', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                var btn = "";
                if(row.name != '' && row.name != null) {
                    btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.name + '" onfocus="TUser.tooltip()">' + row.name + '</p>']
                }
                return btn;
            }
        },
        {title: '车型名称(英文)', field: 'englishName', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                var btn = "";
                if(row.name != '' && row.name != null) {
                    btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.name + '" onfocus="TUser.tooltip()">' + row.name + '</p>']
                }
                return btn;
            }
        },
        {title: '车型名称(法文)', field: 'frenchName', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                var btn = "";
                if(row.name != '' && row.name != null) {
ManagementIGOTravel/guns-admin/src/main/webapp/static/modular/system/tServerCarmodel/tServerCarmodel_info.js
@@ -4,14 +4,24 @@
var TServerCarmodelInfoDlg = {
    tServerCarmodelInfoData : {},
    validateFields: {
        name: {
        chineseName: {
            validators: {
                notEmpty: {
                    message: '车型名称不能为空'
                    message: '中文车型名称不能为空'
                }
            }
                },
                regexp: {
                    regexp: /^.{1,15}$/,
                    message: '车型名称不能超过15个字'
        englishName: {
            validators: {
                notEmpty: {
                    message: '英文车型名称不能为空'
                }
            }
        },
        frenchName: {
            validators: {
                notEmpty: {
                    message: '法文车型名称不能为空'
                }
            }
        },