diff --git a/api/src/main/java/com/sv/api/controller/FootballTicketController.java b/api/src/main/java/com/sv/api/controller/FootballTicketController.java index 87d562e..83e7290 100644 --- a/api/src/main/java/com/sv/api/controller/FootballTicketController.java +++ b/api/src/main/java/com/sv/api/controller/FootballTicketController.java @@ -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){ messageService.footballOpenDoor(ticketId,getLoginMemberId()); return ResponseDTO.ok().addAttribute("enterFlag","OK"); diff --git a/api/src/main/java/com/sv/netty/netty/service/impl/ServerMessageHandlerAdapter.java b/api/src/main/java/com/sv/netty/netty/service/impl/ServerMessageHandlerAdapter.java index f19fd97..1f38aa9 100644 --- a/api/src/main/java/com/sv/netty/netty/service/impl/ServerMessageHandlerAdapter.java +++ b/api/src/main/java/com/sv/netty/netty/service/impl/ServerMessageHandlerAdapter.java @@ -25,6 +25,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.time.LocalTime; +import java.time.temporal.ChronoUnit; import java.util.*; import java.util.concurrent.ConcurrentMap; /** @@ -73,6 +75,8 @@ public class ServerMessageHandlerAdapter implements MessageService { @Resource private MemberLessonTicketMapper memberLessonTicketMapper; + @Resource + private VenueLessonMapper venueLessonMapper; /** * 处理心跳信息,存储心跳信息 * @param clientId @@ -122,6 +126,17 @@ public class ServerMessageHandlerAdapter implements MessageService { logger.error("足球开门失败,未找到对应的订单!"); 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()); String doorSn = device.getName(); boolean lockStat = doorLockUtil.checkDoorLock(doorSn); @@ -142,7 +157,7 @@ public class ServerMessageHandlerAdapter implements MessageService { memberEnterVenueLogService.save(memberEnterVenueLog); doorLockUtil.lockDoor(doorSn); // writeOffCode(barcode); 足球不需要二维码 - logger.info("用户" + member.getId() + "&" + member.getNickname() + "足球入场"); + logger.info("用户" + member.getId() + "&" + member.getNickname() + "足球开门"); ServerMessageUtils.INSTANCE.sendMsg(channel,new VenueMessage(MessageType.ENTER_DOOR,"OK")); } } diff --git a/entity/src/main/java/com/sv/dto/api/MemberTicketEnterDTO.java b/entity/src/main/java/com/sv/dto/api/MemberTicketEnterDTO.java index 768e0ff..0121e9c 100644 --- a/entity/src/main/java/com/sv/dto/api/MemberTicketEnterDTO.java +++ b/entity/src/main/java/com/sv/dto/api/MemberTicketEnterDTO.java @@ -48,7 +48,6 @@ public class MemberTicketEnterDTO extends MemberLessonTicket { private boolean order = false; private String errCode; private String msg; - private boolean openFlag = false; private List memberTicketInviteList; @@ -132,11 +131,4 @@ public class MemberTicketEnterDTO extends MemberLessonTicket { this.msg = msg; } - public boolean isOpenFlag() { - return openFlag; - } - - public void setOpenFlag(boolean openFlag) { - this.openFlag = openFlag; - } } diff --git a/service/src/main/java/com/sv/service/api/MemberTicketEnterService.java b/service/src/main/java/com/sv/service/api/MemberTicketEnterService.java index 6f9948a..a780cc9 100644 --- a/service/src/main/java/com/sv/service/api/MemberTicketEnterService.java +++ b/service/src/main/java/com/sv/service/api/MemberTicketEnterService.java @@ -6,6 +6,7 @@ import com.sv.mapper.MemberLessonTicketMapper; import com.sv.mapper.MemberTicketInviteMapper; import com.sv.mapper.VenueLessonMapper; import com.sv.mapper.VenueMapper; +import com.ydd.framework.core.exception.ServiceException; import com.ydd.framework.core.service.impl.BaseServiceImpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -38,18 +39,26 @@ public class MemberTicketEnterService extends BaseServiceImpl { private VenueLessonMapper venueLessonMapper; @Resource private VenueMapper venueMapper; + @Resource + private MemberService memberService; /** * api 足球预约详情 */ 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(); - res.setOpenFlag(false); res.setErrCode("0"); MemberLessonTicket memberLessonTicket = memberLessonTicketMapper.findById(ticketId); if (memberLessonTicket == null) { res.setErrCode("2"); - res.setMsg("未找到对应的预订信息"); + res.setMsg("未找到预订信息"); + return res; } BeanUtils.copyProperties(memberLessonTicket,res); // 判断场馆是否已经超时 @@ -60,9 +69,16 @@ public class MemberTicketEnterService extends BaseServiceImpl { res.setEndTime(venueLesson.getEndTime()); LocalTime endTime = venueLesson.getEndTime(); 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());