fix - 篮球入场出场逻辑优化、丢弃二维码的逻辑

This commit is contained in:
2026-06-13 17:30:00 +08:00
parent 81bf02794c
commit 8cfe0ef7d8
17 changed files with 111 additions and 738 deletions

View File

@@ -1,78 +0,0 @@
package com.sv.service.common;
import com.enums.BarCodeStatusEnum;
import com.enums.EnterEnum;
import com.sv.dto.api.BarcodeDTO;
import com.sv.entity.Barcode;
import com.sv.entity.BarcodeOrderTime;
import com.sv.mapper.BarcodeMapper;
import com.sv.mapper.BarcodeOrderTimeMapper;
import com.sv.netty.utils.MakeCode;
import com.ydd.framework.core.exception.ServiceException;
import com.ydd.framework.core.service.impl.BaseServiceImpl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
/**
* Service - 短信
*
* @author lh
* @since 2018-08-01
*/
@Service
@Transactional
public class BarcodeService extends BaseServiceImpl {
private final Logger logger = LoggerFactory.getLogger(BarcodeService.class);
@Resource
BarcodeMapper barcodeMapper;
@Resource
BarcodeOrderTimeMapper barcodeOrderTimeMapper;
public String newBarcode (String deviceName, String orderSn, 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={}, orderSn={}, enterEnum={}, deviceName={}, barcode={}",
memberId, venueId, orderSn, enterEnum.getValue(), deviceName, barcode);
b.setBarcode(barcode);
b.setStatus(BarCodeStatusEnum.INIT.getValue());
b.setMemberId(memberId);
b.setVenueId(venueId);
b.setOrderSn(orderSn);
b.setEnter(enterEnum.getValue());
barcodeMapper.insert(b);
}else {
barcode = res.getBarcode();
logger.info("[生成二维码] 复用已有二维码 memberId={}, venueId={}, barcode={}, enter={}",
memberId, venueId, barcode, res.getEnter());
}
return barcode;
}
public BarcodeDTO isUsed(String barcode){
BarcodeDTO barcodeDTO = new BarcodeDTO();
barcodeDTO.setUsed(false);
Barcode code = barcodeMapper.checkIsUsed(barcode);
if (code == null) {
logger.error("[二维码校验] 二维码不存在 barcode={}", barcode);
throw new ServiceException("二维码不存在!");
}
if (BarCodeStatusEnum.USED.value == code.getStatus()){
barcodeDTO.setUsed(true);
BarcodeOrderTime lastEnterOrder = barcodeOrderTimeMapper.findLastOrder(code.getMemberId(), code.getVenueId());
barcodeDTO.setEnterId(lastEnterOrder.getId());
logger.info("[二维码校验] 已使用 memberId={}, venueId={}, enterId={}", code.getMemberId(), code.getVenueId(), lastEnterOrder.getId());
} else {
logger.info("[二维码校验] 未使用 memberId={}, venueId={}", code.getMemberId(), code.getVenueId());
}
return barcodeDTO;
}
}

View File

@@ -9,14 +9,13 @@ import java.util.concurrent.TimeUnit;
public class DoorLockUtil {
private final static String DOOR_LOCK = "DOOR_LOCK_";
private final static String DOOR_BARCODE_LOCK = "DOOR_BARCODE_LOCK_";
private final static Integer LOCK_TIMEOUT = 15;
private final static Integer LOCK_TIMEOUT = 20;
@Resource
RedisCache redisCache;
/**
* 门禁有人扫码之后,需要锁定门禁30s
* 门禁有人扫码之后,需要锁定门禁20s
* @return
*/
public boolean checkDoorLock(String doorSn){
@@ -28,7 +27,7 @@ public class DoorLockUtil {
}
/**
* 门禁有人扫码之后,需要锁定门禁30s
* 门禁有人扫码之后,需要锁定门禁20s
* @param doorSn
*/
public void lockDoor(String doorSn){
@@ -36,25 +35,4 @@ public class DoorLockUtil {
redisCache.setCacheObject(doorKey,true,LOCK_TIMEOUT, TimeUnit.SECONDS);
}
/**
* 门禁有人扫码之后需要锁定门禁30s
* @return
*/
public boolean checkBarcode(String doorSn){
String doorKey = DOOR_BARCODE_LOCK + doorSn;
if (redisCache.getCacheObject(doorKey) == null){
return false;
}
return true;
}
/**
* 门禁有人扫码之后需要锁定门禁30s
* @param doorSn
*/
public void lockBarcode(String doorSn){
String doorKey = DOOR_BARCODE_LOCK + doorSn;
redisCache.setCacheObject(doorKey,true,LOCK_TIMEOUT, TimeUnit.SECONDS);
}
}

View File

@@ -238,17 +238,5 @@ public class DeviceService extends BaseServiceImpl {
return deviceMapper.findByDevice(venueId);
}
@Transactional
public void makeDeviceBarcode(String deviceName, Integer venueId, String barcode) {
BarcodeOffline barcodeOffline = new BarcodeOffline();
Date startTime = new Date();
barcodeOffline.setStartTime(startTime);
barcodeOffline.setEndTime(DateUtils.addHours(startTime,2));
barcodeOffline.setVenueId(venueId);
barcodeOffline.setDeviceName(deviceName);
barcodeOffline.setBarcode(barcode);
barcodeOfflineMapper.insert(barcodeOffline);
}
}