From 759a0764bed9404d23e9dc0423e8514d28d0bf90 Mon Sep 17 00:00:00 2001 From: limqhz Date: Wed, 15 Jul 2020 17:34:44 +0800 Subject: [PATCH] =?UTF-8?q?api-=E5=A2=9E=E5=8A=A0=E5=B0=8F=E7=A8=8B?= =?UTF-8?q?=E5=BA=8F=E6=89=AB=E7=A0=81=E5=90=8E=E5=88=9D=E5=A7=8B=E5=8C=96?= =?UTF-8?q?=E7=95=8C=E9=9D=A2=E9=80=BB=E8=BE=91=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sv/api/controller/QREnterController.java | 40 ----- .../interceptor/PlatformIdInterceptor.java | 14 +- .../java/com/sv/netty/config/Constant.java | 2 + ...ler.java => AppVenueLessonController.java} | 6 +- .../sv/netty/controller/QRCodeControler.java | 4 +- .../netty/controller/QREnterController.java | 64 ++++++++ .../main/java/com/sv/netty/dto/MemberDto.java | 148 ------------------ .../java/com/sv/netty/dto/ResponseDTO.java | 60 ------- .../impl/TcpMessageHandlerAdapter.java | 69 ++++---- .../exception/api/ExceptionCodeTemplate.java | 4 + .../com/sv/service/api/QRCodeService.java | 23 +-- .../mybatis/mapper/sv/DeviceMapper.xml | 2 +- 12 files changed, 128 insertions(+), 308 deletions(-) delete mode 100644 api/src/main/java/com/sv/api/controller/QREnterController.java rename api/src/main/java/com/sv/netty/controller/{VenueLessonController.java => AppVenueLessonController.java} (71%) create mode 100644 api/src/main/java/com/sv/netty/controller/QREnterController.java delete mode 100644 api/src/main/java/com/sv/netty/dto/MemberDto.java delete mode 100644 api/src/main/java/com/sv/netty/dto/ResponseDTO.java diff --git a/api/src/main/java/com/sv/api/controller/QREnterController.java b/api/src/main/java/com/sv/api/controller/QREnterController.java deleted file mode 100644 index 0dca4c2..0000000 --- a/api/src/main/java/com/sv/api/controller/QREnterController.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.sv.api.controller; - -import com.sv.service.api.QRCodeService; -import com.ydd.framework.core.common.dto.ResponseDTO; -import com.ydd.framework.core.controller.BaseApiController; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.web.bind.annotation.*; - -import javax.annotation.Resource; - -/** - * 二维码进场Controller - */ -@RestController -public class QREnterController extends BaseApiController { - - private final Logger logger = LoggerFactory.getLogger(QREnterController.class); - @Resource - private QRCodeService qrCodeService; - /** - * 进场指令发布 - */ - @RequestMapping(value = "/qr/enter", method = RequestMethod.GET) - public ResponseDTO enter(@RequestParam("deviceId") String deviceId) { - qrCodeService.enter(deviceId); - return ResponseDTO.ok(); - } - - /** - * 扫码结果页初始化 - * 需要进场的场馆信息 - */ - @RequestMapping(value = "/qr/init", method = RequestMethod.GET) - public ResponseDTO initEnter(@RequestParam("deviceId")String deviceId) { - - return ResponseDTO.ok().addAttribute("init",qrCodeService.initEnter(deviceId)); - } - -} 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 e86635c..36b9d70 100644 --- a/api/src/main/java/com/sv/api/interceptor/PlatformIdInterceptor.java +++ b/api/src/main/java/com/sv/api/interceptor/PlatformIdInterceptor.java @@ -15,6 +15,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.servlet.http.HttpServletRequest; +import java.util.Arrays; +import java.util.List; import java.util.Properties; @Intercepts({ @@ -27,6 +29,7 @@ public class PlatformIdInterceptor implements Interceptor { private static final Logger logger = LoggerFactory.getLogger(PlatformIdInterceptor.class); + private static final List executeControllerList = Arrays.asList(new String [] {"/qrCode/init"}); /** * 搜索前缀 */ @@ -74,19 +77,26 @@ public class PlatformIdInterceptor implements Interceptor { }catch (Exception e){} if(request == null) return sql; + if (checkUrl(request)){ + return sql; + } StringBuilder condition = new StringBuilder(" 1 = 1 "); String platformKey = PlatformContext.getKey(); if(StringUtils.isEmpty(platformKey)) return sql; - condition.append(" and ").append(PlatformContext.getKey()).append(" = '").append(PlatformContext.getValue()).append("'"); String[] sqls = new String[2]; int index = sql.toLowerCase().lastIndexOf("where"); sqls[0] = sql.substring(0,index-1); - sqls[1] = sql.substring(index+5,sql.length()); + sqls[1] = sql.substring(index+5); return sqls[0] + " WHERE " + condition.toString() + (sqls.length == 2 ? " AND " + sqls[1] : ""); } + private boolean checkUrl(HttpServletRequest request) { + logger.error("request.getRequestURI()===========" + request.getRequestURI()); + System.err.println(executeControllerList.toString()); + return executeControllerList.contains(request.getRequestURI()); + } @Override diff --git a/api/src/main/java/com/sv/netty/config/Constant.java b/api/src/main/java/com/sv/netty/config/Constant.java index efb54ca..a70d082 100644 --- a/api/src/main/java/com/sv/netty/config/Constant.java +++ b/api/src/main/java/com/sv/netty/config/Constant.java @@ -26,4 +26,6 @@ public class Constant { public final static String DELIMITER_WORD = "$_$"; + public final static String SPIT_WORD = "#"; + } diff --git a/api/src/main/java/com/sv/netty/controller/VenueLessonController.java b/api/src/main/java/com/sv/netty/controller/AppVenueLessonController.java similarity index 71% rename from api/src/main/java/com/sv/netty/controller/VenueLessonController.java rename to api/src/main/java/com/sv/netty/controller/AppVenueLessonController.java index c8f65b2..50c52c3 100644 --- a/api/src/main/java/com/sv/netty/controller/VenueLessonController.java +++ b/api/src/main/java/com/sv/netty/controller/AppVenueLessonController.java @@ -1,11 +1,11 @@ package com.sv.netty.controller; -import com.sv.netty.dto.ResponseDTO; +import com.ydd.framework.core.common.dto.ResponseDTO; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -@RestController("/netty") -public class VenueLessonController { +@RestController +public class AppVenueLessonController { @RequestMapping("/getLessonOrder") public ResponseDTO sendMessage1() { diff --git a/api/src/main/java/com/sv/netty/controller/QRCodeControler.java b/api/src/main/java/com/sv/netty/controller/QRCodeControler.java index 46780ec..98d4d0e 100644 --- a/api/src/main/java/com/sv/netty/controller/QRCodeControler.java +++ b/api/src/main/java/com/sv/netty/controller/QRCodeControler.java @@ -2,13 +2,13 @@ package com.sv.netty.controller; import com.sv.netty.config.ClientChannelCache; import com.sv.netty.config.ErrorCode; -import com.sv.netty.dto.ResponseDTO; +import com.ydd.framework.core.common.dto.ResponseDTO; import io.netty.channel.Channel; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; -@RestController("/netty") +@RestController public class QRCodeControler { /** diff --git a/api/src/main/java/com/sv/netty/controller/QREnterController.java b/api/src/main/java/com/sv/netty/controller/QREnterController.java new file mode 100644 index 0000000..59ccf6a --- /dev/null +++ b/api/src/main/java/com/sv/netty/controller/QREnterController.java @@ -0,0 +1,64 @@ +package com.sv.netty.controller; + +import com.sv.netty.config.Constant; +import com.sv.service.api.QRCodeService; +import com.ydd.framework.core.common.dto.ResponseDTO; +import com.ydd.framework.core.controller.BaseApiController; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +/** + * 小程序二维码进场Controller + */ +@RestController +public class QREnterController extends BaseApiController { + + private final Logger logger = LoggerFactory.getLogger(QREnterController.class); + @Resource + private QRCodeService qrCodeService; + /** + * 进场指令发布 + */ + @RequestMapping(value = "/qrCode/enter", method = RequestMethod.GET) + public ResponseDTO enter(@RequestParam("deviceId") String deviceId,@RequestParam("memberId") String memberId) { + Integer venueId = getVenueId(deviceId); + String deviceName = getDeviceName(deviceId); + qrCodeService.enter(venueId,deviceName); + return ResponseDTO.ok(); + } + + /** + * 扫码结果页初始化 + * 需要进场的场馆信息 + */ + @RequestMapping(value = "/qrCode/init", method = RequestMethod.GET) + public ResponseDTO initEnter(@RequestParam("deviceId")String deviceId) { + Integer venueId = getVenueId(deviceId); + String deviceName = getDeviceName(deviceId); + return ResponseDTO.ok().addAttribute("init",qrCodeService.initEnter(venueId,deviceName)); + } + + + private Integer getVenueId(String deviceId){ + String venueId = "0"; + if (deviceId!=null && deviceId.contains(Constant.SPIT_WORD)){ + venueId = deviceId.split(Constant.SPIT_WORD)[1]; + } + try { + return Integer.parseInt(venueId); + }catch (Exception e){ + return 0; + } + } + + private String getDeviceName(String deviceId){ + if (deviceId!=null){ + return deviceId.split(Constant.SPIT_WORD)[0]; + } + return null; + } + +} diff --git a/api/src/main/java/com/sv/netty/dto/MemberDto.java b/api/src/main/java/com/sv/netty/dto/MemberDto.java deleted file mode 100644 index 3f3f53c..0000000 --- a/api/src/main/java/com/sv/netty/dto/MemberDto.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.sv.netty.dto; - - -import java.io.Serializable; -import java.math.BigDecimal; - - -/** - * 会员基本信息 - * MemberDto.java - * - * @author peakren - * @date 2018/12/20 8:39 PM - */ -public class MemberDto implements Serializable { - - /** - * 头像 - */ - - private String avatar; - - /** - * 姓名 - */ - - private String name; - - /** - * 手机号码 - */ - - private String mobile; - - /** - * 余额 - */ - - private BigDecimal amount; - - /** - * 是否第一次进入 - */ - private boolean first = false; - - /** - * 场地价格 - */ - private BigDecimal placePrice; - /** - * 场地名称 - */ - - private String placeName; - - /** - * 会员卡名称 - */ - - private String cardName; - - private String message; - - /** - * 1成功进场 0不允许进场 - */ - private int code; - - public String getAvatar() { - return avatar; - } - - public void setAvatar(String avatar) { - this.avatar = avatar; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getMobile() { - return mobile; - } - - public void setMobile(String mobile) { - this.mobile = mobile; - } - - public BigDecimal getAmount() { - return amount; - } - - public void setAmount(BigDecimal amount) { - this.amount = amount; - } - - public String getPlaceName() { - return placeName; - } - - public void setPlaceName(String placeName) { - this.placeName = placeName; - } - - public String getCardName() { - return cardName; - } - - public void setCardName(String cardName) { - this.cardName = cardName; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public BigDecimal getPlacePrice() { - return placePrice; - } - - public void setPlacePrice(BigDecimal placePrice) { - this.placePrice = placePrice; - } - - public boolean isFirst() { - return first; - } - - public void setFirst(boolean first) { - this.first = first; - } -} diff --git a/api/src/main/java/com/sv/netty/dto/ResponseDTO.java b/api/src/main/java/com/sv/netty/dto/ResponseDTO.java deleted file mode 100644 index 9e7e89b..0000000 --- a/api/src/main/java/com/sv/netty/dto/ResponseDTO.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.sv.netty.dto; - - -import org.springframework.util.Assert; - -import java.util.LinkedHashMap; - -public class ResponseDTO extends LinkedHashMap { - public static final String ERR_CODE = "err_code"; - public static final String ERR_MSG = "err_msg"; - public static final String TIMESTAMP = "timestamp"; - private static final long serialVersionUID = 8410965932046471023L; - - public ResponseDTO() { - this(0, "OK"); - } - - public ResponseDTO(Integer errCode, String errMsg) { - this(errCode, errMsg, System.currentTimeMillis() / 1000L); - } - - public ResponseDTO(Integer errCode, String errMsg, Long timestamp) { - this.addAttribute("err_code", errCode); - this.addAttribute("err_msg", errMsg); - this.addAttribute("timestamp", timestamp); - } - - - - public ResponseDTO(Integer errCode, String errMsg, String attrName, Object attrValue) { - this(errCode, errMsg); - this.addAttribute(attrName, attrValue); - } - - public static ResponseDTO ok() { - return new ResponseDTO(); - } - - public static ResponseDTO ok(String msg) { - ResponseDTO ret = ok(); - ret.setErrorMsg(msg); - return ret; - } - - public ResponseDTO addAttribute(String attrName, Object attrValue) { - Assert.notNull(attrName, "属性名称不能为空"); - this.put(attrName, attrValue); - return this; - } - - - - public void setErrorCode(Integer errCode) { - this.addAttribute("err_code", errCode); - } - - public void setErrorMsg(String errMsg) { - this.addAttribute("err_msg", errMsg); - } -} diff --git a/api/src/main/java/com/sv/netty/netty/service/impl/TcpMessageHandlerAdapter.java b/api/src/main/java/com/sv/netty/netty/service/impl/TcpMessageHandlerAdapter.java index e932c11..e61fd27 100644 --- a/api/src/main/java/com/sv/netty/netty/service/impl/TcpMessageHandlerAdapter.java +++ b/api/src/main/java/com/sv/netty/netty/service/impl/TcpMessageHandlerAdapter.java @@ -7,7 +7,6 @@ import com.sv.entity.MemberEnterVenueLog; import com.sv.entity.Venue; import com.sv.entity.face.FaceRecognizeResponse; import com.sv.netty.config.ClientChannelCache; -import com.sv.netty.dto.MemberDto; import com.sv.netty.netty.message.HeartBeat; import com.sv.netty.netty.message.Result; import com.sv.netty.netty.service.MessageService; @@ -29,8 +28,6 @@ import org.springframework.web.client.RestTemplate; import javax.annotation.Resource; import java.util.*; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.TimeUnit; /** @@ -66,7 +63,7 @@ public class TcpMessageHandlerAdapter implements MessageService { @Resource private RestTemplate restTemplate; - public void sendMessage(MemberDto memberDto, Integer deviceId) { +// public void sendMessage(MemberDto memberDto, Integer deviceId) { // MessageDto messageDto = new MessageDto(); // messageDto.setCmdId(Cmd.FACEID.id); // messageDto.setResult(memberDto); @@ -78,7 +75,7 @@ public class TcpMessageHandlerAdapter implements MessageService { // } else { // out.writeAndFlush(messageDto); // } - } +// } /** * 处理心跳信息,存储心跳信息 @@ -162,27 +159,27 @@ public class TcpMessageHandlerAdapter implements MessageService { } } } - MemberDto memberMessageDto = new MemberDto(); - memberMessageDto.setName(member.getNickname()); - memberMessageDto.setAvatar(member.getAvatar()); - memberMessageDto.setMobile(member.getMobile()); - - memberMessageDto.setPlaceName(""); - member = memberService.findByFaceId(response.getPerson().getId()); - memberMessageDto.setAmount(member.getMoney()); +// MemberDto memberMessageDto = new MemberDto(); +// memberMessageDto.setName(member.getNickname()); +// memberMessageDto.setAvatar(member.getAvatar()); +// memberMessageDto.setMobile(member.getMobile()); +// +// memberMessageDto.setPlaceName(""); +// member = memberService.findByFaceId(response.getPerson().getId()); +// memberMessageDto.setAmount(member.getMoney()); if (code > 0) { EnterResult result = venueService.enterVenue(response.getPerson().getId(), device.getId()); if (result.getStatus() >= 0) { - memberMessageDto.setCode(1); +// memberMessageDto.setCode(1); if (result.getStatus() == 1) { - memberMessageDto.setCardName("会员卡"); +// memberMessageDto.setCardName("会员卡"); } if (result.getStatus() == 2) { - memberMessageDto.setPlacePrice(result.getMoney()); - memberMessageDto.setFirst(true); - logger.info(member.getId() + "入场成功:" + member.getMoney().toString()); - member = memberService.findByFaceId(response.getPerson().getId()); - memberMessageDto.setAmount(member.getMoney()); +// memberMessageDto.setPlacePrice(result.getMoney()); +// memberMessageDto.setFirst(true); +// logger.info(member.getId() + "入场成功:" + member.getMoney().toString()); +// member = memberService.findByFaceId(response.getPerson().getId()); +// memberMessageDto.setAmount(member.getMoney()); //5秒后开门 // scheduledExecutorService.schedule(new Runnable() { // @Override @@ -202,22 +199,23 @@ public class TcpMessageHandlerAdapter implements MessageService { logger.info(member.getId() + "入场成功:" + member.getMoney().toString()); } - memberMessageDto.setMessage("门禁已开,请入门"); +// memberMessageDto.setMessage("门禁已开,请入门"); venueService.addNumber(venue.getId(), 1, member.getId()); venue = venueService.findById(venue.getId()); sendNumberChange(venue.getNumber()); } else { logger.info(member.getId() + "入场失败:" + member.getMoney().toString()); - memberMessageDto.setCode(-1); - memberMessageDto.setMessage(member.getName() + "您好,您的余额不足,请扫描门禁上张贴的小程序二维码充值"); +// memberMessageDto.setCode(-1); +// memberMessageDto.setMessage(member.getName() + "您好,您的余额不足,请扫描门禁上张贴的小程序二维码充值"); } } else { logger.info(member.getId() + "入场失败:连续入场"); - memberMessageDto.setCode(0); +// memberMessageDto.setCode(0); Config config = configService.findById(1); - memberMessageDto.setMessage("无出门记录连续入场,请" + config.getValue() + "分钟之后再试"); +// memberMessageDto.setMessage("无出门记录连续入场,请" + config.getValue() + "分钟之后再试"); } - sendMessage(memberMessageDto, device.getId()); + // TODO 校验完,就可以进场了 +// sendMessage(memberMessageDto, device.getId()); } } catch (Exception e) { @@ -238,19 +236,20 @@ public class TcpMessageHandlerAdapter implements MessageService { memberEnterVenueLog.setPlatformId(member.getPlatformId()); memberEnterVenueLogService.save(memberEnterVenueLog); logger.info("用户" + member.getNickname() + "出场"); - MemberDto memberMessageDto = new MemberDto(); - memberMessageDto.setAmount(member.getMoney()); - memberMessageDto.setName(member.getNickname()); - memberMessageDto.setAvatar(member.getAvatar()); - memberMessageDto.setMobile(member.getMobile()); - memberMessageDto.setPlaceName(""); - memberMessageDto.setMessage("欢迎下次再来" + venue.getName()); - memberMessageDto.setCode(2); +// MemberDto memberMessageDto = new MemberDto(); +// memberMessageDto.setAmount(member.getMoney()); +// memberMessageDto.setName(member.getNickname()); +// memberMessageDto.setAvatar(member.getAvatar()); +// memberMessageDto.setMobile(member.getMobile()); +// 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()); - sendMessage(memberMessageDto, device.getId()); + // 校验玩就可以出场了 +// sendMessage(memberMessageDto, device.getId()); venueService.addNumber(venue.getId(), -1, member.getId()); venue = venueService.findById(venue.getId()); sendNumberChange(venue.getNumber()); diff --git a/entity/src/main/java/com/sv/exception/api/ExceptionCodeTemplate.java b/entity/src/main/java/com/sv/exception/api/ExceptionCodeTemplate.java index 0a486f4..e2c9785 100644 --- a/entity/src/main/java/com/sv/exception/api/ExceptionCodeTemplate.java +++ b/entity/src/main/java/com/sv/exception/api/ExceptionCodeTemplate.java @@ -51,5 +51,9 @@ public class ExceptionCodeTemplate { public static final ExceptionCode VENUE_ERROR = ExceptionCode.init(30023, "场馆暂未开放"); + public static final ExceptionCode DEVICE_ERROR = ExceptionCode.init(30024, "未找到该设备"); + + + } diff --git a/service/src/main/java/com/sv/service/api/QRCodeService.java b/service/src/main/java/com/sv/service/api/QRCodeService.java index 1480a7d..c824b80 100644 --- a/service/src/main/java/com/sv/service/api/QRCodeService.java +++ b/service/src/main/java/com/sv/service/api/QRCodeService.java @@ -3,6 +3,7 @@ package com.sv.service.api; import com.sv.entity.Venue; import com.sv.mapper.DeviceMapper; import com.sv.mapper.VenueMapper; +import com.ydd.framework.core.exception.ServiceException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; @@ -23,28 +24,16 @@ public class QRCodeService { @Resource private DeviceMapper deviceMapper; - public void enter(String deviceId) { - + public void enter(Integer venueId,String deviceName) { } - public Venue initEnter(String deviceId) { - String deviceName = getDeviceName(deviceId); - String venueId = getVenueId(deviceId); - int i = Integer.parseInt(venueId); - Integer integer = deviceMapper.checkDevice(deviceName, i); + public Venue initEnter(Integer venueId,String deviceName) { + Integer integer = deviceMapper.checkDevice(deviceName, venueId); if (integer != 1){ - logger.error("设备【"+deviceId + "】未链接,活着不存在"); - return null; + throw new ServiceException(com.sv.exception.api.ExceptionCodeTemplate.DEVICE_ERROR); } - return venueMapper.findById(i); + return venueMapper.findById(venueId); } - private String getVenueId(String deviceId){ - return deviceId.split("$-$")[1]; - } - - private String getDeviceName(String deviceId){ - return deviceId.split("$-$")[0]; - } } diff --git a/service/src/main/resources/mybatis/mapper/sv/DeviceMapper.xml b/service/src/main/resources/mybatis/mapper/sv/DeviceMapper.xml index 58bb6f4..575dcc9 100644 --- a/service/src/main/resources/mybatis/mapper/sv/DeviceMapper.xml +++ b/service/src/main/resources/mybatis/mapper/sv/DeviceMapper.xml @@ -239,7 +239,7 @@ \ No newline at end of file