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