退出登录

This commit is contained in:
2026-05-22 17:32:49 +08:00
parent edbe5629fd
commit f89ffbcec3
7 changed files with 124 additions and 16 deletions

View File

@@ -13,6 +13,7 @@ import com.example.defenseapplication.R
import com.example.defenseapplication.bean.UserInfoBean
import com.example.defenseapplication.databinding.PersonalFragmentBinding
import com.example.defenseapplication.liveVideo.LinkedUserActivity
import com.example.defenseapplication.personal.FaceManagementActivity
import com.example.defenseapplication.personal.PasswordManagementActivity
import com.example.defenseapplication.personal.PersonalProfileActivity
import com.example.defenseapplication.utils.LanguageUtil
@@ -87,6 +88,35 @@ class PersonalFragment : Fragment() {
val intent= Intent(requireContext(), PasswordManagementActivity::class.java)
startActivity(intent)
}
//人脸管理点击事件跳转人脸管理页面
binding.itemFaceManage.setOnClickListener {
val intent= Intent(requireContext(), FaceManagementActivity::class.java)
startActivity(intent)
}
// 退出登录点击事件
binding.btnLogout.setOnClickListener {
CoroutineScope(Dispatchers.IO).launch {
try {
val response = RetrofitNetwork.getNetworkService().logout()
withContext(Dispatchers.Main) {
if (response.code == 200) {
UserinfoUtil.clearUserInfo()
val intent = Intent(requireContext(), com.example.defenseapplication.login.LoginActivity::class.java)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
startActivity(intent)
requireActivity().finish()
} else {
Toast.makeText(requireContext(), getString(R.string.logout_fail), Toast.LENGTH_SHORT).show()
}
}
} catch (e: Exception) {
e.printStackTrace()
withContext(Dispatchers.Main) {
Toast.makeText(requireContext(), getString(R.string.logout_fail), Toast.LENGTH_SHORT).show()
}
}
}
}
fetchCurrentFamily()
return binding.root
}

View File

@@ -7,8 +7,14 @@ import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import com.blankj.utilcode.util.SPUtils
import com.example.defenseapplication.R
import com.example.defenseapplication.bean.UpdateUserInfo
import com.example.defenseapplication.databinding.OperationPasswordActivityBinding
import com.example.defenseapplication.utils.RetrofitNetwork
import com.gyf.immersionbar.ImmersionBar
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
//操作密码
class OperationPasswordActivity : AppCompatActivity() {
@@ -41,10 +47,28 @@ class OperationPasswordActivity : AppCompatActivity() {
Toast.makeText(this, getString(R.string.operation_password_enabled), Toast.LENGTH_SHORT).show()
}
false -> {
binding.etPassword.isEnabled = false
binding.etConfirmPassword.isEnabled = false
SPUtils.getInstance().remove("operation_password")
Toast.makeText(this, getString(R.string.operation_password_disabled), Toast.LENGTH_SHORT).show()
CoroutineScope(Dispatchers.IO).launch {
try {
val response = RetrofitNetwork.getNetworkService().updateUserInfo(UpdateUserInfo(optionPassword = ""))
withContext(Dispatchers.Main) {
if (response.code == 200) {
binding.etPassword.isEnabled = false
binding.etConfirmPassword.isEnabled = false
SPUtils.getInstance().remove("operation_password")
Toast.makeText(this@OperationPasswordActivity, getString(R.string.operation_password_disabled), Toast.LENGTH_SHORT).show()
finish()
} else {
binding.swOperationPassword.isChecked = true
Toast.makeText(this@OperationPasswordActivity, response.msg ?: "操作失败", Toast.LENGTH_SHORT).show()
}
}
} catch (e: Exception) {
withContext(Dispatchers.Main) {
binding.swOperationPassword.isChecked = true
Toast.makeText(this@OperationPasswordActivity, getString(R.string.network_error), Toast.LENGTH_SHORT).show()
}
}
}
}
}
}
@@ -55,7 +79,6 @@ class OperationPasswordActivity : AppCompatActivity() {
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {}
override fun afterTextChanged(s: Editable?) {
autoValidatePassword()
}
})
@@ -65,21 +88,54 @@ class OperationPasswordActivity : AppCompatActivity() {
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {}
override fun afterTextChanged(s: Editable?) {
autoValidatePassword()
}
})
}
private fun autoValidatePassword() {
val password = binding.etPassword.text.toString()
val confirmPassword = binding.etConfirmPassword.text.toString()
binding.btnConfirmReset.setOnClickListener {
val password = binding.etPassword.text.toString()
val confirmPassword = binding.etConfirmPassword.text.toString()
if (password.length == 6 && confirmPassword.length == 6) {
if (password == confirmPassword) {
SPUtils.getInstance().put("operation_password", password)
Toast.makeText(this, getString(R.string.operation_success), Toast.LENGTH_SHORT).show()
} else {
if (password.isEmpty()) {
Toast.makeText(this, getString(R.string.password_cannot_empty), Toast.LENGTH_SHORT).show()
return@setOnClickListener
}
if (password.length != 6) {
Toast.makeText(this, getString(R.string.password_must_be_6_digits), Toast.LENGTH_SHORT).show()
return@setOnClickListener
}
if (confirmPassword.isEmpty()) {
Toast.makeText(this, getString(R.string.please_confirm_password), Toast.LENGTH_SHORT).show()
return@setOnClickListener
}
if (password != confirmPassword) {
Toast.makeText(this, getString(R.string.password_mismatch), Toast.LENGTH_SHORT).show()
return@setOnClickListener
}
binding.btnConfirmReset.isEnabled = false
CoroutineScope(Dispatchers.IO).launch {
try {
val response = RetrofitNetwork.getNetworkService().updateUserInfo(UpdateUserInfo(optionPassword = password))
withContext(Dispatchers.Main) {
binding.btnConfirmReset.isEnabled = true
if (response.code == 200) {
SPUtils.getInstance().put("operation_password", password)
Toast.makeText(this@OperationPasswordActivity, getString(R.string.operation_success), Toast.LENGTH_SHORT).show()
finish()
} else {
Toast.makeText(this@OperationPasswordActivity, response.msg ?: "操作失败", Toast.LENGTH_SHORT).show()
}
}
} catch (e: Exception) {
withContext(Dispatchers.Main) {
binding.btnConfirmReset.isEnabled = true
Toast.makeText(this@OperationPasswordActivity, getString(R.string.network_error), Toast.LENGTH_SHORT).show()
}
}
}
}
}

View File

@@ -164,6 +164,12 @@ interface ApiService {
suspend fun verifyOptionPassword(@Body request: VerifyOptionPasswordRequest): GetCodeBean<Any>
/**
* 退出登录
*/
@POST("/app/logout")
suspend fun logout(): GetCodeBean<Any>
}

View File

@@ -25,4 +25,9 @@ object UserinfoUtil {
return gson.fromJson(string, LoginBean::class.java)
}
fun clearUserInfo() {
SPUtils.getInstance().remove(KEY_USER)
ApiConfig.updateAuthToken("")
}
}