2024-04 足球场开门逻辑,预订信息判断是否登录

This commit is contained in:
2024-05-27 17:41:14 +08:00
parent 26dd0d78ea
commit 9f3a1c02c3
4 changed files with 37 additions and 14 deletions

View File

@@ -28,7 +28,7 @@ public class FootballTicketController extends BaseApiController {
/** /**
* 订单详情开门链接 * 订单详情开门链接
*/ */
@RequestMapping(value = "/member/lesson/tickets/opendoor", method = RequestMethod.POST) @RequestMapping(value = "/member/lesson/tickets/open/door", method = RequestMethod.POST)
public ResponseDTO memberTicketInvite(@RequestParam("ticketId") Integer ticketId){ public ResponseDTO memberTicketInvite(@RequestParam("ticketId") Integer ticketId){
messageService.footballOpenDoor(ticketId,getLoginMemberId()); messageService.footballOpenDoor(ticketId,getLoginMemberId());
return ResponseDTO.ok().addAttribute("enterFlag","OK"); return ResponseDTO.ok().addAttribute("enterFlag","OK");

View File

@@ -25,6 +25,8 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.time.LocalTime;
import java.time.temporal.ChronoUnit;
import java.util.*; import java.util.*;
import java.util.concurrent.ConcurrentMap; import java.util.concurrent.ConcurrentMap;
/** /**
@@ -73,6 +75,8 @@ public class ServerMessageHandlerAdapter implements MessageService {
@Resource @Resource
private MemberLessonTicketMapper memberLessonTicketMapper; private MemberLessonTicketMapper memberLessonTicketMapper;
@Resource
private VenueLessonMapper venueLessonMapper;
/** /**
* 处理心跳信息,存储心跳信息 * 处理心跳信息,存储心跳信息
* @param clientId * @param clientId
@@ -122,6 +126,17 @@ public class ServerMessageHandlerAdapter implements MessageService {
logger.error("足球开门失败,未找到对应的订单!"); logger.error("足球开门失败,未找到对应的订单!");
throw new ServiceException("足球开门失败,未找到对应的订单!"); throw new ServiceException("足球开门失败,未找到对应的订单!");
} }
VenueLesson venueLesson = venueLessonMapper.findById(memberLessonTicket.getLessonId());
LocalTime endTime = venueLesson.getEndTime();
LocalTime startTime = venueLesson.getStartTime();
if (!startTime.isBefore(LocalTime.now())) {
logger.error("足球开门失败,订单尚未开始!");
throw new ServiceException("开门失败,订单尚未开始!");
}
if (!endTime.isAfter(LocalTime.now().plus(15, ChronoUnit.MINUTES))) {
logger.error("足球开门失败,订单已结束!");
throw new ServiceException("足球开门失败,订单已结束!");
}
Device device = deviceService.findByDevice(memberLessonTicket.getVenueId()); Device device = deviceService.findByDevice(memberLessonTicket.getVenueId());
String doorSn = device.getName(); String doorSn = device.getName();
boolean lockStat = doorLockUtil.checkDoorLock(doorSn); boolean lockStat = doorLockUtil.checkDoorLock(doorSn);
@@ -142,7 +157,7 @@ public class ServerMessageHandlerAdapter implements MessageService {
memberEnterVenueLogService.save(memberEnterVenueLog); memberEnterVenueLogService.save(memberEnterVenueLog);
doorLockUtil.lockDoor(doorSn); doorLockUtil.lockDoor(doorSn);
// writeOffCode(barcode); 足球不需要二维码 // writeOffCode(barcode); 足球不需要二维码
logger.info("用户" + member.getId() + "&" + member.getNickname() + "足球入场"); logger.info("用户" + member.getId() + "&" + member.getNickname() + "足球开门");
ServerMessageUtils.INSTANCE.sendMsg(channel,new VenueMessage(MessageType.ENTER_DOOR,"OK")); ServerMessageUtils.INSTANCE.sendMsg(channel,new VenueMessage(MessageType.ENTER_DOOR,"OK"));
} }
} }

View File

@@ -48,7 +48,6 @@ public class MemberTicketEnterDTO extends MemberLessonTicket {
private boolean order = false; private boolean order = false;
private String errCode; private String errCode;
private String msg; private String msg;
private boolean openFlag = false;
private List<MemberTicketInviteDTO> memberTicketInviteList; private List<MemberTicketInviteDTO> memberTicketInviteList;
@@ -132,11 +131,4 @@ public class MemberTicketEnterDTO extends MemberLessonTicket {
this.msg = msg; this.msg = msg;
} }
public boolean isOpenFlag() {
return openFlag;
}
public void setOpenFlag(boolean openFlag) {
this.openFlag = openFlag;
}
} }

View File

@@ -6,6 +6,7 @@ import com.sv.mapper.MemberLessonTicketMapper;
import com.sv.mapper.MemberTicketInviteMapper; import com.sv.mapper.MemberTicketInviteMapper;
import com.sv.mapper.VenueLessonMapper; import com.sv.mapper.VenueLessonMapper;
import com.sv.mapper.VenueMapper; import com.sv.mapper.VenueMapper;
import com.ydd.framework.core.exception.ServiceException;
import com.ydd.framework.core.service.impl.BaseServiceImpl; import com.ydd.framework.core.service.impl.BaseServiceImpl;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@@ -38,18 +39,26 @@ public class MemberTicketEnterService extends BaseServiceImpl {
private VenueLessonMapper venueLessonMapper; private VenueLessonMapper venueLessonMapper;
@Resource @Resource
private VenueMapper venueMapper; private VenueMapper venueMapper;
@Resource
private MemberService memberService;
/** /**
* api 足球预约详情 * api 足球预约详情
*/ */
public MemberTicketEnterDTO memberTicketEnterDetail(Integer memberId, Integer ticketId) { public MemberTicketEnterDTO memberTicketEnterDetail(Integer memberId, Integer ticketId) {
// 判断用户是否登录
if (memberId == null){
throw new ServiceException(com.ydd.framework.core.exception.ExceptionCodeTemplate.NEED_LOGIN);
}
Member member = memberService.findById(memberId);
memberService.verify(member);
MemberTicketEnterDTO res = new MemberTicketEnterDTO(); MemberTicketEnterDTO res = new MemberTicketEnterDTO();
res.setOpenFlag(false);
res.setErrCode("0"); res.setErrCode("0");
MemberLessonTicket memberLessonTicket = memberLessonTicketMapper.findById(ticketId); MemberLessonTicket memberLessonTicket = memberLessonTicketMapper.findById(ticketId);
if (memberLessonTicket == null) { if (memberLessonTicket == null) {
res.setErrCode("2"); res.setErrCode("2");
res.setMsg("未找到对应的预订信息"); res.setMsg("未找到预订信息");
return res;
} }
BeanUtils.copyProperties(memberLessonTicket,res); BeanUtils.copyProperties(memberLessonTicket,res);
// 判断场馆是否已经超时 // 判断场馆是否已经超时
@@ -60,9 +69,16 @@ public class MemberTicketEnterService extends BaseServiceImpl {
res.setEndTime(venueLesson.getEndTime()); res.setEndTime(venueLesson.getEndTime());
LocalTime endTime = venueLesson.getEndTime(); LocalTime endTime = venueLesson.getEndTime();
LocalTime startTime = venueLesson.getStartTime(); LocalTime startTime = venueLesson.getStartTime();
if (endTime.isAfter(LocalTime.now().plus(15, ChronoUnit.MINUTES)) && startTime.isBefore(LocalTime.now())){ // if (!startTime.isBefore(LocalTime.now())){
// // 十五分钟之内都可以开门
// res.setErrCode("3");
// res.setMsg("订单还未开始");
// }
if (!endTime.isAfter(LocalTime.now().plus(15, ChronoUnit.MINUTES))){
// 十五分钟之内都可以开门 // 十五分钟之内都可以开门
res.setOpenFlag(true); res.setErrCode("4");
res.setMsg("预约订单已经结束");
return res;
} }
} }
Venue venue = venueMapper.findById(memberLessonTicket.getVenueId()); Venue venue = venueMapper.findById(memberLessonTicket.getVenueId());