package com.dayu.general.activity
|
|
import android.content.Intent
|
import android.os.Bundle
|
import androidx.lifecycle.lifecycleScope
|
import com.dayu.baselibrary.net.subscribers.SubscriberListener
|
import com.dayu.baselibrary.tools.nfc.NFCCallBack
|
import com.dayu.baselibrary.utils.ToastUtil
|
import com.dayu.general.bean.card.ClearCard
|
import com.dayu.general.bean.card.UserCard
|
import com.dayu.general.tool.CardCommon
|
import com.dayu.general.databinding.ActivityNfcWriteGeBinding
|
import com.dayu.general.net.ApiManager
|
import com.dayu.general.net.BaseResponse
|
import com.dayu.general.tool.NfcReadHelper
|
import com.dayu.general.tool.NfcWreatHelper
|
import com.dayu.general.dao.BaseDaoSingleton
|
import com.tencent.bugly.crashreport.CrashReport
|
import kotlinx.coroutines.launch
|
|
/**
|
* @author: zuo
|
* @date: 2021/3/30
|
* @description:写卡界面
|
*/
|
class NfcWreatActivity : BaseNfcActivity() {
|
var binding: ActivityNfcWriteGeBinding? = null
|
var cardType = ""
|
var orderId = ""
|
var cardAddr = ""
|
private lateinit var userCard: UserCard
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
super.onCreate(savedInstanceState)
|
binding = ActivityNfcWriteGeBinding.inflate(layoutInflater)
|
setContentView(binding?.root)
|
getInitData()
|
}
|
|
/**
|
* 获取数据
|
*/
|
private fun getInitData() {
|
cardType = intent?.getStringExtra("cardType") ?: ""
|
orderId = intent?.getStringExtra("orderId") ?: ""
|
cardAddr = intent?.getStringExtra("cardAddr") ?: ""
|
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.TIRAMISU) {
|
userCard = intent?.getSerializableExtra("userCard", UserCard::class.java)!!
|
} else {
|
userCard = (intent?.getSerializableExtra("userCard") as? UserCard)!!
|
}
|
|
if (cardType.isNotEmpty()) {
|
when (cardType) {
|
CardCommon.CLEAN_CARD_TYPE -> {
|
binding?.cardData?.text = "清零卡写卡"
|
}
|
|
}
|
}
|
|
}
|
|
|
override fun onNfcBack(intent: Intent) {
|
val nfcReadHelper = NfcReadHelper.getInstance(intent, this)
|
val cardNumber = nfcReadHelper.getCardNumberNoClose()
|
if (cardNumber.isNotEmpty() && cardNumber == cardAddr) {
|
val nfcWreatHelper = NfcWreatHelper.getInstance(intent, this)
|
when (cardType) {
|
CardCommon.CLEAN_CARD_TYPE -> {
|
var clearCard = ClearCard()
|
nfcWreatHelper.writeData(clearCard.getZeroBytes(), 7, 0) { success, message ->
|
if (success) {
|
postCardData(cardType, cardAddr, "")
|
// 写卡成功后更新数据库中的isCardWritten状态
|
updateCardWrittenStatus(cardAddr)
|
ToastUtil.show("写卡成功!")
|
// 处理写卡成功的情况
|
} else {
|
// 处理写卡失败的情况
|
ToastUtil.show(message)
|
}
|
}
|
}
|
|
CardCommon.USER_CARD_TYPE_1 -> {
|
binding?.cardData?.text = "写用户卡"
|
nfcWreatHelper.writeUserDataAsync(userCard, object : NFCCallBack {
|
override fun isSusses(flag: Boolean, msg: String?) {
|
if (flag) {
|
// 写卡成功后更新数据库中的isCardWritten状态
|
updateCardWrittenStatus(cardAddr)
|
ToastUtil.show("写卡成功!")
|
} else {
|
ToastUtil.show("写卡失败: ${msg ?: "未知错误"}")
|
}
|
}
|
})
|
|
}
|
}
|
} else {
|
ToastUtil.show("卡片错误,当前刷的卡与刚刚的卡不一致")
|
}
|
}
|
|
/**
|
* 更新CardRegistrationBean中的isCardWritten状态为true
|
*/
|
private fun updateCardWrittenStatus(cardNumber: String) {
|
lifecycleScope.launch {
|
try {
|
val cardRegistrationDao = BaseDaoSingleton.getInstance(this@NfcWreatActivity)
|
.cardRegistrationDao()
|
|
// 根据卡号查找CardRegistrationBean记录
|
val cardRegistration = cardRegistrationDao.getByCardNumber(cardNumber)
|
if (cardRegistration != null) {
|
// 创建更新后的CardRegistrationBean对象,将isCardWritten设置为true
|
val updatedCardRegistration = cardRegistration.copy(isCardWritten = true)
|
// 更新数据库记录
|
cardRegistrationDao.update(updatedCardRegistration)
|
}
|
} catch (e: Exception) {
|
CrashReport.postCatchedException(e)
|
e.printStackTrace()
|
ToastUtil.show("更新写卡状态失败: ${e.message}")
|
}
|
}
|
}
|
|
fun postCardData(cardType: String, cardAddr: String, remark: String) {
|
when (cardType) {
|
CardCommon.CHECK_CARD -> {
|
binding?.cardData?.text = "写用户卡"
|
}
|
}
|
val map = mutableMapOf<String, Any>()
|
|
if (cardAddr.isNotEmpty()) {
|
map["cardAddr"] = cardAddr
|
}
|
|
if (cardType.isNotEmpty()) {
|
// map["cardType"] = cardType
|
map["operateType"] = "1"
|
}
|
if (remark.isNotEmpty()) {
|
map["remarks"] = remark
|
}
|
// 使用正确的类型参数
|
ApiManager.getInstance().requestPostLoading(
|
this,
|
"/sell/card/call_back",
|
String::class.java,
|
map,
|
object : SubscriberListener<BaseResponse<String>>() {
|
override fun onNext(t: BaseResponse<String>) {
|
if (t.success) {
|
ToastUtil.show("写卡成功")
|
this@NfcWreatActivity.finish()
|
|
} else {
|
// 处理搜索失败的情况
|
ToastUtil.show(t.msg)
|
}
|
}
|
|
override fun onError(e: Throwable?) {
|
super.onError(e)
|
ToastUtil.show("上报失败: ${e?.message ?: "未知错误"}")
|
}
|
}
|
)
|
}
|
|
|
}
|