From 3e242903008f50818729fe17a4fa38e0b1f02551 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期三, 19 二月 2025 16:44:58 +0800
Subject: [PATCH] jtt808初始化

---
 server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java |   94 ++++++-
 /dev/null                                                                                  |  356 --------------------------------
 server/services/src/main/java/com/doumee/core/constants/Constants.java                     |    1 
 server/services/src/main/java/com/doumee/core/utils/StringTools.java                       |    2 
 server/web/src/main/java/com/doumee/jtt808/web/service/Jtt808Service.java                  |    2 
 server/services/src/main/java/com/doumee/core/utils/HttpsUtil.java                         |  162 ++++++++-----
 6 files changed, 175 insertions(+), 442 deletions(-)

diff --git a/server/services/src/main/java/com/doumee/core/constants/Constants.java b/server/services/src/main/java/com/doumee/core/constants/Constants.java
index 7fc46d3..a732f80 100644
--- a/server/services/src/main/java/com/doumee/core/constants/Constants.java
+++ b/server/services/src/main/java/com/doumee/core/constants/Constants.java
@@ -41,6 +41,7 @@
     public static final String PROJECT_FILE = "PROJECT_FILE";
     public static final String PROJECTS = "PROJECTS";
     public static final String DISCOUNT = "DISCOUNT";
+    public static final String ELEC_BIKE_CONTRIL_API_URL = "ELEC_BIKE_CONTRIL_API_URL";
     public static final String FORCE_BACK_LOCK = "FORCE_BACK_LOCK";
     public static final String FORCE_BACK_SITE = "FORCE_BACK_SITE";
     //杞﹁締绫诲瀷鏁版嵁
diff --git a/server/services/src/main/java/com/doumee/core/utils/HttpUtil.java b/server/services/src/main/java/com/doumee/core/utils/HttpUtil.java
deleted file mode 100644
index aa8f61c..0000000
--- a/server/services/src/main/java/com/doumee/core/utils/HttpUtil.java
+++ /dev/null
@@ -1,356 +0,0 @@
-package com.doumee.core.utils;
-
-import com.alibaba.fastjson.JSONObject;
-import org.apache.commons.codec.binary.Hex;
-//import org.apache.commons.httpclient.HttpClient;
-//import org.apache.commons.httpclient.NameValuePair;
-//import org.apache.commons.httpclient.methods.PostMethod;
-//import org.apache.commons.httpclient.params.HttpMethodParams;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpStatus;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.entity.StringEntity;
-import org.apache.http.impl.client.*;
-import org.apache.http.util.EntityUtils;
-
-import java.io.*;
-import java.lang.reflect.Field;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.net.URLConnection;
-import java.security.MessageDigest;
-import java.security.NoSuchAlgorithmException;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.UUID;
-
-public class HttpUtil {
-	public static final String UTF8 = "UTF-8";
-
-	/**
-	 * @param urlpath
-	 * @throws IOException
-	 * @throws UnsupportedEncodingException
-	 */
-	public static String postRequestConn(String urlpath) throws UnsupportedEncodingException, IOException {
-		String sendString = "";
-
-		// 鍒涘缓url瀵硅薄
-		URL url = new URL(urlpath);
-
-		// 鎵撳紑url杩炴帴
-		HttpURLConnection connection = (HttpURLConnection) url.openConnection();
-		connection.setRequestProperty("Content-Type", "application/octet-stream");
-		// 璁剧疆url璇锋眰鏂瑰紡 鈥榞et鈥� 鎴栬�� 鈥榩ost鈥�
-		connection.setRequestMethod("POST");
-		connection.setDoOutput(true);
-		connection.setDoInput(true);
-		connection.setUseCaches(true);
-		connection.setConnectTimeout(3000);
-		connection.setReadTimeout(10000);
-		connection.setRequestProperty("Charset", "UTF-8");
-		int responseCode = connection.getResponseCode();
-		if (HttpURLConnection.HTTP_OK == responseCode) {
-			String readLine;
-			BufferedReader responseReader;
-			StringBuffer sb = new StringBuffer();
-			responseReader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
-			while ((readLine = responseReader.readLine()) != null) {
-				sb.append(readLine).append("\n");
-			}
-			responseReader.close();
-			sendString = sb.toString();
-			// httpConn.disconnect();
-		} else {
-			System.out.println("error");
-		}
-
-		return sendString;
-	}
-
-	/**
-	 * @param urlPath
-	 * @param json
-	 * @throws IOException
-	 * @throws UnsupportedEncodingException
-	 */
-	public static String postRequestConn(String urlPath, String json,String tokenStr) throws UnsupportedEncodingException, IOException {
-		String sendString = "";
-		// try {
-		URL url;
-		url = new URL(urlPath);
-		HttpURLConnection httpConn;
-		httpConn = (HttpURLConnection) url.openConnection();
-		// httpConn.connect();
-		httpConn.setDoOutput(true);
-		httpConn.setDoInput(true);
-		httpConn.setRequestMethod("POST");
-		httpConn.setUseCaches(false);
-		httpConn.setInstanceFollowRedirects(true);
-		httpConn.setRequestProperty("Content-Type", "application/json");
-		httpConn.setRequestProperty("accept", "application/json");
-		httpConn.setRequestProperty("X-Judge-Server-Token",getSHA256Str(tokenStr));
-		httpConn.setConnectTimeout(10000);
-		httpConn.setReadTimeout(10000);
-		httpConn.connect();
-		OutputStream out = httpConn.getOutputStream();
-		byte[] data = (json.toString()).getBytes("UTF-8");
-		out.write(data, 0, data.length);
-		out.flush();
-		out.close();
-		int responseCode = httpConn.getResponseCode();
-		if (HttpURLConnection.HTTP_OK == responseCode) {
-			String readLine;
-			BufferedReader responseReader;
-			StringBuffer sb = new StringBuffer();
-			responseReader = new BufferedReader(new InputStreamReader(httpConn.getInputStream(), "UTF-8"));
-			while ((readLine = responseReader.readLine()) != null) {
-				sb.append(readLine);
-			}
-			responseReader.close();
-			sendString = sb.toString();
-			// httpConn.disconnect();
-		} else {
-			System.out.println("error");
-		}
-		return sendString;
-	}
-
-	public static String doPost(String url,JSONObject json,String token) {
-		DefaultHttpClient client = new DefaultHttpClient();
-		HttpPost post = new HttpPost(url);
-		String response = null;
-		try {
-			post.addHeader("Content-Type", "application/json; charset=utf-8");
-			post.addHeader("X-Judge-Server-Token",getSHA256Str(token));
-			StringEntity s = new StringEntity(json.toString());
-			s.setContentEncoding("UTF-8");
-			s.setContentType("application/json");//鍙戦�乯son鏁版嵁闇�瑕佽缃甤ontentType
-			post.setEntity(s);
-			HttpResponse res = client.execute(post);
-			if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
-				HttpEntity entity = res.getEntity();
-				response = EntityUtils.toString(entity);// 杩斿洖json鏍煎紡锛�
-			}
-		} catch (Exception e) {
-			throw new RuntimeException(e);
-		}
-		// System.out.print(response);
-		return response;
-	}
-
-	//java瀵硅薄杞琺ap
-	public static Map<String, Object> objectToMap(Object obj) throws Exception {
-		if (obj == null) {
-			return null;
-		}
-		Map<String, Object> map = new HashMap<>();
-		Field[] declaredFields = obj.getClass().getDeclaredFields();
-		for (Field field : declaredFields) {
-			field.setAccessible(true);
-			map.put(field.getName(), field.get(obj));
-		}
-		return map;
-	}
-//	public static String doFormPost(String url,JSONObject json) throws Exception{
-//		String response = null;
-//		HttpClient client = new HttpClient();
-//		PostMethod postMethod = new PostMethod(url);
-//		postMethod.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET,"utf-8");
-//		Map<String, Object>  params =objectToMap(json);
-//		if(params !=null && params.get("map") !=null ){
-//			HashMap<String,String> map = (HashMap<String, String>) params.get("map");
-//			if(map !=null   && !map.isEmpty()){
-//			NameValuePair[] data = new NameValuePair[map.size()];
-//			int i =0;
-//			for(Map.Entry<String,String> entry : map.entrySet()){
-//				data[i] = new NameValuePair(entry.getKey(),entry.getValue());
-//				i++;
-//			}
-//			postMethod.setRequestBody(data);
-//			}
-//		}
-//		try {
-//			client.executeMethod(postMethod);
-//			if(postMethod.getStatusCode() == HttpStatus.SC_OK){
-//				response = postMethod.getResponseBodyAsString();
-//			}
-//		}catch (Exception e){
-//			e.printStackTrace();
-//		}
-//		return response;
-//	}
-
-
-	public static void main(String[] args) throws IOException {
-//		"language_config": sub_config["config"],
-//				"src": code,
-//				"max_cpu_time": self.problem.time_limit,
-//				"max_memory": 1024 * 1024 * self.problem.memory_limit,
-//				"test_case_id": self.problem.test_case_id,
-//				"output": False,
-//				"spj_version": self.problem.spj_version,
-//				"spj_config": spj_config.get("config"),
-//				"spj_compile_config": spj_config.get("compile"),
-//				"spj_src": self.problem.spj_code,
-//				"io_mode": self.problem.io_mode
-/*
-		{
-			"template": "" ,
-
-			 "compile": {
-			"src_name": "main.cpp",
-					"exe_name": "main",
-					"max_cpu_time": 10000,
-					"max_real_time": 20000,
-					"max_memory": 1024 * 1024 * 1024,
-					"compile_command": "/usr/bin/g++ -DONLINE_JUDGE -O2 -w -fmax-errors=3 -std=c++14 {src_path} -lm -o {exe_path}",
-		},
-			"run": {
-			"command": "{exe_path}",
-					"seccomp_rule": {ProblemIOMode.standard: "c_cpp", ProblemIOMode.file: "c_cpp_file_io"},
-			"env": default_env
-		}
-
-		{"config": _cpp_lang_config, "spj": {"compile": _cpp_lang_spj_compile, "config": _cpp_lang_spj_config},
-			"name": "C++", "description": "G++ 5.4", "content_type": "text/x-c++src"},*/
-		JSONObject json =new JSONObject();
-		JSONObject j = new JSONObject();
-		JSONObject spj = new JSONObject();
-		JSONObject sc = new JSONObject();
-		sc.put("src_name","spj-{spj_version}.cpp");
-		sc.put("exe_name","spj-{spj_version}");
-		sc.put("max_cpu_time",10000);
-		sc.put("max_real_time",20000);
-		sc.put("max_memory",1024 * 1024 * 1024);
-		sc.put("compile_command","/usr/bin/g++ -DONLINE_JUDGE -O2 -w -fmax-errors=3 -std=c++14 {src_path} -lm -o {exe_path}");
-		spj.put("compile",sc);
-		JSONObject scc = new JSONObject();
-		scc.put("exe_name","spj-{spj_version}");
-		scc.put("command","{exe_path} {in_file_path} {user_out_file_path}");
-		scc.put("seccomp_rule","c_cpp");
-		spj.put("config",scc);
-		JSONObject compile = new JSONObject();
-		compile.put("src_name", "main.cpp");
-		compile.put("exe_name", "main");
-		compile.put("max_cpu_time", 10000);
-		compile.put("max_real_time", 20000);
-		compile.put("max_memory",1024 * 1024 * 1024);
-		compile.put("compile_command", "/usr/bin/g++ -DONLINE_JUDGE -O2 -w -fmax-errors=3 -std=c++14 {src_path} -lm -o {exe_path}");
-		JSONObject run = new JSONObject();
-		JSONObject sr = new JSONObject();
-		sr.put("Standard IO","c_cpp");
-		sr.put("File IO","c_cpp_file_io");
-		run.put("command", "{exe_path}");
-		run.put("seccomp_rule", sr);
-		run.put("env",new  String[]{"LANG=en_US.UTF-8", "LANGUAGE=en_US:en", "LC_ALL=en_US.UTF-8"});
-		JSONObject config = new JSONObject();
-		config.put("template","//PREPEND BEGIN\n" +
-				"#include <iostream>\n" +
-				"//PREPEND END\n" +
-				"\n" +
-				"//TEMPLATE BEGIN\n" +
-				"int add(int a, int b) {\n" +
-				"  // Please fill this blank\n" +
-				"  return ___________;\n" +
-				"}\n" +
-				"//TEMPLATE END\n" +
-				"\n" +
-				"//APPEND BEGIN\n" +
-				"int main() {\n" +
-				"  std::cout << add(1, 2);\n" +
-				"  return 0;\n" +
-				"}\n" +
-				"//APPEND END");
-		config.put("run",run);
-		config.put("compile",compile);
-
-		j.put("name","C++");
-		j.put("description","G++ 5.4");
-		j.put("content_type","text/x-c++src");
-		j.put("config",config);
-		j.put("spj",spj);
-
-		json.put("language_config",j.get("config"));
-		json.put("src","#include <stdio.h> // puts     \n" +
-				"int main(){\n" +
-				"  puts(\"Hello,World!\");// 杈撳嚭\n" +
-				"}");
-		json.put("max_cpu_time",1000);
-		json.put("max_memory",1024*1024*64);
-		json.put("test_case_id","2b7e2f6a801b6c00388e717ae11b6f57");
-//		json.put("output",Boolean.FALSE);
-//		json.put("spj_version","");
-//		json.put("spj_config","");
-//		json.put("spj_compile_config","");
-//		json.put("spj_src","");
-//		json.put("io_mode","{\"input\": \"input.in\", \"output\": \"output.out\", \"io_mode\": \"Standard IO\"}");
-
-		System.out.println(json.toJSONString());
-		System.out.println(postRequestConn("http://47.100.55.21:8080/judge",json.toJSONString(),"3c8e8bd79d66259c46d8a3d057278dc8"));
-	}
-
-	public static String getSHA256Str(String str) {
-		MessageDigest messageDigest;
-		String encdeStr = "";
-		try {
-			messageDigest = MessageDigest.getInstance("SHA-256");
-			byte[] hash = messageDigest.digest(str.getBytes("UTF-8"));
-			encdeStr = Hex.encodeHexString(hash);
-		} catch (NoSuchAlgorithmException e) {
-			e.printStackTrace();
-		} catch (UnsupportedEncodingException e) {
-			e.printStackTrace();
-		}
-		return encdeStr;
-	}
-
-
-
-	/**
-	 * 涓嬭浇浜岀淮鐮佸浘鐗囨枃浠讹紝
-	 * 
-	 * @param urlString
-	 * @return 涓存椂鏂囦欢澶瑰湴鍧�
-	 * @throws Exception
-	 */
-
-	public static String downloadQrcode(String urlString) throws Exception {
-		String savePath = System.getProperty("java.io.tmpdir");
-		String nfix = ".jpg";// 鏂囦欢鍚庣紑鍚�
-		String tempName = UUID.randomUUID().toString() + nfix;// 涓存椂鏂囦欢鍚�
-
-		// ----------------鍥剧墖涓嬭浇寮�濮�---------------
-		// 鏋勯�燯RL
-		URL url = new URL(urlString);
-		// 鎵撳紑杩炴帴
-		URLConnection con = url.openConnection();
-		// 璁剧疆璇锋眰瓒呮椂涓�5s
-		con.setConnectTimeout(5 * 1000);
-		// 杈撳叆娴�
-		InputStream is = con.getInputStream();
-
-		// 1K鐨勬暟鎹紦鍐�
-		byte[] bs = new byte[1024];
-		// 璇诲彇鍒扮殑鏁版嵁闀垮害
-		int len;
-		// 杈撳嚭鐨勬枃浠舵祦
-		File sf = new File(savePath);
-		if (!sf.exists()) {
-			sf.mkdirs();
-		}
-		String tempFilePath = sf.getPath() + "\\" + tempName;
-		OutputStream os = new FileOutputStream(tempFilePath);
-		// 寮�濮嬭鍙�
-		while ((len = is.read(bs)) != -1) {
-			os.write(bs, 0, len);
-		}
-		// 瀹屾瘯锛屽叧闂墍鏈夐摼鎺�
-		os.close();
-		is.close();
-		// -------------------鍥剧墖涓嬭浇瀹屾瘯------------------
-
-		return tempFilePath;
-	}
-}
diff --git a/server/services/src/main/java/com/doumee/core/utils/HttpsUtil.java b/server/services/src/main/java/com/doumee/core/utils/HttpsUtil.java
index 3de1d47..809e79d 100644
--- a/server/services/src/main/java/com/doumee/core/utils/HttpsUtil.java
+++ b/server/services/src/main/java/com/doumee/core/utils/HttpsUtil.java
@@ -1,25 +1,16 @@
 package com.doumee.core.utils;
 
-import org.apache.http.client.methods.CloseableHttpResponse;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.client.utils.URIBuilder;
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.http.impl.client.HttpClients;
-import org.apache.http.util.EntityUtils;
-
 import javax.net.ssl.*;
 import java.io.ByteArrayOutputStream;
-import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
-import java.net.URI;
+import java.net.HttpURLConnection;
 import java.net.URL;
 import java.security.KeyManagementException;
 import java.security.NoSuchAlgorithmException;
 import java.security.SecureRandom;
 import java.security.cert.CertificateException;
 import java.security.cert.X509Certificate;
-import java.util.Map;
 
 public class HttpsUtil {
 
@@ -30,6 +21,14 @@
     public static String post(String url, String data, String contentType, boolean ignoreSSL) {
         return connection(url, "POST", data, contentType, ignoreSSL);
     }
+    public static String postJsonString(String url, String data) {
+        if(url.startsWith("https://")){
+            return connection(url, "POST", data, "application/json", true);
+        }else{
+            return connectionHttp(url, "POST", data, "application/json");
+        }
+    }
+
     public static String connection(String url,String method,String data,String contentType,boolean ignoreSSL){
         HttpsURLConnection connection = null;
         try {
@@ -88,6 +87,93 @@
         }
         return null;
     }
+    public static InputStream connectionInputsteam(String url,String method,String data,String contentType ){
+        HttpURLConnection connection = null;
+        try {
+            URL _url = new URL(url);
+            connection = (HttpURLConnection) _url.openConnection();
+            connection.setRequestMethod(method);
+            connection.setDoOutput(true);
+            connection.setDoInput(true);
+            connection.setUseCaches(false);
+            if(contentType != null){
+                connection.setRequestProperty("Content-Type", contentType);
+            }
+            connection.connect();
+            if(data != null){
+                OutputStream outputStream = connection.getOutputStream();
+                outputStream.write(data.getBytes("utf-8"));
+                outputStream.close();
+            }
+            int responseCode = connection.getResponseCode();
+            if (responseCode == HttpsURLConnection.HTTP_OK) {
+               return  connection.getInputStream();
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            if(connection != null){
+                connection.disconnect();
+            }
+        }
+        return null;
+    }
+    public static String connectionHttp(String url,String method,String data,String contentType ){
+        HttpURLConnection connection = null;
+        try {
+            URL _url = new URL(url);
+            connection = (HttpURLConnection) _url.openConnection();
+            connection.setRequestMethod(method);
+            connection.setDoOutput(true);
+            connection.setDoInput(true);
+            connection.setUseCaches(false);
+            if(contentType != null){
+                connection.setRequestProperty("Content-Type", contentType);
+            }
+
+            connection.connect();
+
+            if(data != null){
+                OutputStream outputStream = connection.getOutputStream();
+                outputStream.write(data.getBytes("utf-8"));
+                outputStream.close();
+            }
+
+            int responseCode = connection.getResponseCode();
+            if (responseCode == HttpsURLConnection.HTTP_OK) {
+                InputStream is = connection.getInputStream();
+                byte[] b = new byte[4096];
+                ByteArrayOutputStream baos = new ByteArrayOutputStream(b.length);
+                int len;
+                while ((len = is.read(b)) != -1) {
+                    baos.write(b, 0, len);
+                }
+                is.close();
+                return baos.toString("utf-8");
+            }
+            return connection.getResponseMessage();
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            if(connection != null){
+                connection.disconnect();
+            }
+        }
+        return null;
+    }
+
+
+    public static void main(String[] args) {
+        //灞�閮ㄤ俊浠绘墍鏈夎瘉涔﹀拰涓绘満
+        String result = HttpsUtil.get("https://127.0.0.1:8443/ssl-test/test01.do",true);
+        System.out.println(result);
+
+        //澶栭儴淇′换鎵�鏈夎瘉涔﹀拰涓绘満
+        HttpsTrustManager.allowAllSSL();
+        String response = HttpsUtil.get("https://127.0.0.1:8443/ssl-test/test01.do", false);
+        System.out.println(result);
+
+    }
     public static InputStream postJson(String url, String data){
         HttpsURLConnection connection = null;
         try {
@@ -125,64 +211,10 @@
             e.printStackTrace();
         } finally {
             if(connection != null){
-           //     connection.disconnect();
+                //     connection.disconnect();
             }
         }
         return null;
-    }
-    /**
-     * 鍙戦�乬et璇锋眰
-     * @param url 璇锋眰URL
-     * @param param 璇锋眰鍙傛暟 key:value url鎼哄甫鍙傛暟 鎴栬�呮棤鍙傚彲涓嶅~
-     * @return
-     */
-    public static  String doGet(String url, Map<String, String> param) {
-        // 鍒涘缓Httpclient瀵硅薄
-        CloseableHttpClient httpclient = HttpClients.createDefault();
-        String resultString = "";
-        CloseableHttpResponse response = null;
-        try {
-            // 鍒涘缓uri
-            URIBuilder builder = new URIBuilder(url);
-            if (param != null) {
-                for (String key : param.keySet()) {
-                    builder.addParameter(key, param.get(key));
-                }
-            }
-            URI uri = builder.build();
-            // 鍒涘缓http GET璇锋眰
-            HttpGet httpGet = new HttpGet(uri);
-            // 鎵ц璇锋眰
-            response = httpclient.execute(httpGet);
-            // 鍒ゆ柇杩斿洖鐘舵�佹槸鍚︿负200
-            if (response.getStatusLine().getStatusCode() == 200) {
-                resultString = EntityUtils.toString(response.getEntity(), "UTF-8");
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        } finally {
-            try {
-                if (response != null) {
-                    response.close();
-                }
-                httpclient.close();
-            } catch (IOException e) {
-                e.printStackTrace();
-            }
-        }
-        return resultString;
-    }
-
-    public static void main(String[] args) {
-        //灞�閮ㄤ俊浠绘墍鏈夎瘉涔﹀拰涓绘満
-        String result = HttpsUtil.get("https://127.0.0.1:8443/ssl-test/test01.do",true);
-        System.out.println(result);
-
-        //澶栭儴淇′换鎵�鏈夎瘉涔﹀拰涓绘満
-        HttpsTrustManager.allowAllSSL();
-        String response = HttpsUtil.get("https://127.0.0.1:8443/ssl-test/test01.do", false);
-        System.out.println(result);
-
     }
 }
 
diff --git a/server/services/src/main/java/com/doumee/core/utils/StringTools.java b/server/services/src/main/java/com/doumee/core/utils/StringTools.java
index cc470ac..b10f795 100644
--- a/server/services/src/main/java/com/doumee/core/utils/StringTools.java
+++ b/server/services/src/main/java/com/doumee/core/utils/StringTools.java
@@ -170,7 +170,7 @@
             index++;
         }
         String result = str.substring(index);
-        return str;
+        return result;
     }
 
     public static int[] toArray(Collection<Integer> list) {
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java
index 1302e95..c7a2291 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java
@@ -13,6 +13,8 @@
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
 import com.doumee.core.utils.DateUtil;
+import com.doumee.core.utils.HttpsUtil;
+import com.doumee.core.utils.StringTools;
 import com.doumee.core.utils.Utils;
 import com.doumee.dao.business.ActionLogMapper;
 import com.doumee.dao.business.BikesMapper;
@@ -371,8 +373,33 @@
         update.setBackUserid(user.getId());
         update.setBackType(Constants.ONE);
         update.setStatus(Constants.MEMBER_RIDES_STATUS.BACK_CYCLING.getKey());
-        update.setBackSiteId(collect.get(Constants.FORCE_BACK_SITE).getCode());
-        update.setBackLockId(Constants.formatIntegerFromStr(collect.get(Constants.FORCE_BACK_LOCK).getCode()));
+        String logInfo = null;
+        Bikes bike =null;
+        if(Constants.equalsInteger(model.getType(),Constants.ZERO)){
+            //濡傛灉鏄嚜琛岃溅锛岀粦瀹氬埌铏氭嫙绔欑偣鍜岄攣澶�
+            update.setBackSiteId(collect.get(Constants.FORCE_BACK_SITE).getCode());
+            update.setBackLockId(Constants.formatIntegerFromStr(collect.get(Constants.FORCE_BACK_LOCK).getCode()));
+            //鎻掑叆铏氭嫙閿佸ご鍜岀珯鐐逛笂-------
+            bike = new Bikes();
+            bike.setIsdeleted(Constants.ZERO);
+            bike.setCode(model.getBikeCode());
+            bike.setType(model.getType());
+            bike.setSiteId(update.getBackSiteId());
+            bike.setLockId(update.getBackLockId());
+            if(bikesMapper.selectCount(new QueryWrapper<>(bike)) == 0){
+                bike.setId(Constants.getUUID());
+                bike.setParamId(model.getParamId());
+                bike.setLastBackDate(model.getRentDate());
+                bike.setStatus(Constants.ZERO);
+                bike.setType(Constants.ZERO);
+                bike.setInfo("寮哄埗杩樿溅缁戝畾");
+                bikesMapper.insert(bike);
+            }
+        }else{
+            //濡傛灉鏄數杞︼紝璇锋眰web绔帴鍙e叧闂溅杈嗕俊鎭�
+            bike =   sendCloseElecBikeRequest(memberRides.getBikeCode(),Constants.ONE);
+        }
+        logInfo = bike!=null?bike.getInfo():null;
         Integer freeRentTime = Integer.valueOf(collect.get(Constants.FREE_RENT_TIME).getCode());
         Integer rideTime = DateUtil.betweenMin(model.getRentDate(), update.getBackDate());
         //璁$畻楠戣璁¤垂鏃堕暱
@@ -383,23 +410,6 @@
         String beforeContent = JSONObject.toJSONString(model);
         //淇敼鍚�
         String after = JSONObject.toJSONString(update);
-
-        //鎻掑叆铏氭嫙閿佸ご鍜岀珯鐐逛笂-------
-        Bikes bike = new Bikes();
-        bike.setIsdeleted(Constants.ZERO);
-        bike.setCode(model.getBikeCode());
-        bike.setType(model.getType());
-        bike.setSiteId(update.getBackSiteId());
-        bike.setLockId(update.getBackLockId());
-        if(bikesMapper.selectCount(new QueryWrapper<>(bike)) == 0){
-            bike.setId(Constants.getUUID());
-            bike.setParamId(model.getParamId());
-            bike.setLastBackDate(model.getRentDate());
-            bike.setStatus(Constants.ZERO);
-            bike.setType(Constants.ZERO);
-            bike.setInfo("寮哄埗杩樿溅缁戝畾");
-            bikesMapper.insert(bike);
-        }
 
         ActionLog log = new ActionLog();
         log.setId(Constants.getUUID());
@@ -414,6 +424,7 @@
         log.setObjType(Constants.ActionLogObjType.memberrides);
         log.setResult(Constants.ZERO);
         log.setObjId(model.getId());
+        log.setInfo(logInfo);
         log.setType(Constants.ACTIONLOG_TYPE.FORCE_BACK.getKey());
         log.setContent(Constants.ACTIONLOG_TYPE.FORCE_BACK.getInfo());
         log.setTitle(Constants.ACTIONLOG_TYPE.FORCE_BACK.getName());
@@ -423,7 +434,52 @@
         actionLogMapper.insert(log);
 
     }
+    /**
+     *  濡傛灉鏄數杞︼紝璇锋眰web绔帴鍙e叧闂溅杈嗕俊鎭�
+     */
+    private Bikes sendCloseElecBikeRequest(String bikeCode,int type) {
+        Bikes  bike = bikesMapper.selectOne(new QueryWrapper<Bikes>().lambda()
+                .eq(Bikes::getType,Constants.ONE)
+                .eq(Bikes::getIsdeleted,Constants.ZERO)
+                .eq(Bikes::getCode,bikeCode)
+        );
+        if(bike == null){
+            return null;
+        }
+        bike.setInfo("寮哄埗杩樿溅鍏抽棴杞﹂攣澶辫触锛�");
+        if(StringUtils.isNotBlank(bike.getDeviceSn())){
+            try {
+                //璇锋眰鍦板潃
+                String url = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.ELEC_BIKE_CONTRIL_API_URL).getCode();
+                JSONObject param = new JSONObject();
+                param.put("clientId",StringTools.leftTrip(bike.getDeviceSn(),'0'));
+                param.put("type",type);//0寮�閿� 1鍏抽攣
+                String res = HttpsUtil.postJsonString(url,param.toJSONString());
+                JSONObject json = JSONObject.parseObject(res);
+                if(json.get("code").equals("200")){
+                    //鍙戣捣鎸囦护鎴愬姛
+                    bike.setInfo("寮哄埗杩樿溅鍏抽棴杞﹂攣鎴愬姛锛�");
+                }else{
+                    bike.setInfo("寮哄埗杩樿溅鍏抽棴杞﹂攣澶辫触锛�"+json.get("msg"));
+                }
+            }catch (Exception e){
+                e.printStackTrace();
+            }
+        }else{
+            bike.setInfo("寮哄埗杩樿溅鍏抽棴杞﹂攣澶辫触,鏈粦瀹氭帶鍒跺櫒sn锛�");
+        }
+        bikesMapper.updateById(bike);
+        return bike;
+    }
 
+    public static void main(String[] args) {
+        String url = "http://localhost:10025/jtt808/device/8500";
+        JSONObject param = new JSONObject();
+        param.put("clientId",StringTools.leftTrip("0067244400211",'0'));
+        param.put("type",0);//0寮�閿� 1鍏抽攣
+        String res = HttpsUtil.postJsonString(url,param.toJSONString());
+        System.out.println(res);
+    }
     public ConcurrentMap<String,Integer> cacheOpenLock = new ConcurrentReferenceHashMap<>();
 
     @Override
diff --git a/server/web/src/main/java/com/doumee/jtt808/web/service/Jtt808Service.java b/server/web/src/main/java/com/doumee/jtt808/web/service/Jtt808Service.java
index 81510a2..b22e0eb 100644
--- a/server/web/src/main/java/com/doumee/jtt808/web/service/Jtt808Service.java
+++ b/server/web/src/main/java/com/doumee/jtt808/web/service/Jtt808Service.java
@@ -177,7 +177,7 @@
     private void lockBikes(String clientId,int type) {
         T8500 request = new T8500();
         request.setType(type);//鍏抽攣
-        request.setClientId(StringTools.leftPad(clientId,12,'0'));
+        request.setClientId(StringTools.leftTrip(clientId,'0'));
         Mono<APIResult<T0201_0500>>  result = messageManager.requestR(request, T0201_0500.class);
         APIResult<T0201_0500> data = result.block();
         if(!data.isSuccess()){

--
Gitblit v1.9.3