From 37c06c71b98901f6c6f1182888cfb1dd47b1895b Mon Sep 17 00:00:00 2001 From: ZuoHailong <124937028@qq.com> Date: Wed, 25 Dec 2019 11:21:39 +0800 Subject: [PATCH 01/23] fix some bugs --- .../main/java/com/drumbeat/service/login/ProcessControl.java | 4 ++-- .../java/com/drumbeat/service/login/demo/LoginActivity.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/LoginService/src/main/java/com/drumbeat/service/login/ProcessControl.java b/LoginService/src/main/java/com/drumbeat/service/login/ProcessControl.java index be8465f..dbe3128 100644 --- a/LoginService/src/main/java/com/drumbeat/service/login/ProcessControl.java +++ b/LoginService/src/main/java/com/drumbeat/service/login/ProcessControl.java @@ -138,7 +138,7 @@ static void modifyPwd(@NonNull String oldPwd, @NonNull String newPwd, @NonNull S JSONObject object = new JSONObject(); object.put("input", jsonObject); - ServiceConfig serviceConfig = LoginService.newInstance().getConfig(); + ServiceConfig serviceConfig = LoginService.getConfig(); HttpHelper.post(serviceConfig.getBaseUrl() + MODIFY_PASSWORD, headers, object, new NetCallback() { @Override public void onSuccess(String succeed) { @@ -207,7 +207,7 @@ static void getUserInfo(@NonNull String centralizerToken, ResultCallback map = new HashMap<>(); map.put("accountId", accountId); - ServiceConfig serviceConfig = LoginService.newInstance().getConfig(); + ServiceConfig serviceConfig = LoginService.getConfig(); HttpHelper.get(serviceConfig.getBaseUrl() + GET_USER_INFO, headers, map, new NetCallback() { @Override public void onSuccess(String succeed) { diff --git a/app/src/main/java/com/drumbeat/service/login/demo/LoginActivity.java b/app/src/main/java/com/drumbeat/service/login/demo/LoginActivity.java index 6dd3a1b..317eccb 100644 --- a/app/src/main/java/com/drumbeat/service/login/demo/LoginActivity.java +++ b/app/src/main/java/com/drumbeat/service/login/demo/LoginActivity.java @@ -67,7 +67,7 @@ protected void onCreate(@Nullable Bundle savedInstanceState) { SPUtils.getInstance().put("account", etAccount.getEditableText().toString().trim()); SPUtils.getInstance().put("pwd", etPwd.getEditableText().toString().trim()); - LoginService.newInstance().setConfig(ServiceConfig.newBuilder() + LoginService.setConfig(ServiceConfig.newBuilder() .setAppId("125438260305469440") .setTenant(tenant1) .setBaseUrl("http://192.168.20.233:30060/") From 03e397d7f2ddba1af1d64cc19a38846c89f43c69 Mon Sep 17 00:00:00 2001 From: ZuoHailong <124937028@qq.com> Date: Wed, 25 Dec 2019 11:24:31 +0800 Subject: [PATCH 02/23] 0.2.4 --- LoginService/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/LoginService/build.gradle b/LoginService/build.gradle index cef93fe..6c17e65 100644 --- a/LoginService/build.gradle +++ b/LoginService/build.gradle @@ -9,8 +9,8 @@ android { defaultConfig { minSdkVersion 19 targetSdkVersion 29 - versionCode 23 - versionName "0.2.3" + versionCode 24 + versionName "0.2.4" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles 'consumer-rules.pro' } From 74cc202f38be6f555323c4663917ccdfc0d3afb4 Mon Sep 17 00:00:00 2001 From: ZuoHailong <124937028@qq.com> Date: Wed, 25 Dec 2019 19:22:03 +0800 Subject: [PATCH 03/23] Update readme --- .../drumbeat/service/login/LoginService.java | 4 ++ README.md | 63 ++++++++++--------- 2 files changed, 38 insertions(+), 29 deletions(-) diff --git a/LoginService/src/main/java/com/drumbeat/service/login/LoginService.java b/LoginService/src/main/java/com/drumbeat/service/login/LoginService.java index dc046d0..988b18c 100644 --- a/LoginService/src/main/java/com/drumbeat/service/login/LoginService.java +++ b/LoginService/src/main/java/com/drumbeat/service/login/LoginService.java @@ -41,6 +41,10 @@ static ServiceConfig getConfig() { /** * 登录中台 + * + * @param account + * @param password + * @param callback */ public static void login(String account, String password, ResultCallback callback) { login(LoginService.getConfig(), account, password, callback); diff --git a/README.md b/README.md index 6bfb3d2..9e709c5 100644 --- a/README.md +++ b/README.md @@ -3,40 +3,48 @@ 鼓点·中台·登录Service -
- ### 引入 -```java +``` -implementation 'com.github.ZuoHailong:LoginServiceP:0.2.1' +implementation 'com.github.ZuoHailong:LoginServiceP:0.2.4' ``` -
- ### 1、初始化配置 -```java + +要放在Application的onCreate()中。 + +``` void LoginService.setConfig(ServiceConfig.newBuilder() .setAppId(String appId) .setTenant(String tenant) .setBaseUrl(String baseUrl) .build()); - ``` - -* appId:【必须】应用标识,公司各应用有各自的appId -* tenant:租户标识 +* appId:应用标识,公司各应用有各自的appId +* tenant:租户标识,河南OPPO用“Auth” * baseUrl:要访问的中台服务器的baseUrl,形如:"http://192.168.20.233:30060/" (测试时用此url) -
- ### 2、调用中台登录接口 -```java - +``` +/** + * 登录中台 + * + * @param account + * @param password + * @param callback + */ void LoginService.login(String account, String password, ResultCallback callback); -// ServiceConfig 可选,一次性参数 + /** + * 登录中台 + * + * @param serviceConfig 可选,一次性参数 + * @param account + * @param password + * @param callback + */ void LoginService.login(ServiceConfig serviceConfig, String account, String password, ResultCallback callback); ``` @@ -45,7 +53,7 @@ void LoginService.login(ServiceConfig serviceConfig, String account, String pass * callback:回调接口 * LoginResultBean:登录成功得到的实体类数据,形如: -```java +``` public class LoginResultBean { private int Result; @@ -62,46 +70,43 @@ public class LoginResultBean { } ``` -
### 3、拉起扫码登录页面(用于支持Web端管理系统的扫码登陆) -```java +``` void LoginService.scan(Activity activity, ResultCallback callback); ``` -
### 4、Ghost APP 获取中台token -```java +插件APP中使用 +``` String LoginService.getCentralizerToken(); String LoginService.getCentralizerToken(Context context); ``` -
### 5、修改密码 -```java +``` void LoginService.modifyPassword(String oldPwd, String newPwd, String centralizerToken, ResultCallback callback); ``` -
### 6、获取用户信息 -```java +``` void getUserInfo(String centralizerToken, ResultCallback callback); ``` -
+ ### 错误码枚举类 + ##### ResultCallback 回调函数回调 onFail(ResultCode resultCode) 函数时会返回错误码 -
-```java +``` public enum ResultCode { /** @@ -143,7 +148,7 @@ public enum ResultCode { ERROR_GET_USER_INFO, - /********************************************************** 入参验证 ********************************************************/ + /**************************************** 入参验证 ****************************************/ /** * appId is null */ From e0ed6db2ddc23263f36b6e85f38dfbc88c016095 Mon Sep 17 00:00:00 2001 From: ZuoHailong <124937028@qq.com> Date: Fri, 27 Dec 2019 09:54:24 +0800 Subject: [PATCH 04/23] =?UTF-8?q?=E3=80=90=E4=BF=AE=E5=A4=8D=E3=80=91?= =?UTF-8?q?=E8=A7=A3=E5=86=B3json=E6=95=B0=E6=8D=AE=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?=E4=B8=8D=E5=8C=B9=E9=85=8D=E8=A7=A3=E6=9E=90=E5=A4=B1=E8=B4=A5?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LoginService/build.gradle | 4 +-- .../service/login/bean/UserInfoBean.java | 28 ++++++++++--------- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/LoginService/build.gradle b/LoginService/build.gradle index 6c17e65..aa47b06 100644 --- a/LoginService/build.gradle +++ b/LoginService/build.gradle @@ -9,8 +9,8 @@ android { defaultConfig { minSdkVersion 19 targetSdkVersion 29 - versionCode 24 - versionName "0.2.4" + versionCode 25 + versionName "0.2.5" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles 'consumer-rules.pro' } diff --git a/LoginService/src/main/java/com/drumbeat/service/login/bean/UserInfoBean.java b/LoginService/src/main/java/com/drumbeat/service/login/bean/UserInfoBean.java index 8fb428c..04122d4 100644 --- a/LoginService/src/main/java/com/drumbeat/service/login/bean/UserInfoBean.java +++ b/LoginService/src/main/java/com/drumbeat/service/login/bean/UserInfoBean.java @@ -59,10 +59,10 @@ public static class ResultBean { private String MobilePhone; private String Email; private String IdCard; - private long ModifyAccountId; + private String ModifyAccountId; private String ModifyAccountName; private String ModifyDate; - private int CreateAccountId; + private String CreateAccountId; private String CreateAccountName; private String CreateDate; private String Id; @@ -107,14 +107,6 @@ public void setIdCard(String IdCard) { this.IdCard = IdCard; } - public long getModifyAccountId() { - return ModifyAccountId; - } - - public void setModifyAccountId(long ModifyAccountId) { - this.ModifyAccountId = ModifyAccountId; - } - public String getModifyAccountName() { return ModifyAccountName; } @@ -131,12 +123,22 @@ public void setModifyDate(String ModifyDate) { this.ModifyDate = ModifyDate; } - public int getCreateAccountId() { + public String getModifyAccountId() { + return ModifyAccountId; + } + + public ResultBean setModifyAccountId(String modifyAccountId) { + ModifyAccountId = modifyAccountId; + return this; + } + + public String getCreateAccountId() { return CreateAccountId; } - public void setCreateAccountId(int CreateAccountId) { - this.CreateAccountId = CreateAccountId; + public ResultBean setCreateAccountId(String createAccountId) { + CreateAccountId = createAccountId; + return this; } public String getCreateAccountName() { From 3b267be83a4821fd2b4664a9855cc2a5ffef3165 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B7=A6=E6=B5=B7=E9=BE=99?= <35714293+ZuoHailong@users.noreply.github.com> Date: Fri, 27 Dec 2019 09:55:21 +0800 Subject: [PATCH 05/23] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9e709c5..79629c3 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ ### 引入 ``` -implementation 'com.github.ZuoHailong:LoginServiceP:0.2.4' +implementation 'com.github.ZuoHailong:LoginServiceP:0.2.5' ``` From 4a2e72edab18716a7d81684c87da0bee6ac4879f Mon Sep 17 00:00:00 2001 From: ZuoHailong <124937028@qq.com> Date: Fri, 27 Dec 2019 11:15:42 +0800 Subject: [PATCH 06/23] =?UTF-8?q?=E3=80=90=E6=9B=B4=E6=96=B0=E3=80=91?= =?UTF-8?q?=E8=B4=A6=E5=8F=B7=E5=AF=86=E7=A0=81=E7=99=BB=E5=BD=95=EF=BC=8C?= =?UTF-8?q?=E5=85=88=E4=BB=8ECP=E8=8E=B7=E5=8F=96=EF=BC=8C=E5=86=8D?= =?UTF-8?q?=E8=AE=BF=E9=97=AE=E7=99=BB=E5=BD=95=E6=8E=A5=E5=8F=A3=20?= =?UTF-8?q?=E3=80=90=E4=BF=AE=E5=A4=8D=E3=80=91token=E5=A4=B1=E6=95=88?= =?UTF-8?q?=E6=8A=9B=E5=87=BA=E9=94=99=E8=AF=AF=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LoginService/build.gradle | 4 +- .../drumbeat/service/login/LoginService.java | 36 ++------ .../service/login/ProcessControl.java | 86 ++++++++++++++++++- .../service/login/constant/ResultCode.java | 4 + 4 files changed, 96 insertions(+), 34 deletions(-) diff --git a/LoginService/build.gradle b/LoginService/build.gradle index aa47b06..4db49ee 100644 --- a/LoginService/build.gradle +++ b/LoginService/build.gradle @@ -9,8 +9,8 @@ android { defaultConfig { minSdkVersion 19 targetSdkVersion 29 - versionCode 25 - versionName "0.2.5" + versionCode 26 + versionName "0.2.6" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles 'consumer-rules.pro' } diff --git a/LoginService/src/main/java/com/drumbeat/service/login/LoginService.java b/LoginService/src/main/java/com/drumbeat/service/login/LoginService.java index 988b18c..0059584 100644 --- a/LoginService/src/main/java/com/drumbeat/service/login/LoginService.java +++ b/LoginService/src/main/java/com/drumbeat/service/login/LoginService.java @@ -2,15 +2,11 @@ import android.app.Activity; import android.content.Context; -import android.database.Cursor; -import android.net.Uri; import android.text.TextUtils; -import android.util.Log; import androidx.annotation.NonNull; import com.blankj.utilcode.util.ActivityUtils; -import com.blankj.utilcode.util.AppUtils; import com.drumbeat.service.login.bean.LoginResultBean; import com.drumbeat.service.login.bean.ResultBean; import com.drumbeat.service.login.bean.UserInfoBean; @@ -59,6 +55,12 @@ public static void login(String account, String password, ResultCallback callback) { + String centralizerToken = getCentralizerToken(); + // 已有token,直接返回,不再登录 + if (!TextUtils.isEmpty(centralizerToken)) { + callback.onSuccess(new LoginResultBean().setToken(centralizerToken)); + return; + } ProcessControl.login(serviceConfig, account, password, callback); } @@ -88,36 +90,12 @@ public static void scan(Activity activity, ResultCallback callback) { */ public static String getCentralizerToken() { return getCentralizerToken(ActivityUtils.getTopActivity()); - } /** * 获取centralizerToken(中台appToken),供ghostAPP使用,独立APP调用此方法无法获取到centralizerToken */ public static String getCentralizerToken(Context context) { - if (context == null) { - return null; - } - - String centralizerToken = null; - - Uri uri = Uri.parse("content://com.drumbeat.appmanager.app.provider/app"); - String column_appliaction_id = "applicationId"; - String column_token = "token"; - String currentApplicationId = AppUtils.getAppPackageName(); - - Cursor appCursor = context.getContentResolver().query(uri, new String[]{"_id", column_appliaction_id, column_token}, null, null, null); - while (appCursor.moveToNext()) { - int anInt = appCursor.getInt(0); - String applicationId = appCursor.getString(1); - String token = appCursor.getString(2); - if (!TextUtils.isEmpty(applicationId) && applicationId.equals(currentApplicationId)) { - centralizerToken = token; - break; - } - } - - return centralizerToken; - + return ProcessControl.getTokenFromCP(context); } } diff --git a/LoginService/src/main/java/com/drumbeat/service/login/ProcessControl.java b/LoginService/src/main/java/com/drumbeat/service/login/ProcessControl.java index dbe3128..8e09861 100644 --- a/LoginService/src/main/java/com/drumbeat/service/login/ProcessControl.java +++ b/LoginService/src/main/java/com/drumbeat/service/login/ProcessControl.java @@ -1,13 +1,17 @@ package com.drumbeat.service.login; import android.app.Activity; +import android.content.Context; import android.content.Intent; +import android.database.Cursor; +import android.net.Uri; import android.text.TextUtils; import android.util.Base64; import androidx.annotation.NonNull; import com.alibaba.fastjson.JSONObject; +import com.blankj.utilcode.util.AppUtils; import com.blankj.utilcode.util.SPUtils; import com.drumbeat.service.login.bean.BaseBean; import com.drumbeat.service.login.bean.LoginResultBean; @@ -46,6 +50,7 @@ import static com.drumbeat.service.login.constant.ResultCode.ERROR_QRCODE_LOGIN; import static com.drumbeat.service.login.constant.ResultCode.ERROR_QRCODE_SCAN; import static com.drumbeat.service.login.constant.ResultCode.ERROR_QRCODE_VERIFY; +import static com.drumbeat.service.login.constant.ResultCode.ERROR_TOKEN_INVALID; /** * Created by ZuoHailong on 2019/10/17. @@ -54,6 +59,37 @@ public class ProcessControl { private static Messenger mMessenger; + /** + * 从 ContentProvider 中获取 centralizerToken + * + * @param context + * @return + */ + static String getTokenFromCP(Context context) { + if (context == null) { + return null; + } + String centralizerToken = null; + + Uri uri = Uri.parse("content://com.drumbeat.appmanager.app.provider/app"); + String column_appliaction_id = "applicationId"; + String column_token = "token"; + // 当前运行的应用:宿主APP/插件APP + String currentApplicationId = AppUtils.getAppPackageName(); + + Cursor appCursor = context.getContentResolver().query(uri, new String[]{"_id", column_appliaction_id, column_token}, null, null, null); + while (appCursor.moveToNext()) { + int anInt = appCursor.getInt(0); + String applicationId = appCursor.getString(1); + String token = appCursor.getString(2); + if (!TextUtils.isEmpty(applicationId) && applicationId.equals(currentApplicationId)) { + centralizerToken = token; + break; + } + } + return centralizerToken; + } + /** * 账号密码登录 */ @@ -147,7 +183,16 @@ public void onSuccess(String succeed) { return; } BaseBean baseBean = JSONObject.parseObject(succeed, BaseBean.class); - if (baseBean == null || TextUtils.isEmpty(baseBean.getEntity())) { + if (baseBean == null) { + onFailCallback(callback, ERROR_MODIFY_PASSWORD); + return; + } + // token失效 + if (baseBean.getStatusCode() == 401) { + onFailCallback(callback, ERROR_TOKEN_INVALID); + return; + } + if (TextUtils.isEmpty(baseBean.getEntity())) { onFailCallback(callback, ERROR_MODIFY_PASSWORD); return; } @@ -189,7 +234,6 @@ public void onFail(String failed) { }); } - /** * 修改密码 */ @@ -216,7 +260,16 @@ public void onSuccess(String succeed) { return; } BaseBean baseBean = JSONObject.parseObject(succeed, BaseBean.class); - if (baseBean == null || TextUtils.isEmpty(baseBean.getEntity())) { + if (baseBean == null) { + onFailCallback(callback, ERROR_GET_USER_INFO); + return; + } + // token失效 + if (baseBean.getStatusCode() == 401) { + onFailCallback(callback, ERROR_TOKEN_INVALID); + return; + } + if (TextUtils.isEmpty(baseBean.getEntity())) { onFailCallback(callback, ERROR_GET_USER_INFO); return; } @@ -281,6 +334,15 @@ public void onSuccess(String succeed) { onFailCallback(callback, ERROR_QRCODE_VERIFY); return; } + // token失效 + if (baseBean.getStatusCode() == 401) { + onFailCallback(callback, ERROR_TOKEN_INVALID); + return; + } + if (TextUtils.isEmpty(baseBean.getEntity())) { + onFailCallback(callback, ERROR_QRCODE_VERIFY); + return; + } JSONObject jsonObject = JSONObject.parseObject(baseBean.getEntity()); if (jsonObject == null || !jsonObject.getBoolean("Success")) { onFailCallback(callback, ERROR_QRCODE_VERIFY); @@ -329,6 +391,15 @@ public void onSuccess(String succeed) { onFailCallback(callback, ERROR_QRCODE_LOGIN); return; } + // token失效 + if (baseBean.getStatusCode() == 401) { + onFailCallback(callback, ERROR_TOKEN_INVALID); + return; + } + if (TextUtils.isEmpty(baseBean.getEntity())) { + onFailCallback(callback, ERROR_QRCODE_LOGIN); + return; + } JSONObject jsonObject = JSONObject.parseObject(baseBean.getEntity()); if (jsonObject == null || !jsonObject.getBoolean("Success")) { onFailCallback(callback, ERROR_QRCODE_LOGIN); @@ -365,6 +436,15 @@ public void onSuccess(String succeed) { onFailCallback(callback, ERROR_CANCEL_LOGIN_QRCODE); return; } + // token失效 + if (baseBean.getStatusCode() == 401) { + onFailCallback(callback, ERROR_TOKEN_INVALID); + return; + } + if (TextUtils.isEmpty(baseBean.getEntity())) { + onFailCallback(callback, ERROR_CANCEL_LOGIN_QRCODE); + return; + } JSONObject jsonObject = JSONObject.parseObject(baseBean.getEntity()); if (jsonObject == null || !jsonObject.getBoolean("Success")) { onFailCallback(callback, ERROR_CANCEL_LOGIN_QRCODE); diff --git a/LoginService/src/main/java/com/drumbeat/service/login/constant/ResultCode.java b/LoginService/src/main/java/com/drumbeat/service/login/constant/ResultCode.java index dfa8b6f..a98be44 100644 --- a/LoginService/src/main/java/com/drumbeat/service/login/constant/ResultCode.java +++ b/LoginService/src/main/java/com/drumbeat/service/login/constant/ResultCode.java @@ -43,6 +43,10 @@ public enum ResultCode implements Serializable { * 获取用户信息失败 */ ERROR_GET_USER_INFO, + /** + * token失效 + */ + ERROR_TOKEN_INVALID, /********************************************************** 入参验证 ********************************************************/ From bacdf6feaa17a45ea4e6d1997ae034a4b434ecfc Mon Sep 17 00:00:00 2001 From: ZuoHailong <124937028@qq.com> Date: Fri, 27 Dec 2019 13:00:59 +0800 Subject: [PATCH 07/23] =?UTF-8?q?=E3=80=90=E6=9B=B4=E6=96=B0=E3=80=91?= =?UTF-8?q?=E8=B4=A6=E5=8F=B7=E5=AF=86=E7=A0=81=E7=99=BB=E5=BD=95=EF=BC=8C?= =?UTF-8?q?=E5=85=88=E4=BB=8ECP=E8=8E=B7=E5=8F=96=EF=BC=8C=E5=86=8D?= =?UTF-8?q?=E8=AE=BF=E9=97=AE=E7=99=BB=E5=BD=95=E6=8E=A5=E5=8F=A3=20?= =?UTF-8?q?=E3=80=90=E4=BF=AE=E5=A4=8D=E3=80=91token=E5=A4=B1=E6=95=88?= =?UTF-8?q?=E6=8A=9B=E5=87=BA=E9=94=99=E8=AF=AF=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LoginService/build.gradle | 4 ++-- .../com/drumbeat/service/login/LoginService.java | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/LoginService/build.gradle b/LoginService/build.gradle index 4db49ee..b16b486 100644 --- a/LoginService/build.gradle +++ b/LoginService/build.gradle @@ -9,8 +9,8 @@ android { defaultConfig { minSdkVersion 19 targetSdkVersion 29 - versionCode 26 - versionName "0.2.6" + versionCode 27 + versionName "0.2.7" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles 'consumer-rules.pro' } diff --git a/LoginService/src/main/java/com/drumbeat/service/login/LoginService.java b/LoginService/src/main/java/com/drumbeat/service/login/LoginService.java index 0059584..ef7158f 100644 --- a/LoginService/src/main/java/com/drumbeat/service/login/LoginService.java +++ b/LoginService/src/main/java/com/drumbeat/service/login/LoginService.java @@ -43,11 +43,17 @@ static ServiceConfig getConfig() { * @param callback */ public static void login(String account, String password, ResultCallback callback) { - login(LoginService.getConfig(), account, password, callback); + String centralizerToken = getCentralizerToken(); + // 已有token,直接返回,不再登录 + if (!TextUtils.isEmpty(centralizerToken)) { + callback.onSuccess(new LoginResultBean().setToken(centralizerToken)); + return; + } + ProcessControl.login(LoginService.getConfig(), account, password, callback); } /** - * 登录中台 + * 登录中台,供宿主APP使用 * * @param serviceConfig 可选,一次性参数 * @param account @@ -55,12 +61,6 @@ public static void login(String account, String password, ResultCallback callback) { - String centralizerToken = getCentralizerToken(); - // 已有token,直接返回,不再登录 - if (!TextUtils.isEmpty(centralizerToken)) { - callback.onSuccess(new LoginResultBean().setToken(centralizerToken)); - return; - } ProcessControl.login(serviceConfig, account, password, callback); } From ebeb5a7aed6bcdfe4773ed88bef6cc830a4b0ba1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B7=A6=E6=B5=B7=E9=BE=99?= <35714293+ZuoHailong@users.noreply.github.com> Date: Fri, 27 Dec 2019 16:57:08 +0800 Subject: [PATCH 08/23] Update README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 79629c3..e40c32c 100644 --- a/README.md +++ b/README.md @@ -3,10 +3,12 @@ 鼓点·中台·登录Service +[![](https://jitpack.io/v/ZuoHailong/LoginServiceP.svg)](https://jitpack.io/#ZuoHailong/LoginServiceP) + ### 引入 ``` -implementation 'com.github.ZuoHailong:LoginServiceP:0.2.5' +implementation 'com.github.ZuoHailong:LoginServiceP:latest.release' ``` From 39805e33a8fee7512e566befade94616bdd03a4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B7=A6=E6=B5=B7=E9=BE=99?= <35714293+ZuoHailong@users.noreply.github.com> Date: Fri, 27 Dec 2019 17:01:41 +0800 Subject: [PATCH 09/23] Update README.md --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index e40c32c..cbe507c 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,9 @@ 鼓点·中台·登录Service [![](https://jitpack.io/v/ZuoHailong/LoginServiceP.svg)](https://jitpack.io/#ZuoHailong/LoginServiceP) +[![api](https://img.shields.io/badge/API-19+-brightgreen.svg)](https://android-arsenal.com/api?level=19) + + [![csdn](https://img.shields.io/badge/CSDN-xuexiangjys-green.svg)](https://blog.csdn.net/hailong0529) ### 引入 ``` From 66fc94c8305a98a890a73703f736f9e6d779c1e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B7=A6=E6=B5=B7=E9=BE=99?= <35714293+ZuoHailong@users.noreply.github.com> Date: Fri, 27 Dec 2019 17:02:35 +0800 Subject: [PATCH 10/23] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cbe507c..77b7e41 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ [![](https://jitpack.io/v/ZuoHailong/LoginServiceP.svg)](https://jitpack.io/#ZuoHailong/LoginServiceP) [![api](https://img.shields.io/badge/API-19+-brightgreen.svg)](https://android-arsenal.com/api?level=19) - [![csdn](https://img.shields.io/badge/CSDN-xuexiangjys-green.svg)](https://blog.csdn.net/hailong0529) + [![csdn](https://img.shields.io/badge/CSDN-ZuoHailong-green.svg)](https://blog.csdn.net/hailong0529) ### 引入 ``` From f1372132b4b7cec824cc6c3901fc401fb0834774 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B7=A6=E6=B5=B7=E9=BE=99?= <35714293+ZuoHailong@users.noreply.github.com> Date: Fri, 27 Dec 2019 17:03:04 +0800 Subject: [PATCH 11/23] Update README.md --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 77b7e41..c433e0c 100644 --- a/README.md +++ b/README.md @@ -5,8 +5,7 @@ [![](https://jitpack.io/v/ZuoHailong/LoginServiceP.svg)](https://jitpack.io/#ZuoHailong/LoginServiceP) [![api](https://img.shields.io/badge/API-19+-brightgreen.svg)](https://android-arsenal.com/api?level=19) - - [![csdn](https://img.shields.io/badge/CSDN-ZuoHailong-green.svg)](https://blog.csdn.net/hailong0529) +[![csdn](https://img.shields.io/badge/CSDN-ZuoHailong-green.svg)](https://blog.csdn.net/hailong0529) ### 引入 ``` From e8d117d1e9474288846da1d307a57daeb35a89d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B7=A6=E6=B5=B7=E9=BE=99?= <35714293+ZuoHailong@users.noreply.github.com> Date: Fri, 27 Dec 2019 17:05:27 +0800 Subject: [PATCH 12/23] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c433e0c..a917269 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ [![](https://jitpack.io/v/ZuoHailong/LoginServiceP.svg)](https://jitpack.io/#ZuoHailong/LoginServiceP) [![api](https://img.shields.io/badge/API-19+-brightgreen.svg)](https://android-arsenal.com/api?level=19) -[![csdn](https://img.shields.io/badge/CSDN-ZuoHailong-green.svg)](https://blog.csdn.net/hailong0529) +[![csdn](https://img.shields.io/badge/CSDN-ZuoHailong-brightred.svg)](https://blog.csdn.net/hailong0529) ### 引入 ``` From 0a007f945c22fdbdbb8031d0c1f8c3f5381c82b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B7=A6=E6=B5=B7=E9=BE=99?= <35714293+ZuoHailong@users.noreply.github.com> Date: Fri, 27 Dec 2019 17:06:03 +0800 Subject: [PATCH 13/23] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a917269..4ebbded 100644 --- a/README.md +++ b/README.md @@ -3,9 +3,9 @@ 鼓点·中台·登录Service -[![](https://jitpack.io/v/ZuoHailong/LoginServiceP.svg)](https://jitpack.io/#ZuoHailong/LoginServiceP) +[![latest.release](https://jitpack.io/v/ZuoHailong/LoginServiceP.svg)](https://jitpack.io/#ZuoHailong/LoginServiceP) [![api](https://img.shields.io/badge/API-19+-brightgreen.svg)](https://android-arsenal.com/api?level=19) -[![csdn](https://img.shields.io/badge/CSDN-ZuoHailong-brightred.svg)](https://blog.csdn.net/hailong0529) +[![csdn](https://img.shields.io/badge/CSDN-ZuoHailong-red.svg)](https://blog.csdn.net/hailong0529) ### 引入 ``` From c737b72c9af65c3ad6d01e8045d764b5adfa199a Mon Sep 17 00:00:00 2001 From: ZuoHailong <124937028@qq.com> Date: Thu, 2 Jan 2020 15:58:15 +0800 Subject: [PATCH 14/23] =?UTF-8?q?=E3=80=90=E4=BF=AE=E5=A4=8D=E3=80=91?= =?UTF-8?q?=E4=BF=AE=E5=A4=8DCursor=E7=9A=84=E7=A9=BA=E6=8C=87=E9=92=88?= =?UTF-8?q?=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LoginService/build.gradle | 4 ++-- .../main/java/com/drumbeat/service/login/ProcessControl.java | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/LoginService/build.gradle b/LoginService/build.gradle index b16b486..e6e5c1c 100644 --- a/LoginService/build.gradle +++ b/LoginService/build.gradle @@ -9,8 +9,8 @@ android { defaultConfig { minSdkVersion 19 targetSdkVersion 29 - versionCode 27 - versionName "0.2.7" + versionCode 28 + versionName "0.2.8" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles 'consumer-rules.pro' } diff --git a/LoginService/src/main/java/com/drumbeat/service/login/ProcessControl.java b/LoginService/src/main/java/com/drumbeat/service/login/ProcessControl.java index 8e09861..fb9d2a9 100644 --- a/LoginService/src/main/java/com/drumbeat/service/login/ProcessControl.java +++ b/LoginService/src/main/java/com/drumbeat/service/login/ProcessControl.java @@ -78,6 +78,9 @@ static String getTokenFromCP(Context context) { String currentApplicationId = AppUtils.getAppPackageName(); Cursor appCursor = context.getContentResolver().query(uri, new String[]{"_id", column_appliaction_id, column_token}, null, null, null); + if (appCursor == null) { + return null; + } while (appCursor.moveToNext()) { int anInt = appCursor.getInt(0); String applicationId = appCursor.getString(1); From 1efd024b8ca259b5f02845b7b0821e22e211d251 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B7=A6=E6=B5=B7=E9=BE=99?= <35714293+ZuoHailong@users.noreply.github.com> Date: Mon, 6 Jan 2020 16:50:21 +0800 Subject: [PATCH 15/23] Update README.md --- README.md | 39 ++++++++++++++++++++++++--------------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 4ebbded..0314937 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ implementation 'com.github.ZuoHailong:LoginServiceP:latest.release' ``` -### 1、初始化配置 +### 初始化配置 要放在Application的onCreate()中。 @@ -22,7 +22,6 @@ implementation 'com.github.ZuoHailong:LoginServiceP:latest.release' void LoginService.setConfig(ServiceConfig.newBuilder() .setAppId(String appId) - .setTenant(String tenant) .setBaseUrl(String baseUrl) .build()); ``` @@ -30,16 +29,26 @@ void LoginService.setConfig(ServiceConfig.newBuilder() * tenant:租户标识,河南OPPO用“Auth” * baseUrl:要访问的中台服务器的baseUrl,形如:"http://192.168.20.233:30060/" (测试时用此url) -### 2、调用中台登录接口 +### 设置租户 ``` -/** + /** + * 设置租户 + * + * @param tenant 租户 + */ + LoginService.setTenant(String tenant); +``` + +### 调用中台登录接口 +``` + /** * 登录中台 * * @param account * @param password * @param callback */ -void LoginService.login(String account, String password, ResultCallback callback); + LoginService.login(String account, String password, ResultCallback callback); /** * 登录中台 @@ -49,7 +58,7 @@ void LoginService.login(String account, String password, ResultCallback callback); + LoginService.login(ServiceConfig serviceConfig, String account, String password, ResultCallback callback); ``` * account:中台统一后的账户 @@ -75,34 +84,34 @@ public class LoginResultBean { ``` -### 3、拉起扫码登录页面(用于支持Web端管理系统的扫码登陆) +### 拉起扫码登录页面(用于支持Web端管理系统的扫码登陆) ``` -void LoginService.scan(Activity activity, ResultCallback callback); + LoginService.scan(Activity activity, ResultCallback callback); ``` -### 4、Ghost APP 获取中台token +### Ghost APP 获取中台token 插件APP中使用 ``` -String LoginService.getCentralizerToken(); + String LoginService.getCentralizerToken(); -String LoginService.getCentralizerToken(Context context); + String LoginService.getCentralizerToken(Context context); ``` -### 5、修改密码 +### 修改密码 ``` -void LoginService.modifyPassword(String oldPwd, String newPwd, String centralizerToken, ResultCallback callback); + LoginService.modifyPassword(String oldPwd, String newPwd, String centralizerToken, ResultCallback callback); ``` -### 6、获取用户信息 +### 获取用户信息 ``` -void getUserInfo(String centralizerToken, ResultCallback callback); + getUserInfo(String centralizerToken, ResultCallback callback); ``` From bfdb216171183ffb49a68c4a6a075771b7cd773b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B7=A6=E6=B5=B7=E9=BE=99?= <35714293+ZuoHailong@users.noreply.github.com> Date: Mon, 6 Jan 2020 16:51:34 +0800 Subject: [PATCH 16/23] Update README.md --- README.md | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 0314937..7fb7ef4 100644 --- a/README.md +++ b/README.md @@ -19,8 +19,7 @@ implementation 'com.github.ZuoHailong:LoginServiceP:latest.release' 要放在Application的onCreate()中。 ``` - -void LoginService.setConfig(ServiceConfig.newBuilder() +LoginService.setConfig(ServiceConfig.newBuilder() .setAppId(String appId) .setBaseUrl(String baseUrl) .build()); @@ -31,12 +30,7 @@ void LoginService.setConfig(ServiceConfig.newBuilder() ### 设置租户 ``` - /** - * 设置租户 - * - * @param tenant 租户 - */ - LoginService.setTenant(String tenant); +LoginService.setTenant(String tenant); ``` ### 调用中台登录接口 From 307817318fe3effe8e46d4c8eed5fb0ba787af74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B7=A6=E6=B5=B7=E9=BE=99?= <35714293+ZuoHailong@users.noreply.github.com> Date: Mon, 6 Jan 2020 16:51:54 +0800 Subject: [PATCH 17/23] Update README.md --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 7fb7ef4..25b4a0f 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,6 @@ LoginService.setConfig(ServiceConfig.newBuilder() .build()); ``` * appId:应用标识,公司各应用有各自的appId -* tenant:租户标识,河南OPPO用“Auth” * baseUrl:要访问的中台服务器的baseUrl,形如:"http://192.168.20.233:30060/" (测试时用此url) ### 设置租户 From f7121d928135cf525f36cb53281839ee89fb699d Mon Sep 17 00:00:00 2001 From: ZuoHailong <124937028@qq.com> Date: Mon, 6 Jan 2020 16:53:54 +0800 Subject: [PATCH 18/23] =?UTF-8?q?=E3=80=90=E6=9B=B4=E6=96=B0=E3=80=91?= =?UTF-8?q?=E7=A7=9F=E6=88=B7=EF=BC=8C=E8=B0=83=E6=95=B4=E4=B8=BA=E5=8D=95?= =?UTF-8?q?=E7=8B=AC=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LoginService/build.gradle | 4 +- .../drumbeat/service/login/LoginService.java | 19 ++++++ .../service/login/ProcessControl.java | 4 +- .../service/login/config/ServiceConfig.java | 17 ----- .../login/utils/SharedPreferencesUtil.java | 64 +++++++++++++++++++ .../service/login/demo/LoginActivity.java | 2 +- 6 files changed, 88 insertions(+), 22 deletions(-) create mode 100644 LoginService/src/main/java/com/drumbeat/service/login/utils/SharedPreferencesUtil.java diff --git a/LoginService/build.gradle b/LoginService/build.gradle index e6e5c1c..4e2d083 100644 --- a/LoginService/build.gradle +++ b/LoginService/build.gradle @@ -9,8 +9,8 @@ android { defaultConfig { minSdkVersion 19 targetSdkVersion 29 - versionCode 28 - versionName "0.2.8" + versionCode 29 + versionName "0.2.9" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles 'consumer-rules.pro' } diff --git a/LoginService/src/main/java/com/drumbeat/service/login/LoginService.java b/LoginService/src/main/java/com/drumbeat/service/login/LoginService.java index ef7158f..814f5b1 100644 --- a/LoginService/src/main/java/com/drumbeat/service/login/LoginService.java +++ b/LoginService/src/main/java/com/drumbeat/service/login/LoginService.java @@ -2,21 +2,27 @@ import android.app.Activity; import android.content.Context; +import android.content.SharedPreferences; import android.text.TextUtils; import androidx.annotation.NonNull; +import com.alibaba.fastjson.JSONObject; import com.blankj.utilcode.util.ActivityUtils; +import com.blankj.utilcode.util.SPUtils; +import com.blankj.utilcode.util.Utils; import com.drumbeat.service.login.bean.LoginResultBean; import com.drumbeat.service.login.bean.ResultBean; import com.drumbeat.service.login.bean.UserInfoBean; import com.drumbeat.service.login.config.ServiceConfig; +import com.drumbeat.service.login.utils.SharedPreferencesUtil; /** * Created by ZuoHailong on 2019/10/17. */ public class LoginService { + private static final String SP_TENANT = "sp_tenant"; private static ServiceConfig sConfig; public static void setConfig(ServiceConfig config) { @@ -35,6 +41,19 @@ static ServiceConfig getConfig() { return sConfig; } + /** + * 设置租户 + * + * @param tenant 租户 + */ + public static void setTenant(String tenant) { + SharedPreferencesUtil.getInstance(Utils.getApp()).put(SP_TENANT, tenant); + } + + public static String getTenant() { + return SharedPreferencesUtil.getInstance(Utils.getApp()).getString(SP_TENANT); + } + /** * 登录中台 * diff --git a/LoginService/src/main/java/com/drumbeat/service/login/ProcessControl.java b/LoginService/src/main/java/com/drumbeat/service/login/ProcessControl.java index fb9d2a9..d9abe47 100644 --- a/LoginService/src/main/java/com/drumbeat/service/login/ProcessControl.java +++ b/LoginService/src/main/java/com/drumbeat/service/login/ProcessControl.java @@ -112,7 +112,7 @@ static void login(ServiceConfig serviceConfig, @NonNull String account, @NonNull return; } JSONObject jsonObject = new JSONObject(); - jsonObject.put("TenantCode", serviceConfig.getTenant()); + jsonObject.put("TenantCode", LoginService.getTenant()); jsonObject.put("DeviceId", ""); jsonObject.put("TenantId", 0); jsonObject.put("AppId", serviceConfig.getAppId()); @@ -238,7 +238,7 @@ public void onFail(String failed) { } /** - * 修改密码 + * 查询用户信息 */ static void getUserInfo(@NonNull String centralizerToken, ResultCallback callback) { diff --git a/LoginService/src/main/java/com/drumbeat/service/login/config/ServiceConfig.java b/LoginService/src/main/java/com/drumbeat/service/login/config/ServiceConfig.java index bcaef7d..e559019 100644 --- a/LoginService/src/main/java/com/drumbeat/service/login/config/ServiceConfig.java +++ b/LoginService/src/main/java/com/drumbeat/service/login/config/ServiceConfig.java @@ -16,12 +16,10 @@ public static Builder newBuilder() { } private final String appId; - private final String tenant; private final String baseUrl; private ServiceConfig(Builder builder) { this.appId = builder.appId; - this.tenant = builder.tenant; this.baseUrl = builder.baseUrl; } @@ -29,10 +27,6 @@ public String getAppId() { return appId; } - public String getTenant() { - return TextUtils.isEmpty(tenant) ? "zt" : tenant; - } - public String getBaseUrl() { String base_url = TextUtils.isEmpty(baseUrl) ? BASE_URL : baseUrl; return base_url.endsWith("/") ? base_url : base_url + "/"; @@ -41,7 +35,6 @@ public String getBaseUrl() { public final static class Builder { private String appId; - private String tenant; private String baseUrl; private Builder() { @@ -57,16 +50,6 @@ public Builder setAppId(String appId) { return this; } - /** - * 设置租户 - * - * @param tenant 租户 - */ - public Builder setTenant(String tenant) { - this.tenant = tenant; - return this; - } - /** * 设置要连接的中台服务器URL,形如:http://192.168.20.233:30060/ * diff --git a/LoginService/src/main/java/com/drumbeat/service/login/utils/SharedPreferencesUtil.java b/LoginService/src/main/java/com/drumbeat/service/login/utils/SharedPreferencesUtil.java new file mode 100644 index 0000000..a26d1ea --- /dev/null +++ b/LoginService/src/main/java/com/drumbeat/service/login/utils/SharedPreferencesUtil.java @@ -0,0 +1,64 @@ +package com.drumbeat.service.login.utils; + +import android.content.Context; +import android.content.SharedPreferences; + +/** + * Created by ZuoHailong on 2020/1/6. + */ +public class SharedPreferencesUtil { + private static final String FILE_NAME = "sp_name_loginservice"; + + private static SharedPreferencesUtil mSharedPreferencesUtil; + + private static SharedPreferences mPreferences; + private static SharedPreferences.Editor mEditor; + + //构造方法 + private SharedPreferencesUtil(Context context) { + mPreferences = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE); + mEditor = mPreferences.edit(); + } + + //单例模式 + public static SharedPreferencesUtil getInstance(Context context) { + if (mSharedPreferencesUtil == null) { + mSharedPreferencesUtil = new SharedPreferencesUtil(context); + } + return mSharedPreferencesUtil; + } + + /** + * 向SP中存储String,可选是否长久存储(账户无关长久存储,账户相关退出清除) + * + * @param key + * @param value + */ + public void put(String key, String value) { + mEditor.putString(key, value); + mEditor.commit(); + } + + /** + * 从SP中获取string,账户相关数据,退出账户后清除此数据 + * + * @param key + * @return + */ + public String getString(String key) { + return getString(key, null); + } + + /** + * 从SP中获取string,账户相关数据,退出账户后清除此数据 + * + * @param key + * @param defaultValue + * @return + */ + public String getString(String key, String defaultValue) { + return mPreferences.getString(key, defaultValue); + } + + +} diff --git a/app/src/main/java/com/drumbeat/service/login/demo/LoginActivity.java b/app/src/main/java/com/drumbeat/service/login/demo/LoginActivity.java index 317eccb..1cc3512 100644 --- a/app/src/main/java/com/drumbeat/service/login/demo/LoginActivity.java +++ b/app/src/main/java/com/drumbeat/service/login/demo/LoginActivity.java @@ -69,9 +69,9 @@ protected void onCreate(@Nullable Bundle savedInstanceState) { LoginService.setConfig(ServiceConfig.newBuilder() .setAppId("125438260305469440") - .setTenant(tenant1) .setBaseUrl("http://192.168.20.233:30060/") .build()); + LoginService.setTenant(etTenant.getEditableText().toString().trim()); LoginService.login(account1, pwd1, new ResultCallback() { @Override From e57e65acff61712c32461d08fadbb1720504e4b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B7=A6=E6=B5=B7=E9=BE=99?= <35714293+ZuoHailong@users.noreply.github.com> Date: Mon, 6 Jan 2020 16:57:00 +0800 Subject: [PATCH 19/23] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 25b4a0f..1c50170 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ ### 引入 ``` -implementation 'com.github.ZuoHailong:LoginServiceP:latest.release' +implementation 'com.github.ZuoHailong:LoginServiceP:0.2.9' ``` From b2852f49ff673bc1147aef459087703865c3f8ea Mon Sep 17 00:00:00 2001 From: ZuoHailong <124937028@qq.com> Date: Tue, 7 Jan 2020 10:45:40 +0800 Subject: [PATCH 20/23] =?UTF-8?q?=E3=80=90=E6=96=B0=E5=A2=9E=E3=80=91?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E6=9F=A5=E8=AF=A2=E8=B4=A6=E6=88=B7=E6=89=80?= =?UTF-8?q?=E5=B1=9E=E7=A7=9F=E6=88=B7=E9=9B=86=E5=90=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LoginService/build.gradle | 4 +- .../drumbeat/service/login/LoginService.java | 35 +++++--- .../service/login/ProcessControl.java | 41 +++++++++- .../service/login/bean/TenantBean.java | 79 +++++++++++++++++++ .../service/login/constant/APIInterface.java | 4 + .../service/login/constant/ResultCode.java | 4 + .../service/login/demo/LoginActivity.java | 21 ++++- 7 files changed, 172 insertions(+), 16 deletions(-) create mode 100644 LoginService/src/main/java/com/drumbeat/service/login/bean/TenantBean.java diff --git a/LoginService/build.gradle b/LoginService/build.gradle index 4e2d083..2ca0cb4 100644 --- a/LoginService/build.gradle +++ b/LoginService/build.gradle @@ -9,8 +9,8 @@ android { defaultConfig { minSdkVersion 19 targetSdkVersion 29 - versionCode 29 - versionName "0.2.9" + versionCode 30 + versionName "0.3.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles 'consumer-rules.pro' } diff --git a/LoginService/src/main/java/com/drumbeat/service/login/LoginService.java b/LoginService/src/main/java/com/drumbeat/service/login/LoginService.java index 814f5b1..3c526cf 100644 --- a/LoginService/src/main/java/com/drumbeat/service/login/LoginService.java +++ b/LoginService/src/main/java/com/drumbeat/service/login/LoginService.java @@ -2,27 +2,27 @@ import android.app.Activity; import android.content.Context; -import android.content.SharedPreferences; import android.text.TextUtils; import androidx.annotation.NonNull; -import com.alibaba.fastjson.JSONObject; import com.blankj.utilcode.util.ActivityUtils; -import com.blankj.utilcode.util.SPUtils; import com.blankj.utilcode.util.Utils; import com.drumbeat.service.login.bean.LoginResultBean; import com.drumbeat.service.login.bean.ResultBean; +import com.drumbeat.service.login.bean.TenantBean; import com.drumbeat.service.login.bean.UserInfoBean; import com.drumbeat.service.login.config.ServiceConfig; import com.drumbeat.service.login.utils.SharedPreferencesUtil; +import java.util.List; + /** * Created by ZuoHailong on 2019/10/17. */ public class LoginService { - private static final String SP_TENANT = "sp_tenant"; + private static final String SP_TENANT_ID = "sp_tenant_id"; private static ServiceConfig sConfig; public static void setConfig(ServiceConfig config) { @@ -42,16 +42,31 @@ static ServiceConfig getConfig() { } /** - * 设置租户 + * 设置租户ID + * + * @param tenantId 租户ID + */ + public static void setTenantId(String tenantId) { + SharedPreferencesUtil.getInstance(Utils.getApp()).put(SP_TENANT_ID, tenantId); + } + + /** + * 获取已设置的租户ID * - * @param tenant 租户 + * @return */ - public static void setTenant(String tenant) { - SharedPreferencesUtil.getInstance(Utils.getApp()).put(SP_TENANT, tenant); + public static String getTenantId() { + return SharedPreferencesUtil.getInstance(Utils.getApp()).getString(SP_TENANT_ID); } - public static String getTenant() { - return SharedPreferencesUtil.getInstance(Utils.getApp()).getString(SP_TENANT); + /** + * 查询账户所在的租户集合 + * + * @param account 手机号/账号/邮箱号/身份证号 + * @param callback + */ + public static void getTenantList(String account, ResultCallback> callback) { + ProcessControl.getTenantList(account, callback); } /** diff --git a/LoginService/src/main/java/com/drumbeat/service/login/ProcessControl.java b/LoginService/src/main/java/com/drumbeat/service/login/ProcessControl.java index d9abe47..39684ee 100644 --- a/LoginService/src/main/java/com/drumbeat/service/login/ProcessControl.java +++ b/LoginService/src/main/java/com/drumbeat/service/login/ProcessControl.java @@ -16,6 +16,7 @@ import com.drumbeat.service.login.bean.BaseBean; import com.drumbeat.service.login.bean.LoginResultBean; import com.drumbeat.service.login.bean.ResultBean; +import com.drumbeat.service.login.bean.TenantBean; import com.drumbeat.service.login.bean.UserInfoBean; import com.drumbeat.service.login.config.ServiceConfig; import com.drumbeat.service.login.constant.ResultCode; @@ -28,11 +29,13 @@ import com.drumbeat.service.login.ui.ConfirmActivity; import java.util.HashMap; +import java.util.List; import java.util.Map; import static com.drumbeat.service.login.constant.APIInterface.BASE_URL; import static com.drumbeat.service.login.constant.APIInterface.CANCEL_LOGIN; import static com.drumbeat.service.login.constant.APIInterface.CONFIRM_LOGIN; +import static com.drumbeat.service.login.constant.APIInterface.GET_TENANT_URL; import static com.drumbeat.service.login.constant.APIInterface.GET_USER_INFO; import static com.drumbeat.service.login.constant.APIInterface.LOGIN_URL; import static com.drumbeat.service.login.constant.APIInterface.MODIFY_PASSWORD; @@ -41,6 +44,7 @@ import static com.drumbeat.service.login.constant.Constant.SP_USER_ID; import static com.drumbeat.service.login.constant.ResultCode.CANCEL_LOGIN_QRCODE; import static com.drumbeat.service.login.constant.ResultCode.ERROR_CANCEL_LOGIN_QRCODE; +import static com.drumbeat.service.login.constant.ResultCode.ERROR_GET_TENANT; import static com.drumbeat.service.login.constant.ResultCode.ERROR_GET_USER_INFO; import static com.drumbeat.service.login.constant.ResultCode.ERROR_LOGIN_ACCOUNT; import static com.drumbeat.service.login.constant.ResultCode.ERROR_MODIFY_PASSWORD; @@ -93,6 +97,41 @@ static String getTokenFromCP(Context context) { return centralizerToken; } + /** + * 账号密码登录 + */ + static void getTenantList(String account, ResultCallback> callback) { + Map params = new HashMap<>(); + params.put("info", account); + + ServiceConfig serviceConfig = LoginService.getConfig(); + HttpHelper.get(serviceConfig.getBaseUrl() + GET_TENANT_URL, null, params, new NetCallback() { + @Override + public void onSuccess(String succeed) { + if (TextUtils.isEmpty(succeed)) { + onFailCallback(callback, ERROR_GET_TENANT); + return; + } + BaseBean baseBean = JSONObject.parseObject(succeed, BaseBean.class); + if (baseBean == null || TextUtils.isEmpty(baseBean.getEntity())) { + onFailCallback(callback, ERROR_GET_TENANT); + return; + } + TenantBean tenantBean = JSONObject.parseObject(baseBean.getEntity(), TenantBean.class); + if (tenantBean == null) { + onFailCallback(callback, ERROR_GET_TENANT); + return; + } + onSuccessCallback(callback, tenantBean.getResult()); + } + + @Override + public void onFail(String failed) { + failed.length(); + } + }); + } + /** * 账号密码登录 */ @@ -112,7 +151,7 @@ static void login(ServiceConfig serviceConfig, @NonNull String account, @NonNull return; } JSONObject jsonObject = new JSONObject(); - jsonObject.put("TenantCode", LoginService.getTenant()); + jsonObject.put("TenantCode", LoginService.getTenantId()); jsonObject.put("DeviceId", ""); jsonObject.put("TenantId", 0); jsonObject.put("AppId", serviceConfig.getAppId()); diff --git a/LoginService/src/main/java/com/drumbeat/service/login/bean/TenantBean.java b/LoginService/src/main/java/com/drumbeat/service/login/bean/TenantBean.java new file mode 100644 index 0000000..1b9695b --- /dev/null +++ b/LoginService/src/main/java/com/drumbeat/service/login/bean/TenantBean.java @@ -0,0 +1,79 @@ +package com.drumbeat.service.login.bean; + +import java.util.List; + +/** + * Created by ZuoHailong on 2020/1/7. + */ +public class TenantBean { + + /** + * Result : [{"TenantId":"100000000000000000","Code":"auth","TenantName":"认证平台"}] + * Success : true + * Code : 1 + */ + + private boolean Success; + private int Code; + private List Result; + + public boolean isSuccess() { + return Success; + } + + public void setSuccess(boolean Success) { + this.Success = Success; + } + + public int getCode() { + return Code; + } + + public void setCode(int Code) { + this.Code = Code; + } + + public List getResult() { + return Result; + } + + public void setResult(List Result) { + this.Result = Result; + } + + public static class ResultBean { + /** + * TenantId : 100000000000000000 + * Code : auth + * TenantName : 认证平台 + */ + + private String TenantId; + private String Code; + private String TenantName; + + public String getTenantId() { + return TenantId; + } + + public void setTenantId(String TenantId) { + this.TenantId = TenantId; + } + + public String getCode() { + return Code; + } + + public void setCode(String Code) { + this.Code = Code; + } + + public String getTenantName() { + return TenantName; + } + + public void setTenantName(String TenantName) { + this.TenantName = TenantName; + } + } +} diff --git a/LoginService/src/main/java/com/drumbeat/service/login/constant/APIInterface.java b/LoginService/src/main/java/com/drumbeat/service/login/constant/APIInterface.java index 4f83f07..e8a4510 100644 --- a/LoginService/src/main/java/com/drumbeat/service/login/constant/APIInterface.java +++ b/LoginService/src/main/java/com/drumbeat/service/login/constant/APIInterface.java @@ -9,6 +9,10 @@ public interface APIInterface { * 基础URL */ String BASE_URL = "http://192.168.20.233:30060/"; + /** + * 查询租户列表 + */ + String GET_TENANT_URL = "gateway/api/accounttenantrelation/querybyinfo"; /** * 账号密码登录 */ diff --git a/LoginService/src/main/java/com/drumbeat/service/login/constant/ResultCode.java b/LoginService/src/main/java/com/drumbeat/service/login/constant/ResultCode.java index a98be44..bc35af0 100644 --- a/LoginService/src/main/java/com/drumbeat/service/login/constant/ResultCode.java +++ b/LoginService/src/main/java/com/drumbeat/service/login/constant/ResultCode.java @@ -10,6 +10,10 @@ public enum ResultCode implements Serializable { * 成功 */ SUCCEES, + /** + * 查询租户失败 + */ + ERROR_GET_TENANT, /** * 账号密码登录失败 */ diff --git a/app/src/main/java/com/drumbeat/service/login/demo/LoginActivity.java b/app/src/main/java/com/drumbeat/service/login/demo/LoginActivity.java index 1cc3512..514d506 100644 --- a/app/src/main/java/com/drumbeat/service/login/demo/LoginActivity.java +++ b/app/src/main/java/com/drumbeat/service/login/demo/LoginActivity.java @@ -14,11 +14,14 @@ import com.drumbeat.service.login.LoginService; import com.drumbeat.service.login.ResultCallback; import com.drumbeat.service.login.bean.ResultBean; +import com.drumbeat.service.login.bean.TenantBean; import com.drumbeat.service.login.constant.Constant; import com.drumbeat.service.login.constant.ResultCode; import com.drumbeat.service.login.config.ServiceConfig; import com.drumbeat.service.login.bean.LoginResultBean; +import java.util.List; + /** * Created by ZuoHailong on 2019/12/3. */ @@ -71,9 +74,21 @@ protected void onCreate(@Nullable Bundle savedInstanceState) { .setAppId("125438260305469440") .setBaseUrl("http://192.168.20.233:30060/") .build()); - LoginService.setTenant(etTenant.getEditableText().toString().trim()); + LoginService.setTenantId(etTenant.getEditableText().toString().trim()); + + LoginService.getTenantList(etAccount.getEditableText().toString().trim(), new ResultCallback>() { + @Override + public void onSuccess(List succeed) { + ToastUtils.showLong("租户数量:" + (succeed == null ? 0 : succeed.size())); + } - LoginService.login(account1, pwd1, new ResultCallback() { + @Override + public void onFail(ResultCode resultCode) { + + } + }); + + /*LoginService.login(account1, pwd1, new ResultCallback() { @Override public void onSuccess(LoginResultBean succeed) { ToastUtils.showShort("登录成功,现在可以扫码登录了"); @@ -84,7 +99,7 @@ public void onSuccess(LoginResultBean succeed) { public void onFail(ResultCode resultCode) { ToastUtils.showShort("登录失败:" + resultCode.name()); } - }); + });*/ }); btnScan.setOnClickListener(view -> LoginService.scan(LoginActivity.this, new ResultCallback() { From 5027476995ed4629ab4d38a80842a2e5e9899400 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B7=A6=E6=B5=B7=E9=BE=99?= <35714293+ZuoHailong@users.noreply.github.com> Date: Tue, 7 Jan 2020 10:50:52 +0800 Subject: [PATCH 21/23] Update README.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 【新增】支持查询账户所属租户集合 --- README.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 1c50170..185d4a9 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ ### 引入 ``` -implementation 'com.github.ZuoHailong:LoginServiceP:0.2.9' +implementation 'com.github.ZuoHailong:LoginServiceP:0.3.0' ``` @@ -27,9 +27,14 @@ LoginService.setConfig(ServiceConfig.newBuilder() * appId:应用标识,公司各应用有各自的appId * baseUrl:要访问的中台服务器的baseUrl,形如:"http://192.168.20.233:30060/" (测试时用此url) +### 查询租户 +``` +LoginService.getTenantList(String account, ResultCallback> callback); +``` + ### 设置租户 ``` -LoginService.setTenant(String tenant); +LoginService.setTenantId(String tenantId); ``` ### 调用中台登录接口 From 26c4ef7bdc02f76ffbca1b498269a47f5632eb62 Mon Sep 17 00:00:00 2001 From: ZuoHailong <124937028@qq.com> Date: Tue, 7 Jan 2020 13:13:21 +0800 Subject: [PATCH 22/23] =?UTF-8?q?=E3=80=90=E6=96=B0=E5=A2=9E=E3=80=91?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E6=9F=A5=E8=AF=A2=E8=B4=A6=E6=88=B7=E6=89=80?= =?UTF-8?q?=E5=B1=9E=E7=A7=9F=E6=88=B7=E9=9B=86=E5=90=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LoginService/build.gradle | 4 +-- .../service/login/ProcessControl.java | 4 +-- .../service/login/demo/LoginActivity.java | 31 ++++++++++++------- 3 files changed, 23 insertions(+), 16 deletions(-) diff --git a/LoginService/build.gradle b/LoginService/build.gradle index 2ca0cb4..501ee5b 100644 --- a/LoginService/build.gradle +++ b/LoginService/build.gradle @@ -9,8 +9,8 @@ android { defaultConfig { minSdkVersion 19 targetSdkVersion 29 - versionCode 30 - versionName "0.3.0" + versionCode 31 + versionName "0.3.1" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles 'consumer-rules.pro' } diff --git a/LoginService/src/main/java/com/drumbeat/service/login/ProcessControl.java b/LoginService/src/main/java/com/drumbeat/service/login/ProcessControl.java index 39684ee..33ef666 100644 --- a/LoginService/src/main/java/com/drumbeat/service/login/ProcessControl.java +++ b/LoginService/src/main/java/com/drumbeat/service/login/ProcessControl.java @@ -151,9 +151,9 @@ static void login(ServiceConfig serviceConfig, @NonNull String account, @NonNull return; } JSONObject jsonObject = new JSONObject(); - jsonObject.put("TenantCode", LoginService.getTenantId()); +// jsonObject.put("TenantCode", LoginService.getTenantId()); jsonObject.put("DeviceId", ""); - jsonObject.put("TenantId", 0); + jsonObject.put("TenantId", LoginService.getTenantId()); jsonObject.put("AppId", serviceConfig.getAppId()); jsonObject.put("Device", 20);//20 android jsonObject.put("TokenType", 0); diff --git a/app/src/main/java/com/drumbeat/service/login/demo/LoginActivity.java b/app/src/main/java/com/drumbeat/service/login/demo/LoginActivity.java index 514d506..10e4765 100644 --- a/app/src/main/java/com/drumbeat/service/login/demo/LoginActivity.java +++ b/app/src/main/java/com/drumbeat/service/login/demo/LoginActivity.java @@ -79,7 +79,10 @@ protected void onCreate(@Nullable Bundle savedInstanceState) { LoginService.getTenantList(etAccount.getEditableText().toString().trim(), new ResultCallback>() { @Override public void onSuccess(List succeed) { - ToastUtils.showLong("租户数量:" + (succeed == null ? 0 : succeed.size())); + if (succeed != null && succeed.size() > 0) { + LoginService.setTenantId(succeed.get(0).getTenantId()); + login(account1, pwd1); + } } @Override @@ -88,18 +91,7 @@ public void onFail(ResultCode resultCode) { } }); - /*LoginService.login(account1, pwd1, new ResultCallback() { - @Override - public void onSuccess(LoginResultBean succeed) { - ToastUtils.showShort("登录成功,现在可以扫码登录了"); - btnScan.setVisibility(View.VISIBLE); - } - @Override - public void onFail(ResultCode resultCode) { - ToastUtils.showShort("登录失败:" + resultCode.name()); - } - });*/ }); btnScan.setOnClickListener(view -> LoginService.scan(LoginActivity.this, new ResultCallback() { @@ -132,4 +124,19 @@ public void onFail(ResultCode resultCode) { }); } + private void login(String account1, String pwd1) { + LoginService.login(account1, pwd1, new ResultCallback() { + @Override + public void onSuccess(LoginResultBean succeed) { + ToastUtils.showShort("登录成功,现在可以扫码登录了"); + btnScan.setVisibility(View.VISIBLE); + } + + @Override + public void onFail(ResultCode resultCode) { + ToastUtils.showShort("登录失败:" + resultCode.name()); + } + }); + } + } From ec8c0e0bcddc3cf39a184da256f581483982c08b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B7=A6=E6=B5=B7=E9=BE=99?= <35714293+ZuoHailong@users.noreply.github.com> Date: Tue, 7 Jan 2020 13:14:52 +0800 Subject: [PATCH 23/23] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 185d4a9..d9fbbc7 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ ### 引入 ``` -implementation 'com.github.ZuoHailong:LoginServiceP:0.3.0' +implementation 'com.github.ZuoHailong:LoginServiceP:0.3.1' ```