diff --git a/LoginService/build.gradle b/LoginService/build.gradle index cef93fe..501ee5b 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 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/LoginService.java b/LoginService/src/main/java/com/drumbeat/service/login/LoginService.java index dc046d0..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,25 +2,27 @@ 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.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_ID = "sp_tenant_id"; private static ServiceConfig sConfig; public static void setConfig(ServiceConfig config) { @@ -39,15 +41,53 @@ static ServiceConfig getConfig() { return sConfig; } + /** + * 设置租户ID + * + * @param tenantId 租户ID + */ + public static void setTenantId(String tenantId) { + SharedPreferencesUtil.getInstance(Utils.getApp()).put(SP_TENANT_ID, tenantId); + } + + /** + * 获取已设置的租户ID + * + * @return + */ + public static String getTenantId() { + return SharedPreferencesUtil.getInstance(Utils.getApp()).getString(SP_TENANT_ID); + } + + /** + * 查询账户所在的租户集合 + * + * @param account 手机号/账号/邮箱号/身份证号 + * @param callback + */ + public static void getTenantList(String account, ResultCallback> callback) { + ProcessControl.getTenantList(account, callback); + } + /** * 登录中台 + * + * @param account + * @param password + * @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 @@ -84,36 +124,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 be8465f..33ef666 100644 --- a/LoginService/src/main/java/com/drumbeat/service/login/ProcessControl.java +++ b/LoginService/src/main/java/com/drumbeat/service/login/ProcessControl.java @@ -1,17 +1,22 @@ 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; 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; @@ -24,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; @@ -37,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; @@ -46,6 +54,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 +63,75 @@ 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); + if (appCursor == null) { + return 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; + } + + /** + * 账号密码登录 + */ + 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(); + } + }); + } + /** * 账号密码登录 */ @@ -73,9 +151,9 @@ static void login(ServiceConfig serviceConfig, @NonNull String account, @NonNull return; } JSONObject jsonObject = new JSONObject(); - jsonObject.put("TenantCode", serviceConfig.getTenant()); +// 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); @@ -138,7 +216,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) { @@ -147,7 +225,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,9 +276,8 @@ public void onFail(String failed) { }); } - /** - * 修改密码 + * 查询用户信息 */ static void getUserInfo(@NonNull String centralizerToken, ResultCallback callback) { @@ -207,7 +293,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) { @@ -216,7 +302,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 +376,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 +433,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 +478,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/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/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() { 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/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 dfa8b6f..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, /** * 账号密码登录失败 */ @@ -43,6 +47,10 @@ public enum ResultCode implements Serializable { * 获取用户信息失败 */ ERROR_GET_USER_INFO, + /** + * token失效 + */ + ERROR_TOKEN_INVALID, /********************************************************** 入参验证 ********************************************************/ 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/README.md b/README.md index 6bfb3d2..d9fbbc7 100644 --- a/README.md +++ b/README.md @@ -3,41 +3,60 @@ 鼓点·中台·登录Service -
+[![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-red.svg)](https://blog.csdn.net/hailong0529) ### 引入 -```java +``` -implementation 'com.github.ZuoHailong:LoginServiceP:0.2.1' +implementation 'com.github.ZuoHailong:LoginServiceP:0.3.1' ``` -
+### 初始化配置 -### 1、初始化配置 -```java +要放在Application的onCreate()中。 -void LoginService.setConfig(ServiceConfig.newBuilder() +``` +LoginService.setConfig(ServiceConfig.newBuilder() .setAppId(String appId) - .setTenant(String tenant) .setBaseUrl(String baseUrl) .build()); - ``` - -* appId:【必须】应用标识,公司各应用有各自的appId -* tenant:租户标识 +* appId:应用标识,公司各应用有各自的appId * baseUrl:要访问的中台服务器的baseUrl,形如:"http://192.168.20.233:30060/" (测试时用此url) -
+### 查询租户 +``` +LoginService.getTenantList(String account, ResultCallback> callback); +``` -### 2、调用中台登录接口 -```java +### 设置租户 +``` +LoginService.setTenantId(String tenantId); +``` -void LoginService.login(String account, String password, ResultCallback callback); +### 调用中台登录接口 +``` + /** + * 登录中台 + * + * @param account + * @param password + * @param callback + */ + LoginService.login(String account, String password, ResultCallback callback); -// ServiceConfig 可选,一次性参数 -void LoginService.login(ServiceConfig serviceConfig, String account, String password, ResultCallback callback); + /** + * 登录中台 + * + * @param serviceConfig 可选,一次性参数 + * @param account + * @param password + * @param callback + */ + LoginService.login(ServiceConfig serviceConfig, String account, String password, ResultCallback callback); ``` * account:中台统一后的账户 @@ -45,7 +64,7 @@ void LoginService.login(ServiceConfig serviceConfig, String account, String pass * callback:回调接口 * LoginResultBean:登录成功得到的实体类数据,形如: -```java +``` public class LoginResultBean { private int Result; @@ -62,46 +81,43 @@ public class LoginResultBean { } ``` -
-### 3、拉起扫码登录页面(用于支持Web端管理系统的扫码登陆) -```java +### 拉起扫码登录页面(用于支持Web端管理系统的扫码登陆) +``` -void LoginService.scan(Activity activity, ResultCallback callback); + LoginService.scan(Activity activity, ResultCallback callback); ``` -
-### 4、Ghost APP 获取中台token -```java +### Ghost APP 获取中台token +插件APP中使用 +``` -String LoginService.getCentralizerToken(); + String LoginService.getCentralizerToken(); -String LoginService.getCentralizerToken(Context context); + String LoginService.getCentralizerToken(Context context); ``` -
-### 5、修改密码 -```java +### 修改密码 +``` -void LoginService.modifyPassword(String oldPwd, String newPwd, String centralizerToken, ResultCallback callback); + LoginService.modifyPassword(String oldPwd, String newPwd, String centralizerToken, ResultCallback callback); ``` -
-### 6、获取用户信息 -```java +### 获取用户信息 +``` -void getUserInfo(String centralizerToken, ResultCallback callback); + getUserInfo(String centralizerToken, ResultCallback callback); ``` -
+ ### 错误码枚举类 + ##### ResultCallback 回调函数回调 onFail(ResultCode resultCode) 函数时会返回错误码 -
-```java +``` public enum ResultCode { /** @@ -143,7 +159,7 @@ public enum ResultCode { ERROR_GET_USER_INFO, - /********************************************************** 入参验证 ********************************************************/ + /**************************************** 入参验证 ****************************************/ /** * appId is null */ 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..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 @@ -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. */ @@ -67,24 +70,28 @@ 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/") .build()); + LoginService.setTenantId(etTenant.getEditableText().toString().trim()); - LoginService.login(account1, pwd1, new ResultCallback() { + LoginService.getTenantList(etAccount.getEditableText().toString().trim(), new ResultCallback>() { @Override - public void onSuccess(LoginResultBean succeed) { - ToastUtils.showShort("登录成功,现在可以扫码登录了"); - btnScan.setVisibility(View.VISIBLE); + public void onSuccess(List succeed) { + if (succeed != null && succeed.size() > 0) { + LoginService.setTenantId(succeed.get(0).getTenantId()); + login(account1, pwd1); + } } @Override public void onFail(ResultCode resultCode) { - ToastUtils.showShort("登录失败:" + resultCode.name()); + } }); + + }); btnScan.setOnClickListener(view -> LoginService.scan(LoginActivity.this, new ResultCallback() { @@ -117,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()); + } + }); + } + }