package com.dayu.general.activity
|
|
import android.content.Intent
|
import android.os.Bundle
|
import android.view.View
|
import androidx.databinding.DataBindingUtil
|
import com.dayu.baselibrary.net.subscribers.SubscriberListener
|
import com.dayu.baselibrary.utils.BaseCommon
|
import com.dayu.baselibrary.utils.ToastUtil
|
import com.dayu.baselibrary.view.TitleBar.ClickType_LEFT_IMAGE
|
import com.dayu.general.R
|
import com.dayu.general.databinding.ActivityManagerReadBinding
|
import com.dayu.general.model.CardInfoModel
|
import com.dayu.general.net.ApiManager
|
import com.dayu.general.net.BaseResponse
|
import com.dayu.general.tool.NfcReadHelper
|
|
class ManagerReadActivity : BaseNfcActivity() {
|
|
private lateinit var binding: ActivityManagerReadBinding
|
private val viewModel: CardInfoModel = CardInfoModel()
|
var cardType = ""
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
super.onCreate(savedInstanceState)
|
|
// 初始化数据绑定
|
binding = DataBindingUtil.setContentView(this, R.layout.activity_manager_read)
|
binding.lifecycleOwner = this
|
binding.viewModel = viewModel
|
if (intent.hasExtra("cardType")) {
|
cardType = intent.getStringExtra("cardType").toString()
|
}
|
|
initView()
|
initListener()
|
}
|
|
private fun initView() {
|
binding.titleBar.setCenterText("读卡")
|
binding.titleBar.setOnItemclickListner(ClickType_LEFT_IMAGE) { this.finish() }
|
binding.btnNext.setOnClickListener {
|
if (viewModel.cardNumber.value.isNullOrEmpty()) {
|
ToastUtil.show("请先读取卡号")
|
} else {
|
postCardData(cardType, viewModel.cardNumber.value!!, getRemark())
|
}
|
|
}
|
}
|
|
private fun initListener() {
|
binding.titleBar.setOnItemclickListner(ClickType_LEFT_IMAGE) { finish() }
|
}
|
|
/**
|
* 设置卡号
|
*/
|
fun setCardNumber(cardNumber: String) {
|
viewModel.setCardNumber(cardNumber)
|
}
|
|
/**
|
* 获取备注信息
|
*/
|
fun getRemark(): String = viewModel.remark.value ?: ""
|
|
override fun onNfcBack(intent: Intent) {
|
// 处理NFC读取结果
|
NfcReadHelper.getInstance(intent, this).getCardNumber().let { cardNumber ->
|
if (cardNumber.isNotEmpty() && !cardNumber.contains(BaseCommon.CARD_TYPE_ERROR2)) {
|
binding.btnNext.visibility = View.VISIBLE
|
binding.dataLayout.visibility = View.VISIBLE
|
binding.rechargeReadLL.visibility = View.GONE
|
setCardNumber(cardNumber)
|
} else if (cardNumber.contains(BaseCommon.CARD_TYPE_ERROR2)) {
|
ToastUtil.show("当前卡密码错误,不是本公司卡")
|
}
|
}
|
}
|
|
|
private fun bytesToHexString(bytes: ByteArray?): String? {
|
if (bytes == null || bytes.isEmpty()) return null
|
val sb = StringBuilder()
|
for (b in bytes) {
|
sb.append(String.format("%02X", b))
|
}
|
return sb.toString()
|
}
|
|
|
/**
|
* 提交数据
|
*/
|
fun postCardData(cardType: String, cardAddr: String, remark: String) {
|
|
val map = mutableMapOf<String, Any>()
|
|
if (cardAddr.isNotEmpty()) {
|
map["cardAddr"] = cardAddr
|
}
|
|
if (cardType.isNotEmpty()) {
|
// map["cardType"] = cardType
|
map["cardType"] = "5"
|
}
|
if (remark.isNotEmpty()) {
|
map["remarks"] = remark
|
}
|
// 使用正确的类型参数
|
ApiManager.getInstance().requestPostLoading(
|
this,
|
"/sell/card/create_manager_card",
|
String::class.java,
|
map,
|
object : SubscriberListener<BaseResponse<String>>() {
|
override fun onNext(t: BaseResponse<String>) {
|
if (t.success) {
|
var intent = Intent(this@ManagerReadActivity, NfcWreatActivity::class.java).apply {
|
putExtra("cardAddr", cardAddr)
|
putExtra("orderId", t.content)
|
putExtra("cardType", cardType)
|
}
|
this@ManagerReadActivity.finish()
|
startActivity(intent)
|
} else {
|
// 处理搜索失败的情况
|
ToastUtil.show(t.msg)
|
}
|
}
|
|
override fun onError(e: Throwable?) {
|
super.onError(e)
|
ToastUtil.show("搜索失败: ${e?.message ?: "未知错误"}")
|
}
|
}
|
)
|
|
|
}
|
|
|
}
|