From 6c0a07331bcfd1508ae618d70e8f5d4d3a9b8de8 Mon Sep 17 00:00:00 2001 From: limqhz <540344226@qq.com> Date: Tue, 22 Aug 2023 21:35:57 +0800 Subject: [PATCH] =?UTF-8?q?netty-=E7=A1=AE=E5=AE=9A=E5=AE=A2=E6=88=B7?= =?UTF-8?q?=E7=AB=AF=E5=92=8C=E5=BE=AE=E4=BF=A1=E7=AB=AF=E7=9A=84=E6=B2=9F?= =?UTF-8?q?=E9=80=9A=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/pom.xml | 4 + .../interceptor/PlatformIdInterceptor.java | 8 +- .../java/com/sv/netty/config/Constant.java | 38 ------ .../netty/controller/QREnterController.java | 8 +- .../com/sv/netty/netty/ServerHandler.java | 47 ++++---- .../netty/ServerProtocolInitializer.java | 3 - .../sv/netty/netty/message/ChannelParam.java | 53 --------- .../com/sv/netty/netty/message/HeartBeat.java | 33 ------ .../sv/netty/netty/message/MessageDTO.java | 30 ----- .../com/sv/netty/netty/message/Result.java | 39 ------ .../netty/netty/service/MessageService.java | 2 +- .../impl/AppMessageHandlerAdapter.java | 77 ++++++------ .../main/java/com/sv/netty/ClientHandler.java | 16 ++- .../main/java/com/sv/netty/ClientThread.java | 13 +- .../com/sv/netty/message/MessageType.java | 20 ---- .../java/com/sv/service/MessageService.java | 10 +- .../main/resources/config/application-dev.yml | 15 --- .../resources/config/application-prod.yml | 15 --- .../src/main/resources/config/application.yml | 111 ------------------ .../main/resources/mybatis/mybatis-config.xml | 41 ------- .../java/com/sv/netty/config}/HeartBeat.java | 2 +- .../com/sv/netty/config}/MessageType.java | 2 +- .../com/sv/netty/config}/VenueMessage.java | 7 +- .../sv/service/message/WeiXinSendUtils.java | 5 +- 24 files changed, 109 insertions(+), 490 deletions(-) delete mode 100644 api/src/main/java/com/sv/netty/config/Constant.java delete mode 100644 api/src/main/java/com/sv/netty/netty/message/ChannelParam.java delete mode 100644 api/src/main/java/com/sv/netty/netty/message/HeartBeat.java delete mode 100644 api/src/main/java/com/sv/netty/netty/message/MessageDTO.java delete mode 100644 api/src/main/java/com/sv/netty/netty/message/Result.java delete mode 100644 netty-client/src/main/java/com/sv/netty/message/MessageType.java delete mode 100644 netty-client/src/main/resources/config/application-dev.yml delete mode 100644 netty-client/src/main/resources/config/application-prod.yml delete mode 100644 netty-client/src/main/resources/config/application.yml delete mode 100644 netty-client/src/main/resources/mybatis/mybatis-config.xml rename {netty-client/src/main/java/com/sv/netty/message => netty-model/src/main/java/com/sv/netty/config}/HeartBeat.java (95%) rename {api/src/main/java/com/sv/netty/netty/message => netty-model/src/main/java/com/sv/netty/config}/MessageType.java (91%) rename {netty-client/src/main/java/com/sv/netty/message => netty-model/src/main/java/com/sv/netty/config}/VenueMessage.java (75%) diff --git a/api/pom.xml b/api/pom.xml index 792e30a..922e96e 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -27,6 +27,10 @@ mysql-connector-java 6.0.6 + + org.springframework.boot + spring-boot-starter-web + org.springframework.boot spring-boot-starter-test diff --git a/api/src/main/java/com/sv/api/interceptor/PlatformIdInterceptor.java b/api/src/main/java/com/sv/api/interceptor/PlatformIdInterceptor.java index d3ab31a..5dc4944 100644 --- a/api/src/main/java/com/sv/api/interceptor/PlatformIdInterceptor.java +++ b/api/src/main/java/com/sv/api/interceptor/PlatformIdInterceptor.java @@ -1,7 +1,6 @@ package com.sv.api.interceptor; import com.sv.api.context.PlatformContext; -import com.sv.netty.config.Constant; import com.ydd.framework.core.common.utils.ReflectUtil; import com.ydd.framework.core.common.utils.RequestUtils; import org.apache.commons.lang.StringUtils; @@ -30,6 +29,11 @@ public class PlatformIdInterceptor implements Interceptor { private static final Logger logger = LoggerFactory.getLogger(PlatformIdInterceptor.class); + /** + * 哪些接口不需要增加 platform 平台限制 + */ + public static final List executeControllerList = Arrays.asList(new String [] {"/qrCode/init","/qrCode/enter"}); + /** * 搜索前缀 */ @@ -97,7 +101,7 @@ public class PlatformIdInterceptor implements Interceptor { } private boolean checkUrl(HttpServletRequest request) { - return Constant.executeControllerList.contains(request.getRequestURI()); + return executeControllerList.contains(request.getRequestURI()); } diff --git a/api/src/main/java/com/sv/netty/config/Constant.java b/api/src/main/java/com/sv/netty/config/Constant.java deleted file mode 100644 index 95cce85..0000000 --- a/api/src/main/java/com/sv/netty/config/Constant.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.sv.netty.config; - -import com.sv.netty.netty.message.ChannelParam; -import io.netty.util.AttributeKey; - -import java.util.Arrays; -import java.util.List; - -/** - * Created by ranfi on 2/22/16. - */ -public class Constant { - - public static final String ACCESS_TOKEN_KEY = "access_token_key"; - - //消息队列发送消息到netty - public static final String sendToMachine = "netty-doll-machine"; - - //消息队列发送消息到netty - public static final String sendToService = "netty-doll-service"; - - //消息队列发送消息到netty - public static final String ROOM_SERVICE_TOPIC = "gt-room-service-topic"; - - /** - * session中存储终端发送的额外参数 - */ - public static AttributeKey CHANNEL_PARAM = AttributeKey.newInstance("CHANNEL_PARAM"); - - public final static String SPIT_WORD = "#"; - - /** - * 哪些接口不需要增加 platform 平台限制 - */ - public static final List executeControllerList = Arrays.asList(new String [] {"/qrCode/init","/qrCode/enter"}); - - -} diff --git a/api/src/main/java/com/sv/netty/controller/QREnterController.java b/api/src/main/java/com/sv/netty/controller/QREnterController.java index e473a66..e887a24 100644 --- a/api/src/main/java/com/sv/netty/controller/QREnterController.java +++ b/api/src/main/java/com/sv/netty/controller/QREnterController.java @@ -1,7 +1,7 @@ package com.sv.netty.controller; import com.sv.entity.Venue; -import com.sv.netty.config.Constant; +import com.sv.netty.config.NettyConstant; import com.sv.netty.netty.service.MessageService; import com.sv.service.api.QRCodeService; import com.ydd.framework.core.common.dto.ResponseDTO; @@ -73,8 +73,8 @@ public class QREnterController extends BaseApiController { */ private Integer getVenueId(String deviceId){ String venueId = "0"; - if (deviceId!=null && deviceId.contains(Constant.SPIT_WORD)){ - venueId = deviceId.split(Constant.SPIT_WORD)[1]; + if (deviceId!=null && deviceId.contains(NettyConstant.SPIT_WORD)){ + venueId = deviceId.split(NettyConstant.SPIT_WORD)[1]; } try { return Integer.parseInt(venueId); @@ -90,7 +90,7 @@ public class QREnterController extends BaseApiController { */ private String getDeviceName(String deviceId){ if (deviceId!=null){ - return deviceId.split(Constant.SPIT_WORD)[0]; + return deviceId.split(NettyConstant.SPIT_WORD)[0]; } return null; } diff --git a/api/src/main/java/com/sv/netty/netty/ServerHandler.java b/api/src/main/java/com/sv/netty/netty/ServerHandler.java index c663158..85bbac1 100644 --- a/api/src/main/java/com/sv/netty/netty/ServerHandler.java +++ b/api/src/main/java/com/sv/netty/netty/ServerHandler.java @@ -1,12 +1,14 @@ package com.sv.netty.netty; -import com.sv.netty.config.Constant; +import com.sv.netty.config.ChannelParam; +import com.sv.netty.config.HeartBeat; +import com.sv.netty.config.NettyConstant; import com.sv.netty.config.SpringContextHolder; -import com.sv.netty.netty.message.ChannelParam; -import com.sv.netty.netty.message.HeartBeat; import com.sv.netty.netty.service.MessageService; import com.sv.netty.utils.JsonUtils; import io.netty.channel.*; +import io.netty.handler.timeout.IdleState; +import io.netty.handler.timeout.IdleStateEvent; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -47,13 +49,12 @@ public class ServerHandler extends SimpleChannelInboundHandler { */ @Override protected void channelRead0(ChannelHandlerContext ctx, String msg) { - System.err.println("发送的数据========" + msg); - String clientIp = ctx.channel().attr(Constant.CHANNEL_PARAM).get().getClientIp(); + String clientIp = ctx.channel().attr(NettyConstant.CHANNEL_PARAM).get().getClientIp(); try { HeartBeat hb = JsonUtils.decode(msg,HeartBeat.class); logger.info("客户端【" + clientIp + "】上报心跳..."); - ctx.channel().attr(Constant.CHANNEL_PARAM).get().setVenueId(hb.getVenueId()); - ctx.channel().attr(Constant.CHANNEL_PARAM).get().setDeviceName(hb.getDeviceName()); + ctx.channel().attr(NettyConstant.CHANNEL_PARAM).get().setVenueId(hb.getVenueId()); + ctx.channel().attr(NettyConstant.CHANNEL_PARAM).get().setDeviceName(hb.getDeviceName()); messageService.online(clientIp,ctx.channel(), hb); } catch (Exception e) { logger.error("[" + clientIp + "] host unknown error",e); @@ -64,7 +65,7 @@ public class ServerHandler extends SimpleChannelInboundHandler { public void channelRegistered(ChannelHandlerContext ctx) { String clientIP = ((InetSocketAddress) ctx.channel().remoteAddress()).getAddress().getHostAddress(); logger.info("There is a client Registered. ip:" + clientIP); - ctx.channel().attr(Constant.CHANNEL_PARAM).set(new ChannelParam(clientIP)); + ctx.channel().attr(NettyConstant.CHANNEL_PARAM).set(new ChannelParam(clientIP)); } @@ -82,8 +83,8 @@ public class ServerHandler extends SimpleChannelInboundHandler { public void channelInactive(ChannelHandlerContext ctx) { String clientIP = ((InetSocketAddress) ctx.channel().remoteAddress()).getAddress().getHostAddress(); logger.error("Client ip [" + clientIP + "] has inactive"); - Integer venueId = ctx.channel().attr(Constant.CHANNEL_PARAM).get().getVenueId(); - String deviceName = ctx.channel().attr(Constant.CHANNEL_PARAM).get().getDeviceName(); + Integer venueId = ctx.channel().attr(NettyConstant.CHANNEL_PARAM).get().getVenueId(); + String deviceName = ctx.channel().attr(NettyConstant.CHANNEL_PARAM).get().getDeviceName(); messageService.Offline(deviceName,venueId); } @@ -97,9 +98,9 @@ public class ServerHandler extends SimpleChannelInboundHandler { public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) { logger.error("ServerHandler exceptionCaught",cause); Channel channel = ctx.channel(); -// Integer venueId = ctx.channel().attr(Constant.CHANNEL_PARAM).get().getVenueId(); -// String deviceName = ctx.channel().attr(Constant.CHANNEL_PARAM).get().getDeviceName(); -// DeviceType deviceType = ctx.channel().attr(Constant.CHANNEL_PARAM).get().getDeviceType(); +// Integer venueId = ctx.channel().attr(NettyConstant.CHANNEL_PARAM).get().getVenueId(); +// String deviceName = ctx.channel().attr(NettyConstant.CHANNEL_PARAM).get().getDeviceName(); +// DeviceType deviceType = ctx.channel().attr(NettyConstant.CHANNEL_PARAM).get().getDeviceType(); // messageService.Offline(deviceName,venueId,deviceType); if(channel.isActive()) { // 错误产生,关闭连接 @@ -113,16 +114,16 @@ public class ServerHandler extends SimpleChannelInboundHandler { @Override public void userEventTriggered(ChannelHandlerContext ctx, Object evt) { // 服务器统计现在有的客户端数量, 客户端这个方法用来发心跳 -// if (evt instanceof IdleStateEvent){ -// IdleState state = ((IdleStateEvent) evt).state(); -// if (state == IdleState.READER_IDLE){ -// logger.info("IdleStateEvent READER_IDLE 超时"); -// Integer venueId = ctx.channel().attr(Constant.CHANNEL_PARAM).get().getVenueId(); -// String deviceName = ctx.channel().attr(Constant.CHANNEL_PARAM).get().getDeviceName(); -// messageService.Offline(deviceName,venueId); -// ctx.channel().close(); -// } -// } + if (evt instanceof IdleStateEvent){ + IdleState state = ((IdleStateEvent) evt).state(); + if (state == IdleState.READER_IDLE){ + logger.info("IdleStateEvent READER_IDLE 超时"); + Integer venueId = ctx.channel().attr(NettyConstant.CHANNEL_PARAM).get().getVenueId(); + String deviceName = ctx.channel().attr(NettyConstant.CHANNEL_PARAM).get().getDeviceName(); + messageService.Offline(deviceName,venueId); + ctx.channel().close(); + } + } Set connections = messageService.countConnection(); logger.info("count connected device ! the count is " + connections.size() + " and they are + [" + connections.toString() + "]" ); } diff --git a/api/src/main/java/com/sv/netty/netty/ServerProtocolInitializer.java b/api/src/main/java/com/sv/netty/netty/ServerProtocolInitializer.java index d7fb0ee..d6d5312 100644 --- a/api/src/main/java/com/sv/netty/netty/ServerProtocolInitializer.java +++ b/api/src/main/java/com/sv/netty/netty/ServerProtocolInitializer.java @@ -1,7 +1,5 @@ package com.sv.netty.netty; -import com.sv.netty.config.Constant; -import io.netty.buffer.Unpooled; import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelPipeline; import io.netty.channel.socket.SocketChannel; @@ -10,7 +8,6 @@ import io.netty.handler.codec.Delimiters; import io.netty.handler.codec.string.StringDecoder; import io.netty.handler.codec.string.StringEncoder; import io.netty.handler.timeout.IdleStateHandler; -import io.netty.handler.timeout.ReadTimeoutHandler; import org.springframework.stereotype.Component; /** diff --git a/api/src/main/java/com/sv/netty/netty/message/ChannelParam.java b/api/src/main/java/com/sv/netty/netty/message/ChannelParam.java deleted file mode 100644 index dbf1c2f..0000000 --- a/api/src/main/java/com/sv/netty/netty/message/ChannelParam.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.sv.netty.netty.message; - -/** - * 会话中存储的客户端对象 - * - * @author peakren - * @since 16/05/2017 11:09 PM - */ -public class ChannelParam { - - /** - * 设备ip - */ - private String clientIp; - - /** - * 设备编号 - */ - private String deviceName; - - /** - * 设备所在场馆 - */ - private Integer venueId; - - public ChannelParam(String clientIP) { - this.clientIp = clientIP; - } - - public String getClientIp() { - return clientIp; - } - - public void setClientIp(String clientIp) { - this.clientIp = clientIp; - } - - public String getDeviceName() { - return deviceName; - } - - public void setDeviceName(String deviceName) { - this.deviceName = deviceName; - } - - public Integer getVenueId() { - return venueId; - } - - public void setVenueId(Integer venueId) { - this.venueId = venueId; - } -} diff --git a/api/src/main/java/com/sv/netty/netty/message/HeartBeat.java b/api/src/main/java/com/sv/netty/netty/message/HeartBeat.java deleted file mode 100644 index a6c69ef..0000000 --- a/api/src/main/java/com/sv/netty/netty/message/HeartBeat.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.sv.netty.netty.message; - -import java.io.Serializable; -/** - * 客户端心跳数据包 - * HeartBeat.java - * - * @author peakren - * @date 07/12/2017 10:23 PM - */ -public class HeartBeat implements Serializable { - - private Integer venueId; //场馆号 - - private String deviceName; //设备号 - - public Integer getVenueId() { - return venueId; - } - - public void setVenueId(Integer venueId) { - this.venueId = venueId; - } - - public String getDeviceName() { - return deviceName; - } - - public void setDeviceName(String deviceName) { - this.deviceName = deviceName; - } - -} diff --git a/api/src/main/java/com/sv/netty/netty/message/MessageDTO.java b/api/src/main/java/com/sv/netty/netty/message/MessageDTO.java deleted file mode 100644 index d3961eb..0000000 --- a/api/src/main/java/com/sv/netty/netty/message/MessageDTO.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.sv.netty.netty.message; - -import java.io.Serializable; - -public class MessageDTO implements Serializable { - - private MessageType messageType; - private String message; - - public MessageDTO(MessageType messageType, String message) { - this.messageType = messageType; - this.message = message; - } - - public MessageType getMessageType() { - return messageType; - } - - public void setMessageType(MessageType messageType) { - this.messageType = messageType; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } -} diff --git a/api/src/main/java/com/sv/netty/netty/message/Result.java b/api/src/main/java/com/sv/netty/netty/message/Result.java deleted file mode 100644 index e9a1eb1..0000000 --- a/api/src/main/java/com/sv/netty/netty/message/Result.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.sv.netty.netty.message; - -/** - * 请求门禁的灯光管理 - */ -public class Result { - /** - * Code : 0 - * Message : success - * Data : false - */ - private int Code; - private String Message; - private boolean Data; - - public int getCode() { - return Code; - } - - public void setCode(int Code) { - this.Code = Code; - } - - public String getMessage() { - return Message; - } - - public void setMessage(String Message) { - this.Message = Message; - } - - public boolean isData() { - return Data; - } - - public void setData(boolean Data) { - this.Data = Data; - } -} diff --git a/api/src/main/java/com/sv/netty/netty/service/MessageService.java b/api/src/main/java/com/sv/netty/netty/service/MessageService.java index 00c2fc8..4aff7dd 100644 --- a/api/src/main/java/com/sv/netty/netty/service/MessageService.java +++ b/api/src/main/java/com/sv/netty/netty/service/MessageService.java @@ -1,7 +1,7 @@ package com.sv.netty.netty.service; import com.sv.entity.Venue; -import com.sv.netty.netty.message.HeartBeat; +import com.sv.netty.config.HeartBeat; import io.netty.channel.Channel; import java.util.Set; diff --git a/api/src/main/java/com/sv/netty/netty/service/impl/AppMessageHandlerAdapter.java b/api/src/main/java/com/sv/netty/netty/service/impl/AppMessageHandlerAdapter.java index df3feb1..24f15a3 100644 --- a/api/src/main/java/com/sv/netty/netty/service/impl/AppMessageHandlerAdapter.java +++ b/api/src/main/java/com/sv/netty/netty/service/impl/AppMessageHandlerAdapter.java @@ -3,13 +3,10 @@ package com.sv.netty.netty.service.impl; import com.sv.entity.Member; import com.sv.entity.MemberEnterVenueLog; import com.sv.entity.Venue; -import com.sv.netty.config.Constant; -import com.sv.netty.config.ErrorCode; -import com.sv.netty.netty.message.HeartBeat; -import com.sv.netty.netty.message.MessageDTO; -import com.sv.netty.netty.message.MessageType; +import com.sv.netty.config.*; import com.sv.netty.netty.service.MessageService; import com.sv.netty.utils.JsonUtils; +import com.sv.netty.utils.ServerMessageUtils; import com.sv.service.api.MemberEnterVenueLogService; import com.sv.service.api.MemberService; import com.sv.service.api.VenueService; @@ -88,8 +85,8 @@ public class AppMessageHandlerAdapter implements MessageService { } else { deviceService.online(heartBeat.getDeviceName(),heartBeat.getVenueId(),thisVenue.getType(),clientId); putChannelType(heartBeat.getDeviceName(),heartBeat.getVenueId(),channel); - MessageDTO messageDTO = new MessageDTO(MessageType.LINK,"欢迎扫码进场!"); - channel.writeAndFlush(messageDTO); + VenueMessage VenueMessage = new VenueMessage(MessageType.LINK,"欢迎扫码进场!"); + channel.writeAndFlush(VenueMessage); } } } @@ -117,9 +114,9 @@ public class AppMessageHandlerAdapter implements MessageService { Member thisMember = memberService.findByMember(memberId); if (thisMember!=null){ String nickname = thisMember.getNickname(); - MessageDTO messageDTO = new MessageDTO(MessageType.LOAD,"欢迎光临!" + nickname + ",请您60s内操作进场。"); + VenueMessage venueMessage = new VenueMessage(MessageType.LOAD,"欢迎光临!" + nickname + ",请您60s内操作进场。"); Channel currentChannel = getCurrentChannel(deviceName, venueId); - sendMessage(currentChannel,messageDTO); + ServerMessageUtils.INSTANCE.sendMsg(currentChannel,venueMessage); return true; } return false; @@ -159,10 +156,10 @@ public class AppMessageHandlerAdapter implements MessageService { // memberMessageDto.setPlaceName(""); // memberMessageDto.setMessage("欢迎下次再来" + venue.getName()); // memberMessageDto.setCode(2); -// MessageDto messageDto = new MessageDto(); -// messageDto.setCmdId(Cmd.OPEN_DOOR.id); -// messageDto.setDoor(2); -// sendOpenMessage(messageDto, device.getId()); +// VenueMessage VenueMessage = new VenueMessage(); +// VenueMessage.setCmdId(Cmd.OPEN_DOOR.id); +// VenueMessage.setDoor(2); +// sendOpenMessage(VenueMessage, device.getId()); // 校验玩就可以出场了 // sendMessage(memberMessageDto, device.getId()); // venueService.addNumber(venue.getId(), -1, member.getId()); @@ -187,16 +184,16 @@ public class AppMessageHandlerAdapter implements MessageService { if(venueService.qrCodeEnterVenue(memberId,deviceName,venueId,venue)){ // 可以进场 scheduledExecutorService.schedule(() -> { - sendMessage(channel,new MessageDTO(MessageType.OPEN_DOOR,"OK")); + ServerMessageUtils.INSTANCE.sendMsg(channel,new VenueMessage(MessageType.OPEN_DOOR,"OK")); }, 5, TimeUnit.SECONDS); } else { // 进场失败 - sendMessage(channel,new MessageDTO(MessageType.FAILED, ErrorCode.NO_USE_CARD.getMsg())); + ServerMessageUtils.INSTANCE.sendMsg(channel,new VenueMessage(MessageType.FAILED, ErrorCode.NO_USE_CARD.getMsg())); } } else { logger.info(member == null ? "null" : member.getId() + "入场失败:连续入场"); Config config = configService.findById(1); - sendMessage(channel,new MessageDTO(MessageType.OPEN_DOOR, MessageFormat.format(ErrorCode.CHECK_ENTER_INTERVAL.getMsg(),config.getValue()))); + ServerMessageUtils.INSTANCE.sendMsg(channel,new VenueMessage(MessageType.OPEN_DOOR, MessageFormat.format(ErrorCode.CHECK_ENTER_INTERVAL.getMsg(),config.getValue()))); } } @@ -242,30 +239,6 @@ public class AppMessageHandlerAdapter implements MessageService { } } - /** - * 给客户端发送信息 - * @param channel - * @param messageDTO - */ - private void sendMessage(Channel channel, MessageDTO messageDTO) { - channel.writeAndFlush(messageDTO); - } - - /** - * 控制硬件,篮球馆的门禁灯光控制 - * @param number - */ - public void sendNumberChange(Integer number) { -// HttpHeaders headers = new HttpHeaders(); -// headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); -// MultiValueMap param = new LinkedMultiValueMap<>(); -// param.add("LingtekID", "5d14229fcb1f5c1a9046f429"); -// param.add("Number", number.toString()); -// HttpEntity> request = new HttpEntity<>(param, headers); -// ResponseEntity result = restTemplate.exchange("http://lingtek.jalasmart.com/api/v1/lingtek/number", HttpMethod.PUT, request, Result.class); -// logger.info("灯光结果" + JsonMapper.nonDefaultMapper().toJson(result)); - } - /** * 操作连接 */ @@ -273,7 +246,7 @@ public class AppMessageHandlerAdapter implements MessageService { * 缓存通道 */ public void putChannelType(String deviceName, Integer venueId, Channel channel) { - String clientId = deviceName + Constant.SPIT_WORD + venueId; + String clientId = deviceName + NettyConstant.SPIT_WORD + venueId; links.put(clientId, channel); } @@ -281,7 +254,7 @@ public class AppMessageHandlerAdapter implements MessageService { * 获取当前通道 */ public Channel getCurrentChannel(String deviceName, Integer venueId){ - String clientId = deviceName + Constant.SPIT_WORD + venueId + Constant.SPIT_WORD; + String clientId = deviceName + NettyConstant.SPIT_WORD + venueId + NettyConstant.SPIT_WORD; return links.get(clientId); } @@ -289,7 +262,7 @@ public class AppMessageHandlerAdapter implements MessageService { * 获取通道 */ public boolean contains(String deviceName, Integer venueId) { - String clientId = deviceName + Constant.SPIT_WORD + venueId + Constant.SPIT_WORD; + String clientId = deviceName + NettyConstant.SPIT_WORD + venueId + NettyConstant.SPIT_WORD; return links.containsKey(clientId); } @@ -297,7 +270,7 @@ public class AppMessageHandlerAdapter implements MessageService { * 移除通道 */ public void removeChannelType(String deviceName, Integer venueId) { - String clientId = deviceName + Constant.SPIT_WORD + venueId ; + String clientId = deviceName + NettyConstant.SPIT_WORD + venueId ; links.remove(clientId); } @@ -309,4 +282,20 @@ public class AppMessageHandlerAdapter implements MessageService { public Set countConnection() { return links.keySet(); } + + /** + * 控制硬件,篮球馆的门禁灯光控制 + * @param number + */ +// public void sendNumberChange(Integer number) { +// HttpHeaders headers = new HttpHeaders(); +// headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); +// MultiValueMap param = new LinkedMultiValueMap<>(); +// param.add("LingtekID", "5d14229fcb1f5c1a9046f429"); +// param.add("Number", number.toString()); +// HttpEntity> request = new HttpEntity<>(param, headers); +// ResponseEntity result = restTemplate.exchange("http://lingtek.jalasmart.com/api/v1/lingtek/number", HttpMethod.PUT, request, Result.class); +// logger.info("灯光结果" + JsonMapper.nonDefaultMapper().toJson(result)); +// } + } diff --git a/netty-client/src/main/java/com/sv/netty/ClientHandler.java b/netty-client/src/main/java/com/sv/netty/ClientHandler.java index 29ab9b5..02530a0 100644 --- a/netty-client/src/main/java/com/sv/netty/ClientHandler.java +++ b/netty-client/src/main/java/com/sv/netty/ClientHandler.java @@ -1,13 +1,18 @@ package com.sv.netty; -import com.sv.netty.message.HeartBeat; +import com.sv.netty.config.HeartBeat; +import com.sv.netty.config.VenueMessage; import com.sv.netty.utils.EncodeMsg; +import com.sv.netty.utils.JsonUtils; +import com.sv.service.MessageService; import io.netty.channel.Channel; import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.SimpleChannelInboundHandler; import io.netty.handler.timeout.IdleState; import io.netty.handler.timeout.IdleStateEvent; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.net.UnknownHostException; @@ -19,6 +24,7 @@ import java.net.UnknownHostException; */ @ChannelHandler.Sharable public class ClientHandler extends SimpleChannelInboundHandler { + private final Logger logger = LoggerFactory.getLogger(ClientHandler.class); /** * 当通道就绪就会触发 @@ -48,9 +54,9 @@ public class ClientHandler extends SimpleChannelInboundHandler { */ @Override public void channelRead0(ChannelHandlerContext ctx, String msg) throws Exception { - System.out.println("接收服务器响应msg:[" + msg + "]"); -// MessageDTO message = JsonMapper.fromJson(msg, MessageDTO.class); -// MessageService.getInstance().execute(message); + logger.info("接收服务器响应msg:[" + msg + "]"); + VenueMessage message = JsonUtils.decode(msg, VenueMessage.class); + MessageService.getInstance().execute(message); } /** @@ -88,7 +94,7 @@ public class ClientHandler extends SimpleChannelInboundHandler { */ @Override public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) { - System.out.println("ClientHandler exceptionCaught"); + logger.info("ClientHandler exceptionCaught"); cause.printStackTrace(); Channel channel = ctx.channel(); if(channel.isActive()) { diff --git a/netty-client/src/main/java/com/sv/netty/ClientThread.java b/netty-client/src/main/java/com/sv/netty/ClientThread.java index f6c2abc..172a775 100644 --- a/netty-client/src/main/java/com/sv/netty/ClientThread.java +++ b/netty-client/src/main/java/com/sv/netty/ClientThread.java @@ -5,6 +5,8 @@ import io.netty.channel.*; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.nio.NioSocketChannel; import io.netty.handler.logging.LoggingHandler; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.net.InetSocketAddress; import java.util.concurrent.TimeUnit; @@ -17,6 +19,7 @@ import java.util.concurrent.TimeUnit; * @date 07/12/2017 10:12 PM */ public class ClientThread extends Thread{ + private final Logger logger = LoggerFactory.getLogger(ClientThread.class); private static ClientThread instance; @@ -69,11 +72,11 @@ public class ClientThread extends Thread{ } public void doConnect() { - System.out.println("现在开始链接了"); + logger.info("现在开始链接了"); if (closed) { return; } - System.out.println("连接 = " + remoteHost + " " + remotePort); + logger.info("连接 = " + remoteHost + " " + remotePort); future = bootstrap.connect(new InetSocketAddress(remoteHost, remotePort)); future.addListener(new ChannelFutureListener() { public void operationComplete(ChannelFuture f) throws Exception { @@ -82,9 +85,9 @@ public class ClientThread extends Thread{ public void run() { if (!f.isSuccess()) { doConnect(); - System.out.println("等待连接"); + logger.info("等待连接"); } else { - System.out.println("已连接"); + logger.info("已连接"); } } }, 2, TimeUnit.SECONDS); @@ -110,7 +113,7 @@ public class ClientThread extends Thread{ @Override public void channelInactive(ChannelHandlerContext ctx) throws Exception { super.channelInactive(ctx); - System.out.println(ctx.toString() + "======inactive"); + logger.info(ctx.toString() + "======inactive"); ctx.channel().eventLoop().schedule(new Runnable() { @Override public void run() { diff --git a/netty-client/src/main/java/com/sv/netty/message/MessageType.java b/netty-client/src/main/java/com/sv/netty/message/MessageType.java deleted file mode 100644 index b3b3f60..0000000 --- a/netty-client/src/main/java/com/sv/netty/message/MessageType.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.sv.netty.message; - -public enum MessageType { - HB("连接"), - OPEN_DOOR("开门"); - - private String message; - - MessageType(String message) { - this.message = message; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } -} diff --git a/netty-client/src/main/java/com/sv/service/MessageService.java b/netty-client/src/main/java/com/sv/service/MessageService.java index e9619a5..9012493 100644 --- a/netty-client/src/main/java/com/sv/service/MessageService.java +++ b/netty-client/src/main/java/com/sv/service/MessageService.java @@ -1,6 +1,8 @@ package com.sv.service; -import com.sv.netty.message.VenueMessage; +import com.sv.netty.config.VenueMessage; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * 消息服务 @@ -11,6 +13,8 @@ import com.sv.netty.message.VenueMessage; */ public class MessageService { + private final Logger logger = LoggerFactory.getLogger(MessageService.class); + static private MessageService sInstance; static public MessageService getInstance() { @@ -34,7 +38,7 @@ public class MessageService { openDoor(); break; default: - System.out.println( "default"); + logger.info( "default"); } } @@ -43,7 +47,7 @@ public class MessageService { */ public void openDoor() { // 开门 - System.out.println("开门成功!!!"); + logger.info("开门成功!!!"); } } diff --git a/netty-client/src/main/resources/config/application-dev.yml b/netty-client/src/main/resources/config/application-dev.yml deleted file mode 100644 index bf36442..0000000 --- a/netty-client/src/main/resources/config/application-dev.yml +++ /dev/null @@ -1,15 +0,0 @@ -spring: - datasource: - url: jdbc:mysql://127.0.0.1:3306/smart_venue?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&serverTimezone=GMT%2b8&useAffectedRows=true&useSSL=false - username: root - password: 123456 - - jpa: - show-sql: true - -sv: - file: - store: - image: imagetest/ - video: videotest/ - health: health-docstest/ diff --git a/netty-client/src/main/resources/config/application-prod.yml b/netty-client/src/main/resources/config/application-prod.yml deleted file mode 100644 index 7c0b636..0000000 --- a/netty-client/src/main/resources/config/application-prod.yml +++ /dev/null @@ -1,15 +0,0 @@ -spring: - datasource: - url: jdbc:mysql://127.0.0.1:3306/smart_venue?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&serverTimezone=GMT%2b8&useAffectedRows=true - username: root - password: hyty1234 - - jpa: - show-sql: true - -sv: - file: - store: - image: image/ - video: video/ - health: health-docs/ diff --git a/netty-client/src/main/resources/config/application.yml b/netty-client/src/main/resources/config/application.yml deleted file mode 100644 index d0cfe47..0000000 --- a/netty-client/src/main/resources/config/application.yml +++ /dev/null @@ -1,111 +0,0 @@ -server: - port: 8023 - context-path: /netty - tomcat: - uri-encoding: utf-8 - - - -spring: - profiles: - include: - -dev - -prod - active: dev - - - # 数据库连接池配置 - druid: - filters: stat - initialSize: 1 - minIdle: 1 - maxActive: 40 - maxWait: 600000 - timeBetweenEvictionRunsMillis: 60000 - minEvictableIdleTimeMillis: 300000 - validationQuery: SELECT 'x' - testWhileIdle: true - testOnBorrow: false - testOnReturn: false - poolPreparedStatements: true - maxPoolPreparedStatementPerConnectionSize: 20 - WebStatFilter: - enabled: false - urlPattern: - exclusions: - sessionStatMaxCount: - sessionStatEnable: - principalSessionName: - principalCookieName: - profileEnable: - StatViewServlet: - enabled: true - urlPattern: /druid/* - resetEnable: true - loginUsername: druid - loginPassword: druid - allow: - deny: - aop: - auto: true - http: - encoding: - force: true - charset: utf-8 - enabled: true - - jackson: - date-format: yyyy-MM-dd HH:mm:ss - property-naming-strategy: CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES - - redis: - pool: - max-active: 1000 - max-wait: -1 - max-idle: 8 - min-idle: 8 - timeout: 60000 - -# MyBatis Configuration -mybatis: - type-aliases-package: com.ydd.oms.entity - config-location: classpath:mybatis/mybatis-config.xml - mapper-locations: classpath:mybatis/mapper/*/*.xml - -oss: - accessKeyId: LTAIlbtS4W2Xe4OV - accessKeySecret: qWMYkSfmXFtRoIv9q9OCbszcF9U7dX - protocol: http - name: smartvenue - endPoint: http://oss-cn-beijing.aliyuncs.com - url: https://smartvenue.oss-cn-beijing.aliyuncs.com/ - -face: - url: 192.168.1.111 - account: test@test.com - pwd: 123456 - -nettym: - url: http://127.0.0.1:8021/netty/message/send - - -#netty服务器配置 -netty: - port: 56791 -boss: - thread: - count: 1 -worker: - thread: - count: 2 -so: - keepalive: true - backlog: 128 - reuseaddr: true -tcp_nodelay: true - -logging: - level: - com: - sv: - mapper: DEBUG diff --git a/netty-client/src/main/resources/mybatis/mybatis-config.xml b/netty-client/src/main/resources/mybatis/mybatis-config.xml deleted file mode 100644 index 491eebd..0000000 --- a/netty-client/src/main/resources/mybatis/mybatis-config.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/netty-client/src/main/java/com/sv/netty/message/HeartBeat.java b/netty-model/src/main/java/com/sv/netty/config/HeartBeat.java similarity index 95% rename from netty-client/src/main/java/com/sv/netty/message/HeartBeat.java rename to netty-model/src/main/java/com/sv/netty/config/HeartBeat.java index 2057b05..4cc2309 100644 --- a/netty-client/src/main/java/com/sv/netty/message/HeartBeat.java +++ b/netty-model/src/main/java/com/sv/netty/config/HeartBeat.java @@ -1,4 +1,4 @@ -package com.sv.netty.message; +package com.sv.netty.config; import java.io.Serializable; diff --git a/api/src/main/java/com/sv/netty/netty/message/MessageType.java b/netty-model/src/main/java/com/sv/netty/config/MessageType.java similarity index 91% rename from api/src/main/java/com/sv/netty/netty/message/MessageType.java rename to netty-model/src/main/java/com/sv/netty/config/MessageType.java index 6c26422..1552005 100644 --- a/api/src/main/java/com/sv/netty/netty/message/MessageType.java +++ b/netty-model/src/main/java/com/sv/netty/config/MessageType.java @@ -1,4 +1,4 @@ -package com.sv.netty.netty.message; +package com.sv.netty.config; public enum MessageType { LINK("连接"), diff --git a/netty-client/src/main/java/com/sv/netty/message/VenueMessage.java b/netty-model/src/main/java/com/sv/netty/config/VenueMessage.java similarity index 75% rename from netty-client/src/main/java/com/sv/netty/message/VenueMessage.java rename to netty-model/src/main/java/com/sv/netty/config/VenueMessage.java index 7abfb0a..bb3d503 100644 --- a/netty-client/src/main/java/com/sv/netty/message/VenueMessage.java +++ b/netty-model/src/main/java/com/sv/netty/config/VenueMessage.java @@ -1,4 +1,4 @@ -package com.sv.netty.message; +package com.sv.netty.config; import java.io.Serializable; @@ -7,6 +7,11 @@ public class VenueMessage implements Serializable { private MessageType messageType; private String message; + public VenueMessage(MessageType type, String msg) { + this.messageType = type; + this.message = msg; + } + public MessageType getMessageType() { return messageType; } diff --git a/service/src/main/java/com/sv/service/message/WeiXinSendUtils.java b/service/src/main/java/com/sv/service/message/WeiXinSendUtils.java index 9521e5a..89fa864 100644 --- a/service/src/main/java/com/sv/service/message/WeiXinSendUtils.java +++ b/service/src/main/java/com/sv/service/message/WeiXinSendUtils.java @@ -43,8 +43,9 @@ public class WeiXinSendUtils implements InitializingBean { } private void getToken() { -// AccessTokenResponse accessToken = WeChatHelper.getAccessToken("wx51d82eba3f5f4858", "d28320bcb885cc208b6fde2253d8663e"); -// token = accessToken.getAccessToken(); + //TODO + AccessTokenResponse accessToken = WeChatHelper.getAccessToken("wx51d82eba3f5f4858", "d28320bcb885cc208b6fde2253d8663e"); + token = accessToken.getAccessToken(); } @Scheduled(fixedDelay=60*60*1000)