From 6bd31327db408a94f6cb0c547f8f7b575b4809fd Mon Sep 17 00:00:00 2001 From: maxinyu Date: Mon, 15 Jun 2026 14:06:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=AE=B6=E5=BA=AD=E7=8A=B6?= =?UTF-8?q?=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bean/UpdateFamilyUserRequest.kt | 8 +++ .../liveVideo/UserDetailsActivity.kt | 53 +++++++++++++++++-- .../ckkj/defense_device/utils/ApiService.kt | 4 +- 3 files changed, 61 insertions(+), 4 deletions(-) create mode 100644 app/src/main/java/com/ckkj/defense_device/bean/UpdateFamilyUserRequest.kt diff --git a/app/src/main/java/com/ckkj/defense_device/bean/UpdateFamilyUserRequest.kt b/app/src/main/java/com/ckkj/defense_device/bean/UpdateFamilyUserRequest.kt new file mode 100644 index 0000000..6bf12ff --- /dev/null +++ b/app/src/main/java/com/ckkj/defense_device/bean/UpdateFamilyUserRequest.kt @@ -0,0 +1,8 @@ +package com.ckkj.defense_device.bean + +data class UpdateFamilyUserRequest( + val id: String, + val optionPassword: String, + val optionStatus: String, + val status: String, +) \ No newline at end of file diff --git a/app/src/main/java/com/ckkj/defense_device/liveVideo/UserDetailsActivity.kt b/app/src/main/java/com/ckkj/defense_device/liveVideo/UserDetailsActivity.kt index 0ce945c..b0fe7a8 100644 --- a/app/src/main/java/com/ckkj/defense_device/liveVideo/UserDetailsActivity.kt +++ b/app/src/main/java/com/ckkj/defense_device/liveVideo/UserDetailsActivity.kt @@ -7,6 +7,7 @@ import androidx.lifecycle.lifecycleScope import com.ckkj.defense_device.R import com.ckkj.defense_device.bean.DeleteDeviceUserRequest import com.ckkj.defense_device.bean.ObtainInviterInformationRequest +import com.ckkj.defense_device.bean.UpdateFamilyUserRequest import com.ckkj.defense_device.bean.VerifyOptionPasswordRequest import com.ckkj.defense_device.personal.PasswordInputDialog import com.ckkj.defense_device.utils.DeviceIdEvent @@ -26,6 +27,7 @@ class UserDetailsActivity : AppCompatActivity() { private var userId: String = "" private var isPasswordVerified: Boolean = false private lateinit var passwordDialog: PasswordInputDialog + private var optionPassword: String = "" override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -87,10 +89,12 @@ class UserDetailsActivity : AppCompatActivity() { binding.swUserStatus.setOnCheckedChangeListener { _, isChecked -> if (!isPasswordVerified) { binding.swUserStatus.isChecked = !isChecked - showPasswordDialog { + showPasswordDialog(isChecked) { isPasswordVerified = true binding.swUserStatus.isChecked = isChecked } + } else { + updateFamilyUserStatus(isChecked) } } @@ -99,7 +103,7 @@ class UserDetailsActivity : AppCompatActivity() { } } - private fun showPasswordDialog(onVerified: () -> Unit) { + private fun showPasswordDialog(status: Boolean, onVerified: () -> Unit) { passwordDialog = PasswordInputDialog(this).apply { setOnConfirmListener { inputPassword -> lifecycleScope.launch { @@ -109,6 +113,7 @@ class UserDetailsActivity : AppCompatActivity() { withContext(Dispatchers.Main) { if (response.code == 200) { dismiss() + updateFamilyUserStatus(status, inputPassword) onVerified() } else { Toast.makeText( @@ -135,6 +140,48 @@ class UserDetailsActivity : AppCompatActivity() { } + private fun updateFamilyUserStatus(status: Boolean) { + updateFamilyUserStatus(status, optionPassword) + } + + private fun updateFamilyUserStatus(status: Boolean, password: String) { + if (userId.isEmpty()) { + Toast.makeText(this, "用户ID为空", Toast.LENGTH_SHORT).show() + return + } + + if (password.isNotEmpty()) { + optionPassword = password + } + + lifecycleScope.launch { + try { + val request = UpdateFamilyUserRequest( + id = userId, + optionPassword = optionPassword, + optionStatus = "status", + status = if (status) "1" else "0" + ) + val response = RetrofitNetwork.getNetworkService().updateFamilyUser(request) + withContext(Dispatchers.Main) { + if (response.code == 200) { + Toast.makeText(this@UserDetailsActivity, "状态修改成功", Toast.LENGTH_SHORT).show() + DeviceUserUpdateEvent.notifyUpdate() + } else { + Toast.makeText(this@UserDetailsActivity, response.msg ?: "状态修改失败", Toast.LENGTH_SHORT).show() + binding.swUserStatus.isChecked = !status + } + } + } catch (e: Exception) { + e.printStackTrace() + withContext(Dispatchers.Main) { + Toast.makeText(this@UserDetailsActivity, "网络请求失败", Toast.LENGTH_SHORT).show() + binding.swUserStatus.isChecked = !status + } + } + } + } + private fun showDeleteDialog() { val dialog = CustomDialogFragmentText() dialog.setTitle(getString(R.string.tip)) @@ -146,7 +193,7 @@ class UserDetailsActivity : AppCompatActivity() { if (isPasswordVerified) { deleteDeviceUser() } else { - showPasswordDialog { + showPasswordDialog(false) { isPasswordVerified = true deleteDeviceUser() } diff --git a/app/src/main/java/com/ckkj/defense_device/utils/ApiService.kt b/app/src/main/java/com/ckkj/defense_device/utils/ApiService.kt index 58c228c..ff576da 100644 --- a/app/src/main/java/com/ckkj/defense_device/utils/ApiService.kt +++ b/app/src/main/java/com/ckkj/defense_device/utils/ApiService.kt @@ -19,6 +19,7 @@ import com.ckkj.defense_device.bean.MessageListResponse import com.ckkj.defense_device.bean.ObtainInviterInformationBean import com.ckkj.defense_device.bean.ObtainInviterInformationRequest import com.ckkj.defense_device.bean.SwitchFamilyRequest +import com.ckkj.defense_device.bean.UpdateFamilyUserRequest import com.ckkj.defense_device.bean.UpdatePassword import com.ckkj.defense_device.bean.UpdateUserInfo import com.ckkj.defense_device.bean.UploadResponse @@ -250,7 +251,8 @@ interface ApiService { /** * 修改家庭用户状态 */ - //@POST("/app/updateFamilyUser") + @POST("/app/updateFamilyUser") + suspend fun updateFamilyUser(@Body request: UpdateFamilyUserRequest): GetCodeBean }