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);
|
void enterVenue(String barcode);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 足球场开门逻辑
|
||||||
|
* @param ticketId
|
||||||
|
* @param memberId
|
||||||
|
*/
|
||||||
|
void footballOpenDoor(Integer ticketId,Integer memberId);
|
||||||
|
|
||||||
public void adminEnter(String deviceName, Integer venueId);
|
public void adminEnter(String deviceName, Integer venueId);
|
||||||
|
|
||||||
public void adminOut(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.EnterEnum;
|
||||||
import com.enums.EnterVenuePayTypeEnum;
|
import com.enums.EnterVenuePayTypeEnum;
|
||||||
import com.sv.entity.*;
|
import com.sv.entity.*;
|
||||||
import com.sv.mapper.BarcodeEnterLogMapper;
|
import com.sv.mapper.*;
|
||||||
import com.sv.mapper.BarcodeMapper;
|
|
||||||
import com.sv.mapper.BarcodeOfflineMapper;
|
|
||||||
import com.sv.mapper.BarcodeOrderTimeMapper;
|
|
||||||
import com.sv.netty.config.*;
|
import com.sv.netty.config.*;
|
||||||
import com.sv.netty.netty.service.MessageService;
|
import com.sv.netty.netty.service.MessageService;
|
||||||
import com.sv.netty.utils.JsonUtils;
|
import com.sv.netty.utils.JsonUtils;
|
||||||
@@ -73,6 +70,9 @@ public class ServerMessageHandlerAdapter implements MessageService {
|
|||||||
private BarcodeEnterLogMapper barcodeEnterLogMapper;
|
private BarcodeEnterLogMapper barcodeEnterLogMapper;
|
||||||
@Resource
|
@Resource
|
||||||
private BarcodeOrderTimeMapper barcodeOrderTimeMapper;
|
private BarcodeOrderTimeMapper barcodeOrderTimeMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private MemberLessonTicketMapper memberLessonTicketMapper;
|
||||||
/**
|
/**
|
||||||
* 处理心跳信息,存储心跳信息
|
* 处理心跳信息,存储心跳信息
|
||||||
* @param clientId
|
* @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
|
* @param barcode
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ import java.util.Date;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class MemberTicketEnterDTO extends MemberLessonTicket {
|
public class MemberTicketEnterDTO extends MemberLessonTicket {
|
||||||
private String venueName;
|
|
||||||
/**
|
/**
|
||||||
* 上课日期 2018-03-30
|
* 上课日期 2018-03-30
|
||||||
*/
|
*/
|
||||||
@@ -31,9 +30,20 @@ public class MemberTicketEnterDTO extends MemberLessonTicket {
|
|||||||
@DateTimeFormat(iso = DateTimeFormat.ISO.TIME)
|
@DateTimeFormat(iso = DateTimeFormat.ISO.TIME)
|
||||||
@JsonSerialize(using= LocalTimeSerializer.class)
|
@JsonSerialize(using= LocalTimeSerializer.class)
|
||||||
private LocalTime endTime;
|
private LocalTime endTime;
|
||||||
|
/**
|
||||||
|
* 地址
|
||||||
|
*/
|
||||||
|
private String address;
|
||||||
|
|
||||||
// TODO 增加场馆位置信息
|
/**
|
||||||
|
* 场馆经度
|
||||||
|
*/
|
||||||
|
private String longitude;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 场馆纬度
|
||||||
|
*/
|
||||||
|
private String latitude;
|
||||||
private String mobile;
|
private String mobile;
|
||||||
private String errCode;
|
private String errCode;
|
||||||
private String msg;
|
private String msg;
|
||||||
@@ -41,14 +51,6 @@ public class MemberTicketEnterDTO extends MemberLessonTicket {
|
|||||||
|
|
||||||
private List<MemberTicketInviteDTO> memberTicketInviteList;
|
private List<MemberTicketInviteDTO> memberTicketInviteList;
|
||||||
|
|
||||||
public String getVenueName() {
|
|
||||||
return venueName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setVenueName(String venueName) {
|
|
||||||
this.venueName = venueName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getMobile() {
|
public String getMobile() {
|
||||||
return mobile;
|
return mobile;
|
||||||
}
|
}
|
||||||
@@ -89,6 +91,30 @@ public class MemberTicketEnterDTO extends MemberLessonTicket {
|
|||||||
this.memberTicketInviteList = memberTicketInviteList;
|
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() {
|
public String getErrCode() {
|
||||||
return errCode;
|
return errCode;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,9 +31,11 @@ public class MemberTicketInvite {
|
|||||||
|
|
||||||
private Integer deleted;
|
private Integer deleted;
|
||||||
|
|
||||||
|
private String memberName;
|
||||||
|
|
||||||
private String mobile;
|
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.id = id;
|
||||||
this.ownerId = ownerId;
|
this.ownerId = ownerId;
|
||||||
this.memberId = memberId;
|
this.memberId = memberId;
|
||||||
@@ -44,6 +46,7 @@ public class MemberTicketInvite {
|
|||||||
this.createdTime = createdTime;
|
this.createdTime = createdTime;
|
||||||
this.modifiedTime = modifiedTime;
|
this.modifiedTime = modifiedTime;
|
||||||
this.deleted = deleted;
|
this.deleted = deleted;
|
||||||
|
this.memberName = memberName;
|
||||||
this.mobile = mobile;
|
this.mobile = mobile;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -131,6 +134,14 @@ public class MemberTicketInvite {
|
|||||||
this.deleted = deleted;
|
this.deleted = deleted;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getMemberName() {
|
||||||
|
return memberName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMemberName(String memberName) {
|
||||||
|
this.memberName = memberName;
|
||||||
|
}
|
||||||
|
|
||||||
public String getMobile() {
|
public String getMobile() {
|
||||||
return mobile;
|
return mobile;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import com.sv.entity.*;
|
|||||||
import com.sv.mapper.MemberLessonTicketMapper;
|
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.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;
|
||||||
@@ -35,26 +36,40 @@ public class MemberTicketEnterService extends BaseServiceImpl {
|
|||||||
private MemberLessonTicketMapper memberLessonTicketMapper;
|
private MemberLessonTicketMapper memberLessonTicketMapper;
|
||||||
@Resource
|
@Resource
|
||||||
private VenueLessonMapper venueLessonMapper;
|
private VenueLessonMapper venueLessonMapper;
|
||||||
|
@Resource
|
||||||
|
private VenueMapper venueMapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* api 足球预约详情
|
* api 足球预约详情
|
||||||
*/
|
*/
|
||||||
public MemberTicketEnterDTO memberTicketEnterDetail(Integer memberId, Integer ticketId) {
|
public MemberTicketEnterDTO memberTicketEnterDetail(Integer memberId, Integer ticketId) {
|
||||||
MemberTicketEnterDTO res = new MemberTicketEnterDTO();
|
MemberTicketEnterDTO res = new MemberTicketEnterDTO();
|
||||||
res.setOpenFlag(true);
|
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("未找到对应的预订信息");
|
||||||
}// TODO 查询场馆表
|
}
|
||||||
|
BeanUtils.copyProperties(memberLessonTicket,res);
|
||||||
// 判断场馆是否已经超时
|
// 判断场馆是否已经超时
|
||||||
VenueLesson venueLesson = venueLessonMapper.findById(memberLessonTicket.getLessonId());
|
VenueLesson venueLesson = venueLessonMapper.findById(memberLessonTicket.getLessonId());
|
||||||
LocalTime endTime = venueLesson.getEndTime();
|
if (venueLesson != null) {
|
||||||
LocalTime startTime = venueLesson.getStartTime();
|
res.setDate(venueLesson.getDate());
|
||||||
if (endTime.isAfter(LocalTime.now().plus(15, ChronoUnit.MINUTES)) && startTime.isBefore(LocalTime.now())){
|
res.setStartTime(venueLesson.getStartTime());
|
||||||
// 十五分钟之内都可以开门
|
res.setEndTime(venueLesson.getEndTime());
|
||||||
res.setOpenFlag(true);
|
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 先判断是否已经报名,如果没有报名就默认报名
|
// 1 先判断是否已经报名,如果没有报名就默认报名
|
||||||
int count = memberTicketInviteMapper.findByTicketIdAndMember(ticketId, memberId);
|
int count = memberTicketInviteMapper.findByTicketIdAndMember(ticketId, memberId);
|
||||||
@@ -63,7 +78,6 @@ public class MemberTicketEnterService extends BaseServiceImpl {
|
|||||||
orderMyself(memberId,memberLessonTicket);
|
orderMyself(memberId,memberLessonTicket);
|
||||||
}
|
}
|
||||||
// 查询报名人员列表
|
// 查询报名人员列表
|
||||||
BeanUtils.copyProperties(memberLessonTicket,res);
|
|
||||||
List<MemberTicketInvite> inviteList = memberTicketInviteMapper.findByTicketId(ticketId);
|
List<MemberTicketInvite> inviteList = memberTicketInviteMapper.findByTicketId(ticketId);
|
||||||
List<MemberTicketInviteDTO> memberTicketInviteList = new ArrayList<>();
|
List<MemberTicketInviteDTO> memberTicketInviteList = new ArrayList<>();
|
||||||
for (MemberTicketInvite ticketInvite : inviteList) {
|
for (MemberTicketInvite ticketInvite : inviteList) {
|
||||||
|
|||||||
@@ -13,6 +13,7 @@
|
|||||||
<arg column="created_time" jdbcType="TIMESTAMP" javaType="java.util.Date" />
|
<arg column="created_time" jdbcType="TIMESTAMP" javaType="java.util.Date" />
|
||||||
<arg column="modified_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="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" />
|
<arg column="mobile" jdbcType="VARCHAR" javaType="java.lang.String" />
|
||||||
</constructor>
|
</constructor>
|
||||||
</resultMap>
|
</resultMap>
|
||||||
@@ -157,7 +158,7 @@
|
|||||||
<select id="findByTicketId" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
|
<select id="findByTicketId" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
|
||||||
select
|
select
|
||||||
a.id, a.owner_id, a.member_id, a.status, a.platform_id, a.created_id, a.modified_id, a.created_time,
|
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
|
from sv_member_lesson_ticket_invite a,sv_member b
|
||||||
where a.member_id = b.id
|
where a.member_id = b.id
|
||||||
and owner_id = #{ticketId,jdbcType=INTEGER}
|
and owner_id = #{ticketId,jdbcType=INTEGER}
|
||||||
|
|||||||
Reference in New Issue
Block a user