diff --git a/jsowell-admin/src/main/resources/application-pre.yml b/jsowell-admin/src/main/resources/application-pre.yml index 793a9ba7f..a970fb4c5 100644 --- a/jsowell-admin/src/main/resources/application-pre.yml +++ b/jsowell-admin/src/main/resources/application-pre.yml @@ -8,17 +8,17 @@ spring: # redis 配置 redis: # 地址 - host: r-uf6k0uet7mihr5z78f.redis.rds.aliyuncs.com -# host: 106.14.94.149 +# host: r-uf6k0uet7mihr5z78f.redis.rds.aliyuncs.com + host: 106.14.94.149 # 端口,默认为6379 port: 6379 # 数据库索引 database: 0 # 账号 - username: jsowell +# username: jsowell # 密码 - password: js@160829 -# password: js160829 +# password: js@160829 + password: js160829 # 连接超时时间 timeout: 10s lettuce: @@ -38,12 +38,12 @@ spring: druid: # 主库数据源 master: - url: jdbc:mysql://rm-uf6ra51u33dc3798l.mysql.rds.aliyuncs.com:3306/jsowell_prd?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 - username: jsowell - password: js@160829 -# url: jdbc:mysql://106.14.94.149:3306/jsowell_pre?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 -# username: jsowell_pre -# password: Js@160829 +# url: jdbc:mysql://rm-uf6ra51u33dc3798l.mysql.rds.aliyuncs.com:3306/jsowell_prd?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 +# username: jsowell +# password: js@160829 + url: jdbc:mysql://106.14.94.149:3306/jsowell_pre?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 + username: jsowell_pre + password: Js@160829 # 从库数据源 slave: # 从数据源开关/默认关闭 diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/server/NettyServerManager.java b/jsowell-netty/src/main/java/com/jsowell/netty/server/NettyServerManager.java index 95dfd9e06..e886a19ab 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/server/NettyServerManager.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/server/NettyServerManager.java @@ -16,6 +16,8 @@ import io.netty.handler.logging.LogLevel; import io.netty.handler.logging.LoggingHandler; import io.netty.handler.timeout.IdleStateHandler; import io.netty.util.ResourceLeakDetector; +import io.netty.util.concurrent.DefaultEventExecutorGroup; +import io.netty.util.concurrent.EventExecutorGroup; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.CommandLineRunner; import org.springframework.stereotype.Component; diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/server/yunkuaichong/EchoServerHandler.java b/jsowell-netty/src/main/java/com/jsowell/netty/server/yunkuaichong/EchoServerHandler.java new file mode 100644 index 000000000..12960f617 --- /dev/null +++ b/jsowell-netty/src/main/java/com/jsowell/netty/server/yunkuaichong/EchoServerHandler.java @@ -0,0 +1,47 @@ +package com.jsowell.netty.server.yunkuaichong; + +import io.netty.channel.ChannelHandler; +import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.ChannelInboundHandlerAdapter; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +/** + * 回复消息Handler + * + * @author Lemon + * @Date 2025/7/22 14:00:03 + */ +@ChannelHandler.Sharable +@Slf4j +@Component +public class EchoServerHandler extends ChannelInboundHandlerAdapter { + + @Override + public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { + if (msg == null || msg == "") { + log.info("服务端响应空的消息"); + return; + } + //将客户端的信息直接返回写入ctx + ctx.write(msg); + //刷新缓存区 + ctx.flush(); + + // ByteBuf byteBuf = (ByteBuf) msg; + // ByteBuf byteBuf = Unpooled.copiedBuffer("680d01000004882300000001290100d510", StandardCharsets.UTF_8); + // // byteBuf.readBytes(bytes); + // YKCDataProtocol ykcDataProtocol = new YKCDataProtocol(new byte[]{}); + // + // // 获取帧类型 + // byte[] frameTypeBytes = ykcDataProtocol.getFrameType(); + // String frameType = YKCUtils.frameType2Str(frameTypeBytes); + // // 获取序列号域 + // int serialNumber = BytesUtil.bytesToIntLittle(ykcDataProtocol.getSerialNumber()); + // if (!CollectionUtils.containsAny(NettyServerHandler.notPrintFrameTypeList, frameType)) { + // log.info("【>>>>>平台响应消息>>>>>】channel:{}, 响应帧类型:{}, 响应帧名称:{}, 序列号域:{}, response:{}", + // ctx.channel().id(), frameType, YKCFrameTypeCode.getFrameTypeStr(frameType), serialNumber, + // BytesUtil.binary(ykcDataProtocol.getBytes(), 16)); + // } + } +} diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/server/yunkuaichong/NettyServerChannelInitializer.java b/jsowell-netty/src/main/java/com/jsowell/netty/server/yunkuaichong/NettyServerChannelInitializer.java index a8ecf9fab..492518baa 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/server/yunkuaichong/NettyServerChannelInitializer.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/server/yunkuaichong/NettyServerChannelInitializer.java @@ -6,6 +6,8 @@ import io.netty.channel.ChannelPipeline; import io.netty.channel.socket.SocketChannel; import io.netty.handler.codec.bytes.ByteArrayDecoder; import io.netty.handler.timeout.IdleStateHandler; +import io.netty.util.concurrent.DefaultEventExecutorGroup; +import io.netty.util.concurrent.EventExecutorGroup; import org.springframework.stereotype.Component; import javax.annotation.Resource; @@ -15,7 +17,13 @@ import java.util.concurrent.TimeUnit; public class NettyServerChannelInitializer extends ChannelInitializer { @Resource - NettyServerHandler nettyServerHandler; + private NettyServerHandler nettyServerHandler; + + @Resource + private EchoServerHandler echoServerHandler; + + // 引入业务线程池 + final EventExecutorGroup businessGroup = new DefaultEventExecutorGroup(16); @Override protected void initChannel(SocketChannel channel) throws Exception { @@ -28,7 +36,9 @@ public class NettyServerChannelInitializer extends ChannelInitializer CHANNEL_MAP = new ConcurrentHashMap<>(); - private final List notPrintFrameTypeList = Lists.newArrayList("0x03"); // "0x03" + protected static final List notPrintFrameTypeList = Lists.newArrayList(); // "0x03" + + // private final YKCBusinessService ykcService = new YKCBusinessServiceImpl(); /** * 有客户端连接服务器会触发此函数 @@ -148,11 +152,8 @@ public class NettyServerHandler extends ChannelInboundHandlerAdapter { if (Objects.nonNull(response)) { // 响应客户端 ByteBuf buffer = ctx.alloc().buffer().writeBytes(response); - this.channelWrite(channel.id(), buffer); - // 获取桩号 - // String pileSn = PileChannelEntity.getPileSnByChannelId(ctx.channel().id().asLongText()); - // 批量响应客户端 - // this.channelWriteBatch(pileSn, buffer); + // this.channelWrite(channel.id(), buffer); + super.channelRead(ctx, buffer); if (!CollectionUtils.containsAny(notPrintFrameTypeList, frameType)) { // 应答帧类型 byte[] responseFrameTypeBytes = YKCFrameTypeCode.PlatformAnswersRelation.getResponseFrameTypeBytes(frameTypeBytes); diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileBasicInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileBasicInfoServiceImpl.java index 553007469..941784c67 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileBasicInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileBasicInfoServiceImpl.java @@ -555,7 +555,7 @@ public class PileBasicInfoServiceImpl implements PileBasicInfoService { 0x01 登陆认证 登陆成功,把充电桩和枪口的状态都更新为【在线】 */ - if (StringUtils.equals(frameType, String.valueOf(YKCFrameTypeCode.LOGIN_CODE.getCode()))) { + if (StringUtils.equals(frameType, BytesUtil.bcd2Str(YKCFrameTypeCode.LOGIN_CODE.getBytes()))) { // 枪口状态设置为【空闲】 pileConnectorInfoService.updateConnectorStatusByPileSn(pileSn, PileConnectorDataBaseStatusEnum.FREE.getValue()); }