2024-04 足球场开门逻辑
This commit is contained in:
@@ -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");
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -11,7 +11,6 @@ import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
public class MemberTicketEnterDTO extends MemberLessonTicket {
|
||||
private String venueName;
|
||||
/**
|
||||
* 上课日期 2018-03-30
|
||||
*/
|
||||
@@ -31,9 +30,20 @@ public class MemberTicketEnterDTO extends MemberLessonTicket {
|
||||
@DateTimeFormat(iso = DateTimeFormat.ISO.TIME)
|
||||
@JsonSerialize(using= LocalTimeSerializer.class)
|
||||
private LocalTime endTime;
|
||||
/**
|
||||
* 地址
|
||||
*/
|
||||
private String address;
|
||||
|
||||
// TODO 增加场馆位置信息
|
||||
/**
|
||||
* 场馆经度
|
||||
*/
|
||||
private String longitude;
|
||||
|
||||
/**
|
||||
* 场馆纬度
|
||||
*/
|
||||
private String latitude;
|
||||
private String mobile;
|
||||
private String errCode;
|
||||
private String msg;
|
||||
@@ -41,14 +51,6 @@ public class MemberTicketEnterDTO extends MemberLessonTicket {
|
||||
|
||||
private List<MemberTicketInviteDTO> memberTicketInviteList;
|
||||
|
||||
public String getVenueName() {
|
||||
return venueName;
|
||||
}
|
||||
|
||||
public void setVenueName(String venueName) {
|
||||
this.venueName = venueName;
|
||||
}
|
||||
|
||||
public String getMobile() {
|
||||
return mobile;
|
||||
}
|
||||
@@ -89,6 +91,30 @@ public class MemberTicketEnterDTO extends MemberLessonTicket {
|
||||
this.memberTicketInviteList = memberTicketInviteList;
|
||||
}
|
||||
|
||||
public String getAddress() {
|
||||
return address;
|
||||
}
|
||||
|
||||
public void setAddress(String address) {
|
||||
this.address = address;
|
||||
}
|
||||
|
||||
public String getLongitude() {
|
||||
return longitude;
|
||||
}
|
||||
|
||||
public void setLongitude(String longitude) {
|
||||
this.longitude = longitude;
|
||||
}
|
||||
|
||||
public String getLatitude() {
|
||||
return latitude;
|
||||
}
|
||||
|
||||
public void setLatitude(String latitude) {
|
||||
this.latitude = latitude;
|
||||
}
|
||||
|
||||
public String getErrCode() {
|
||||
return errCode;
|
||||
}
|
||||
|
||||
@@ -31,9 +31,11 @@ public class MemberTicketInvite {
|
||||
|
||||
private Integer deleted;
|
||||
|
||||
private String memberName;
|
||||
|
||||
private String mobile;
|
||||
|
||||
public MemberTicketInvite(Integer id, Integer ownerId, Integer memberId, Integer status, Integer platformId, Integer createdId, Integer modifiedId, Date createdTime, Date modifiedTime, Integer deleted, String mobile) {
|
||||
public MemberTicketInvite(Integer id, Integer ownerId, Integer memberId, Integer status, Integer platformId, Integer createdId, Integer modifiedId, Date createdTime, Date modifiedTime, Integer deleted, String memberName,String mobile) {
|
||||
this.id = id;
|
||||
this.ownerId = ownerId;
|
||||
this.memberId = memberId;
|
||||
@@ -44,6 +46,7 @@ public class MemberTicketInvite {
|
||||
this.createdTime = createdTime;
|
||||
this.modifiedTime = modifiedTime;
|
||||
this.deleted = deleted;
|
||||
this.memberName = memberName;
|
||||
this.mobile = mobile;
|
||||
}
|
||||
|
||||
@@ -131,6 +134,14 @@ public class MemberTicketInvite {
|
||||
this.deleted = deleted;
|
||||
}
|
||||
|
||||
public String getMemberName() {
|
||||
return memberName;
|
||||
}
|
||||
|
||||
public void setMemberName(String memberName) {
|
||||
this.memberName = memberName;
|
||||
}
|
||||
|
||||
public String getMobile() {
|
||||
return mobile;
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import com.sv.entity.*;
|
||||
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.service.impl.BaseServiceImpl;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
@@ -35,26 +36,40 @@ public class MemberTicketEnterService extends BaseServiceImpl {
|
||||
private MemberLessonTicketMapper memberLessonTicketMapper;
|
||||
@Resource
|
||||
private VenueLessonMapper venueLessonMapper;
|
||||
@Resource
|
||||
private VenueMapper venueMapper;
|
||||
|
||||
/**
|
||||
* api 足球预约详情
|
||||
*/
|
||||
public MemberTicketEnterDTO memberTicketEnterDetail(Integer memberId, Integer ticketId) {
|
||||
MemberTicketEnterDTO res = new MemberTicketEnterDTO();
|
||||
res.setOpenFlag(true);
|
||||
res.setOpenFlag(false);
|
||||
res.setErrCode("0");
|
||||
MemberLessonTicket memberLessonTicket = memberLessonTicketMapper.findById(ticketId);
|
||||
if (memberLessonTicket == null) {
|
||||
res.setErrCode("2");
|
||||
res.setMsg("未找到对应的预订信息");
|
||||
}// TODO 查询场馆表
|
||||
}
|
||||
BeanUtils.copyProperties(memberLessonTicket,res);
|
||||
// 判断场馆是否已经超时
|
||||
VenueLesson venueLesson = venueLessonMapper.findById(memberLessonTicket.getLessonId());
|
||||
LocalTime endTime = venueLesson.getEndTime();
|
||||
LocalTime startTime = venueLesson.getStartTime();
|
||||
if (endTime.isAfter(LocalTime.now().plus(15, ChronoUnit.MINUTES)) && startTime.isBefore(LocalTime.now())){
|
||||
// 十五分钟之内都可以开门
|
||||
res.setOpenFlag(true);
|
||||
if (venueLesson != null) {
|
||||
res.setDate(venueLesson.getDate());
|
||||
res.setStartTime(venueLesson.getStartTime());
|
||||
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())){
|
||||
// 十五分钟之内都可以开门
|
||||
res.setOpenFlag(true);
|
||||
}
|
||||
}
|
||||
Venue venue = venueMapper.findById(memberLessonTicket.getVenueId());
|
||||
if (venue != null){
|
||||
res.setAddress(venue.getAddress());
|
||||
res.setLatitude(venue.getLatitude());
|
||||
res.setLongitude(venue.getLongitude());
|
||||
}
|
||||
// 1 先判断是否已经报名,如果没有报名就默认报名
|
||||
int count = memberTicketInviteMapper.findByTicketIdAndMember(ticketId, memberId);
|
||||
@@ -63,7 +78,6 @@ public class MemberTicketEnterService extends BaseServiceImpl {
|
||||
orderMyself(memberId,memberLessonTicket);
|
||||
}
|
||||
// 查询报名人员列表
|
||||
BeanUtils.copyProperties(memberLessonTicket,res);
|
||||
List<MemberTicketInvite> inviteList = memberTicketInviteMapper.findByTicketId(ticketId);
|
||||
List<MemberTicketInviteDTO> memberTicketInviteList = new ArrayList<>();
|
||||
for (MemberTicketInvite ticketInvite : inviteList) {
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
<arg column="created_time" jdbcType="TIMESTAMP" javaType="java.util.Date" />
|
||||
<arg column="modified_time" jdbcType="TIMESTAMP" javaType="java.util.Date" />
|
||||
<arg column="deleted" jdbcType="INTEGER" javaType="java.lang.Integer" />
|
||||
<arg column="memberName" jdbcType="VARCHAR" javaType="java.lang.String" />
|
||||
<arg column="mobile" jdbcType="VARCHAR" javaType="java.lang.String" />
|
||||
</constructor>
|
||||
</resultMap>
|
||||
@@ -157,7 +158,7 @@
|
||||
<select id="findByTicketId" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
|
||||
select
|
||||
a.id, a.owner_id, a.member_id, a.status, a.platform_id, a.created_id, a.modified_id, a.created_time,
|
||||
a.modified_time, a.deleted,b.mobile
|
||||
a.modified_time, a.deleted,b.mobile,b.nickname memberName
|
||||
from sv_member_lesson_ticket_invite a,sv_member b
|
||||
where a.member_id = b.id
|
||||
and owner_id = #{ticketId,jdbcType=INTEGER}
|
||||
|
||||
Reference in New Issue
Block a user