From dc800ea759e2168e8f4df7b7a9342c3cbdd50354 Mon Sep 17 00:00:00 2001 From: chenglifeng Date: Mon, 30 Sep 2024 15:23:50 +0800 Subject: [PATCH] =?UTF-8?q?=E5=86=85=E9=83=A8=E8=B4=A6=E5=8F=B7=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../survey/logic/viewmodel/LoginViewModel.kt | 27 +++++--- .../java/com/project/survey/network/Api.kt | 20 ++++++ .../survey/ui/login/ForgetPwdActivity.kt | 20 ++++-- .../ui/login/ForgetPwdInputCodeActivity.kt | 26 +++++-- .../project/survey/ui/login/LoginActivity.kt | 69 ++++--------------- .../survey/ui/login/LoginInputCodeActivity.kt | 8 ++- .../survey/ui/login/SetNewPwdActivity.kt | 19 ++++- .../main/res/layout/activity_forget_pwd.xml | 13 +++- .../layout/activity_forget_pwd_input_code.xml | 12 +++- .../main/res/layout/activity_set_new_pwd.xml | 13 +++- 10 files changed, 146 insertions(+), 81 deletions(-) diff --git a/app/src/main/java/com/project/survey/logic/viewmodel/LoginViewModel.kt b/app/src/main/java/com/project/survey/logic/viewmodel/LoginViewModel.kt index 5e1e60b..7c010ed 100644 --- a/app/src/main/java/com/project/survey/logic/viewmodel/LoginViewModel.kt +++ b/app/src/main/java/com/project/survey/logic/viewmodel/LoginViewModel.kt @@ -5,11 +5,10 @@ import androidx.lifecycle.MutableLiveData import blankj.utilcode.util.ActivityUtils import com.project.survey.constants.EventConstants import com.project.survey.constants.SPConstants +import com.project.survey.extend.toast import com.project.survey.model.LoginBean import com.project.survey.logic.event.Message -import com.project.survey.logic.repository.GlobalRepository import com.project.survey.network.RetrofitClient -import com.project.survey.ui.MainActivity import com.project.survey.ui.login.LoginActivity import com.project.survey.ui.login.LoginInputCodeActivity import com.project.survey.ui.project.ProjectListActivity @@ -25,15 +24,18 @@ class LoginViewModel : BaseViewModel() { /** * 外部用户获取验证码 + * @param isOutLogin: false内部用户,true外部用户 */ - fun fetchExternalPersonSMSCode(account: String, password: String) { + fun fetchLoginSMSCode(isOutLogin: Boolean, account: String, password: String) { launch { - val res = api.fetchExternalPersonSMSCode(account, password) + val res = if (isOutLogin) + api.fetchExternalPersonSMSCode(account, password) + else + api.fetchInternalPersonSMSCode(account, password) if (res.success) { -// _externalPersonSMSCodeResponse.postValue(res.data) - LoginInputCodeActivity.start(account, password, res.data ?: "") + LoginInputCodeActivity.start(isOutLogin, account, password, res.data ?: "") } else { - errorResponse.postValue(res.data) + errorResponse.postValue(res.message) } } } @@ -43,11 +45,14 @@ class LoginViewModel : BaseViewModel() { private val _loginResponse = MutableLiveData() /** - * 外部用户登录 + * 用户登录 */ - fun externalPersonLogin(account: String, password: String, code: String) { + fun externalPersonLogin(isOutLogin: Boolean, account: String, password: String, code: String) { launch { - val res = api.externalPersonLogin(account, password, code) + val res = if (isOutLogin) + api.externalPersonLogin(account, password, code) + else + api.internalPersonLogin(account, password, code) if (res.success) { // _externalPersonSMSCodeResponse.postValue(res.data) @@ -64,6 +69,8 @@ class LoginViewModel : BaseViewModel() { ActivityUtils.finishActivity(LoginActivity::class.java) ActivityUtils.finishActivity(LoginInputCodeActivity::class.java) + } else { + toast(res.message) } } } diff --git a/app/src/main/java/com/project/survey/network/Api.kt b/app/src/main/java/com/project/survey/network/Api.kt index d50d00d..57f4af1 100644 --- a/app/src/main/java/com/project/survey/network/Api.kt +++ b/app/src/main/java/com/project/survey/network/Api.kt @@ -25,6 +25,26 @@ interface Api { // @Query("password") password: String // ): HttpResult + /** + * 内部登录获取验证码 + */ + @GET("je/personInfo/internalSendSms") + suspend fun fetchInternalPersonSMSCode( + @Query("account") account: String, + @Query("password") password: String + ): HttpResult + + /** + * 内部用户登录 + */ + @GET("je/personInfo/internalEntry") + suspend fun internalPersonLogin( + @Query("account") account: String, + @Query("password") password: String, + @Query("code") code: String + ): HttpResult + + /** * 外部用户获取验证码 */ diff --git a/app/src/main/java/com/project/survey/ui/login/ForgetPwdActivity.kt b/app/src/main/java/com/project/survey/ui/login/ForgetPwdActivity.kt index 411e628..b91862c 100644 --- a/app/src/main/java/com/project/survey/ui/login/ForgetPwdActivity.kt +++ b/app/src/main/java/com/project/survey/ui/login/ForgetPwdActivity.kt @@ -4,22 +4,32 @@ import android.content.Intent import androidx.core.widget.addTextChangedListener import com.project.survey.ui.base.BaseBindingActivity import com.project.survey.databinding.ActivityForgetPwdBinding +import com.project.survey.extend.setOnClickNoRepeatListener +import com.project.survey.util.ActivityNavUtil /** * 忘记密码 */ class ForgetPwdActivity : BaseBindingActivity() { - override fun getBinding(): ActivityForgetPwdBinding { - return ActivityForgetPwdBinding.inflate(layoutInflater) + + companion object { + fun start() { + ActivityNavUtil.startActivity { } + } } + override fun getBinding(): ActivityForgetPwdBinding = + ActivityForgetPwdBinding.inflate(layoutInflater) + override fun initView() { + immersionToolbar(mBinding.toolbar) + mBinding.etAccount.addTextChangedListener { - mBinding.tvSendCode.setEnabled(it?.isNotEmpty() == true); + mBinding.tvSendCode.isEnabled = it?.isNotEmpty() == true; } - mBinding.tvSendCode.setOnClickListener { - startActivity(Intent(this, ForgetPwdInputCodeActivity::class.java)) + mBinding.tvSendCode.setOnClickNoRepeatListener { + ForgetPwdInputCodeActivity.start() } } diff --git a/app/src/main/java/com/project/survey/ui/login/ForgetPwdInputCodeActivity.kt b/app/src/main/java/com/project/survey/ui/login/ForgetPwdInputCodeActivity.kt index 3c64b44..6332398 100644 --- a/app/src/main/java/com/project/survey/ui/login/ForgetPwdInputCodeActivity.kt +++ b/app/src/main/java/com/project/survey/ui/login/ForgetPwdInputCodeActivity.kt @@ -1,20 +1,34 @@ package com.project.survey.ui.login import android.content.Intent +import androidx.lifecycle.lifecycleScope import com.project.survey.ui.base.BaseBindingActivity import com.project.survey.databinding.ActivityForgetPwdInputCodeBinding +import com.project.survey.extend.showSoftInput +import com.project.survey.util.ActivityNavUtil +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch /** * 忘记密码后的输入验证码 */ class ForgetPwdInputCodeActivity : BaseBindingActivity() { - override fun getBinding(): ActivityForgetPwdInputCodeBinding { - return ActivityForgetPwdInputCodeBinding.inflate(layoutInflater) + + companion object { + fun start() { + ActivityNavUtil.startActivity { } + } } + override fun getBinding(): ActivityForgetPwdInputCodeBinding = + ActivityForgetPwdInputCodeBinding.inflate(layoutInflater) + override fun initView() { - mBinding.etInputCode.setOnInputListener { - startActivity(Intent(this, SetNewPwdActivity::class.java)) + immersionToolbar(mBinding.toolbar) + + lifecycleScope.launch { + delay(500L) + mBinding.etInputCode.firstEditText?.showSoftInput() } } @@ -23,7 +37,9 @@ class ForgetPwdInputCodeActivity : BaseBindingActivity() { mBinding.tvError.text = it mBinding.tvError.isVisibleOrInvisible(true) } - // 外部账号获取验证码 -// viewModel.externalPersonSMSCodeResponse.observe(this) { -// LoginInputCodeActivity.start() -// } - // 登录成功 -// viewModel.loginResponse.observe(this) { -// finish() -// } } override fun initListener() { - mBinding.tvShowOutLogin.setOnClickListener { - //切换到外部登录 + //切换到外部登录 + mBinding.tvShowOutLogin.setOnClickNoRepeatListener { isOutLogin = true - refreshInnerOutUi() + mBinding.tvAccountDesc.text = Tools.getString(R.string.external_account_login) + mBinding.llShowOutLogin.isVisibleOrGone(false) + mBinding.llShowInnerLogin.isVisibleOrGone(true) } - - mBinding.tvShowInnerLogin.setOnClickListener { - //切换到内部集团登录 + //切换到内部集团登录 + mBinding.tvShowInnerLogin.setOnClickNoRepeatListener { isOutLogin = false - refreshInnerOutUi() + mBinding.tvAccountDesc.text = Tools.getString(R.string.group_account_login) + mBinding.llShowOutLogin.isVisibleOrGone(true) + mBinding.llShowInnerLogin.isVisibleOrGone(false) } // 登录 @@ -72,45 +66,12 @@ class LoginActivity : BaseBindingActivity() { toast("账号或密码不能为空") return@setOnClickNoRepeatListener } - if (isOutLogin) { - // 外部账号登录 - viewModel.fetchExternalPersonSMSCode(account, password) - } else { - toast("开发中……") - } + viewModel.fetchLoginSMSCode(isOutLogin, account, password) } - mBinding.tvForgetPwd.setOnClickListener { - //忘记密码 - startActivity(Intent(this, ForgetPwdActivity::class.java)) - } - } - - /** - * 内部登录 - */ - private fun loginByInner() { - startActivity(Intent(this, LoginInputCodeActivity::class.java)) - } - - private fun refreshInnerOutUi() { - if (isOutLogin) { - //当前外部登录 - mBinding.tvAccountDesc.text = Tools.getString(R.string.external_account_login) - - mBinding.llShowOutLogin.visibility = View.GONE - mBinding.llShowInnerLogin.visibility = View.VISIBLE - } else { - mBinding.tvAccountDesc.text = Tools.getString(R.string.group_account_login) - - mBinding.llShowOutLogin.visibility = View.VISIBLE - mBinding.llShowInnerLogin.visibility = View.GONE + //忘记密码 + mBinding.tvForgetPwd.setOnClickNoRepeatListener { + ForgetPwdActivity.start() } - -// mBinding.etAccount.text = null -// mBinding.passwordView.clearEtPwdText() -// mBinding.ilPwd.etPwd.text = null } - - } \ No newline at end of file diff --git a/app/src/main/java/com/project/survey/ui/login/LoginInputCodeActivity.kt b/app/src/main/java/com/project/survey/ui/login/LoginInputCodeActivity.kt index 5775813..f31eed9 100644 --- a/app/src/main/java/com/project/survey/ui/login/LoginInputCodeActivity.kt +++ b/app/src/main/java/com/project/survey/ui/login/LoginInputCodeActivity.kt @@ -13,12 +13,14 @@ import kotlinx.coroutines.launch class LoginInputCodeActivity : BaseBindingActivity() { companion object { + const val IS_OUT_LOGIN = "isOutLogin" const val ACCOUNT = "account" const val PASSWORD = "password" const val MOBILE = "mobile" - fun start(account: String, password: String, mobile: String) { + fun start(isOutLogin: Boolean,account: String, password: String, mobile: String) { ActivityNavUtil.startActivity { + putBoolean(IS_OUT_LOGIN, isOutLogin) putString(ACCOUNT, account) putString(PASSWORD, password) putString(MOBILE, mobile) @@ -31,11 +33,13 @@ class LoginInputCodeActivity : BaseBindingActivity() { - override fun getBinding(): ActivitySetNewPwdBinding { - return ActivitySetNewPwdBinding.inflate(layoutInflater) + + companion object { + const val VERIFY_CODE = "verifyCode" + + fun start(verifyCode: String) { + ActivityNavUtil.startActivity { + putString(VERIFY_CODE, verifyCode) + } + } } + override fun getBinding(): ActivitySetNewPwdBinding = + ActivitySetNewPwdBinding.inflate(layoutInflater) + + private var verifyCode: String = "" + override fun initView() { + immersionToolbar(mBinding.toolbar) + verifyCode = intent.getStringExtra(VERIFY_CODE) ?: "" } override fun initData() { diff --git a/app/src/main/res/layout/activity_forget_pwd.xml b/app/src/main/res/layout/activity_forget_pwd.xml index ed6b92e..b51acbf 100644 --- a/app/src/main/res/layout/activity_forget_pwd.xml +++ b/app/src/main/res/layout/activity_forget_pwd.xml @@ -2,9 +2,20 @@ - + + - + + - + +