云快充离线卡协议相关矫正

This commit is contained in:
三丙
2025-08-25 11:44:58 +08:00
parent 6a8157e179
commit 1019f6e1c9
10 changed files with 46 additions and 51 deletions

View File

@@ -40,7 +40,7 @@ public enum YunKuaiChongDownlinkCmdEnum {
OTA_REQUEST(0x94),
LIMIT_UPDATE_REQUEST(0x42),
OFFLINE_CARD_BALANCE_UPDATE_REQUEST(0x42),
OFFLINE_CARD_SYNC_REQUEST(0x44),

View File

@@ -6,21 +6,21 @@
*/
package sanbing.jcpp.protocol.yunkuaichong.v150.cmd;
import static sanbing.jcpp.protocol.yunkuaichong.enums.YunKuaiChongDownlinkCmdEnum.LIMIT_UPDATE_REQUEST;
import java.math.BigDecimal;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import lombok.extern.slf4j.Slf4j;
import sanbing.jcpp.infrastructure.util.codec.BCDUtil;
import sanbing.jcpp.proto.gen.ProtocolProto;
import sanbing.jcpp.proto.gen.ProtocolProto.OfflineCardBalanceUpdateRequest;
import sanbing.jcpp.protocol.ProtocolContext;
import sanbing.jcpp.protocol.listener.tcp.TcpSession;
import sanbing.jcpp.protocol.yunkuaichong.YunKuaiChongDownlinkCmdExe;
import sanbing.jcpp.protocol.yunkuaichong.YunKuaiChongDwonlinkMessage;
import sanbing.jcpp.protocol.yunkuaichong.annotation.YunKuaiChongCmd;
import java.math.BigDecimal;
import static sanbing.jcpp.protocol.yunkuaichong.enums.YunKuaiChongDownlinkCmdEnum.OFFLINE_CARD_BALANCE_UPDATE_REQUEST;
/**
* 云快充1.5.0 远程账户余额更新
@@ -29,26 +29,26 @@ import sanbing.jcpp.protocol.yunkuaichong.annotation.YunKuaiChongCmd;
*/
@Slf4j
@YunKuaiChongCmd(0x42)
public class YunKuaiChongV150LimitUpdateRequestDLCmd extends YunKuaiChongDownlinkCmdExe {
public class YunKuaiChongV150OfflineCardBalanceUpdateRequestDLCmd extends YunKuaiChongDownlinkCmdExe {
@Override
public void execute(TcpSession tcpSession, YunKuaiChongDwonlinkMessage message, ProtocolContext ctx) {
log.info("{} 云快充1.5.0 远程账户余额更新", tcpSession);
if (!message.getMsg().hasLimitUpdateRequest()) {
if (!message.getMsg().hasOfflineCardBalanceUpdateRequest()) {
log.error("云快充1.5.0 远程账户余额更新消息体为空");
return;
}
// 初始化 buf
ByteBuf msgBody = Unpooled.buffer(20);
ProtocolProto.LimitUpdateRequest request = message.getMsg().getLimitUpdateRequest();
OfflineCardBalanceUpdateRequest request = message.getMsg().getOfflineCardBalanceUpdateRequest();
msgBody.writeBytes(encodePileCode(request.getPileCode()));
msgBody.writeBytes(encodeGunCode(request.getGunCode()));
msgBody.writeBytes(BCDUtil.toBytes(request.getCardNo()));
msgBody.writeIntLE(new BigDecimal(request.getLimitYuan()).movePointRight(2).intValue());
super.encodeAndWriteFlush(LIMIT_UPDATE_REQUEST, msgBody, tcpSession);
super.encodeAndWriteFlush(OFFLINE_CARD_BALANCE_UPDATE_REQUEST, msgBody, tcpSession);
}
}

View File

@@ -6,20 +6,21 @@
*/
package sanbing.jcpp.protocol.yunkuaichong.v150.cmd;
import java.util.Map;
import cn.hutool.core.text.CharSequenceUtil;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import lombok.extern.slf4j.Slf4j;
import sanbing.jcpp.infrastructure.util.codec.BCDUtil;
import sanbing.jcpp.proto.gen.ProtocolProto;
import sanbing.jcpp.proto.gen.ProtocolProto.OfflineCardBalanceUpdateResponse;
import sanbing.jcpp.proto.gen.ProtocolProto.UplinkQueueMessage;
import sanbing.jcpp.protocol.ProtocolContext;
import sanbing.jcpp.protocol.listener.tcp.TcpSession;
import sanbing.jcpp.protocol.yunkuaichong.YunKuaiChongUplinkCmdExe;
import sanbing.jcpp.protocol.yunkuaichong.YunKuaiChongUplinkMessage;
import sanbing.jcpp.protocol.yunkuaichong.annotation.YunKuaiChongCmd;
import java.util.Map;
/**
* 云快充1.5.0 余额更新应答
@@ -28,7 +29,7 @@ import sanbing.jcpp.protocol.yunkuaichong.annotation.YunKuaiChongCmd;
*/
@Slf4j
@YunKuaiChongCmd(0x41)
public class YunKuaiChongV150LimitUpdateResponseULCmd extends YunKuaiChongUplinkCmdExe {
public class YunKuaiChongV150OfflineCardBalanceUpdateResponseULCmd extends YunKuaiChongUplinkCmdExe {
private static final Map<Byte, String> UPDATE_RESULT;
@@ -63,8 +64,8 @@ public class YunKuaiChongV150LimitUpdateResponseULCmd extends YunKuaiChongUplink
// 修改结果 0x00-修改成功 0x01-设备编号错误 0x02-卡号错误
byte updateResult = byteBuf.readByte();
ProtocolProto.UplinkQueueMessage queueMessage = uplinkMessageBuilder(pileCode, tcpSession, message)
.setLimitUpdateResponse(ProtocolProto.LimitUpdateResponse.newBuilder()
UplinkQueueMessage queueMessage = uplinkMessageBuilder(pileCode, tcpSession, message)
.setOfflineCardBalanceUpdateResponse(OfflineCardBalanceUpdateResponse.newBuilder()
.setPileCode(pileCode)
.setCardNo(cardNo)
.setSuccess(updateResult == 0x00)