diff --git a/app/src/main/java/com/example/defenseapplication/home/PersonalFragment.kt b/app/src/main/java/com/example/defenseapplication/home/PersonalFragment.kt index 735db09..29b79a5 100644 --- a/app/src/main/java/com/example/defenseapplication/home/PersonalFragment.kt +++ b/app/src/main/java/com/example/defenseapplication/home/PersonalFragment.kt @@ -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 } diff --git a/app/src/main/java/com/example/defenseapplication/personal/OperationPasswordActivity.kt b/app/src/main/java/com/example/defenseapplication/personal/OperationPasswordActivity.kt index 86a61ed..a3ff8e0 100644 --- a/app/src/main/java/com/example/defenseapplication/personal/OperationPasswordActivity.kt +++ b/app/src/main/java/com/example/defenseapplication/personal/OperationPasswordActivity.kt @@ -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() + } + } } } } diff --git a/app/src/main/java/com/example/defenseapplication/utils/ApiService.kt b/app/src/main/java/com/example/defenseapplication/utils/ApiService.kt index 247ba36..f641373 100644 --- a/app/src/main/java/com/example/defenseapplication/utils/ApiService.kt +++ b/app/src/main/java/com/example/defenseapplication/utils/ApiService.kt @@ -164,6 +164,12 @@ interface ApiService { suspend fun verifyOptionPassword(@Body request: VerifyOptionPasswordRequest): GetCodeBean + /** + * 退出登录 + */ + @POST("/app/logout") + suspend fun logout(): GetCodeBean + } diff --git a/app/src/main/java/com/example/defenseapplication/utils/UserinfoUtil.kt b/app/src/main/java/com/example/defenseapplication/utils/UserinfoUtil.kt index ca68024..271f4ac 100644 --- a/app/src/main/java/com/example/defenseapplication/utils/UserinfoUtil.kt +++ b/app/src/main/java/com/example/defenseapplication/utils/UserinfoUtil.kt @@ -25,4 +25,9 @@ object UserinfoUtil { return gson.fromJson(string, LoginBean::class.java) } + fun clearUserInfo() { + SPUtils.getInstance().remove(KEY_USER) + ApiConfig.updateAuthToken("") + } + } \ No newline at end of file diff --git a/app/src/main/res/layout/operation_password_activity.xml b/app/src/main/res/layout/operation_password_activity.xml index b47b8e1..cf7851f 100644 --- a/app/src/main/res/layout/operation_password_activity.xml +++ b/app/src/main/res/layout/operation_password_activity.xml @@ -104,7 +104,16 @@ android:textColorHint="@color/gray" android:textSize="16sp" /> - + + diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index ef34cbd..6bd593b 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -195,6 +195,7 @@ 版本 退出登录 确定要退出登录吗? + 退出登录失败 警告语音播放 警告语音内容 请输入警告语音内容,系统将自动生成语音 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index acb524b..a71901a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -186,6 +186,7 @@ Version Logout Are you sure you want to logout? + Logout failed Warning Voice Playback Warning Voice Content Enter warning voice content, system will generate voice automatically.