Sfoglia il codice sorgente

调整登录流程

Pq 1 anno fa
parent
commit
c9aac35b7e

+ 11 - 0
BaseLibrary/src/main/java/com/cooleshow/base/common/BaseConstant.java

@@ -29,6 +29,17 @@ public class BaseConstant {
     public final static String CHECK_ADDRESS = "check_address";
     public static final String CLIENT_API_GROUP_NAME = getClientApiGroup();
 
+    public static final String CLIENT_TYPE =getClientType();
+    public static final String TEACHER_CLIENT_TYPE ="TEACHER";
+    public static final String STUDENT_CLIENT_TYPE ="STUDENT";
+
+    private static String getClientType() {
+        if (BaseApplication.Companion.isTeacherClient()) {
+            return TEACHER_CLIENT_TYPE;
+        }
+        return STUDENT_CLIENT_TYPE;
+    }
+
     /**
      * 获取图片验证码地址
      *

+ 1 - 0
BaseLibrary/src/main/java/com/cooleshow/base/data/net/CommonParamsHelper.java

@@ -15,6 +15,7 @@ import okhttp3.Request;
  */
 public class CommonParamsHelper {
     public static final String USER_TOKEN="Authorization";
+    public static final String TENANT_ID="coopId";
     private volatile static CommonParamsHelper mInstance;
     private final Map<String, String> commonParams = new HashMap();
     private Map<String, String> commonHeaderParams = new HashMap();

+ 9 - 0
usercenter/src/main/java/com/cooleshow/usercenter/bean/UserInfo.java

@@ -59,4 +59,13 @@ public class UserInfo {
     public String id;
     public String realName;
     public String imUserId;
+    private int tenantId;
+
+    public int getTenantId() {
+        return tenantId;
+    }
+
+    public void setTenantId(int tenantId) {
+        this.tenantId = tenantId;
+    }
 }

+ 15 - 13
usercenter/src/main/java/com/cooleshow/usercenter/constants/UserConstants.java

@@ -4,19 +4,21 @@ package com.cooleshow.usercenter.constants;
  * Author by pq, Date on 2022/5/26.
  */
 public class UserConstants {
-    public static final String SEND_VERIFY_CODE_TYPE_PASSWD ="PASSWD";//发送验证码type-修改密码
-    public static final String SEND_VERIFY_CODE_TYPE_LOGIN ="LOGIN";//发送验证码type-登录
-    public static final String SEND_VERIFY_CODE_TYPE_REGISTER ="REGISTER";//发送验证码type-注册
-    public static final String SEND_VERIFY_CODE_TYPE_BANK ="BANK";//发送验证码type-绑定银行卡
-    public static final String LOGIN_ITEM ="login_item";//发送验证码type-绑定银行卡
-    public static final String PHONE_NUM_KEY="phone_num_key";
-    public static final String TEMP_TOKEN="temp_token";
-    public static final String LOGIN_STATUS="login_status";
-    public static final String LOGIN_STATUS_SUCCESS="login_success";
-    public static final String PAGE_TITLE="page_title";
-    public static final String PAGE_ERROR_TEXT="page_error_text";
-    public static final String EMPTY_ICON_RESID="empty_icon_resid";
-    public static final String EMPTY_BTN_TEXT="empty_btn_text";
+    public static final String SEND_VERIFY_CODE_TYPE_PASSWD = "PASSWD";//发送验证码type-修改密码
+    public static final String SEND_VERIFY_CODE_TYPE_LOGIN = "LOGIN";//发送验证码type-登录
+    public static final String SEND_VERIFY_CODE_TYPE_REGISTER = "REGISTER";//发送验证码type-注册
+    public static final String SEND_VERIFY_CODE_TYPE_BANK = "BANK";//发送验证码type-绑定银行卡
+    public static final String LOGIN_ITEM = "login_item";//发送验证码type-绑定银行卡
+    public static final String PHONE_NUM_KEY = "phone_num_key";
+    public static final String TEMP_TOKEN = "temp_token";
+    public static final String LOGIN_STATUS = "login_status";
+    public static final String LOGIN_STATUS_SUCCESS = "login_success";
+    public static final String PAGE_TITLE = "page_title";
+    public static final String PAGE_ERROR_TEXT = "page_error_text";
+    public static final String EMPTY_ICON_RESID = "empty_icon_resid";
+    public static final String EMPTY_BTN_TEXT = "empty_btn_text";
+    public static final String TENANT_ID = "tenantId";
+    public static final int NO_HAVE_TENANT = -1;
 
 
     public static final String GENDER_TYPE_MALE = "1";//男

+ 10 - 0
usercenter/src/main/java/com/cooleshow/usercenter/data/api/UserApi.kt

@@ -4,6 +4,7 @@ package com.cooleshow.usercenter.data.api
 import com.cooleshow.base.bean.QueryParamsConfigBean
 import com.cooleshow.base.common.BaseConstant
 import com.cooleshow.base.data.net.BaseResponse
+import com.cooleshow.usercenter.bean.UserInfo
 import com.cooleshow.usercenter.bean.UserLoginInfo
 import com.cooleshow.usercenter.data.protocol.RegisterReq
 import io.reactivex.rxjava3.core.Observable
@@ -132,4 +133,13 @@ interface UserApi {
      */
     @GET(BaseConstant.STUDENT_GROUP + "sysConfig/queryByParamName")
     fun queryModifyNickConfig(@Query("paramName") last_username_month: String?): Observable<BaseResponse<QueryParamsConfigBean?>?>?
+
+    /**
+     * 查询个人信息
+     *
+     * @param
+     * @return
+     */
+    @GET(BaseConstant.AUTH_GROUP + "api/queryUserInfo")
+    fun getUserInfo(@Query("clientType") clientType: String?): Observable<BaseResponse<UserInfo?>?>?
 }

+ 9 - 0
usercenter/src/main/java/com/cooleshow/usercenter/helper/UserHelper.java

@@ -72,6 +72,14 @@ public class UserHelper {
         return resultToken;
     }
 
+    public static void addTenantIdParams(int tenantId) {
+        CommonParamsHelper.getInstance().addCommonHeaderParams(CommonParamsHelper.TENANT_ID, String.valueOf(tenantId));
+    }
+
+    public static void removeTenantIdParams() {
+        CommonParamsHelper.getInstance().removeCommonHeaderParams(CommonParamsHelper.TENANT_ID);
+    }
+
     public static void saveUserToken(String token) {
         SPUtils.getInstance().put(USER_TOKEN_KEY, token);
     }
@@ -200,6 +208,7 @@ public class UserHelper {
         String date = DateUtil.getTodayDate();
         SPUtils.getInstance().put(AWARD_DIALOG_TIP_KEY + "_" + getUserId() + "_" + date, true);
     }
+
     /**
      * 获取领奖弹窗提示是否已显示(控制每日只显示一次)
      *

+ 16 - 2
usercenter/src/main/java/com/cooleshow/usercenter/presenter/LoginPresenter.kt

@@ -1,11 +1,14 @@
 package com.cooleshow.usercenter.presenter
 
+import com.cooleshow.base.common.BaseConstant
 import com.cooleshow.base.constanst.Constants
 import com.cooleshow.base.presenter.BasePresenter
 import com.cooleshow.base.rx.BaseObserver
 import com.cooleshow.base.utils.DeviceUtils
+import com.cooleshow.usercenter.bean.UserInfo
 import com.cooleshow.usercenter.bean.UserLoginInfo
 import com.cooleshow.usercenter.data.api.UserApi
+import com.cooleshow.usercenter.helper.UserHelper
 import com.cooleshow.usercenter.presenter.contract.LoginContract
 
 
@@ -26,8 +29,19 @@ class LoginPresenter constructor() : BasePresenter<LoginContract.LoginView>(),
         addSubscribe(create(UserApi::class.java).login(params),
             object : BaseObserver<UserLoginInfo>(view) {
                 override fun onSuccess(data: UserLoginInfo) {
-                    if (view != null) {
-                        view.onLoginResult(data)
+                    UserHelper.handleLoginSuccessActionNotSave(data)
+                    queryUserInfo(data);
+                }
+            })
+    }
+
+    fun queryUserInfo(loginInfo: UserLoginInfo?) {
+        addSubscribe(
+            create<UserApi>(UserApi::class.java).getUserInfo(BaseConstant.CLIENT_TYPE),
+            object : BaseObserver<UserInfo?>(view) {
+                override fun onSuccess(data: UserInfo?) {
+                    view?.let {
+                        view.onLoginResult(loginInfo,data)
                     }
                 }
             })

+ 16 - 3
usercenter/src/main/java/com/cooleshow/usercenter/presenter/VerifyLoginPresenter.java

@@ -1,6 +1,7 @@
 package com.cooleshow.usercenter.presenter;
 
 import com.cooleshow.base.common.BaseApplication;
+import com.cooleshow.base.common.BaseConstant;
 import com.cooleshow.base.constanst.Constants;
 import com.cooleshow.base.data.net.ApiException;
 import com.cooleshow.base.presenter.BasePresenter;
@@ -10,9 +11,11 @@ import com.cooleshow.base.utils.DeviceUtils;
 import com.cooleshow.base.utils.ErrorParse;
 import com.cooleshow.base.utils.ToastUtil;
 import com.cooleshow.base.utils.ToastUtils;
+import com.cooleshow.usercenter.bean.UserInfo;
 import com.cooleshow.usercenter.bean.UserLoginInfo;
 import com.cooleshow.usercenter.constants.UserConstants;
 import com.cooleshow.usercenter.data.api.UserApi;
+import com.cooleshow.usercenter.helper.UserHelper;
 import com.cooleshow.usercenter.presenter.contract.VerifyLoginContract;
 
 import java.util.HashMap;
@@ -120,9 +123,8 @@ public class VerifyLoginPresenter extends BasePresenter<VerifyLoginContract.Veri
         addSubscribe(create(UserApi.class).loginByCode(maps), new BaseObserver<UserLoginInfo>(getView()) {
             @Override
             protected void onSuccess(UserLoginInfo data) {
-                if (getView() != null) {
-                    getView().loginByCodeSuccess(data);
-                }
+                UserHelper.handleLoginSuccessActionNotSave(data);
+                queryUserInfo(data);
             }
 
             @Override
@@ -131,4 +133,15 @@ public class VerifyLoginPresenter extends BasePresenter<VerifyLoginContract.Veri
             }
         });
     }
+
+    public void queryUserInfo(UserLoginInfo loginInfo) {
+        addSubscribe(create(UserApi.class).getUserInfo(BaseConstant.CLIENT_TYPE), new BaseObserver<UserInfo>(getView()) {
+            @Override
+            protected void onSuccess(UserInfo data) {
+                if (getView() != null) {
+                    getView().loginByCodeSuccess(loginInfo, data);
+                }
+            }
+        });
+    }
 }

+ 2 - 1
usercenter/src/main/java/com/cooleshow/usercenter/presenter/contract/LoginContract.java

@@ -1,6 +1,7 @@
 package com.cooleshow.usercenter.presenter.contract;
 
 import com.cooleshow.base.presenter.view.BaseView;
+import com.cooleshow.usercenter.bean.UserInfo;
 import com.cooleshow.usercenter.bean.UserLoginInfo;
 
 /**
@@ -9,7 +10,7 @@ import com.cooleshow.usercenter.bean.UserLoginInfo;
 public interface LoginContract {
 
     interface LoginView extends BaseView {
-        void onLoginResult(UserLoginInfo userInfo);
+        void onLoginResult(UserLoginInfo userInfo, UserInfo data);
     }
 
     interface Presenter {

+ 2 - 1
usercenter/src/main/java/com/cooleshow/usercenter/presenter/contract/VerifyLoginContract.java

@@ -1,6 +1,7 @@
 package com.cooleshow.usercenter.presenter.contract;
 
 import com.cooleshow.base.presenter.view.BaseView;
+import com.cooleshow.usercenter.bean.UserInfo;
 import com.cooleshow.usercenter.bean.UserLoginInfo;
 
 /**
@@ -10,7 +11,7 @@ public interface VerifyLoginContract {
     interface VerifyLoginView extends BaseView {
         void sendVerifyCodeSuccess();
         void sendVerifyCodeFail();
-        void loginByCodeSuccess(UserLoginInfo data);
+        void loginByCodeSuccess(UserLoginInfo data, UserInfo userInfo);
     }
 
     interface Presenter {

+ 14 - 4
usercenter/src/main/java/com/cooleshow/usercenter/ui/activity/LoginActivity.kt

@@ -20,13 +20,17 @@ import com.cooleshow.base.utils.SpannableStringUtils
 import com.cooleshow.base.utils.ToastUtil
 import com.cooleshow.base.utils.helper.QMUIStatusBarHelper
 import com.cooleshow.usercenter.R
+import com.cooleshow.usercenter.bean.UserInfo
 import com.cooleshow.usercenter.bean.UserLoginInfo
 import com.cooleshow.usercenter.constants.UserConstants
 import com.cooleshow.usercenter.databinding.ActivityLoginBinding
 import com.cooleshow.usercenter.helper.UserHelper
 import com.cooleshow.usercenter.presenter.LoginPresenter
 import com.cooleshow.usercenter.presenter.contract.LoginContract
-import kotlinx.android.synthetic.main.activity_login.*
+import kotlinx.android.synthetic.main.activity_login.et_password
+import kotlinx.android.synthetic.main.activity_login.et_phone_num
+import kotlinx.android.synthetic.main.activity_login.mLoginBtn
+import kotlinx.android.synthetic.main.activity_login.tv_login_by_code
 
 @Route(path = RouterPath.UserCenter.PATH_LOGIN)
 class LoginActivity : BaseMVPActivity<ActivityLoginBinding, LoginPresenter>(),
@@ -87,17 +91,23 @@ class LoginActivity : BaseMVPActivity<ActivityLoginBinding, LoginPresenter>(),
     /**
      * 登录成功
      */
-    override fun onLoginResult(result: UserLoginInfo) {
+    override fun onLoginResult(result: UserLoginInfo, userInfo: UserInfo) {
         if (isFinishing || isDestroyed) {
             return;
         }
+        if (userInfo.tenantId != UserConstants.NO_HAVE_TENANT) {
+            UserHelper.addTenantIdParams(userInfo.tenantId)
+        } else {
+            UserHelper.removeTenantIdParams()
+        }
         UserHelper.handleLoginSuccessAction(result)
-        setLoginResult()
+        setLoginResult(userInfo.tenantId)
     }
 
-    private fun setLoginResult() {
+    private fun setLoginResult(tenantId: Int) {
         val intent = Intent()
         intent.putExtra(UserConstants.LOGIN_STATUS, UserConstants.LOGIN_STATUS_SUCCESS)
+        intent.putExtra(UserConstants.TENANT_ID, tenantId)
         setResult(RESULT_OK, intent)
         finish()
     }

+ 11 - 2
usercenter/src/main/java/com/cooleshow/usercenter/ui/activity/VerifyCodeInputActivity.java

@@ -19,6 +19,7 @@ import com.cooleshow.base.utils.Utils;
 import com.cooleshow.base.utils.helper.QMUIStatusBarHelper;
 import com.cooleshow.base.widgets.VerifyEditText;
 import com.cooleshow.usercenter.R;
+import com.cooleshow.usercenter.bean.UserInfo;
 import com.cooleshow.usercenter.bean.UserLoginInfo;
 import com.cooleshow.usercenter.constants.UserConstants;
 import com.cooleshow.usercenter.databinding.ActivityInputCodeLayoutBinding;
@@ -39,6 +40,7 @@ public class VerifyCodeInputActivity extends BaseMVPActivity<ActivityInputCodeLa
     public static final int TIME_COUNT_TOTAL = 60000;
     public static final int REQUEST_CODE_FOR_SET_PASSWORD = 100001;
     private String mPhoneNum;
+    private int tenantId = UserConstants.NO_HAVE_TENANT;
 
     private CountDownTimer mCountDownTimer = new CountDownTimer(TIME_COUNT_TOTAL, TIME_COUNT_SPACE) {
         @Override
@@ -102,7 +104,7 @@ public class VerifyCodeInputActivity extends BaseMVPActivity<ActivityInputCodeLa
             public void run() {
                 viewBinding.editCode.showSoftKeyBoard();
             }
-        },200);
+        }, 200);
 
     }
 
@@ -190,12 +192,18 @@ public class VerifyCodeInputActivity extends BaseMVPActivity<ActivityInputCodeLa
     }
 
     @Override
-    public void loginByCodeSuccess(UserLoginInfo data) {
+    public void loginByCodeSuccess(UserLoginInfo data, UserInfo userInfo) {
         //添加公共参数
         if (isFinishing() || isDestroyed()) {
             return;
         }
         if (data != null) {
+            if (userInfo.getTenantId() != UserConstants.NO_HAVE_TENANT) {
+                this.tenantId = userInfo.getTenantId();
+                UserHelper.addTenantIdParams(userInfo.getTenantId());
+            } else {
+                UserHelper.removeTenantIdParams();
+            }
             if (data.password) {
                 //有设置密码
                 UserHelper.handleLoginSuccessAction(data);
@@ -226,6 +234,7 @@ public class VerifyCodeInputActivity extends BaseMVPActivity<ActivityInputCodeLa
     private void setLoginResult() {
         Intent intent = new Intent();
         intent.putExtra(UserConstants.LOGIN_STATUS, UserConstants.LOGIN_STATUS_SUCCESS);
+        intent.putExtra(UserConstants.TENANT_ID, tenantId);
         setResult(RESULT_OK, intent);
         finish();
     }

+ 5 - 0
usercenter/src/main/java/com/cooleshow/usercenter/ui/activity/VerifyCodeLoginActivity.java

@@ -162,8 +162,13 @@ public class VerifyCodeLoginActivity extends BaseMVPActivity<ActivityVerifyCodeL
             if (data != null && requestCode == LOGIN_STATUS_REQUEST_CODE) {
                 String status = data.getStringExtra(UserConstants.LOGIN_STATUS);
                 if (TextUtils.equals(status, UserConstants.LOGIN_STATUS_SUCCESS)) {
+                    int tenantId = data.getIntExtra(UserConstants.TENANT_ID, UserConstants.NO_HAVE_TENANT);
                     //密码登录或者验证码登录(设置密码)等两种登录行为,最终通过这里跳转首页
                     Postcard build = ARouter.getInstance().build(RouterPath.APPCenter.PATH_HOME);
+                    if (tenantId != UserConstants.NO_HAVE_TENANT) {
+                        build = ARouter.getInstance().build(RouterPath.JGCenter.PATH_HOME);
+                    }
+
                     if (!TextUtils.isEmpty(mExtra)) {
                         build.withString(Constants.COMMON_EXTRA_KEY, mExtra);
                     }