api-设备新增设备类型字段,是入场还是出场。完善入场逻辑
This commit is contained in:
@@ -39,10 +39,10 @@ public class QREnterController extends BaseApiController {
|
|||||||
if (venue!=null){
|
if (venue!=null){
|
||||||
if (DeviceType.OUT == enterOrOut){
|
if (DeviceType.OUT == enterOrOut){
|
||||||
// 出场
|
// 出场
|
||||||
messageService.outVenue(deviceName,venueId,enterOrOut,memberId,venue);
|
messageService.outVenue(deviceName,venueId,memberId,venue);
|
||||||
}else{
|
}else{
|
||||||
// 进场
|
// 进场
|
||||||
messageService.enterVenue(deviceName,venueId,enterOrOut,memberId,venue);
|
messageService.enterVenue(deviceName,venueId,memberId,venue);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return ResponseDTO.ok();
|
return ResponseDTO.ok();
|
||||||
|
|||||||
@@ -43,19 +43,17 @@ public interface MessageService {
|
|||||||
* 出场
|
* 出场
|
||||||
* @param deviceName
|
* @param deviceName
|
||||||
* @param venueId
|
* @param venueId
|
||||||
* @param enterOrOut
|
|
||||||
* @param memberId
|
* @param memberId
|
||||||
* @param venue
|
* @param venue
|
||||||
*/
|
*/
|
||||||
void outVenue(String deviceName, Integer venueId, DeviceType enterOrOut, Integer memberId, Venue venue);
|
void outVenue(String deviceName, Integer venueId, Integer memberId, Venue venue);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 进场
|
* 进场
|
||||||
* @param deviceName
|
* @param deviceName
|
||||||
* @param venueId
|
* @param venueId
|
||||||
* @param enterOrOut
|
|
||||||
* @param memberId
|
* @param memberId
|
||||||
* @param venue
|
* @param venue
|
||||||
*/
|
*/
|
||||||
void enterVenue(String deviceName, Integer venueId, DeviceType enterOrOut, Integer memberId, Venue venue);
|
void enterVenue(String deviceName, Integer venueId, Integer memberId, Venue venue);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.sv.netty.netty.service.impl;
|
package com.sv.netty.netty.service.impl;
|
||||||
|
|
||||||
import com.enums.DeviceType;
|
|
||||||
import com.sv.dto.EnterResult;
|
import com.sv.dto.EnterResult;
|
||||||
import com.sv.entity.Member;
|
import com.sv.entity.Member;
|
||||||
import com.sv.entity.MemberEnterVenueLog;
|
import com.sv.entity.MemberEnterVenueLog;
|
||||||
@@ -24,6 +23,7 @@ import org.springframework.web.client.RestTemplate;
|
|||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.concurrent.ScheduledExecutorService;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -33,9 +33,9 @@ import java.util.*;
|
|||||||
* @Date 08/05/2017 10:43 PM
|
* @Date 08/05/2017 10:43 PM
|
||||||
*/
|
*/
|
||||||
@Service("messageService")
|
@Service("messageService")
|
||||||
public class TcpMessageHandlerAdapter implements MessageService {
|
public class AppMessageHandlerAdapter implements MessageService {
|
||||||
|
|
||||||
private Logger logger = LoggerFactory.getLogger(TcpMessageHandlerAdapter.class);
|
private Logger logger = LoggerFactory.getLogger(AppMessageHandlerAdapter.class);
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private MemberService memberService;
|
private MemberService memberService;
|
||||||
@@ -49,8 +49,8 @@ public class TcpMessageHandlerAdapter implements MessageService {
|
|||||||
@Resource
|
@Resource
|
||||||
private ConfigService configService;
|
private ConfigService configService;
|
||||||
|
|
||||||
// @Resource(name = "scheduledExecutorService")
|
@Resource(name = "scheduledExecutorService")
|
||||||
// private ScheduledExecutorService scheduledExecutorService;
|
private ScheduledExecutorService scheduledExecutorService;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private MemberEnterVenueLogService memberEnterVenueLogService;
|
private MemberEnterVenueLogService memberEnterVenueLogService;
|
||||||
@@ -122,7 +122,7 @@ public class TcpMessageHandlerAdapter implements MessageService {
|
|||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void outVenue(String deviceName, Integer venueId, DeviceType enterOrOut, Integer memberId, Venue venue) {
|
public void outVenue(String deviceName, Integer venueId, Integer memberId, Venue venue) {
|
||||||
Member member = memberService.findByMember(memberId);
|
Member member = memberService.findByMember(memberId);
|
||||||
if (member != null) {
|
if (member != null) {
|
||||||
//出场 不用判断直接出
|
//出场 不用判断直接出
|
||||||
@@ -155,68 +155,31 @@ public class TcpMessageHandlerAdapter implements MessageService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 进场逻辑
|
||||||
|
* @param deviceName
|
||||||
|
* @param venueId
|
||||||
|
* @param memberId
|
||||||
|
* @param venue
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void enterVenue(String deviceName, Integer venueId, DeviceType enterOrOut, Integer memberId, Venue venue) {
|
public void enterVenue(String deviceName, Integer venueId, Integer memberId, Venue venue) {
|
||||||
try {
|
try {
|
||||||
int code = 1;
|
|
||||||
Member member = memberService.findByMember(memberId);
|
Member member = memberService.findByMember(memberId);
|
||||||
if (member != null) {
|
if (checkInterval(member,venueId)) {
|
||||||
//最后进场记录
|
EnterResult result = venueService.qrCodeEnterVenue(memberId,deviceName,venueId,venue);
|
||||||
MemberEnterVenueLog enterVenueLog = memberEnterVenueLogService.findMemberLastLogNoType(member.getId(), venue.getId());
|
if (result.getStatus() >= 0) {
|
||||||
if (enterVenueLog != null) {
|
|
||||||
//有记录 查看 最后一次是否是出场
|
|
||||||
if (enterVenueLog.getType() == 1) {
|
|
||||||
//是出场 不用限制
|
|
||||||
} else {
|
|
||||||
//是进场
|
|
||||||
Date date = new Date();
|
|
||||||
//本日连续进场次数
|
|
||||||
int continuityEnterCount = memberEnterVenueLogService.countEnterByDate(member.getId(), venue.getId(), date);
|
|
||||||
logger.info("连续进场次数:" + continuityEnterCount);
|
|
||||||
//距离上次入场差多少秒
|
|
||||||
int differenceSeconds = (int) (date.getTime() - enterVenueLog.getCreatedTime().getTime()) / (1000);
|
|
||||||
if (continuityEnterCount <= 0) {
|
|
||||||
//没有连续进场 间隔5分钟
|
|
||||||
Config config = configService.findById(1);
|
|
||||||
if (differenceSeconds <= (Integer.parseInt(config.getValue()) * 60)) {
|
|
||||||
//小于5分钟 不允许入场
|
|
||||||
code = -1;
|
|
||||||
}
|
|
||||||
} else if (continuityEnterCount == 1) {
|
|
||||||
//有过一次连续进场 间隔20分钟
|
|
||||||
Config config = configService.findById(2);
|
|
||||||
if (differenceSeconds <= (Integer.parseInt(config.getValue()) * 60)) {
|
|
||||||
//小于20分钟 不允许入场
|
|
||||||
code = -1;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
//超过两次连续入场 入场失败
|
|
||||||
code = -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// MemberDto memberMessageDto = new MemberDto();
|
|
||||||
// memberMessageDto.setName(member.getNickname());
|
|
||||||
// memberMessageDto.setAvatar(member.getAvatar());
|
|
||||||
// memberMessageDto.setMobile(member.getMobile());
|
|
||||||
//
|
|
||||||
// memberMessageDto.setPlaceName("");
|
|
||||||
// member = memberService.findByFaceId(response.getPerson().getId());
|
|
||||||
// memberMessageDto.setAmount(member.getMoney());
|
|
||||||
if (code > 0) {
|
|
||||||
EnterResult result = venueService.enterVenue(memberId, venue.getId());
|
|
||||||
if (result.getStatus() >= 0) {
|
|
||||||
// memberMessageDto.setCode(1);
|
// memberMessageDto.setCode(1);
|
||||||
if (result.getStatus() == 1) {
|
if (result.getStatus() == 1) {
|
||||||
// memberMessageDto.setCardName("会员卡");
|
// memberMessageDto.setCardName("会员卡");
|
||||||
}
|
}
|
||||||
if (result.getStatus() == 2) {
|
if (result.getStatus() == 2) {
|
||||||
// memberMessageDto.setPlacePrice(result.getMoney());
|
// memberMessageDto.setPlacePrice(result.getMoney());
|
||||||
// memberMessageDto.setFirst(true);
|
// memberMessageDto.setFirst(true);
|
||||||
// logger.info(member.getId() + "入场成功:" + member.getMoney().toString());
|
// logger.info(member.getId() + "入场成功:" + member.getMoney().toString());
|
||||||
// member = memberService.findByFaceId(response.getPerson().getId());
|
// member = memberService.findByFaceId(response.getPerson().getId());
|
||||||
// memberMessageDto.setAmount(member.getMoney());
|
// memberMessageDto.setAmount(member.getMoney());
|
||||||
//5秒后开门
|
//5秒后开门
|
||||||
// scheduledExecutorService.schedule(new Runnable() {
|
// scheduledExecutorService.schedule(new Runnable() {
|
||||||
// @Override
|
// @Override
|
||||||
// public void run() {
|
// public void run() {
|
||||||
@@ -226,39 +189,81 @@ public class TcpMessageHandlerAdapter implements MessageService {
|
|||||||
//// sendOpenMessage(messageDto, 1);
|
//// sendOpenMessage(messageDto, 1);
|
||||||
// }
|
// }
|
||||||
// }, 5, TimeUnit.SECONDS);
|
// }, 5, TimeUnit.SECONDS);
|
||||||
} else {
|
} else {
|
||||||
//开门
|
//开门
|
||||||
// MessageDto messageDto = new MessageDto();
|
// MessageDto messageDto = new MessageDto();
|
||||||
// messageDto.setCmdId(Cmd.OPEN_DOOR.id);
|
// messageDto.setCmdId(Cmd.OPEN_DOOR.id);
|
||||||
// messageDto.setDoor(1);
|
// messageDto.setDoor(1);
|
||||||
// sendOpenMessage(messageDto, 1);
|
// sendOpenMessage(messageDto, 1);
|
||||||
logger.info(member.getId() + "入场成功:" + member.getMoney().toString());
|
logger.info(member.getId() + "入场成功:" + member.getMoney().toString());
|
||||||
|
|
||||||
}
|
}
|
||||||
// memberMessageDto.setMessage("门禁已开,请入门");
|
// memberMessageDto.setMessage("门禁已开,请入门");
|
||||||
venueService.addNumber(venue.getId(), 1, member.getId());
|
venueService.addNumber(venue.getId(), 1, member.getId());
|
||||||
// venue = venueService.findById(venue.getId());
|
// venue = venueService.findById(venue.getId());
|
||||||
// sendNumberChange(venue.getNumber());
|
// sendNumberChange(venue.getNumber());
|
||||||
} else {
|
} else {
|
||||||
logger.info(member.getId() + "入场失败:" + member.getMoney().toString());
|
logger.info(member.getId() + "入场失败:" + member.getMoney().toString());
|
||||||
// memberMessageDto.setCode(-1);
|
// memberMessageDto.setCode(-1);
|
||||||
// memberMessageDto.setMessage(member.getName() + "您好,您的余额不足,请扫描门禁上张贴的小程序二维码充值");
|
// memberMessageDto.setMessage(member.getName() + "您好,您的余额不足,请扫描门禁上张贴的小程序二维码充值");
|
||||||
}
|
|
||||||
} else {
|
|
||||||
logger.info(member.getId() + "入场失败:连续入场");
|
|
||||||
// memberMessageDto.setCode(0);
|
|
||||||
Config config = configService.findById(1);
|
|
||||||
// memberMessageDto.setMessage("无出门记录连续入场,请" + config.getValue() + "分钟之后再试");
|
|
||||||
}
|
}
|
||||||
// TODO 校验完,就可以进场了
|
} else {
|
||||||
// sendMessage(memberMessageDto, device.getId());
|
logger.info(member.getId() + "入场失败:连续入场");
|
||||||
|
// memberMessageDto.setCode(0);
|
||||||
|
Config config = configService.findById(1);
|
||||||
|
// memberMessageDto.setMessage("无出门记录连续入场,请" + config.getValue() + "分钟之后再试");
|
||||||
}
|
}
|
||||||
|
// TODO 校验完,就可以进场了
|
||||||
|
// sendMessage(memberMessageDto, device.getId());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
logger.error("进场失败",e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean checkInterval(Member member,Integer venueId){
|
||||||
|
if (member == null) {
|
||||||
|
return false;
|
||||||
|
}else{
|
||||||
|
//最后进场记录
|
||||||
|
MemberEnterVenueLog enterVenueLog = memberEnterVenueLogService.findMemberLastLogNoType(member.getId(), venueId);
|
||||||
|
if (enterVenueLog == null) {
|
||||||
|
return true;
|
||||||
|
}else {
|
||||||
|
//有记录 查看 最后一次是否是出场
|
||||||
|
if (enterVenueLog.getType() == 1) {
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
//是进场
|
||||||
|
Date date = new Date();
|
||||||
|
//本日连续进场次数
|
||||||
|
int continuityEnterCount = memberEnterVenueLogService.countEnterByDate(member.getId(), venueId, date);
|
||||||
|
logger.info("连续进场次数:" + continuityEnterCount);
|
||||||
|
//距离上次入场差多少秒
|
||||||
|
int differenceSeconds = (int) (date.getTime() - enterVenueLog.getCreatedTime().getTime()) / (1000);
|
||||||
|
if (continuityEnterCount <= 0) {
|
||||||
|
//没有连续进场 间隔5分钟
|
||||||
|
Config config = configService.findById(1);
|
||||||
|
if (differenceSeconds <= (Integer.parseInt(config.getValue()) * 60)) {
|
||||||
|
//
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
} else if (continuityEnterCount == 1) {
|
||||||
|
//有过一次连续进场 间隔20分钟
|
||||||
|
Config config = configService.findById(2);
|
||||||
|
if (differenceSeconds <= (Integer.parseInt(config.getValue()) * 60)) {
|
||||||
|
//小于20分钟 不允许入场
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
//当日超过两次连续入场 入场失败
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 给客户端发送信息
|
* 给客户端发送信息
|
||||||
* @param channel
|
* @param channel
|
||||||
@@ -1,5 +1,7 @@
|
|||||||
package com.sv.entity;
|
package com.sv.entity;
|
||||||
|
|
||||||
|
import com.enums.DeviceType;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
@@ -36,6 +38,7 @@ public class Device implements Serializable {
|
|||||||
|
|
||||||
private Integer venueType;
|
private Integer venueType;
|
||||||
|
|
||||||
|
private DeviceType deviceType;
|
||||||
/**
|
/**
|
||||||
* 创建者编号
|
* 创建者编号
|
||||||
*/
|
*/
|
||||||
@@ -241,4 +244,12 @@ public class Device implements Serializable {
|
|||||||
public void setVenueType(Integer venueType) {
|
public void setVenueType(Integer venueType) {
|
||||||
this.venueType = venueType;
|
this.venueType = venueType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public DeviceType getDeviceType() {
|
||||||
|
return deviceType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDeviceType(DeviceType deviceType) {
|
||||||
|
this.deviceType = deviceType;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.sv.mapper;
|
package com.sv.mapper;
|
||||||
import com.common.DeviceDTO;
|
import com.common.DeviceDTO;
|
||||||
|
import com.enums.DeviceType;
|
||||||
import com.sv.entity.Device;
|
import com.sv.entity.Device;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
@@ -76,4 +77,12 @@ public interface DeviceMapper {
|
|||||||
|
|
||||||
Integer checkDevice(@Param("deviceName") String deviceName,@Param("venueId") Integer venueId);
|
Integer checkDevice(@Param("deviceName") String deviceName,@Param("venueId") Integer venueId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据记录找设备
|
||||||
|
* @param deviceName
|
||||||
|
* @param venueId
|
||||||
|
* @param deviceType
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
Device findByDevice(String deviceName, Integer venueId, DeviceType deviceType);
|
||||||
}
|
}
|
||||||
@@ -1,9 +1,6 @@
|
|||||||
package com.sv.service.api;
|
package com.sv.service.api;
|
||||||
|
|
||||||
import com.enums.EnterVenuePayTypeEnum;
|
import com.enums.*;
|
||||||
import com.enums.MoneyLogEnum;
|
|
||||||
import com.enums.PayTypeEnum;
|
|
||||||
import com.enums.VipTypeEnum;
|
|
||||||
import com.github.pagehelper.PageHelper;
|
import com.github.pagehelper.PageHelper;
|
||||||
import com.sv.dto.EnterResult;
|
import com.sv.dto.EnterResult;
|
||||||
import com.sv.dto.api.MemberCardDTO;
|
import com.sv.dto.api.MemberCardDTO;
|
||||||
@@ -307,19 +304,118 @@ public class VenueService extends BaseServiceImpl {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户入场
|
* 人脸失败用户入场(篮球场)
|
||||||
*
|
*
|
||||||
* @param faceId
|
* @param faceId
|
||||||
* @param deviceId
|
* @param deviceId
|
||||||
* @return 0成功 -1失败
|
* @return 0成功 -1失败
|
||||||
*/
|
*/
|
||||||
@Transactional(rollbackFor = Exception.class)
|
// @Transactional(rollbackFor = Exception.class)
|
||||||
public synchronized EnterResult enterVenue(Integer faceId, Integer deviceId) {
|
// public synchronized EnterResult enterVenue(Integer faceId, Integer deviceId) {
|
||||||
|
// EnterResult result = new EnterResult();
|
||||||
|
// synchronized (("enter" + faceId.toString()).intern()) {
|
||||||
|
// Date now = new Date();
|
||||||
|
// Device device = deviceService.findById(deviceId);
|
||||||
|
// Venue venue = venueMapper.findById(device.getVenueId());
|
||||||
|
// // 查询当前时间内,场馆对应的价格
|
||||||
|
// String time = DateUtilCard.nowTime().toString();
|
||||||
|
// VenuePrice venuePrice = venuePriceService.findPrice(device.getVenueId(), time);
|
||||||
|
// if (venuePrice == null) {
|
||||||
|
// logger.info("场馆暂未开放");
|
||||||
|
// result.setStatus(-2);
|
||||||
|
// return result;
|
||||||
|
// }
|
||||||
|
// if (venue.getStatus().intValue() == 1) {
|
||||||
|
// logger.info(venue.getName() + "被禁用,入场失败");
|
||||||
|
// result.setStatus(-2);
|
||||||
|
// return result;
|
||||||
|
// }
|
||||||
|
// Member member = memberService.findByFaceId(faceId);
|
||||||
|
// memberService.verify(member);
|
||||||
|
// if (venue == null || member == null) {
|
||||||
|
// result.setStatus(-1);
|
||||||
|
// return result;
|
||||||
|
// }
|
||||||
|
// //判断8小时之内 是否连续进场
|
||||||
|
// MemberEnterVenueLog enterVenueLog = memberEnterVenueLogService.findMemberLastLog(member.getId(), device.getVenueId());
|
||||||
|
// MemberEnterVenueLog log = new MemberEnterVenueLog();
|
||||||
|
// log.setMemberId(member.getId());
|
||||||
|
// log.setVeneuType(device.getVenueType());
|
||||||
|
// log.setVenueId(device.getVenueId());
|
||||||
|
// log.setPlatformId(member.getPlatformId());
|
||||||
|
// if (enterVenueLog != null) {
|
||||||
|
// if ((now.getTime() - enterVenueLog.getCreatedTime().getTime()) <= (8 * 60 * 60 * 1000)) {
|
||||||
|
// //小于8小时直接进场
|
||||||
|
// log.setOrderSn("");
|
||||||
|
// logger.info("用户:" + member.getNickname() + "小于8小时直接进场");
|
||||||
|
// memberEnterVenueLogService.save(log);
|
||||||
|
// result.setStatus(0);
|
||||||
|
// return result;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// //进场之前 查看是否有会员卡
|
||||||
|
// List<MemberCard> cards = memberCardService.findByMemberId(device.getVenueId(), member.getId());
|
||||||
|
// if (cards.size() > 0) {
|
||||||
|
// //有会员卡 查看是否是免费卡
|
||||||
|
// MemberCard useCard = null;
|
||||||
|
// for (MemberCard card : cards) {
|
||||||
|
// if (!VipTypeEnum.FREECARD.value.equals(card.getCardType())) {
|
||||||
|
// useCard = card;
|
||||||
|
// break;
|
||||||
|
// } else {
|
||||||
|
// //查看该免费卡是否可用 (一天用一次)
|
||||||
|
// if (memberEnterVenueLogService.isFreeCardUseful(card.getId())) {
|
||||||
|
// useCard = card;
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// if (useCard != null) {
|
||||||
|
// //使用会员卡入场
|
||||||
|
// logger.info("用户" + member.getNickname() + "使用" + useCard.getCardType() + "入场");
|
||||||
|
// log.setMemberCardId(useCard.getId());
|
||||||
|
// log.setPayType(EnterVenuePayTypeEnum.MEMBER_CARD.value);
|
||||||
|
// String orderSn = orderService.createEnterVenueOrder(venue, member.getId(), PayTypeEnum.MEMBER_CARD, venuePrice.getPrice());
|
||||||
|
// // 会员卡入场,增加记录
|
||||||
|
// createMemberMoneyLog(MoneyLogEnum.JOIN.value, venue.getPrice(), member.getId(), member.getPlatformId(), PayTypeEnum.MEMBER_CARD.value, useCard.getCardType(),
|
||||||
|
// venue.getId(), venue.getType());
|
||||||
|
// log.setOrderSn(orderSn);
|
||||||
|
// memberEnterVenueLogService.save(log);
|
||||||
|
// result.setStatus(1);
|
||||||
|
// return result;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// //没有会员卡 扣余额
|
||||||
|
// //判断余额是否够
|
||||||
|
// if (memberService.isMoneyEnough(member.getId(), venuePrice.getPrice())) {
|
||||||
|
// logger.info("用户" + member.getNickname() + "使用余额进场");
|
||||||
|
// result.setMoney(venuePrice.getPrice());
|
||||||
|
// String orderSn = orderService.createEnterVenueOrder(venue, member.getId(), PayTypeEnum.BALANCE, venuePrice.getPrice());
|
||||||
|
// log.setOrderSn(orderSn);
|
||||||
|
// log.setPayType(EnterVenuePayTypeEnum.WEI_XIN.value);
|
||||||
|
// memberEnterVenueLogService.save(log);
|
||||||
|
// result.setStatus(2);
|
||||||
|
// return result;
|
||||||
|
// } else {
|
||||||
|
// //余额不足
|
||||||
|
// logger.info("用户" + member.getNickname() + "余额不足进场失败");
|
||||||
|
// result.setStatus(-2);
|
||||||
|
// return result;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 人脸失败用户入场(篮球场)
|
||||||
|
*
|
||||||
|
* @return 0成功 -1失败
|
||||||
|
*/
|
||||||
|
@Transactional
|
||||||
|
public synchronized EnterResult qrCodeEnterVenue(Integer memberId, String deviceName,Integer venueId,Venue venue) {
|
||||||
EnterResult result = new EnterResult();
|
EnterResult result = new EnterResult();
|
||||||
synchronized (("enter" + faceId.toString()).intern()) {
|
synchronized (("enter" + memberId).intern()) {
|
||||||
Date now = new Date();
|
Date now = new Date();
|
||||||
Device device = deviceService.findById(deviceId);
|
Device device = deviceService.findByDevice(deviceName,venueId, DeviceType.ENTER);
|
||||||
Venue venue = venueMapper.findById(device.getVenueId());
|
|
||||||
// 查询当前时间内,场馆对应的价格
|
// 查询当前时间内,场馆对应的价格
|
||||||
String time = DateUtilCard.nowTime().toString();
|
String time = DateUtilCard.nowTime().toString();
|
||||||
VenuePrice venuePrice = venuePriceService.findPrice(device.getVenueId(), time);
|
VenuePrice venuePrice = venuePriceService.findPrice(device.getVenueId(), time);
|
||||||
@@ -333,7 +429,7 @@ public class VenueService extends BaseServiceImpl {
|
|||||||
result.setStatus(-2);
|
result.setStatus(-2);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
Member member = memberService.findByFaceId(faceId);
|
Member member = memberService.findByMember(memberId);
|
||||||
memberService.verify(member);
|
memberService.verify(member);
|
||||||
if (venue == null || member == null) {
|
if (venue == null || member == null) {
|
||||||
result.setStatus(-1);
|
result.setStatus(-1);
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package com.sv.service.oms;
|
|||||||
|
|
||||||
import com.common.DeviceDTO;
|
import com.common.DeviceDTO;
|
||||||
import com.enums.DeviceStatusEnum;
|
import com.enums.DeviceStatusEnum;
|
||||||
|
import com.enums.DeviceType;
|
||||||
import com.github.pagehelper.PageHelper;
|
import com.github.pagehelper.PageHelper;
|
||||||
import com.sv.entity.Device;
|
import com.sv.entity.Device;
|
||||||
import com.sv.exception.oms.OmsException;
|
import com.sv.exception.oms.OmsException;
|
||||||
@@ -185,5 +186,14 @@ public class DeviceService extends BaseServiceImpl {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* find by DeviceName
|
||||||
|
*/
|
||||||
|
public Device findByDevice(String deviceName, Integer venueId, DeviceType deviceType){
|
||||||
|
return deviceMapper.findByDevice(deviceName,venueId,deviceType);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
<result column="stream" property="stream"/>
|
<result column="stream" property="stream"/>
|
||||||
<result column="venue_id" property="venueId"/>
|
<result column="venue_id" property="venueId"/>
|
||||||
<result column="venue_type" property="venueType"/>
|
<result column="venue_type" property="venueType"/>
|
||||||
|
<result column="device_type" property="deviceType"/>
|
||||||
<result column="status" property="status"/>
|
<result column="status" property="status"/>
|
||||||
<result column="created_id" property="createdId"/>
|
<result column="created_id" property="createdId"/>
|
||||||
<result column="modified_id" property="modifiedId"/>
|
<result column="modified_id" property="modifiedId"/>
|
||||||
@@ -33,6 +34,7 @@
|
|||||||
venue_id,
|
venue_id,
|
||||||
status,
|
status,
|
||||||
venue_type,
|
venue_type,
|
||||||
|
device_type,
|
||||||
created_id,
|
created_id,
|
||||||
modified_id,
|
modified_id,
|
||||||
created_time,
|
created_time,
|
||||||
@@ -45,6 +47,9 @@
|
|||||||
#{id, jdbcType=INTEGER},
|
#{id, jdbcType=INTEGER},
|
||||||
#{name, jdbcType=VARCHAR},
|
#{name, jdbcType=VARCHAR},
|
||||||
#{stream, jdbcType=VARCHAR},
|
#{stream, jdbcType=VARCHAR},
|
||||||
|
#{venue_id, jdbcType=INTEGER},
|
||||||
|
#{venue_type, jdbcType=INTEGER},
|
||||||
|
#{device_type, jdbcType=VARCHAR},
|
||||||
#{createdId, jdbcType=INTEGER},
|
#{createdId, jdbcType=INTEGER},
|
||||||
#{modifiedId, jdbcType=INTEGER},
|
#{modifiedId, jdbcType=INTEGER},
|
||||||
#{createdTime, jdbcType=TIMESTAMP},
|
#{createdTime, jdbcType=TIMESTAMP},
|
||||||
@@ -83,6 +88,9 @@
|
|||||||
<if test="venueType != null">
|
<if test="venueType != null">
|
||||||
venue_type,
|
venue_type,
|
||||||
</if>
|
</if>
|
||||||
|
<if test="deviceType != null">
|
||||||
|
device_type,
|
||||||
|
</if>
|
||||||
<if test="status != null">
|
<if test="status != null">
|
||||||
status,
|
status,
|
||||||
</if>
|
</if>
|
||||||
@@ -118,6 +126,9 @@
|
|||||||
<if test="venueType != null">
|
<if test="venueType != null">
|
||||||
#{venueType},
|
#{venueType},
|
||||||
</if>
|
</if>
|
||||||
|
<if test="venueType != null">
|
||||||
|
#{deviceType},
|
||||||
|
</if>
|
||||||
<if test="status != null">
|
<if test="status != null">
|
||||||
#{status},
|
#{status},
|
||||||
</if>
|
</if>
|
||||||
@@ -179,6 +190,12 @@
|
|||||||
<if test="venueId != null">
|
<if test="venueId != null">
|
||||||
venue_id = #{venueId},
|
venue_id = #{venueId},
|
||||||
</if>
|
</if>
|
||||||
|
<if test="venueType != null">
|
||||||
|
venue_type = #{venueType},
|
||||||
|
</if>
|
||||||
|
<if test="deviceType != null">
|
||||||
|
device_type = #{deviceType},
|
||||||
|
</if>
|
||||||
<if test="createdId != null">
|
<if test="createdId != null">
|
||||||
created_id = #{createdId},
|
created_id = #{createdId},
|
||||||
</if>
|
</if>
|
||||||
@@ -235,11 +252,26 @@
|
|||||||
<update id="online">
|
<update id="online">
|
||||||
UPDATE sv_device set status = 2,modified_time = now()
|
UPDATE sv_device set status = 2,modified_time = now()
|
||||||
WHERE name = #{deviceName} and venue_id=#{venueId}
|
WHERE name = #{deviceName} and venue_id=#{venueId}
|
||||||
|
<if test="venueType != null">
|
||||||
|
and venue_type = #{venueType},
|
||||||
|
</if>
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
<select id="checkDevice" resultType="java.lang.Integer">
|
<select id="checkDevice" resultType="java.lang.Integer">
|
||||||
SELECT count(1) FROM sv_device
|
SELECT count(1) FROM sv_device
|
||||||
WHERE 1=1 AND name = #{deviceName} and venue_id=#{venueId} and deleted = 0
|
WHERE 1=1 AND name = #{deviceName} and venue_id=#{venueId} and deleted = 0
|
||||||
|
<if test="venueType != null">
|
||||||
|
and venue_type = #{venueType},
|
||||||
|
</if>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="findByDevice" resultType="com.sv.entity.Device">
|
||||||
|
SELECT
|
||||||
|
<include refid="Field"></include> FROM sv_device
|
||||||
|
WHERE 1=1 AND name = #{deviceName} and venue_id=#{venueId} and deleted = 0
|
||||||
|
<if test="venueType != null">
|
||||||
|
and venue_type = #{venueType},
|
||||||
|
</if>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
Reference in New Issue
Block a user