| | |
| | | import com.dayu.general.bean.card.ClearCard |
| | | import com.dayu.general.bean.card.UserCard |
| | | import com.dayu.general.tool.CardCommon |
| | | import com.dayu.general.tool.CardOperationType |
| | | import com.dayu.general.databinding.ActivityNfcWriteGeBinding |
| | | import com.dayu.general.net.ApiManager |
| | | import com.dayu.general.net.BaseResponse |
| | |
| | | import com.dayu.general.dao.BaseDaoSingleton |
| | | import com.tencent.bugly.crashreport.CrashReport |
| | | import kotlinx.coroutines.launch |
| | | import java.lang.StringBuilder |
| | | |
| | | /** |
| | | * @author: zuo |
| | |
| | | var cardType = "" |
| | | var orderId = "" |
| | | var cardAddr = "" |
| | | var cardFee = 0 |
| | | |
| | | //订单编号 |
| | | var orderNumber = "" |
| | | private lateinit var userCard: UserCard |
| | | private var operationTypeCode = -1; |
| | | private var operationType: CardOperationType? = null |
| | | |
| | | override fun onCreate(savedInstanceState: Bundle?) { |
| | | super.onCreate(savedInstanceState) |
| | |
| | | cardType = intent?.getStringExtra("cardType") ?: "" |
| | | orderId = intent?.getStringExtra("orderId") ?: "" |
| | | cardAddr = intent?.getStringExtra("cardAddr") ?: "" |
| | | operationTypeCode = intent?.getIntExtra("operationTypeCode", -1) ?: -1 |
| | | operationType = CardOperationType.fromCode(operationTypeCode) |
| | | if (intent?.hasExtra("cardFee") == true) { |
| | | cardFee = intent?.getIntExtra("cardFee", 0) ?: 0 |
| | | } |
| | | if (intent?.hasExtra("userCard") == true) { |
| | | 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 -> { |
| | | } |
| | | if (operationTypeCode != -1) { |
| | | when (operationType) { |
| | | CardOperationType.CleanCard -> { |
| | | binding?.cardData?.text = "清零卡写卡" |
| | | } |
| | | |
| | | CardOperationType.OpenCard -> { |
| | | var textData = StringBuilder() |
| | | textData.append("用户开卡\n") |
| | | if (cardFee != 0) { |
| | | textData.append("工本费:" + cardFee + "元\n") |
| | | } |
| | | if (userCard.balance != 0) { |
| | | textData.append("充值金额:" + userCard.balance + "元") |
| | | } |
| | | |
| | | binding?.cardData?.text = textData.toString() |
| | | } |
| | | |
| | | CardOperationType.CancelCard -> TODO() |
| | | CardOperationType.CheckCard -> TODO() |
| | | CardOperationType.DeductCard -> TODO() |
| | | CardOperationType.Recharge -> TODO() |
| | | CardOperationType.ReplaceCard -> TODO() |
| | | null -> TODO() |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | override fun onNfcBack(intent: Intent) { |
| | | val nfcReadHelper = NfcReadHelper.getInstance(intent, this) |
| | | val cardNumber = nfcReadHelper.getCardNumberNoClose() |
| | | // 使用正常的getCardNumber()方法,它会自动关闭连接 |
| | | val cardNumber = nfcReadHelper.getCardNumber() |
| | | |
| | | if (cardNumber.isNotEmpty() && cardNumber == cardAddr) { |
| | | val nfcWreatHelper = NfcWreatHelper.getInstance(intent, this) |
| | | when (cardType) { |
| | | CardCommon.CLEAN_CARD_TYPE -> { |
| | | when (operationType) { |
| | | CardOperationType.CleanCard -> { |
| | | var clearCard = ClearCard() |
| | | nfcWreatHelper.writeData(clearCard.getZeroBytes(), 7, 0) { success, message -> |
| | | // 确保Toast在主线程中调用 |
| | | runOnUiThread { |
| | | if (success) { |
| | | postCardData(cardType, cardAddr, "") |
| | | postCardData(cardType, cardAddr) |
| | | // 写卡成功后更新数据库中的isCardWritten状态 |
| | | updateCardWrittenStatus(cardAddr) |
| | | ToastUtil.show("写卡成功!") |
| | |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | CardCommon.USER_CARD_TYPE_1 -> { |
| | | binding?.cardData?.text = "写用户卡" |
| | | CardOperationType.OpenCard -> { |
| | | nfcWreatHelper.writeUserDataAsync(userCard, object : NFCCallBack { |
| | | override fun isSusses(flag: Boolean, msg: String?) { |
| | | // 确保Toast在主线程中调用 |
| | | runOnUiThread { |
| | | if (flag) { |
| | | // 写卡成功后更新数据库中的isCardWritten状态 |
| | | updateCardWrittenStatus(cardAddr) |
| | |
| | | ToastUtil.show("写卡失败: ${msg ?: "未知错误"}") |
| | | } |
| | | } |
| | | } |
| | | }) |
| | | |
| | | } |
| | | |
| | | CardOperationType.CancelCard -> TODO() |
| | | CardOperationType.CheckCard -> TODO() |
| | | CardOperationType.DeductCard -> TODO() |
| | | CardOperationType.Recharge -> TODO() |
| | | CardOperationType.ReplaceCard -> TODO() |
| | | null -> TODO() |
| | | } |
| | | } else { |
| | | ToastUtil.show("卡片错误,当前刷的卡与刚刚的卡不一致") |
| | |
| | | } |
| | | } |
| | | |
| | | fun postCardData(cardType: String, cardAddr: String, remark: String) { |
| | | fun postCardData(cardType: String, cardAddr: String) { |
| | | when (cardType) { |
| | | CardCommon.CHECK_CARD -> { |
| | | binding?.cardData?.text = "写用户卡" |
| | |
| | | map["cardAddr"] = cardAddr |
| | | } |
| | | |
| | | if (cardType.isNotEmpty()) { |
| | | // map["cardType"] = cardType |
| | | map["operateType"] = "1" |
| | | } |
| | | if (remark.isNotEmpty()) { |
| | | map["remarks"] = remark |
| | | map["operateType"] = operationTypeCode |
| | | if (orderNumber.isNotEmpty()) { |
| | | map["orderNumber"] = orderNumber |
| | | } |
| | | // 使用正确的类型参数 |
| | | ApiManager.getInstance().requestPostLoading( |
| | | this, |
| | | "/sell/card/call_back", |
| | | "terminal/card/termCallBack", |
| | | String::class.java, |
| | | map, |
| | | object : SubscriberListener<BaseResponse<String>>() { |