新增判断用户是否在场内逻辑,新增清场功能,修改二维码多样性
This commit is contained in:
@@ -1,18 +1,13 @@
|
||||
package com.sv.api.controller;
|
||||
|
||||
import com.enums.BarCodeStatusEnum;
|
||||
import com.enums.EnterEnum;
|
||||
import com.sv.dto.BarCodeResult;
|
||||
import com.sv.entity.Barcode;
|
||||
import com.sv.entity.Device;
|
||||
import com.sv.entity.Venue;
|
||||
import com.sv.mapper.BarcodeMapper;
|
||||
import com.sv.netty.config.NettyConstant;
|
||||
import com.sv.netty.utils.AesUtil;
|
||||
import com.sv.netty.utils.MakeCode;
|
||||
import com.sv.service.api.VenueService;
|
||||
import com.sv.service.common.BarcodeService;
|
||||
import com.sv.service.common.DoorLockUtil;
|
||||
import com.sv.service.common.RedisCache;
|
||||
import com.sv.service.oms.DeviceService;
|
||||
import com.ydd.framework.core.common.Pagination;
|
||||
import com.ydd.framework.core.common.dto.ResponseDTO;
|
||||
@@ -20,12 +15,9 @@ import com.ydd.framework.core.controller.BaseApiController;
|
||||
import com.ydd.framework.core.exception.ServiceException;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.StringUtils;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
* Controller - 场馆
|
||||
@@ -41,6 +33,8 @@ public class VenueController extends BaseApiController {
|
||||
@Resource
|
||||
private VenueService venueService;
|
||||
@Resource
|
||||
private BarcodeService barcodeService;
|
||||
@Resource
|
||||
private DoorLockUtil doorLockUtil;
|
||||
|
||||
/**
|
||||
@@ -117,23 +111,24 @@ public class VenueController extends BaseApiController {
|
||||
*/
|
||||
@RequestMapping(value = "/venue/join", method = RequestMethod.GET)
|
||||
public ResponseDTO join(@RequestParam("venueId") Integer venueId) {
|
||||
Device byDevice = deviceService.findByDevice(venueId);
|
||||
BarCodeResult join = new BarCodeResult();
|
||||
if (byDevice == null) {
|
||||
join.setFlg(999);
|
||||
join.setMsg("通讯异常,门禁设备离线中");
|
||||
return ResponseDTO.ok().addAttribute("join", join);
|
||||
}
|
||||
String doorSn = byDevice.getName();
|
||||
boolean lockStat = doorLockUtil.checkDoorLock(doorSn);
|
||||
if (lockStat) {
|
||||
throw new ServiceException("有人正在使用门禁,请稍后再试");
|
||||
}
|
||||
Integer memberId = getMemberIdByAccessToken();
|
||||
BarCodeResult join = venueService.join(memberId, venueId);
|
||||
join = venueService.join(memberId, venueId);
|
||||
if (join.getFlg() == 0) {
|
||||
Device byDevice = deviceService.findByDevice(venueId);
|
||||
if (byDevice == null) {
|
||||
join.setFlg(999);
|
||||
join.setMsg("通讯异常,门禁设备离线中");
|
||||
}else {
|
||||
String doorSn = byDevice.getName();
|
||||
boolean lockStat = doorLockUtil.checkDoorLock(doorSn);
|
||||
if (lockStat) {
|
||||
throw new ServiceException("有人正在使用门禁,请稍后再试");
|
||||
}
|
||||
String barcode = newBarcode(doorSn, EnterEnum.ENTER, venueId, memberId);
|
||||
join.setBarcode(barcode);
|
||||
doorLockUtil.lockDoor(doorSn);
|
||||
}
|
||||
String barcode = barcodeService.newBarcode(doorSn, EnterEnum.ENTER, venueId, memberId);
|
||||
join.setBarcode(barcode);
|
||||
doorLockUtil.lockDoor(doorSn);
|
||||
}
|
||||
return ResponseDTO.ok().addAttribute("join", join);
|
||||
}
|
||||
@@ -146,45 +141,26 @@ public class VenueController extends BaseApiController {
|
||||
*/
|
||||
@RequestMapping(value = "/venue/out", method = RequestMethod.GET)
|
||||
public ResponseDTO out(@RequestParam("venueId") Integer venueId) {
|
||||
|
||||
Device byDevice = deviceService.findByDevice(venueId);
|
||||
BarCodeResult out = new BarCodeResult();
|
||||
if (byDevice == null) {
|
||||
out.setFlg(999);
|
||||
out.setMsg("通讯异常,门禁设备离线中");
|
||||
return ResponseDTO.ok().addAttribute("out", out);
|
||||
}
|
||||
String doorSn = byDevice.getName();
|
||||
boolean lockStat = doorLockUtil.checkDoorLock(doorSn);
|
||||
if (lockStat) {
|
||||
throw new ServiceException("有人正在使用门禁,请稍后再试");
|
||||
}
|
||||
Integer memberId = getMemberIdByAccessToken();
|
||||
BarCodeResult out = venueService.out(memberId, venueId);
|
||||
out = venueService.out(memberId, venueId);
|
||||
if (out.getFlg() == 0) {
|
||||
Device byDevice = deviceService.findByDevice(venueId);
|
||||
if (byDevice == null) {
|
||||
out.setFlg(999);
|
||||
out.setMsg("通讯异常,门禁设备离线中");
|
||||
}else {
|
||||
String doorSn = byDevice.getName();
|
||||
boolean lockStat = doorLockUtil.checkDoorLock(doorSn);
|
||||
if (lockStat) {
|
||||
throw new ServiceException("有人正在使用门禁,请稍后再试");
|
||||
}
|
||||
String barcode = newBarcode(doorSn,EnterEnum.OUT,venueId,memberId);
|
||||
out.setBarcode(barcode);
|
||||
doorLockUtil.lockDoor(doorSn);
|
||||
}
|
||||
String barcode = barcodeService.newBarcode(doorSn,EnterEnum.OUT,venueId,memberId);
|
||||
out.setBarcode(barcode);
|
||||
doorLockUtil.lockDoor(doorSn);
|
||||
}
|
||||
return ResponseDTO.ok().addAttribute("out", out);
|
||||
}
|
||||
|
||||
private String newBarcode (String deviceName,EnterEnum enterEnum,Integer venueId,Integer memberId){
|
||||
String barcode = "";
|
||||
Barcode res = barcodeMapper.findBarcode(venueId, memberId);
|
||||
if (res == null) {
|
||||
barcode = MakeCode.makeCode(venueId, memberId, deviceName, enterEnum.getValue() + "");
|
||||
Barcode b = new Barcode();
|
||||
logger.info("用户扫码【" + memberId + "$" + venueId + "】生成二维码为" + barcode);
|
||||
b.setBarcode(barcode);
|
||||
b.setStatus(BarCodeStatusEnum.INIT.getValue());
|
||||
b.setMemberId(memberId);
|
||||
b.setVenueId(venueId);
|
||||
b.setEnter(enterEnum.getValue());
|
||||
barcodeMapper.insert(b);
|
||||
}else {
|
||||
barcode = res.getBarcode();
|
||||
}
|
||||
return barcode;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.sv.netty.netty.service.impl;
|
||||
|
||||
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;
|
||||
@@ -131,19 +132,16 @@ public class ServerMessageHandlerAdapter implements MessageService {
|
||||
Channel channel = getCurrentChannel(doorSn,venueBarCode.getVenueId());
|
||||
Member member = memberService.findByMember(venueBarCode.getMemberId());
|
||||
if (member != null) {
|
||||
MemberMoneyLog memberMoneyLog = memberMoneyLogService.selectLastLog(member.getId(), venueBarCode.getVenueId());
|
||||
MemberEnterVenueLog memberEnterVenueLog = new MemberEnterVenueLog();
|
||||
memberEnterVenueLog.setOrderSn(barcode);
|
||||
memberEnterVenueLog.setType(EnterEnum.OUT.getValue());
|
||||
memberEnterVenueLog.setPayType(EnterVenuePayTypeEnum.WEI_XIN.getValue());
|
||||
memberEnterVenueLog.setMemberId(member.getId());
|
||||
memberEnterVenueLog.setPlatformId(member.getPlatformId() == null ? 1 : member.getPlatformId());
|
||||
memberEnterVenueLog.setVenueId(venueBarCode.getVenueId());
|
||||
if (memberMoneyLog != null) {
|
||||
memberEnterVenueLog.setPayType(memberMoneyLog.getPayType());
|
||||
}
|
||||
memberEnterVenueLogService.save(memberEnterVenueLog);
|
||||
doorLockUtil.lockDoor(doorSn);
|
||||
logger.info("用户" + member.getNickname() + "出场");
|
||||
logger.info("用户" + member.getId() + "&" + member.getNickname() + "出场");
|
||||
writeOffCode(barcode);
|
||||
ServerMessageUtils.INSTANCE.sendMsg(channel,new VenueMessage(MessageType.OUT_DOOR,"OK"));
|
||||
}
|
||||
@@ -177,6 +175,7 @@ public class ServerMessageHandlerAdapter implements MessageService {
|
||||
memberEnterVenueLog.setMemberId(member.getId());
|
||||
memberEnterVenueLog.setPlatformId(member.getPlatformId() == null ? 1 : member.getPlatformId());
|
||||
memberEnterVenueLog.setVenueId(venueBarCode.getVenueId());
|
||||
memberEnterVenueLog.setPayType(EnterVenuePayTypeEnum.WEI_XIN.getValue());
|
||||
memberEnterVenueLogService.save(memberEnterVenueLog);
|
||||
doorLockUtil.lockDoor(doorSn);
|
||||
writeOffCode(barcode);
|
||||
@@ -246,6 +245,10 @@ public class ServerMessageHandlerAdapter implements MessageService {
|
||||
logger.error("有人正在操作,请稍后再试!!!");
|
||||
throw new ServiceException("有人正在操作,请稍后再试!!!");
|
||||
}
|
||||
int i = barcodeEnterLogMapper.countTimesByBarcode(barcode);
|
||||
if (i >= 6) {
|
||||
throw new ServiceException("线下进场太过频繁,请重新下单!该二维码已经失效!");
|
||||
}
|
||||
BarcodeEnterLog lastByBarcode = barcodeEnterLogMapper.findLastByBarcode(barcode);
|
||||
Integer venueId = barcodeOffline.getVenueId();
|
||||
Channel channel = getCurrentChannel(doorSn, venueId);
|
||||
|
||||
@@ -2,32 +2,18 @@ package com.sv.wx;
|
||||
|
||||
import com.WeiXinApplication;
|
||||
import com.enums.EnterEnum;
|
||||
import com.enums.VenueTypeEnum;
|
||||
import com.sv.dto.BarCodeResult;
|
||||
import com.sv.entity.*;
|
||||
import com.sv.mapper.WxConfigMapper;
|
||||
import com.sv.netty.config.MessageType;
|
||||
import com.sv.netty.config.VenueMessage;
|
||||
import com.sv.netty.netty.service.MessageService;
|
||||
import com.sv.netty.utils.JsonUtils;
|
||||
import com.sv.netty.utils.ServerMessageUtils;
|
||||
import com.sv.service.api.MemberEnterVenueLogService;
|
||||
import com.sv.service.api.MemberService;
|
||||
import com.sv.service.api.VenueLessonService;
|
||||
import com.sv.service.api.VenueService;
|
||||
import com.sv.service.api.util.DateUtilCard;
|
||||
import com.sv.service.message.SendMsg;
|
||||
import com.sv.service.message.WeiXinSendUtils;
|
||||
import com.ydd.oms.entity.sys.WxConfig;
|
||||
import com.sv.service.common.BarcodeService;
|
||||
import com.sv.service.common.DoorLockUtil;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.test.annotation.Rollback;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
|
||||
@RunWith(SpringRunner.class)
|
||||
@SpringBootTest(classes={WeiXinApplication.class})
|
||||
@@ -36,33 +22,44 @@ public class VenueJoinTest {
|
||||
@Resource
|
||||
VenueService venueService;
|
||||
@Resource
|
||||
MemberService memberService;
|
||||
MessageService messageService;
|
||||
@Resource
|
||||
MemberEnterVenueLogService memberEnterVenueLogService;
|
||||
BarcodeService barcodeService;
|
||||
@Resource
|
||||
DoorLockUtil doorLockUtil;
|
||||
|
||||
@Test
|
||||
public void testJoin(){
|
||||
BarCodeResult join = venueService.join(535, 32);
|
||||
System.out.println(JsonUtils.encode(join));
|
||||
Member member = memberService.findById(535);
|
||||
if (member != null) {
|
||||
MemberEnterVenueLog memberEnterVenueLog = new MemberEnterVenueLog();
|
||||
memberEnterVenueLog.setOrderSn("barcode");
|
||||
memberEnterVenueLog.setType(EnterEnum.ENTER.getValue());
|
||||
memberEnterVenueLog.setMemberId(member.getId());
|
||||
memberEnterVenueLog.setPlatformId(member.getPlatformId() == null ? 1 : member.getPlatformId());
|
||||
memberEnterVenueLog.setVenueId(32);
|
||||
memberEnterVenueLogService.save(memberEnterVenueLog);
|
||||
if (join.getFlg() == 0) {
|
||||
String barcode = barcodeService.newBarcode("doorSn", EnterEnum.ENTER, 32, 535);
|
||||
System.err.println("入场的二维码为:" + barcode);
|
||||
join.setBarcode(barcode);
|
||||
doorLockUtil.lockDoor("doorSn");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Test
|
||||
public void enterVenue() {
|
||||
messageService.enterVenue("oC+Smw+mDDsDSXP/RhHQXvm8I4mobxXZXN621ia2gKE=");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOut(){
|
||||
BarCodeResult out = venueService.out(535, 32);
|
||||
System.out.println(JsonUtils.encode(out));
|
||||
if (out.getFlg() == 0) {
|
||||
String barcode = barcodeService.newBarcode("doorSn", EnterEnum.OUT, 32, 535);
|
||||
System.err.println("出场的二维码为:" + barcode);
|
||||
out.setBarcode(barcode);
|
||||
doorLockUtil.lockDoor("doorSn");
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void outVenue() {
|
||||
messageService.outVenue("oC+Smw+mDDsDSXP/RhHQXvE3OTXb2IAZ8Zo8MwN8dnI=");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user