2024-04 足球场开门逻辑

This commit is contained in:
2024-05-22 18:54:15 +08:00
parent e0abce8e48
commit 9fd95bfdad
7 changed files with 157 additions and 24 deletions

View File

@@ -0,0 +1,37 @@
package com.sv.api.controller;
import com.sv.netty.netty.service.MessageService;
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.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* Controller - 用户预约的场馆课程票号
*
* @author lihong
* @since 2018-08-06
*/
@RestController
public class FootballTicketController extends BaseApiController {
private final Logger logger = LoggerFactory.getLogger(FootballTicketController.class);
@Resource
private MessageService messageService;
/**
* 订单详情开门链接
*/
@RequestMapping(value = "/member/lesson/tickets/opendoor", method = RequestMethod.POST)
public ResponseDTO memberTicketInvite(@RequestParam("ticketId") Integer ticketId){
messageService.footballOpenDoor(ticketId,getLoginMemberId());
return ResponseDTO.ok().addAttribute("enterFlag","OK");
}
}

View File

@@ -46,6 +46,13 @@ public interface MessageService {
*/
void enterVenue(String barcode);
/**
* 足球场开门逻辑
* @param ticketId
* @param memberId
*/
void footballOpenDoor(Integer ticketId,Integer memberId);
public void adminEnter(String deviceName, Integer venueId);
public void adminOut(String deviceName, Integer venueId);

View File

@@ -4,10 +4,7 @@ import com.enums.BarCodeStatusEnum;
import com.enums.EnterEnum;
import com.enums.EnterVenuePayTypeEnum;
import com.sv.entity.*;
import com.sv.mapper.BarcodeEnterLogMapper;
import com.sv.mapper.BarcodeMapper;
import com.sv.mapper.BarcodeOfflineMapper;
import com.sv.mapper.BarcodeOrderTimeMapper;
import com.sv.mapper.*;
import com.sv.netty.config.*;
import com.sv.netty.netty.service.MessageService;
import com.sv.netty.utils.JsonUtils;
@@ -73,6 +70,9 @@ public class ServerMessageHandlerAdapter implements MessageService {
private BarcodeEnterLogMapper barcodeEnterLogMapper;
@Resource
private BarcodeOrderTimeMapper barcodeOrderTimeMapper;
@Resource
private MemberLessonTicketMapper memberLessonTicketMapper;
/**
* 处理心跳信息,存储心跳信息
* @param clientId
@@ -110,6 +110,43 @@ public class ServerMessageHandlerAdapter implements MessageService {
}
}
/**
* 足球场开门逻辑
* @param ticketId
*/
@Override
@Transactional
public void footballOpenDoor(Integer ticketId,Integer memberId) {
MemberLessonTicket memberLessonTicket = memberLessonTicketMapper.findById(ticketId);
if (memberLessonTicket == null) {
logger.error("足球开门失败,未找到对应的订单!");
throw new ServiceException("足球开门失败,未找到对应的订单!");
}
Device device = deviceService.findByDevice(memberLessonTicket.getVenueId());
String doorSn = device.getName();
boolean lockStat = doorLockUtil.checkDoorLock(doorSn);
if (lockStat) {
logger.error("有人正在操作,请稍后再出场!!!");
throw new ServiceException("有人正在操作,请稍后再试");
}
Channel channel = getCurrentChannel(device.getName(), memberLessonTicket.getVenueId());
Member member = memberService.findByMember(memberId);
if (member != null) {
MemberEnterVenueLog memberEnterVenueLog = new MemberEnterVenueLog();
memberEnterVenueLog.setOrderSn(memberLessonTicket.getOrderSn());
memberEnterVenueLog.setType(EnterEnum.ENTER.getValue());
memberEnterVenueLog.setMemberId(member.getId());
memberEnterVenueLog.setPlatformId(member.getPlatformId() == null ? 1 : member.getPlatformId());
memberEnterVenueLog.setVenueId(memberLessonTicket.getVenueId());
memberEnterVenueLog.setPayType(EnterVenuePayTypeEnum.WEI_XIN.getValue());
memberEnterVenueLogService.save(memberEnterVenueLog);
doorLockUtil.lockDoor(doorSn);
// writeOffCode(barcode); 足球不需要二维码
logger.info("用户" + member.getId() + "&" + member.getNickname() + "足球入场");
ServerMessageUtils.INSTANCE.sendMsg(channel,new VenueMessage(MessageType.ENTER_DOOR,"OK"));
}
}
/**
* 核销扫码出场逻辑
* @param barcode