package com.dji.sample.droneairport.service.impl;
|
|
import com.dji.sample.droneairport.model.dto.DroneStateDto;
|
import com.dji.sample.droneairport.model.param.AddDeviceParam;
|
import com.dji.sample.droneairport.model.param.RegistParam;
|
import com.dji.sample.droneairport.service.RegistService;
|
import com.dji.sample.droneairport.utils.AuthUtil;
|
import com.dji.sample.droneairport.utils.SM2.Utils;
|
import com.dji.sample.droneairport.utils.SM4Util;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
import org.bouncycastle.crypto.InvalidCipherTextException;
|
import org.springframework.http.*;
|
import org.springframework.stereotype.Service;
|
import org.springframework.web.client.RestTemplate;
|
|
import java.io.IOException;
|
import java.security.NoSuchAlgorithmException;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
@Service
|
public class RegistServiceImpl implements RegistService {
|
private final RestTemplate restTemplate = new RestTemplate();
|
private final ObjectMapper objectMapper = new ObjectMapper();
|
|
public String registPort(RegistParam param) {
|
try {
|
// 构建请求体
|
String jsonBody = buildRequestBody(param);
|
// 设置请求头
|
String base64=SM4Util.encrypt("jsimjrby3wqb7dbq",jsonBody);
|
// 设置请求头
|
HttpHeaders headers = new HttpHeaders();
|
headers.setContentType(MediaType.APPLICATION_JSON);
|
headers.setAccept(List.of(MediaType.APPLICATION_JSON, MediaType.TEXT_PLAIN, MediaType.ALL));
|
headers.set("Accept-Language", "zh-CN,zh;q=0.9");
|
headers.setConnection("keep-alive");
|
headers.set("x-auth-token", AuthUtil.getToken());
|
headers.set("x-lc-token",Utils.encrypt("jsimjrby3wqb7dbq","044D6061FC08A19D3F32CEAA8CF6679B40500008FD741FC26DE7E50AEBF3A9115D47274437730EADEDAEF0CCC4853C5F0B35B30C6AEA83A5F6FBCA4ABEAC9E3B98"));
|
// 构建请求实体
|
HttpEntity<String> requestEntity = new HttpEntity<>(base64, headers);
|
// 发送请求
|
ResponseEntity<String> response = restTemplate.exchange(
|
"https://xcx.geoway.com.cn:8033/v1/droneAirport/RegistService",
|
HttpMethod.POST,
|
requestEntity,
|
String.class);
|
return response.getBody();
|
|
} catch (Exception e) {
|
// 异常处理
|
throw new IllegalArgumentException("Request failed: " + e.getMessage(), e);
|
}
|
}
|
|
private String buildRequestBody(RegistParam param) {
|
try {
|
return objectMapper.writeValueAsString(param);
|
} catch (JsonProcessingException e) {
|
throw new RuntimeException("数据有误", e);
|
}
|
}
|
|
@Override
|
public String addDrone(AddDeviceParam param) {
|
try {
|
// 构建请求体
|
String jsonBody = buildRequestBody(param);
|
String base64 = SM4Util.encrypt("jsimjrby3wqb7dbq", jsonBody);
|
System.out.println(AuthUtil.getToken());
|
System.out.println(AuthUtil.getToken());
|
System.out.println(AuthUtil.getToken());
|
System.out.println(AuthUtil.getToken());
|
System.out.println(AuthUtil.getToken());
|
System.out.println(AuthUtil.getToken());
|
System.out.println(AuthUtil.getToken());
|
System.out.println(AuthUtil.getToken());
|
System.out.println(AuthUtil.getToken());
|
System.out.println(AuthUtil.getToken());
|
System.out.println(AuthUtil.getToken());
|
System.out.println(AuthUtil.getToken());
|
System.out.println(AuthUtil.getToken());
|
System.out.println(AuthUtil.getToken());
|
System.out.println(AuthUtil.getToken());
|
System.out.println(AuthUtil.getToken());
|
System.out.println(AuthUtil.getToken());
|
// 设置请求头
|
HttpHeaders headers = new HttpHeaders();
|
headers.setContentType(MediaType.APPLICATION_JSON);
|
headers.setAccept(List.of(MediaType.APPLICATION_JSON, MediaType.TEXT_PLAIN, MediaType.ALL));
|
headers.set("Accept-Language", "zh-CN,zh;q=0.9");
|
headers.setConnection("keep-alive");
|
headers.set("x-lc-token", AuthUtil.getToken());
|
headers.set("x-lc-secret", Utils.encrypt("jsimjrby3wqb7dbq", "044D6061FC08A19D3F32CEAA8CF6679B40500008FD741FC26DE7E50AEBF3A9115D47274437730EADEDAEF0CCC4853C5F0B35B30C6AEA83A5F6FBCA4ABEAC9E3B98"));
|
|
// 构建请求实体
|
HttpEntity<byte[]> requestEntity = new HttpEntity<>(base64.getBytes(), headers);
|
|
// 发送请求
|
RestTemplate restTemplate = new RestTemplate();
|
String response = restTemplate.postForObject("https://xcx.geoway.com.cn:8033/v1/droneAirport/addDevice", requestEntity, String.class);
|
|
return response;
|
|
} catch (Exception e) {
|
// 异常处理
|
throw new IllegalArgumentException("Request failed: " + e.getMessage(), e);
|
}
|
}
|
|
@Override
|
public DroneStateDto getDroneState(String deviceId) {
|
return null;
|
}
|
|
private String buildRequestBody(AddDeviceParam param) {
|
try {
|
return objectMapper.writeValueAsString(param);
|
} catch (JsonProcessingException e) {
|
throw new RuntimeException("数据有误", e);
|
}
|
}
|
public static String getSM2(String data, String key, String pubKey) throws InvalidCipherTextException, IOException {
|
String text = SM4Util.encrypt(key, data);
|
String encrypt = Utils.encrypt(text, pubKey);
|
encrypt = Utils.hexToBase64(encrypt);
|
return encrypt;
|
}
|
|
public static String deSM2(String Base64, String priKey, String serect) throws Exception {
|
String hex = Utils.convertBase64ToHex(Base64);
|
String decrypt = Utils.decrypt(hex, priKey);
|
return SM4Util.decrypt(serect, decrypt);
|
}
|
|
public static void main(String[] args) throws Exception {
|
System.out.println(getSM2("jsimjrby3wqb7dbq", "jsimjrby3wqb7dbq", "044c4e29d89bc0389409e204b8c072af927d2bfbc62265472463f6fa2642e565411925c58ca72b8da87d743afffa9f94aeaee4351a0511692e06ad1567ba32d236"));
|
|
System.out.println(deSM2("BN2taHcWvZhysmUbAHjPAWo/vAgW3pCTv4CK0dHJoUpM62k1oUeYnMvK4twfcBs/qkbygkAt+4pUaBa6iomM9MSKVCtOSb1QAaAQ9milAvkDPSBE9yrYHzLQeLkT9HwENBJ5NanF6vl2nPgpC1d1q+XeJEBrEvJtpQkSHHsh/me/1+h9zPy0MpMkH89S",
|
"00e9ced7f847e5b414ef4f4f164ec5f83172b3183826c075f0e37d3f8a1e1f6c2c", "jsimjrby3wqb7dbq"));
|
System.out.println(createKey());
|
}
|
public static Map<String, String> createKey() throws NoSuchAlgorithmException {
|
Map<String, String> keyPair = Utils.createKeyPair();
|
Map<String, String> newKey = new HashMap<>();
|
newKey.put("publicKey", keyPair.get("pbcky"));
|
newKey.put("privateKey", keyPair.get("pveky"));
|
return newKey;
|
}
|
}
|