修改个人信息

This commit is contained in:
2026-05-21 09:49:02 +08:00
parent e6a3c1605f
commit c31be55fe6
7 changed files with 212 additions and 17 deletions

View File

@@ -6,16 +6,23 @@ import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import android.widget.Toast
import com.bumptech.glide.Glide
import com.example.defenseapplication.R
import com.example.defenseapplication.bean.UpdateUserInfo
import com.example.defenseapplication.bean.UserInfoBean
import com.example.defenseapplication.databinding.PersonalProfileActivityBinding
import com.example.defenseapplication.utils.RetrofitNetwork
import com.example.defenseapplication.view.CustomDialogFragmentText
import com.example.defenseapplication.view.PhoneModifyDialogFragment
import com.gyf.immersionbar.ImmersionBar
//个人信息
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
class PersonalProfileActivity : AppCompatActivity() {
private lateinit var binding: PersonalProfileActivityBinding
private var userInfo: UserInfoBean? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -25,6 +32,7 @@ class PersonalProfileActivity : AppCompatActivity() {
.statusBarDarkFont(true)
.titleBar(binding.topBar)
.init()
userInfo = intent.getParcelableExtra("userInfo", UserInfoBean::class.java)
initView()
}
@@ -33,13 +41,29 @@ class PersonalProfileActivity : AppCompatActivity() {
finish()
}
Glide.with(this)
.load(R.drawable.img)
.circleCrop()
.into(binding.ivAvatar)
userInfo?.let { info ->
info.avatar?.let { avatarUrl ->
Glide.with(this)
.load(avatarUrl)
.circleCrop()
.into(binding.ivAvatar)
} ?: run {
Glide.with(this)
.load(R.drawable.img)
.circleCrop()
.into(binding.ivAvatar)
}
binding.tvNickname.text = getString(R.string.nickname_default)
binding.tvPhone.text = "13589898989"
binding.tvNickname.text = info.nickName ?: getString(R.string.nickname_default)
binding.tvPhone.text = info.phonenumber ?: "13589898989"
} ?: run {
Glide.with(this)
.load(R.drawable.img)
.circleCrop()
.into(binding.ivAvatar)
binding.tvNickname.text = getString(R.string.nickname_default)
binding.tvPhone.text = "13589898989"
}
binding.itemNickname.setOnClickListener {
showNicknameDialog()
@@ -62,22 +86,73 @@ class PersonalProfileActivity : AppCompatActivity() {
.setNegativeText("")
.setOnConfirmListener { newNickname ->
if (newNickname.isNotBlank()) {
binding.tvNickname.text = newNickname
Toast.makeText(this, getString(R.string.operation_success), Toast.LENGTH_SHORT).show()
updateNickname(newNickname)
}
}
dialog.show(supportFragmentManager, "nickname_dialog")
}
private fun updateNickname(newNickname: String) {
CoroutineScope(Dispatchers.IO).launch {
try {
val request = UpdateUserInfo(
userId = userInfo?.userId,
nickName = newNickname
)
val response = RetrofitNetwork.getNetworkService().updateUserInfo(request)
withContext(Dispatchers.Main) {
if (response.code == 200) {
binding.tvNickname.text = newNickname
userInfo = userInfo?.copy(nickName = newNickname)
Toast.makeText(this@PersonalProfileActivity, getString(R.string.operation_success), Toast.LENGTH_SHORT).show()
} else {
Toast.makeText(this@PersonalProfileActivity, getString(R.string.operation_failed), Toast.LENGTH_SHORT).show()
}
}
} catch (e: Exception) {
e.printStackTrace()
withContext(Dispatchers.Main) {
Toast.makeText(this@PersonalProfileActivity, getString(R.string.network_error), Toast.LENGTH_SHORT).show()
}
}
}
}
private fun showPhoneDialog() {
val dialog = PhoneModifyDialogFragment()
.setTitle(getString(R.string.modify_phone))
.setNegativeText(getString(R.string.cancel))
.setPositiveText(getString(R.string.verify_and_bind))
.setOnConfirmListener { phone, code ->
binding.tvPhone.text = phone
Toast.makeText(this, getString(R.string.operation_success), Toast.LENGTH_SHORT).show()
updatePhone(phone, code)
}
dialog.show(supportFragmentManager, "phone_dialog")
}
private fun updatePhone(phone: String, code: String) {
CoroutineScope(Dispatchers.IO).launch {
try {
val request = UpdateUserInfo(
userId = userInfo?.userId,
phonenumber = phone,
smsCoode = code
)
val response = RetrofitNetwork.getNetworkService().updateUserInfo(request)
withContext(Dispatchers.Main) {
if (response.code == 200) {
binding.tvPhone.text = phone
userInfo = userInfo?.copy(phonenumber = phone)
Toast.makeText(this@PersonalProfileActivity, getString(R.string.operation_success), Toast.LENGTH_SHORT).show()
} else {
Toast.makeText(this@PersonalProfileActivity, getString(R.string.operation_failed), Toast.LENGTH_SHORT).show()
}
}
} catch (e: Exception) {
e.printStackTrace()
withContext(Dispatchers.Main) {
Toast.makeText(this@PersonalProfileActivity, getString(R.string.network_error), Toast.LENGTH_SHORT).show()
}
}
}
}
}