内部账号登录接口

main
chenglifeng 7 months ago
parent 05405ba27e
commit dc800ea759
  1. 27
      app/src/main/java/com/project/survey/logic/viewmodel/LoginViewModel.kt
  2. 20
      app/src/main/java/com/project/survey/network/Api.kt
  3. 20
      app/src/main/java/com/project/survey/ui/login/ForgetPwdActivity.kt
  4. 26
      app/src/main/java/com/project/survey/ui/login/ForgetPwdInputCodeActivity.kt
  5. 69
      app/src/main/java/com/project/survey/ui/login/LoginActivity.kt
  6. 8
      app/src/main/java/com/project/survey/ui/login/LoginInputCodeActivity.kt
  7. 19
      app/src/main/java/com/project/survey/ui/login/SetNewPwdActivity.kt
  8. 13
      app/src/main/res/layout/activity_forget_pwd.xml
  9. 12
      app/src/main/res/layout/activity_forget_pwd_input_code.xml
  10. 13
      app/src/main/res/layout/activity_set_new_pwd.xml

@ -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<LoginBean>()
/**
* 外部用户登录
* 用户登录
*/
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)
}
}
}

@ -25,6 +25,26 @@ interface Api {
// @Query("password") password: String
// ): HttpResult<LoginBean>
/**
* 内部登录获取验证码
*/
@GET("je/personInfo/internalSendSms")
suspend fun fetchInternalPersonSMSCode(
@Query("account") account: String,
@Query("password") password: String
): HttpResult<String?>
/**
* 内部用户登录
*/
@GET("je/personInfo/internalEntry")
suspend fun internalPersonLogin(
@Query("account") account: String,
@Query("password") password: String,
@Query("code") code: String
): HttpResult<LoginBean>
/**
* 外部用户获取验证码
*/

@ -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<ActivityForgetPwdBinding>() {
override fun getBinding(): ActivityForgetPwdBinding {
return ActivityForgetPwdBinding.inflate(layoutInflater)
companion object {
fun start() {
ActivityNavUtil.startActivity<ForgetPwdActivity> { }
}
}
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()
}
}

@ -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<ActivityForgetPwdInputCodeBinding>() {
override fun getBinding(): ActivityForgetPwdInputCodeBinding {
return ActivityForgetPwdInputCodeBinding.inflate(layoutInflater)
companion object {
fun start() {
ActivityNavUtil.startActivity<ForgetPwdInputCodeActivity> { }
}
}
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<ActivityForgetPwdInputCod
}
override fun initListener() {
mBinding.etInputCode.setOnInputListener {
SetNewPwdActivity.start(it)
}
}
}

@ -1,11 +1,10 @@
package com.project.survey.ui.login
import android.content.Intent
import android.view.View
import androidx.activity.viewModels
import com.gyf.immersionbar.ImmersionBar
import com.project.survey.R
import com.project.survey.databinding.ActivityLoginBinding
import com.project.survey.extend.isVisibleOrGone
import com.project.survey.extend.isVisibleOrInvisible
import com.project.survey.extend.setOnClickNoRepeatListener
import com.project.survey.extend.toast
@ -41,27 +40,22 @@ class LoginActivity : BaseBindingActivity<ActivityLoginBinding>() {
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<ActivityLoginBinding>() {
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
}
}

@ -13,12 +13,14 @@ import kotlinx.coroutines.launch
class LoginInputCodeActivity : BaseBindingActivity<ActivityLoginInputCodeBinding>() {
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<LoginInputCodeActivity> {
putBoolean(IS_OUT_LOGIN, isOutLogin)
putString(ACCOUNT, account)
putString(PASSWORD, password)
putString(MOBILE, mobile)
@ -31,11 +33,13 @@ class LoginInputCodeActivity : BaseBindingActivity<ActivityLoginInputCodeBinding
private val viewModel: LoginViewModel by viewModels()
private var isOutLogin: Boolean = false
private var account: String = ""
private var password: String = ""
private var mobile: String = ""
override fun initView() {
isOutLogin = intent.getBooleanExtra(IS_OUT_LOGIN, false)
account = intent.getStringExtra(ACCOUNT) ?: ""
password = intent.getStringExtra(PASSWORD) ?: ""
mobile = intent.getStringExtra(MOBILE) ?: ""
@ -62,7 +66,7 @@ class LoginInputCodeActivity : BaseBindingActivity<ActivityLoginInputCodeBinding
override fun initListener() {
mBinding.etInputCode.setOnInputListener {
viewModel.externalPersonLogin(account, password, it)
viewModel.externalPersonLogin(isOutLogin, account, password, it)
}
}

@ -2,17 +2,32 @@ package com.project.survey.ui.login
import com.project.survey.ui.base.BaseBindingActivity
import com.project.survey.databinding.ActivitySetNewPwdBinding
import com.project.survey.util.ActivityNavUtil
/**
* 设置新密码
*/
class SetNewPwdActivity : BaseBindingActivity<ActivitySetNewPwdBinding>() {
override fun getBinding(): ActivitySetNewPwdBinding {
return ActivitySetNewPwdBinding.inflate(layoutInflater)
companion object {
const val VERIFY_CODE = "verifyCode"
fun start(verifyCode: String) {
ActivityNavUtil.startActivity<SetNewPwdActivity> {
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() {

@ -2,9 +2,20 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical">
<include layout="@layout/sh_toolbar" />
<!-- <include layout="@layout/sh_toolbar" />-->
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?actionBarSize"
android:background="@color/transparent"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:titleTextAppearance="@style/ToolbarTextAppearance"
app:navigationIcon="@drawable/icon_toolbar_back"
app:titleCentered="true" />
<TextView
android:layout_width="wrap_content"

@ -5,7 +5,17 @@
android:layout_height="match_parent"
android:orientation="vertical">
<include layout="@layout/sh_toolbar" />
<!-- <include layout="@layout/sh_toolbar" />-->
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?actionBarSize"
android:background="@color/transparent"
app:navigationIcon="@drawable/icon_toolbar_back"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:titleCentered="true"
app:titleTextAppearance="@style/ToolbarTextAppearance" />
<TextView
android:id="@+id/tvAccountDesc"

@ -2,9 +2,20 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical">
<include layout="@layout/sh_toolbar" />
<!-- <include layout="@layout/sh_toolbar" />-->
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?actionBarSize"
android:background="@color/transparent"
app:navigationIcon="@drawable/icon_toolbar_back"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:titleCentered="true"
app:titleTextAppearance="@style/ToolbarTextAppearance" />
<LinearLayout
android:layout_width="match_parent"

Loading…
Cancel
Save