张洋洋
2025-02-18 5c87778c13e3e33bb30edfcc344e5e69754bc9bf
src/main/java/com/se/simu/utils/EntityLibraryUtils.java
@@ -8,7 +8,6 @@
import org.springframework.http.*;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.UriUtils;
import javax.crypto.Cipher;
import java.net.URL;
@@ -45,6 +44,50 @@
        return null;
    }
    public static String getLoginPublicKey() {
        JSONObject jsonObject = new JSONObject();
        String json = jsonObject.toJSONString();
        // 发送JSON格式的POST请求
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);
        HttpEntity<String> request = new HttpEntity<>(json, headers);
        RestTemplate restTemplate = new RestTemplate();
        ResponseEntity<String> responseEntity = restTemplate.postForEntity("http://106.120.22.26:8024/account-service/security/publickey", request, String.class);
        if (responseEntity.getStatusCode().is2xxSuccessful()) {
            String body = responseEntity.getBody();
            return JSONObject.parseObject(body).getString("data");
        }
        return null;
    }
    /**
     * 登录实体库
     *
     * @return 参数内详情
     */
    public static String login() throws Exception {
        String publicKey = getLoginPublicKey();
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("userid", "admin");
        jsonObject.put("password", encrypt("admin", publicKey));
        RestTemplate restTemplate = new RestTemplate();
        // 发送JSON格式的POST请求
        StringHttpMessageConverter converter = new StringHttpMessageConverter(StandardCharsets.UTF_8);
        converter.setSupportedMediaTypes(MediaType.parseMediaTypes("text/plain;charset=UTF-8"));
        restTemplate.getMessageConverters().add(0, converter);
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);
        headers.add("Access-Control-Allow-Origin", "*");
        String json = jsonObject.toJSONString();
        HttpEntity<String> request = new HttpEntity<>(json, headers);
        ResponseEntity<String> responseEntity = restTemplate.exchange("http://106.120.22.26:8024/account-service/security/login", HttpMethod.POST, request, String.class);
        if (responseEntity.getStatusCode().is2xxSuccessful()) {
            String body = responseEntity.getBody();
            return JSONObject.parseObject(body).getJSONObject("data").getString("token");
        }
        return null;
    }
    public static String encrypt(String str, String publicKey) throws Exception {
        //Base64编码的公钥
        byte[] decoded = Base64.decodeBase64(publicKey);
@@ -72,16 +115,94 @@
        return outstn;
    }
    public static void main(String[] args) throws Exception {
        String publickey = getPublicKey();
        System.out.println("公钥=" + publickey);
        String en = encrypt("id in ('46235','49876')", publickey);
        System.out.println("加密字符串=" + en);
        String encode = UriUtils.encode(en, StandardCharsets.UTF_8);
        System.out.println("encode字符串=" + encode);
        String decode = UriUtils.decode(encode, StandardCharsets.UTF_8);
        System.out.println("decode字符串=" + decode);
        System.out.println("解密字符串=" + decrypt(decode, "MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAJiF6WkdgHlimpakWJMvH3Xnjwws7qqoo1rhbg/iLzLGly/EKLvUzD6D7FUFk+GAP/sOKh1cZZEvi1KkGd6OufqMKdDvRvVtGjXExI5MLJDVDaYTsqhzNF8maB2H7dwR+iiDGph2DMPQtuV/k/dalXMxR6O8Q2MPQfaUiOVebKBbAgMBAAECgYARrPs21ldsOdQmfxdQv1ZLCLHYPGDQYEjGIHfr2U+U99TPkVETK38cA5fg5ouTx5QimSqiSnHu2G6x/hiNZUcCJp/1agvsFEI2FLokShYbitOYa07Da1eIKpZA5F+P5j5/QOVpVsWOxvEDA/dkF+vrV4vU/iV7H3QJqBfsLSxEeQJBAO43SVkzJM6dqnRw7sib7SOvguicnr7UKt0Tadc1PwLMWCCFu+4p3iN9Zj/7K5VHjomW+NIv7UAGynDfHBpv1x0CQQCj6ONm+m4FlaTdg+Pc36BBy4Gd6ucm6WfjDTHMaZi3uzINjTPBut6DmrUt68dyHdGpo6OIjCdX3xU27HtmjiPXAkEAwjdhHdCM2cfCCV1p0TUPimC2ImBPLNZefBAv4r4OuYFQ+HMQXYTVD6pViySEzBijJZppEzTwAZuHwa6lgwhcIQJBAI8PBOssSDq3kV2Fb6unwseqR0b9byKXNQUGzyAKSjCSQe1yAGpmHy/eJ6Qc1cbUH9pf6KuVKAGZw3pcjJfGF6ECQQCx9dJ2qJjm2R78/HH0SkOATpMATgewtHH5tRJfCJv7NLveuYNRFH1An4APWYq9IdVfyn+4gyXz3OClteE7jAkt"));
    /**
     * 创建组装
     *
     * @param name 组装名称
     * @return 创建结果
     */
    public static JSONObject createAssemble(String name, String token) {
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("token", token);
        jsonObject.put("description", null);
        jsonObject.put("name", name);
        jsonObject.put("dbid", "85257774fdb64e5f99f6778696cad02a");
        RestTemplate restTemplate = new RestTemplate();
        // 发送JSON格式的POST请求
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);
        String json = jsonObject.toJSONString();
        HttpEntity<String> request = new HttpEntity<>(json, headers);
        ResponseEntity<String> responseEntity = restTemplate.postForEntity("http://106.120.22.26:8024/geo-service/package/self/add", request, String.class);
        if (responseEntity.getStatusCode().is2xxSuccessful()) {
            String body = responseEntity.getBody();
            JSONObject result = JSONObject.parseObject(body);
            if (result.getInteger("code") == 200) {
                return result.getJSONObject("data");
            }
        }
        return null;
    }
    /**
     * 提交组装
     * @param token token
     * @param packageid 组装id
     * @return 提交结果
     */
    public static JSONObject submitAssemble(String token, String packageid) {
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("dbid", "85257774fdb64e5f99f6778696cad02a");
        jsonObject.put("packageid", packageid);
        jsonObject.put("token", token);
        RestTemplate restTemplate = new RestTemplate();
        // 发送JSON格式的POST请求
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);
        String json = jsonObject.toJSONString();
        HttpEntity<String> request = new HttpEntity<>(json, headers);
        ResponseEntity<String> responseEntity = restTemplate.postForEntity("http://106.120.22.26:8024/geo-service/package/status/complete", request, String.class);
        if (responseEntity.getStatusCode().is2xxSuccessful()) {
            String body = responseEntity.getBody();
            JSONObject result = JSONObject.parseObject(body);
            if (result.getInteger("code") == 200) {
                return result.getJSONObject("data");
            }
        }
        return null;
    }
    /**
     * 加入组装
     *
     * @param layerid   图层id
     * @param token     token
     * @param packageid 组装id
     * @param bbox      范围
     * @return 是否加入成功
     */
    public static Boolean addAssemble(String layerid, String token, String packageid, String bbox) {
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("dbid", "85257774fdb64e5f99f6778696cad02a");
        jsonObject.put("layerid", layerid);
        jsonObject.put("packageid", packageid);
        jsonObject.put("token", token);
        jsonObject.put("bbox", bbox);
        RestTemplate restTemplate = new RestTemplate();
        // 发送JSON格式的POST请求
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);
        String json = jsonObject.toJSONString();
        HttpEntity<String> request = new HttpEntity<>(json, headers);
        ResponseEntity<String> responseEntity = restTemplate.postForEntity("http://106.120.22.26:8024/geo-service/package/data/add", request, String.class);
        if (responseEntity.getStatusCode().is2xxSuccessful()) {
            String body = responseEntity.getBody();
            JSONObject result = JSONObject.parseObject(body);
            if (result.getInteger("code") == 200) {
                return result.getBoolean("data");
            }
        }
        return null;
    }
    /**
@@ -90,7 +211,37 @@
     * @param dtos 四个坐标点
     * @return 框选内部管线
     */
    public static JSONArray getPointInfo(List<GridDto> dtos) {
    public static JSONArray getPointInfo(List<GridDto> dtos, String token) {
        JSONArray paramArray = new JSONArray();
        for (GridDto dto : dtos
        ) {
            paramArray.add(ProjectionToGeographicUtil.get4548Point(dto.getLon(), dto.getLat()));
        }
        paramArray.add(ProjectionToGeographicUtil.get4548Point(dtos.get(0).getLon(), dtos.get(0).getLat()));
        JSONObject jsonObject = getModule("layerQueryPointParams.json");
        jsonObject.getJSONObject("geometry").getJSONArray("coordinates").add(paramArray);
        jsonObject.put("token", token);
        RestTemplate restTemplate = new RestTemplate();
        // 发送JSON格式的POST请求
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);
        String json = jsonObject.toJSONString();
        HttpEntity<String> request = new HttpEntity<>(json, headers);
        ResponseEntity<String> responseEntity = restTemplate.postForEntity("http://106.120.22.26:8024/geo-service/entitydbdata/layer/query", request, String.class);
        if (responseEntity.getStatusCode().is2xxSuccessful()) {
            String body = responseEntity.getBody();
            return JSONObject.parseObject(body).getJSONObject("data").getJSONArray("items");
        }
        return null;
    }
    /**
     * 管线列表
     *
     * @param dtos 四个坐标点
     * @return 框选内部管线
     */
    public static JSONArray getLineInfo(List<GridDto> dtos, String token) {
        JSONArray paramArray = new JSONArray();
        for (GridDto dto : dtos
        ) {
@@ -99,6 +250,7 @@
        paramArray.add(ProjectionToGeographicUtil.get4548Point(dtos.get(0).getLon(), dtos.get(0).getLat()));
        JSONObject jsonObject = getModule("layerQueryParams.json");
        jsonObject.getJSONObject("geometry").getJSONArray("coordinates").add(paramArray);
        jsonObject.put("token", token);
        RestTemplate restTemplate = new RestTemplate();
        // 发送JSON格式的POST请求
        HttpHeaders headers = new HttpHeaders();
@@ -119,9 +271,10 @@
     * @param param 查询参数
     * @return 参数内详情
     */
    public static JSONArray getPointDetail(String param) {
    public static JSONArray getLineDetail(String param, String token) {
        JSONObject jsonObject = getModule("layerQueryDetailParams.json");
        jsonObject.put("where", param);
        jsonObject.put("token", token);
        RestTemplate restTemplate = new RestTemplate();
        // 发送JSON格式的POST请求
        StringHttpMessageConverter converter = new StringHttpMessageConverter(StandardCharsets.UTF_8);