package com.dayu.qiheonlinelibrary.card; import com.dayu.baselibrary.tools.HexUtil; import com.dayu.qiheonlinelibrary.dao.QHOnLineAppDatabase; import com.dayu.qiheonlinelibrary.utils.CardCommon; import java.io.Serializable; import java.util.List; /** * Copyright (C), 2023, * Author: zuo * Date: 2023-11-08 10:19 * Description: 管理卡 第1扇区 0块 */ public class ManageCard extends BaseCard implements Serializable { public String cardType = CardCommon.MANAGE_CRAD;//卡类型 public int arerNumber;//区域号(底位在前高位在后) /** * M1卡的0扇区0块通常用于存储一些基本的卡片信息 * 0-4字节是卡号 */ public String userCard; //用户卡号 public byte cardWriteState;//当前状态 00:充值管理机写 01:控制器反写的 当01时将1扇区0块原管理卡信息改成用户卡内容 public int getArerNumber() { return arerNumber; } public void setArerNumber(int arerNumber) { this.arerNumber = arerNumber; } public String getUserCard() { return userCard; } public void setUserCard(String userCard) { this.userCard = userCard; } public byte getCardWriteState() { return cardWriteState; } public void setCardWriteState(byte cardWriteState) { this.cardWriteState = cardWriteState; } public static ManageCard getBean(List data) { if (data != null) { ManageCard manageCard = new ManageCard(); byte[] zero = data.get(0); byte[] arerNumberByte = new byte[4]; System.arraycopy(zero, 1, arerNumberByte, 0, arerNumberByte.length); manageCard.arerNumber = HexUtil.get16To10LowHightByBytes(arerNumberByte); byte[] passWordByte = new byte[4]; System.arraycopy(zero, 5, passWordByte, 0, passWordByte.length); manageCard.setUserCard(HexUtil.bytesToHex(passWordByte)); manageCard.setCardWriteState(zero[13]); return manageCard; } return null; } public byte[] toByte(QHOnLineAppDatabase QHOnLineAppDatabase) { setCardData(QHOnLineAppDatabase, cardType); Zero zero = new Zero(); return zero.toByte(); } public class Zero { public byte[] toByte() { byte[] data = new byte[16]; data[0] = HexUtil.hexToByte(cardType); //区域号 byte[] arerNumberBytes = new byte[4]; byte[] arerNumberDatas = HexUtil.hexToByteArray(HexUtil.get10To16LowHigh(arerNumber)); System.arraycopy(arerNumberDatas, 0, arerNumberBytes, 0, arerNumberDatas.length); if (arerNumberBytes != null) { System.arraycopy(arerNumberBytes, 0, data, 1, arerNumberBytes.length); } byte[] userCardByts = HexUtil.hexToByteArray(userCard); if (userCard != null) { System.arraycopy(userCardByts, 0, data, 5, userCardByts.length); } data[13] = cardWriteState; data[15] = getByteSum(data); return data; } } }