api-进场逻辑提交-框架

This commit is contained in:
limqhz
2020-07-20 14:59:30 +08:00
parent 7d61e74b02
commit 0d8dcd08e2
4 changed files with 99 additions and 66 deletions

View File

@@ -35,7 +35,16 @@ public class QREnterController extends BaseApiController {
Integer venueId = getVenueId(deviceId);
String deviceName = getDeviceName(deviceId);
DeviceType enterOrOut = getEnterOrOut(deviceId);
qrCodeService.enter(venueId,deviceName,enterOrOut,memberId);
Venue venue = qrCodeService.initEnter(venueId, deviceName);
if (venue!=null){
if (DeviceType.OUT == enterOrOut){
// 出场
messageService.outVenue(deviceName,venueId,enterOrOut,memberId,venue);
}else{
// 进场
messageService.enterVenue(deviceName,venueId,enterOrOut,memberId,venue);
}
}
return ResponseDTO.ok();
}
@@ -58,6 +67,11 @@ public class QREnterController extends BaseApiController {
}
/**
* 根据字符串获取场馆
* @param deviceId
* @return
*/
private Integer getVenueId(String deviceId){
String venueId = "0";
if (deviceId!=null && deviceId.contains(Constant.SPIT_WORD)){
@@ -70,6 +84,11 @@ public class QREnterController extends BaseApiController {
}
}
/**
* 根据字符串获取设备号
* @param deviceId
* @return
*/
private String getDeviceName(String deviceId){
if (deviceId!=null){
return deviceId.split(Constant.SPIT_WORD)[0];
@@ -77,6 +96,11 @@ public class QREnterController extends BaseApiController {
return null;
}
/**
* 根据字符串获取门禁类型
* @param deviceId
* @return
*/
private DeviceType getEnterOrOut(String deviceId){
DeviceType returnType = DeviceType.ENTER;
if (deviceId!=null && deviceId.contains(Constant.SPIT_WORD)){

View File

@@ -1,6 +1,7 @@
package com.sv.netty.netty.service;
import com.enums.DeviceType;
import com.sv.entity.Venue;
import com.sv.netty.netty.message.HeartBeat;
import io.netty.channel.Channel;
@@ -37,4 +38,24 @@ public interface MessageService {
Set<String> countConnection();
boolean sendLoading(Channel channel, Integer memberId);
/**
* 出场
* @param deviceName
* @param venueId
* @param enterOrOut
* @param memberId
* @param venue
*/
void outVenue(String deviceName, Integer venueId, DeviceType enterOrOut, Integer memberId, Venue venue);
/**
* 进场
* @param deviceName
* @param venueId
* @param enterOrOut
* @param memberId
* @param venue
*/
void enterVenue(String deviceName, Integer venueId, DeviceType enterOrOut, Integer memberId, Venue venue);
}

View File

@@ -1,11 +1,10 @@
package com.sv.netty.netty.service.impl;
import com.enums.DeviceType;
import com.sv.dto.EnterResult;
import com.sv.entity.Device;
import com.sv.entity.Member;
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.netty.message.HeartBeat;
import com.sv.netty.netty.message.MessageDTO;
@@ -56,24 +55,9 @@ public class TcpMessageHandlerAdapter implements MessageService {
@Resource
private MemberEnterVenueLogService memberEnterVenueLogService;
@Resource
private RestTemplate restTemplate;
// public void sendMessage(MemberDto memberDto, Integer deviceId) {
// MessageDto messageDto = new MessageDto();
// messageDto.setCmdId(Cmd.FACEID.id);
// messageDto.setResult(memberDto);
// logger.info("发送消息" + channels.size() + "deviceId:" + deviceId);
// if (deviceId == 1) {
// if (enter != null) {
// enter.writeAndFlush(messageDto);
// }
// } else {
// out.writeAndFlush(messageDto);
// }
// }
/**
* 处理心跳信息,存储心跳信息
* @param clientId
@@ -136,17 +120,49 @@ public class TcpMessageHandlerAdapter implements MessageService {
return false;
}
private void sendMessage(Channel channel, MessageDTO messageDTO) {
channel.writeAndFlush(messageDTO);
@Override
public void outVenue(String deviceName, Integer venueId, DeviceType enterOrOut, Integer memberId, Venue venue) {
Member member = memberService.findByMember(memberId);
if (member != null) {
//出场 不用判断直接出
MemberEnterVenueLog memberEnterVenueLog = new MemberEnterVenueLog();
memberEnterVenueLog.setOrderSn("");
memberEnterVenueLog.setType(1);
memberEnterVenueLog.setMemberId(member.getId());
// memberEnterVenueLog.setVeneuType(device.getVenueType());
// memberEnterVenueLog.setVenueId(device.getVenueId());
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);
// MessageDto messageDto = new MessageDto();
// messageDto.setCmdId(Cmd.OPEN_DOOR.id);
// messageDto.setDoor(2);
// sendOpenMessage(messageDto, device.getId());
// 校验玩就可以出场了
// sendMessage(memberMessageDto, device.getId());
// venueService.addNumber(venue.getId(), -1, member.getId());
// venue = venueService.findById(venue.getId());
// sendNumberChange(venue.getNumber());
}
}
public void enter(Device device, FaceRecognizeResponse response, Venue venue) {
@Override
public void enterVenue(String deviceName, Integer venueId, DeviceType enterOrOut, Integer memberId, Venue venue) {
try {
int code = 1;
Member member = memberService.findByFaceId(response.getPerson().getId());
Member member = memberService.findByMember(memberId);
if (member != null) {
//最后进场记录
MemberEnterVenueLog enterVenueLog = memberEnterVenueLogService.findMemberLastLogNoType(member.getId(), device.getVenueId());
MemberEnterVenueLog enterVenueLog = memberEnterVenueLogService.findMemberLastLogNoType(member.getId(), venue.getId());
if (enterVenueLog != null) {
//有记录 查看 最后一次是否是出场
if (enterVenueLog.getType() == 1) {
@@ -155,7 +171,7 @@ public class TcpMessageHandlerAdapter implements MessageService {
//是进场
Date date = new Date();
//本日连续进场次数
int continuityEnterCount = memberEnterVenueLogService.countEnterByDate(member.getId(), device.getVenueId(), date);
int continuityEnterCount = memberEnterVenueLogService.countEnterByDate(member.getId(), venue.getId(), date);
logger.info("连续进场次数:" + continuityEnterCount);
//距离上次入场差多少秒
int differenceSeconds = (int) (date.getTime() - enterVenueLog.getCreatedTime().getTime()) / (1000);
@@ -188,7 +204,7 @@ public class TcpMessageHandlerAdapter implements MessageService {
// member = memberService.findByFaceId(response.getPerson().getId());
// memberMessageDto.setAmount(member.getMoney());
if (code > 0) {
EnterResult result = venueService.enterVenue(response.getPerson().getId(), device.getId());
EnterResult result = venueService.enterVenue(memberId, venue.getId());
if (result.getStatus() >= 0) {
// memberMessageDto.setCode(1);
if (result.getStatus() == 1) {
@@ -243,44 +259,20 @@ public class TcpMessageHandlerAdapter implements MessageService {
}
}
public void out(Device device, FaceRecognizeResponse response, Venue venue) {
Member member = memberService.findByFaceId(response.getPerson().getId());
if (member != null) {
//出场 不用判断直接出
MemberEnterVenueLog memberEnterVenueLog = new MemberEnterVenueLog();
memberEnterVenueLog.setOrderSn("");
memberEnterVenueLog.setType(1);
memberEnterVenueLog.setMemberId(member.getId());
memberEnterVenueLog.setVeneuType(device.getVenueType());
memberEnterVenueLog.setVenueId(device.getVenueId());
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);
// MessageDto messageDto = new MessageDto();
// messageDto.setCmdId(Cmd.OPEN_DOOR.id);
// messageDto.setDoor(2);
// sendOpenMessage(messageDto, device.getId());
// 校验玩就可以出场了
// sendMessage(memberMessageDto, device.getId());
venueService.addNumber(venue.getId(), -1, member.getId());
// venue = venueService.findById(venue.getId());
// sendNumberChange(venue.getNumber());
}
/**
* 给客户端发送信息
* @param channel
* @param messageDTO
*/
private void sendMessage(Channel channel, MessageDTO messageDTO) {
channel.writeAndFlush(messageDTO);
}
// /**
// * 控制硬件,门禁灯光控制
// * @param number
// */
// public void sendNumberChange(Integer number) {
/**
* 控制硬件,篮球馆的门禁灯光控制
* @param number
*/
public void sendNumberChange(Integer number) {
// HttpHeaders headers = new HttpHeaders();
// headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
// MultiValueMap<String, Object> param = new LinkedMultiValueMap<>();
@@ -289,6 +281,6 @@ public class TcpMessageHandlerAdapter implements MessageService {
// HttpEntity<MultiValueMap<String, Object>> request = new HttpEntity<>(param, headers);
// ResponseEntity<Result> result = restTemplate.exchange("http://lingtek.jalasmart.com/api/v1/lingtek/number", HttpMethod.PUT, request, Result.class);
// logger.info("灯光结果" + JsonMapper.nonDefaultMapper().toJson(result));
// }
}
}

View File

@@ -25,10 +25,6 @@ public class QRCodeService {
@Resource
private DeviceMapper deviceMapper;
public void enter(Integer venueId, String deviceName, DeviceType enterOrOut, Integer memberId) throws ServiceException{
return;
}
public Venue initEnter(Integer venueId,String deviceName) {
Integer integer = deviceMapper.checkDevice(deviceName, venueId);
if (integer != 1){