From f5f9d439cfc6b45acc486ec52ed7a0288e92d189 Mon Sep 17 00:00:00 2001
From: wjc <1243177876@qq.com>
Date: 星期四, 08 六月 2023 20:34:39 +0800
Subject: [PATCH] 2023年06月08日20:34:33
---
app/src/main/java/com/hdl/photovoltaic/listener/CloudCallBeak.java | 9
app/src/main/java/com/hdl/photovoltaic/listener/BaseFailureCallBack.java | 8
app/src/main/java/com/hdl/photovoltaic/bean/ResponsePack.java | 44 ++
app/src/main/AndroidManifest.xml | 5
app/src/main/java/com/hdl/photovoltaic/bean/LoginBean.java | 177 ++++++++++
app/src/main/java/com/hdl/photovoltaic/config/UserManagement.java | 5
.idea/misc.xml | 2
app/src/main/java/com/hdl/photovoltaic/internet/HttpClient.java | 199 +++++++++++
app/src/main/java/com/hdl/photovoltaic/other/HdlFileLogic.java | 59 +-
app/src/main/java/com/hdl/photovoltaic/bean/LoginUserRegionBean.java | 68 ++++
app/src/main/java/com/hdl/photovoltaic/internet/api/HttpApi.java | 4
app/src/main/java/com/hdl/photovoltaic/listener/BaseSuccessFailureCallBeak.java | 11
app/src/main/java/com/hdl/photovoltaic/config/ConfigManagement.java | 75 ++++
app/src/main/java/com/hdl/photovoltaic/other/HdlAccountLogic.java | 134 +++++--
app/src/main/java/com/hdl/photovoltaic/ui/HomeLoginActivity.java | 22
app/src/main/java/com/hdl/photovoltaic/utils/HDLMD5Utils.java | 177 ++++++++++
16 files changed, 920 insertions(+), 79 deletions(-)
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 25d34a4..4bc4fc6 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
- <component name="ProjectRootManager" version="2" languageLevel="JDK_11" project-jdk-name="11" project-jdk-type="JavaSDK" />
+ <component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="11" project-jdk-type="JavaSDK" />
</project>
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 85db82f..01aad1e 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -7,9 +7,12 @@
android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"
tools:ignore="ProtectedPermissions" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.VIBRATE" />
+ <uses-permission android:name="android.permission.INTERNET" />
+ <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+ <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
+
<application
android:name=".HDLApp"
diff --git a/app/src/main/java/com/hdl/photovoltaic/bean/LoginBean.java b/app/src/main/java/com/hdl/photovoltaic/bean/LoginBean.java
new file mode 100644
index 0000000..419527c
--- /dev/null
+++ b/app/src/main/java/com/hdl/photovoltaic/bean/LoginBean.java
@@ -0,0 +1,177 @@
+package com.hdl.photovoltaic.bean;
+
+import androidx.annotation.NonNull;
+
+import java.io.Serializable;
+
+public class LoginBean implements Serializable {
+ /// 鐢ㄦ埛鏈夋晥韬唤Token
+ private String accessToken;
+ /// 鐢ㄦ埛鏈夋晥韬唤Token杩囨湡鏃堕棿
+ private String expiration;
+ /// 鍒锋柊Token
+ private String refreshToken;
+ /// 鍒锋柊Token杩囨湡鏃堕棿
+ private String refreshExpiration;
+ /// 鐢ㄦ埛鍞竴ID
+ private String userId;
+ /// 鐧诲綍甯愬彿
+ private String account;
+ /// headerPrefix
+ private String headerPrefix;
+ private String tokenUuid;
+ private String tokenType;
+ private String expiresIn;
+ private String refreshExpiresIn;
+ private String userType;
+ private String name;
+ private String userPhone;
+ /// 鐢ㄦ埛閭
+ private String userEmail;
+ ///浼佷笟鍗曚綅id
+ private String companyId;
+
+ @NonNull
+ public String getAccessToken() {
+ return accessToken == null ? "" : accessToken;
+ }
+
+ public void setAccessToken(@NonNull String accessToken) {
+ this.accessToken = accessToken;
+ }
+
+ @NonNull
+ public String getExpiration() {
+ return expiration == null ? "" : expiration;
+ }
+
+ public void setExpiration(@NonNull String expiration) {
+ this.expiration = expiration;
+ }
+
+ @NonNull
+ public String getRefreshToken() {
+ return refreshToken == null ? "" : refreshToken;
+ }
+
+ public void setRefreshToken(@NonNull String refreshToken) {
+ this.refreshToken = refreshToken;
+ }
+
+ @NonNull
+ public String getRefreshExpiration() {
+ return refreshExpiration == null ? "" : refreshExpiration;
+ }
+
+ public void setRefreshExpiration(@NonNull String refreshExpiration) {
+ this.refreshExpiration = refreshExpiration;
+ }
+
+ @NonNull
+ public String getUserId() {
+ return userId == null ? "" : userId;
+ }
+
+ public void setUserId(@NonNull String userId) {
+ this.userId = userId;
+ }
+
+ @NonNull
+ public String getAccount() {
+ return account == null ? "" : account;
+ }
+
+ public void setAccount(@NonNull String account) {
+ this.account = account;
+ }
+
+ @NonNull
+ public String getHeaderPrefix() {
+ return headerPrefix == null ? "" : headerPrefix;
+ }
+
+ public void setHeaderPrefix(@NonNull String headerPrefix) {
+ this.headerPrefix = headerPrefix;
+ }
+
+ @NonNull
+ public String getTokenUuid() {
+ return tokenUuid == null ? "" : tokenUuid;
+ }
+
+ public void setTokenUuid(@NonNull String tokenUuid) {
+ this.tokenUuid = tokenUuid;
+ }
+
+ @NonNull
+ public String getTokenType() {
+ return tokenType == null ? "" : tokenType;
+ }
+
+ public void setTokenType(@NonNull String tokenType) {
+ this.tokenType = tokenType;
+ }
+
+ @NonNull
+ public String getExpiresIn() {
+ return expiresIn == null ? "" : expiresIn;
+ }
+
+ public void setExpiresIn(@NonNull String expiresIn) {
+ this.expiresIn = expiresIn;
+ }
+
+ @NonNull
+ public String getRefreshExpiresIn() {
+ return refreshExpiresIn == null ? "" : refreshExpiresIn;
+ }
+
+ public void setRefreshExpiresIn(@NonNull String refreshExpiresIn) {
+ this.refreshExpiresIn = refreshExpiresIn;
+ }
+
+ @NonNull
+ public String getUserType() {
+ return userType == null ? "" : userType;
+ }
+
+ public void setUserType(@NonNull String userType) {
+ this.userType = userType;
+ }
+
+ @NonNull
+ public String getName() {
+ return name == null ? "" : name;
+ }
+
+ public void setName(@NonNull String name) {
+ this.name = name;
+ }
+
+ @NonNull
+ public String getUserPhone() {
+ return userPhone == null ? "" : userPhone;
+ }
+
+ public void setUserPhone(@NonNull String userPhone) {
+ this.userPhone = userPhone;
+ }
+
+ @NonNull
+ public String getUserEmail() {
+ return userEmail == null ? "" : userEmail;
+ }
+
+ public void setUserEmail(@NonNull String userEmail) {
+ this.userEmail = userEmail;
+ }
+
+ @NonNull
+ public String getCompanyId() {
+ return companyId == null ? "" : companyId;
+ }
+
+ public void setCompanyId(@NonNull String companyId) {
+ this.companyId = companyId;
+ }
+}
diff --git a/app/src/main/java/com/hdl/photovoltaic/bean/LoginUserRegionBean.java b/app/src/main/java/com/hdl/photovoltaic/bean/LoginUserRegionBean.java
new file mode 100644
index 0000000..1e96ee5
--- /dev/null
+++ b/app/src/main/java/com/hdl/photovoltaic/bean/LoginUserRegionBean.java
@@ -0,0 +1,68 @@
+package com.hdl.photovoltaic.bean;
+
+import androidx.annotation.NonNull;
+
+import java.io.Serializable;
+
+public class LoginUserRegionBean implements Serializable {
+ private String regionId;//鍖哄煙Id
+ private String regionName;//鍖哄煙鍚嶇О
+ private String regionMark;
+ private String regionMqttUrl;
+ private String regionSlbUrl;
+ private String regionUrl;//璐﹀彿鎵�鍦ㄥ尯鍩熷崗璁強鍦板潃
+
+ @NonNull
+ public String getRegionId() {
+ return regionId == null ? "" : regionId;
+ }
+
+ public void setRegionId(@NonNull String regionId) {
+ this.regionId = regionId;
+ }
+
+ @NonNull
+ public String getRegionName() {
+ return regionName == null ? "" : regionName;
+ }
+
+ public void setRegionName(@NonNull String regionName) {
+ this.regionName = regionName;
+ }
+
+ @NonNull
+ public String getRegionMark() {
+ return regionMark == null ? "" : regionMark;
+ }
+
+ public void setRegionMark(@NonNull String regionMark) {
+ this.regionMark = regionMark;
+ }
+
+ @NonNull
+ public String getRegionMqttUrl() {
+ return regionMqttUrl == null ? "" : regionMqttUrl;
+ }
+
+ public void setRegionMqttUrl(@NonNull String regionMqttUrl) {
+ this.regionMqttUrl = regionMqttUrl;
+ }
+
+ @NonNull
+ public String getRegionSlbUrl() {
+ return regionSlbUrl == null ? "" : regionSlbUrl;
+ }
+
+ public void setRegionSlbUrl(@NonNull String regionSlbUrl) {
+ this.regionSlbUrl = regionSlbUrl;
+ }
+
+ @NonNull
+ public String getRegionUrl() {
+ return regionUrl == null ? "" : regionUrl;
+ }
+
+ public void setRegionUrl(@NonNull String regionUrl) {
+ this.regionUrl = regionUrl;
+ }
+}
diff --git a/app/src/main/java/com/hdl/photovoltaic/bean/ResponsePack.java b/app/src/main/java/com/hdl/photovoltaic/bean/ResponsePack.java
new file mode 100644
index 0000000..8a4ab77
--- /dev/null
+++ b/app/src/main/java/com/hdl/photovoltaic/bean/ResponsePack.java
@@ -0,0 +1,44 @@
+package com.hdl.photovoltaic.bean;
+
+import java.io.Serializable;
+
+public class ResponsePack implements Serializable {
+ /**
+ * 鐘舵�佺爜
+ */
+ private String code;
+ /**
+ * 浜戠鐘舵�佺爜鐨勬秷鎭�
+ */
+ private String message;
+
+ /**
+ * 浜戠杩斿洖鐨勬暟鎹�
+ */
+ private Object data;
+
+ public String getCode() {
+ return code == null ? "" : code;
+ }
+
+ public void setCode(String code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message.equals("") ? "" : message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public Object getData() {
+ return data;
+ }
+
+ public void setData(Object data) {
+ this.data = data;
+ }
+
+}
diff --git a/app/src/main/java/com/hdl/photovoltaic/config/ConfigManagement.java b/app/src/main/java/com/hdl/photovoltaic/config/ConfigManagement.java
new file mode 100644
index 0000000..bc18f82
--- /dev/null
+++ b/app/src/main/java/com/hdl/photovoltaic/config/ConfigManagement.java
@@ -0,0 +1,75 @@
+package com.hdl.photovoltaic.config;
+
+import com.hdl.photovoltaic.BuildConfig;
+
+public class ConfigManagement {
+
+
+ /*********鏄惁姝e紡鏈嶅姟鍣�*********/
+ private static final boolean isOnlineServer = true;
+ /*********姝e紡鐜*********/
+ private static final String APP_KEY_ONLINE = "CSZEMDJL";
+ private static final String APP_SECRET_ONLINE = "CSZEMDKBCSZEMDKR";
+ private static final String APP_REGIONURL_ONLINE = "https://nearest.hdlcontrol.com";
+ /*********娴嬭瘯鐜*********/
+ private static final String APP_KEY_TEST = "CTBGMNUV";
+ private static final String APP_SECRET_TEST = "CTBGMNVLCTBGMNWB";
+ private static final String APP_REGIONURL_TEST = "https://test-gz.hdlcontrol.com";
+
+ /*********鑾峰彇褰撳墠鏄惁浣跨敤姝e紡鏈嶅姟鍣ㄧ幆澧�*********/
+ public static boolean isIsOnlineServer() {
+ return isOnlineServer;
+ }
+
+ /// 鐢ㄦ埛娉ㄥ唽鎵�鍦ㄦ湇鍔″櫒鍩熷悕鍦板潃
+ private static String sUserRegionUrl;
+
+ public static String getUserRegionUrl() {
+ return sUserRegionUrl == null ? "" : sUserRegionUrl;
+ }
+
+ public static void setUserRegionUrl(String userRegionUrl) {
+ sUserRegionUrl = userRegionUrl;
+ }
+
+ /*********getAppKey*********/
+ public static String getAppKey() {
+ if (isOnlineServer) {
+ return APP_KEY_ONLINE;
+ } else {
+ return APP_KEY_TEST;
+ }
+ }
+
+ /*********getAppSecret*********/
+ public static String getAppSecret() {
+ if (isOnlineServer) {
+ return APP_SECRET_ONLINE;
+ } else {
+ return APP_SECRET_TEST;
+ }
+ }
+
+ /*********getAPP_RegionUrl*********/
+ public static String getAPPRegionUrl() {
+ if (isOnlineServer) {
+ return APP_REGIONURL_ONLINE;
+ } else {
+ return APP_REGIONURL_TEST;
+ }
+ }
+
+ /**
+ * 褰撳墠鏄惁涓鸿皟璇曟ā寮�
+ */
+ public static boolean isDebug() {
+ return BuildConfig.DEBUG;
+ }
+
+ /**
+ * 鑾峰彇褰撳墠搴旂敤鐨勭増鏈悕
+ */
+ public static String getVersionName() {
+ return BuildConfig.VERSION_NAME;
+ }
+}
diff --git a/app/src/main/java/com/hdl/photovoltaic/config/UserManagement.java b/app/src/main/java/com/hdl/photovoltaic/config/UserManagement.java
new file mode 100644
index 0000000..5a1c008
--- /dev/null
+++ b/app/src/main/java/com/hdl/photovoltaic/config/UserManagement.java
@@ -0,0 +1,5 @@
+package com.hdl.photovoltaic.config;
+
+public class UserManagement {
+
+}
diff --git a/app/src/main/java/com/hdl/photovoltaic/internet/HttpClient.java b/app/src/main/java/com/hdl/photovoltaic/internet/HttpClient.java
index e82d14e..8d2c3cd 100644
--- a/app/src/main/java/com/hdl/photovoltaic/internet/HttpClient.java
+++ b/app/src/main/java/com/hdl/photovoltaic/internet/HttpClient.java
@@ -1,4 +1,203 @@
package com.hdl.photovoltaic.internet;
+import android.net.Uri;
+import android.text.TextUtils;
+
+import androidx.annotation.NonNull;
+
+import com.google.gson.Gson;
+import com.google.gson.JsonObject;
+import com.google.gson.reflect.TypeToken;
+import com.hdl.hdlhttp.utils.GsonConvert;
+import com.hdl.photovoltaic.bean.ResponsePack;
+import com.hdl.photovoltaic.config.ConfigManagement;
+import com.hdl.photovoltaic.listener.BaseSuccessFailureCallBeak;
+import com.hdl.photovoltaic.utils.HDLMD5Utils;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+
+import okhttp3.Call;
+import okhttp3.Callback;
+import okhttp3.FormBody;
+import okhttp3.MediaType;
+import okhttp3.OkHttpClient;
+import okhttp3.Request;
+import okhttp3.RequestBody;
+import okhttp3.Response;
+
public class HttpClient {
+
+ private static volatile HttpClient sHttpClient;
+
+ public static synchronized HttpClient getInstance() {
+ if (sHttpClient == null) {
+ synchronized (HttpClient.class) {
+ if (sHttpClient == null) {
+ sHttpClient = new HttpClient();
+ }
+ }
+
+ }
+ return sHttpClient;
+ }
+
+ /**
+ * 璇锋眰鏈嶅姟鍣ㄧ殑鏂规硶
+ *
+ * @param requestUrl 璇锋眰鎺ュ彛
+ * @param json 璇锋眰鏁版嵁
+ * @param isBasicService 鏄惁鏄熀纭�鏈嶅姟鐨勬帴鍙�(鍩虹鏈嶅姟鐨勬帴鍙i渶瑕� appKey,timestamp,sign杩欎笁涓弬鏁�,褰撲负true鏃�,鍐呴儴浼氳嚜鍔ㄦ坊鍔�)
+ * @param isExecute 鏄惁鏄悓姝�(true=鍚屾,false=寮傛)
+ */
+ public void requestHttp(String requestUrl, String json, boolean isBasicService, boolean isExecute, BaseSuccessFailureCallBeak baseSuccessCallBeak) {
+ String fullUrl = ConfigManagement.getUserRegionUrl() + requestUrl;
+ this.requestHttps(fullUrl, json, isBasicService, isExecute, baseSuccessCallBeak);
+ }
+
+ /**
+ * 璇锋眰鏈嶅姟鍣ㄧ殑鏂规硶(鐩墠鍙敤鍦ㄨ幏鍙栬幏鍙栬处鍙峰尯鍩熶俊鎭�)
+ *
+ * @param fullUrl 缁濆鍦板潃(鍦板潃+鎺ュ彛)
+ * @param json 璇锋眰鏁版嵁
+ * @param isBasicService 鏄惁鏄熀纭�鏈嶅姟鐨勬帴鍙�(鍩虹鏈嶅姟鐨勬帴鍙i渶瑕� appKey,timestamp,sign杩欎笁涓弬鏁�,褰撲负true鏃�,鍐呴儴浼氳嚜鍔ㄦ坊鍔�)
+ * @param isExecute 鏄惁鏄悓姝�(true=鍚屾,false=寮傛)
+ */
+ public void requestFullHttp(String fullUrl, String json, boolean isBasicService, boolean isExecute, BaseSuccessFailureCallBeak baseSuccessCallBeak) {
+ this.requestHttps(fullUrl, json, isBasicService, isExecute, baseSuccessCallBeak);
+ }
+
+
+ /**
+ * 璇锋眰鏈嶅姟鍣ㄧ殑鏂规硶
+ *
+ * @param fullUrl 缁濆璇锋眰鍦板潃
+ * @param json 璇锋眰鏁版嵁
+ * @param isBasicService 鏄惁鏄熀纭�鏈嶅姟鐨勬帴鍙�(鍩虹鏈嶅姟鐨勬帴鍙i渶瑕� appKey,timestamp,sign杩欎笁涓弬鏁�,褰撲负true鏃�,鍐呴儴浼氳嚜鍔ㄦ坊鍔�)
+ * @param isExecute 鏄惁鏄悓姝�(true=鍚屾,false=寮傛)
+ */
+ private void requestHttps(String fullUrl, String json, boolean isBasicService, boolean isExecute, BaseSuccessFailureCallBeak baseSuccessCallBeak) {
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ try {
+ OkHttpClient okHttpClient = new OkHttpClient();
+ RequestBody requestBody = FormBody.create(MediaType.parse("application/json; charset=utf-8"), getJson(json));
+ final Request request = new Request.Builder()
+ .url(fullUrl)//璇锋眰鐨剈rl//
+ .addHeader("Authorization", "accessToken")
+ .post(requestBody)
+ .build();
+ if (isExecute) {
+ Response response = okHttpClient.newCall(request).execute();//鍚屾
+ if (response.isSuccessful()) {
+ String s = Objects.requireNonNull(response.body()).string();
+ ResponsePack responsePack = new Gson().fromJson(s, ResponsePack.class);
+ baseSuccessCallBeak.onSuccess(responsePack);
+ } else {
+ //throw new IOException("Unexpected code " + response);
+ baseSuccessCallBeak.onFailure(new Exception());
+ }
+ } else {
+
+ Call call = okHttpClient.newCall(request);
+ call.enqueue(new Callback() {//寮傛
+ @Override
+ public void onFailure(@NonNull Call call, @NonNull IOException e) {
+ System.out.println("澶辫触" + e.toString());
+ }
+
+ @Override
+ public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException {
+ System.out.println("url杩炴帴淇℃伅" + response.code());
+ if (response.code() == 200) {
+ String s = Objects.requireNonNull(response.body()).string();
+ ResponsePack responsePack = new Gson().fromJson(s, ResponsePack.class);
+ baseSuccessCallBeak.onSuccess(responsePack);
+ } else {
+ baseSuccessCallBeak.onFailure(new Exception());
+ }
+ }
+ });
+ }
+ } catch (Exception e) {
+ baseSuccessCallBeak.onFailure(e);
+ }
+
+ }
+
+ }).start();
+ }
+
+ /**
+ * 娣诲姞sign瀛楁
+ */
+ private String getJson(String json) {
+ final String timestamp = String.valueOf(System.currentTimeMillis());
+ final String appKey = ConfigManagement.getAppKey();
+ final String appSecret = ConfigManagement.getAppSecret();
+ JsonObject jsonObject = new Gson().fromJson(json, JsonObject.class);
+ if (jsonObject == null) {
+ jsonObject = new JsonObject();
+ }
+ jsonObject.addProperty("appKey", appKey);
+ jsonObject.addProperty("timestamp", timestamp);
+ jsonObject.addProperty("sign", getSign(jsonObject, appSecret));
+
+ return jsonObject.toString();
+ }
+
+ /**
+ * 闇�瑕佹寜瀛楁瘝鎺掑簭
+ *
+ * @param json 鎵�鏈夊瓧娈典娇鐢╱rlParameter鎷兼帴锛岄櫎浜哸ppSecret
+ */
+ private String getSign(JsonObject json, String appSecret) {
+ String builder = jsonToUrlParameter(json) +
+ appSecret;
+ return HDLMD5Utils.encodeMD5(builder);
+ }
+
+
+ private String jsonToUrlParameter(JsonObject object) {
+ final Map<String, String> map = GsonConvert.getGson().fromJson(object, new TypeToken<Map<String, String>>() {
+ }.getType());
+ final Uri.Builder builder = new Uri.Builder();
+ List<String> list = new ArrayList<>(map.keySet());
+ Collections.sort(list);
+ for (String key : list) {
+ //鍒ゆ柇褰撳墠鍊兼槸鍚﹂渶瑕佸弬涓庣鍚嶏紝淇濇寔璺熶簯绔竴鑷�
+ if (IfValueNeedSign(map.get(key))) {
+ builder.appendQueryParameter(key, map.get(key));
+// HDLSDKLog.e("瑕佺鍚嶏細" + key + " 锛�" + map.get(key));
+ } else {
+// HDLSDKLog.e("涓嶉渶瑕佺鍚嶏細" + key + " 锛�" + map.get(key));
+ }
+ }
+ return builder.build().getQuery();
+ }
+
+ /**
+ * 鍒ゆ柇褰撳墠鍊兼槸鍚﹂渶瑕佸弬涓庣鍚嶏紝淇濇寔璺熶簯绔竴鑷�
+ * 绌哄瓧绗︿覆涓嶅弬涓�
+ * 鏁扮粍,闆嗗悎,瀵硅薄涓嶅弬涓�
+ *
+ * @param valueStr -
+ * @return -
+ */
+ private boolean IfValueNeedSign(String valueStr) {
+ if (TextUtils.isEmpty(valueStr))
+ return false;
+ final char[] strChar = valueStr.substring(0, 1).toCharArray();
+ final char firstChar = strChar[0];
+ //System.out.println("getJSONType firstChar = "+firstChar);
+ if (firstChar != '{' && firstChar != '[')
+ return true;
+
+ return false;
+ }
}
diff --git a/app/src/main/java/com/hdl/photovoltaic/internet/api/HttpApi.java b/app/src/main/java/com/hdl/photovoltaic/internet/api/HttpApi.java
index 75b8eec..c744fa1 100644
--- a/app/src/main/java/com/hdl/photovoltaic/internet/api/HttpApi.java
+++ b/app/src/main/java/com/hdl/photovoltaic/internet/api/HttpApi.java
@@ -7,7 +7,7 @@
//鐧诲綍鎺ュ彛
public static final String POST_Login = "/smart-footstone/user/oauth/login";
//鍙戦�佹秷鎭獙璇佺爜
- public static final String POST_VERIFICATION_CODE_SEND= "/smart-footstone/verification/message/send";
+ public static final String POST_VERIFICATION_CODE_SEND = "/smart-footstone/verification/message/send";
//鐢ㄦ埛鎵惧洖瀵嗙爜 蹇樿瀵嗙爜,閫氳繃閭鍜屾墜鏈哄彿鎵惧洖
public static final String POST_FORGET_PROGRAM_PWD = "/smart-footstone/user/oauth/forgetProgramPwd";
//鏇存敼涓汉瀵嗙爜
@@ -15,7 +15,7 @@
//鑾峰彇鍛樺伐鍒楄〃
public static final String POST_GET_USER_LIST = "/smart-footstone/user/userInfo/getUserList";
//鑾峰彇鐢ㄦ埛涓汉淇℃伅 C绔�
- public static final String POST_GET_MEMBER_INFO= "/smart-footstone/member/memberInfo/getMemberInfo";
+ public static final String POST_GET_MEMBER_INFO = "/smart-footstone/member/memberInfo/getMemberInfo";
//鏇存柊涓汉淇℃伅 C绔�
public static final String POST_UPDATE_MEMBER_INFO = "/smart-footstone/member/memberInfo/updateMemberInfo";
//涓婁紶鍥剧墖
diff --git a/app/src/main/java/com/hdl/photovoltaic/listener/BaseFailureCallBack.java b/app/src/main/java/com/hdl/photovoltaic/listener/BaseFailureCallBack.java
new file mode 100644
index 0000000..d287803
--- /dev/null
+++ b/app/src/main/java/com/hdl/photovoltaic/listener/BaseFailureCallBack.java
@@ -0,0 +1,8 @@
+package com.hdl.photovoltaic.listener;
+
+public interface BaseFailureCallBack {
+ /**
+ * 澶辫触
+ */
+ void onFailure(Exception exception);
+}
diff --git a/app/src/main/java/com/hdl/photovoltaic/listener/BaseSuccessFailureCallBeak.java b/app/src/main/java/com/hdl/photovoltaic/listener/BaseSuccessFailureCallBeak.java
new file mode 100644
index 0000000..bbcd77f
--- /dev/null
+++ b/app/src/main/java/com/hdl/photovoltaic/listener/BaseSuccessFailureCallBeak.java
@@ -0,0 +1,11 @@
+package com.hdl.photovoltaic.listener;
+
+import com.hdl.photovoltaic.bean.ResponsePack;
+
+public interface BaseSuccessFailureCallBeak extends BaseFailureCallBack {
+
+ /**
+ * 鎴愬姛鍥炶皟
+ */
+ void onSuccess(ResponsePack responsePack);
+}
diff --git a/app/src/main/java/com/hdl/photovoltaic/listener/CloudCallBeak.java b/app/src/main/java/com/hdl/photovoltaic/listener/CloudCallBeak.java
new file mode 100644
index 0000000..39ee496
--- /dev/null
+++ b/app/src/main/java/com/hdl/photovoltaic/listener/CloudCallBeak.java
@@ -0,0 +1,9 @@
+package com.hdl.photovoltaic.listener;
+
+public interface CloudCallBeak<T> extends BaseFailureCallBack {
+ /**
+ * 鎴愬姛鍥炶皟
+ */
+ void onSuccess(T obj);
+
+}
diff --git a/app/src/main/java/com/hdl/photovoltaic/other/HdlAccountLogic.java b/app/src/main/java/com/hdl/photovoltaic/other/HdlAccountLogic.java
index 63c9ae5..27b8699 100644
--- a/app/src/main/java/com/hdl/photovoltaic/other/HdlAccountLogic.java
+++ b/app/src/main/java/com/hdl/photovoltaic/other/HdlAccountLogic.java
@@ -1,6 +1,20 @@
package com.hdl.photovoltaic.other;
+import com.google.gson.Gson;
+import com.google.gson.JsonObject;
+import com.hdl.photovoltaic.bean.LoginBean;
+import com.hdl.photovoltaic.bean.LoginUserRegionBean;
+import com.hdl.photovoltaic.bean.ResponsePack;
+import com.hdl.photovoltaic.config.ConfigManagement;
+import com.hdl.photovoltaic.internet.HttpClient;
+import com.hdl.photovoltaic.internet.api.HttpApi;
+import com.hdl.photovoltaic.listener.BaseSuccessFailureCallBeak;
+import com.hdl.photovoltaic.listener.CloudCallBeak;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
/**
* 鐧婚檰鐣岄潰鐨勯�昏緫
*/
@@ -22,55 +36,89 @@
/**
- * 鍒濆鍖栬处鍙风殑Url鍖哄煙鍦板潃(鍙兘鐘舵�佺爜:Sucess NotAccount NotNetWork)
+ * 鍒濆鍖栬处鍙风殑Url鍖哄煙鍦板潃(鍙兘鐘舵�佺爜:Success NotAccount NotNetWork)
*
- * @param i_account
- * @return
+ * @param i_account 璐﹀彿
*/
- private void InitAccoutRegionInfo(String i_account) {
-// String regionUrl = this.GetAccoutRegionInfo(i_account);
-//
-//
-// if (regionUrl == null) {
-// return AccountStatu.NotNetWork;
-// }
-// if (regionUrl == string.Empty) {
-// return AccountStatu.NotAccount;
-// }
-//
-// return AccountStatu.Sucess;
+ public void regionByAccount(String i_account, CloudCallBeak<LoginUserRegionBean> cloudCallBeak) {
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.addProperty("account", i_account);
+ String full = ConfigManagement.getAPPRegionUrl() + HttpApi.POST_RegionByUserAccount;
+ HttpClient.getInstance().requestFullHttp(full, jsonObject.toString(), true, true, new BaseSuccessFailureCallBeak() {
+ @Override
+ public void onSuccess(ResponsePack responsePack) {
+ if (responsePack.getData() != null) {
+ Gson gson = new Gson();
+ String json = gson.toJson(responsePack.getData());
+ LoginUserRegionBean loginUserRegionBean = new Gson().fromJson(json, LoginUserRegionBean.class);
+ if (cloudCallBeak != null) {
+ cloudCallBeak.onSuccess(loginUserRegionBean);
+ } else {
+ cloudCallBeak.onFailure(new Exception());
+ }
+ }
+ }
+
+ @Override
+ public void onFailure(Exception exception) {
+ if (cloudCallBeak != null) {
+ cloudCallBeak.onFailure(exception);
+ }
+ }
+ });
}
/**
- * 鑾峰彇璐﹀彿鎵�鍦ㄥ尯鍩�
+ * 鐧诲綍
+ * 閫氳繃璐﹀彿鍜屽瘑鐮�
*
- * @param account
- * @param callBack
- * @return https://nearest.hdlcontrol.com/smart-footstone/region/regionByUserAccount
+ * @param account 鎵嬫満鎴栬�呴偖绠�
+ * @param loginPwd 瀵嗙爜
+ * @param cloudCallBeak -
*/
-// public Disposable regionByAccount(String account, IRegionByAccountCallBack callBack) {
-// String requestUrl = HDLLinkPMSdk.getInitUrl() + HttpApi.POST_RegionByUserAccount;
-// return HxHttp.builder()
-// .url(requestUrl)
-// .params("account", account)
-// .build()
-// .post()
-// .subscribeWith(new HDLResponse<HDLUserRegionBean>() {
-// @Override
-// public void onResponse(HDLUserRegionBean response) {
-// if (callBack != null) {
-// callBack.onSuccess(response);
-// }
-// }
-//
-// @Override
-// public void onFailure(HDLException e) {
-// HDLExceptionSubmitUtils.submit(requestUrl, account, e);
-// if (callBack != null) {
-// callBack.onFailure(e);
-// }
-// }
-// });
+ public void loginByPassword(String account, String loginPwd, CloudCallBeak<LoginBean> cloudCallBeak) {
+ String requestUrl = HttpApi.POST_Login;
+ JsonObject json = new JsonObject();
+ json.addProperty("account", account);
+ json.addProperty("loginPwd", loginPwd);
+// json.addProperty("platform", "APP");
+ json.addProperty("grantType", "password");
-// }
+ HttpClient.getInstance().requestHttp(requestUrl, json.toString(), true, true, new BaseSuccessFailureCallBeak() {
+ @Override
+ public void onSuccess(ResponsePack responsePack) {
+ if (responsePack.getData() != null) {
+ Gson gson = new Gson();
+ String json = gson.toJson(responsePack.getData());
+ LoginBean loginBean = new Gson().fromJson(json, LoginBean.class);
+ if (cloudCallBeak != null) {
+ cloudCallBeak.onSuccess(loginBean);
+ } else {
+ cloudCallBeak.onFailure(new Exception());
+ }
+ }
+ }
+
+ @Override
+ public void onFailure(Exception exception) {
+ if (cloudCallBeak != null) {
+ cloudCallBeak.onFailure(exception);
+ }
+ }
+ });
+ }
+
+
+ public boolean isPhone(String phone) {
+ Pattern p = Pattern.compile("^((13[0-9])|(14[0|5|6|7|9])|(15[0-3])|(15[5-9])|(16[6|7])|(17[2|3|5|6|7|8])|(18[0-9])|(19[1|8|9]))\\d{8}$");
+ Matcher m = p.matcher(phone);
+ return m.matches();
+ }
+
+ public boolean isMailbox(String mailbox) {
+ String regex = "^(\\w+([-.][A-Za-z0-9]+)*){3,18}@\\w+([-.][A-Za-z0-9]+)*\\.\\w+([-.][A-Za-z0-9]+)*$";
+ return mailbox.matches(regex);
+ }
+
+
}
diff --git a/app/src/main/java/com/hdl/photovoltaic/utils/FileUtils.java b/app/src/main/java/com/hdl/photovoltaic/other/HdlFileLogic.java
similarity index 79%
rename from app/src/main/java/com/hdl/photovoltaic/utils/FileUtils.java
rename to app/src/main/java/com/hdl/photovoltaic/other/HdlFileLogic.java
index 7984262..a4454fe 100644
--- a/app/src/main/java/com/hdl/photovoltaic/utils/FileUtils.java
+++ b/app/src/main/java/com/hdl/photovoltaic/other/HdlFileLogic.java
@@ -1,42 +1,53 @@
-package com.hdl.photovoltaic.utils;
+package com.hdl.photovoltaic.other;
-import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.Log;
-import com.hdl.photovoltaic.other.HdlLogLogic;
+import com.hdl.photovoltaic.HDLApp;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
-import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
-import java.io.OutputStreamWriter;
-import java.nio.charset.StandardCharsets;
-import java.util.Objects;
+public class HdlFileLogic {
-public class FileUtils {
+ private static volatile HdlFileLogic sHdlFileLogic;
+
+ public static synchronized HdlFileLogic getInstance() {
+ if (sHdlFileLogic == null) {
+ synchronized (HdlFileLogic.class) {
+ if (sHdlFileLogic == null) {
+ sHdlFileLogic = new HdlFileLogic();
+ }
+ }
+
+ }
+ return sHdlFileLogic;
+ }
private static final String TAG = "FileUtils";
+ public static final String userId = "";
+
/**
* 鑾峰彇鍐呴儴瀛樺偍鏂囦欢璺緞
- *
- * @param context 涓婁笅鏂�
- * @return -
*/
- public static String getInternalStoreFilesPath(Context context) {
- if (context == null) {
- return "";
- }
- return context.getFilesDir().getAbsolutePath();
+ private String getInternalStoreFilesPath() {
+ return HDLApp.getInstance().getFilesDir().getAbsolutePath();
}
- public static File createFile(String dirPath, String fileName) {
+ /**
+ * 鑾峰彇App瀛樻斁鏂囦欢鐨勬牴璺緞
+ */
+ public String getAppFilesPath() {
+ return HDLApp.getInstance().getFilesDir().getAbsolutePath() + userId + "/home";
+ }
+
+ public File createFile(String dirPath, String fileName) {
try {
File dirFile = new File(dirPath);
if (!dirFile.exists()) {
@@ -71,7 +82,7 @@
/**
* 鍒涘缓鏂囦欢澶�---涔嬫墍浠ヨ涓�灞傚眰鍒涘缓锛屾槸鍥犱负涓�娆℃�у垱寤哄灞傛枃浠跺す鍙兘浼氬け璐ワ紒
*/
- public static boolean createFileDir(File dirFile) {
+ public boolean createFileDir(File dirFile) {
if (dirFile == null) {
return true;
}
@@ -92,7 +103,7 @@
}
}
- public static void writeFile(String path, String data) {
+ public void writeFile(String path, String data) {
try {
File file = new File(path);
if (!file.exists()) {
@@ -111,7 +122,7 @@
}
- public static String readFile(String filepath) {
+ public String readFile(String filepath) {
try {
String fileContent = "";
if (null == filepath) {
@@ -140,7 +151,7 @@
/**
* 鎶婁綅鍥炬暟鎹繚瀛樺埌鎸囧畾璺緞鐨勫浘鐗囨枃浠�
*/
- public static void writeImage(String path, Bitmap bitmap) {
+ public void writeImage(String path, Bitmap bitmap) {
try {
//鏍规嵁鎸囧畾鏂囦欢璺緞鏋勫缓缂撳瓨杈撳嚭娴佸璞�
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(path));
@@ -159,7 +170,7 @@
/**
* 浠庢寚瀹氳矾寰勭殑鍥剧墖鏂囦欢涓鍙栦綅鍥炬暟鎹�
*/
- public static Bitmap readImage(String path) {
+ public Bitmap readImage(String path) {
try {
//鏍规嵁鎸囧畾鏂囦欢璺緞鏋勫缓缂撳瓨杈撳叆娴佸璞�
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(path));
@@ -174,8 +185,4 @@
}
return null;
}
-
}
-
-
-
diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/HomeLoginActivity.java b/app/src/main/java/com/hdl/photovoltaic/ui/HomeLoginActivity.java
index b655da1..ba77b80 100644
--- a/app/src/main/java/com/hdl/photovoltaic/ui/HomeLoginActivity.java
+++ b/app/src/main/java/com/hdl/photovoltaic/ui/HomeLoginActivity.java
@@ -2,7 +2,6 @@
import android.os.Bundle;
-import android.os.SystemClock;
import android.text.Editable;
import android.text.Spannable;
import android.text.SpannableStringBuilder;
@@ -13,8 +12,6 @@
import android.text.style.ForegroundColorSpan;
import android.util.Log;
import android.view.View;
-import android.view.animation.Animation;
-import android.view.animation.RotateAnimation;
import android.widget.TextView;
@@ -22,9 +19,11 @@
import com.hdl.photovoltaic.R;
import com.hdl.photovoltaic.base.CustomBaseActivity;
+import com.hdl.photovoltaic.bean.LoginUserRegionBean;
+import com.hdl.photovoltaic.config.ConfigManagement;
import com.hdl.photovoltaic.databinding.ActivityHomeLoginBinding;
-import com.hdl.photovoltaic.ui.MyPowerStationActivity;
-import com.hdl.photovoltaic.utils.FileUtils;
+import com.hdl.photovoltaic.listener.CloudCallBeak;
+import com.hdl.photovoltaic.other.HdlAccountLogic;
public class HomeLoginActivity extends CustomBaseActivity {
@@ -160,7 +159,18 @@
viewBinding.homeLoginExperienceTv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- startActivity(MyPowerStationActivity.class);
+// startActivity(MyPowerStationActivity.class);
+ HdlAccountLogic.getInstance().regionByAccount("18402017839", new CloudCallBeak<LoginUserRegionBean>() {
+ @Override
+ public void onSuccess(LoginUserRegionBean obj) {
+ ConfigManagement.setUserRegionUrl(obj.getRegionUrl());
+ }
+
+ @Override
+ public void onFailure(Exception exception) {
+
+ }
+ });
}
});
diff --git a/app/src/main/java/com/hdl/photovoltaic/utils/HDLMD5Utils.java b/app/src/main/java/com/hdl/photovoltaic/utils/HDLMD5Utils.java
new file mode 100644
index 0000000..84ffec6
--- /dev/null
+++ b/app/src/main/java/com/hdl/photovoltaic/utils/HDLMD5Utils.java
@@ -0,0 +1,177 @@
+package com.hdl.photovoltaic.utils;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.UnsupportedEncodingException;
+import java.math.BigInteger;
+import java.nio.charset.StandardCharsets;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+
+public class HDLMD5Utils {
+ /**
+ * MD5杞瓧绗︿覆
+ */
+ public static String encodeMD5(String s) {
+ try {
+ MessageDigest digest = MessageDigest.getInstance("MD5");
+ digest.update(s.getBytes(StandardCharsets.UTF_8));
+ byte[] messageDigest = digest.digest();
+ return toHexString(messageDigest);
+ } catch (NoSuchAlgorithmException e) {
+ e.printStackTrace();
+ }
+ return "";
+ }
+
+ private static String toHexString(byte[] keyData) {
+ if (keyData == null) {
+ return null;
+ }
+ int expectedStringLen = keyData.length * 2;
+ StringBuilder sb = new StringBuilder(expectedStringLen);
+ for (byte keyDatum : keyData) {
+ String hexStr = Integer.toString(keyDatum & 0x00FF, 16);
+ if (hexStr.length() == 1) {
+ hexStr = "0" + hexStr;
+ }
+ sb.append(hexStr);
+ }
+ return sb.toString();
+ }
+
+ /**
+ * MD5杞瓧绗︿覆
+ * 棰濆鍊�
+ */
+ public static String encodeMD52(String s) {
+ char[] hexDigits = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
+ try {
+ byte[] btInput = s.getBytes(StandardCharsets.UTF_8);
+ MessageDigest digest = MessageDigest.getInstance("MD5");
+ digest.update(btInput);
+ byte[] md = digest.digest();
+ int j = md.length;
+ char[] str = new char[j * 2];
+ int k = 0;
+ for (byte byte0 : md) {
+ str[k++] = hexDigits[byte0 >>> 4 & 0xf];
+ str[k++] = hexDigits[byte0 & 0xf];
+ }
+ return new String(str);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+ /**
+ * MD5鏂囦欢杞瓧绗︿覆
+ */
+ public static String encodeMD5(File f) {
+ if (!f.isFile()) {
+ return null;
+ }
+ MessageDigest digest;
+ byte[] buffer = new byte[1024];
+ int len;
+ try {
+ digest = MessageDigest.getInstance("MD5");
+ FileInputStream in = new FileInputStream(f);
+ while ((len = in.read(buffer, 0, 1024)) != -1) {
+ digest.update(buffer, 0, len);
+ }
+ in.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ return null;
+ }
+ BigInteger bigInt = new BigInteger(1, digest.digest());
+ return bigInt.toString(16);
+ }
+
+ /**
+ * MD5鏂囦欢杞瓧绗︿覆
+ */
+ public static String encodeMD5(byte[] f) {
+ MessageDigest digest;
+ try {
+ digest = MessageDigest.getInstance("MD5");
+ digest.update(f);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return null;
+ }
+ BigInteger bigInt = new BigInteger(1, digest.digest());
+ return bigInt.toString(16);
+ }
+
+
+ public final static String md5(String plainText) {
+
+// 杩斿洖瀛楃涓�
+
+ String md5Str = null;
+
+ try {
+
+// 鎿嶄綔瀛楃涓�
+
+ StringBuffer buf = new StringBuffer();
+
+ MessageDigest md =
+
+ MessageDigest.getInstance("MD5");
+
+// 娣诲姞瑕佽繘琛岃绠楁憳瑕佺殑淇℃伅,浣跨敤 plainText 鐨� byte
+
+
+ md.update(plainText.getBytes());
+
+// 璁$畻鍑烘憳瑕�,瀹屾垚鍝堝笇璁$畻銆�
+
+ byte b[] = md.digest();
+
+ int i;
+
+ for (int offset = 0; offset < b.length; offset++) {
+
+ i = b[offset];
+
+ if (i < 0) {
+
+ i += 256;
+
+ }
+
+ if (i < 16) {
+
+ buf.append("0");
+
+ }
+
+// 灏嗘暣鍨� 鍗佽繘鍒� i
+
+
+ buf.append(Integer.toHexString(i));
+
+ }
+
+// 32浣嶇殑鍔犲瘑
+
+ md5Str = buf.toString();
+
+// 16浣嶇殑鍔犲瘑
+
+// md5Str = buf.toString().md5Strstring(8,24);
+
+ } catch (Exception e) {
+
+ e.printStackTrace();
+
+ }
+
+ return md5Str;
+
+ }
+}
--
Gitblit v1.8.0