api-进场逻辑提交-框架
This commit is contained in:
@@ -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)){
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
// }
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user