新增判断用户是否在场内逻辑,新增清场功能,修改二维码多样性

This commit is contained in:
limqhz
2023-12-07 18:16:03 +08:00
parent b4f9663bb2
commit 3345c2b6f3
21 changed files with 498 additions and 111 deletions

View File

@@ -20,4 +20,12 @@ public interface BarcodeEnterLogMapper {
@NoPlatform
BarcodeEnterLog findLastByBarcode(String barcode);
/**
* 统计线下订单二维码最多只能使用6次
* @param barcode
* @return
*/
@NoPlatform
int countTimesByBarcode(String barcode);
}

View File

@@ -0,0 +1,25 @@
package com.sv.mapper;
import com.sv.entity.MemberEnterStatus;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface MemberEnterStatusMapper {
int deleteByPrimaryKey(Integer id);
int insert(MemberEnterStatus record);
int insertSelective(MemberEnterStatus record);
MemberEnterStatus selectByPrimaryKey(Integer id);
int updateByPrimaryKeySelective(MemberEnterStatus record);
int updateByPrimaryKey(MemberEnterStatus record);
MemberEnterStatus selectByMemberVenue(@Param("memberId") Integer memberId, @Param("venueId") Integer venueId);
List<MemberEnterStatus> findAllNeedClear();
}

View File

@@ -1,6 +1,10 @@
package com.sv.service.api;
import com.enums.EnterEnum;
import com.enums.StayEnum;
import com.sv.entity.MemberEnterStatus;
import com.sv.entity.MemberEnterVenueLog;
import com.sv.mapper.MemberEnterStatusMapper;
import com.sv.mapper.MemberEnterVenueLogMapper;
import com.ydd.framework.core.service.impl.BaseServiceImpl;
import org.apache.commons.collections.CollectionUtils;
@@ -28,6 +32,8 @@ public class MemberEnterVenueLogService extends BaseServiceImpl {
@Resource
private MemberEnterVenueLogMapper memberEnterVenueLogMapper;
@Resource
private MemberEnterStatusMapper memberEnterStatusMapper;
/**
* 获取用户最后的出入场记录
@@ -39,6 +45,16 @@ public class MemberEnterVenueLogService extends BaseServiceImpl {
return memberEnterVenueLogMapper.findLastByMember(memberId, venueId);
}
/**
* 获取用户最后的出入场记录
*
* @param memberId
* @return
*/
public MemberEnterStatus memberStayStatus(Integer memberId, Integer venueId) {
return memberEnterStatusMapper.selectByMemberVenue(memberId, venueId);
}
/**
* 获取用户最后的进场记录
*
@@ -64,6 +80,25 @@ public class MemberEnterVenueLogService extends BaseServiceImpl {
@Transactional
public void save(MemberEnterVenueLog memberEnterVenueLog) {
memberEnterVenueLogMapper.insert(memberEnterVenueLog);
MemberEnterStatus memberEnterStatus =
memberEnterStatusMapper.selectByMemberVenue(memberEnterVenueLog.getMemberId(), memberEnterVenueLog.getVenueId());
StayEnum stayEnum = StayEnum.OUT;
if (EnterEnum.ENTER.getValue().equals(memberEnterVenueLog.getType())){
stayEnum = StayEnum.IN;
}
if (memberEnterStatus != null){
memberEnterStatus.setStatus(stayEnum.getValue());
memberEnterStatus.setModifiedTime(new Date());
memberEnterStatusMapper.updateByPrimaryKey(memberEnterStatus);
}else {
memberEnterStatus = new MemberEnterStatus();
memberEnterStatus.setMemberId(memberEnterVenueLog.getMemberId());
memberEnterStatus.setVenueId(memberEnterVenueLog.getVenueId());
memberEnterStatus.setStatus(stayEnum.getValue());
memberEnterStatus.setCreatedTime(new Date());
memberEnterStatus.setModifiedTime(new Date());
memberEnterStatusMapper.insert(memberEnterStatus);
}
}
/**

View File

@@ -124,11 +124,11 @@ public class VenueService extends BaseServiceImpl {
if (getVenue.getStatus() != 0) {
throw new ServiceException("场馆维护中,请等待场馆恢复");
}
getVenue.setEnterFlag(EnterEnum.OUT.getValue());
if (VenueTypeEnum.BASKETBALL.getValue().equals(getVenue.getType())){
MemberEnterVenueLog memberLastLog = memberEnterVenueLogService.findMemberLastLog(memberId, id);
if (memberLastLog != null) {
getVenue.setEnterFlag(memberLastLog.getType());
MemberEnterStatus memberStayStatus = memberEnterVenueLogService.memberStayStatus(memberId, id);
getVenue.setEnterFlag(StayEnum.OUT.getValue());
if (memberStayStatus != null) {
getVenue.setEnterFlag(memberStayStatus.getStatus());
}
}
}

View File

@@ -0,0 +1,50 @@
package com.sv.service.common;
import com.enums.BarCodeStatusEnum;
import com.enums.EnterEnum;
import com.sv.entity.Barcode;
import com.sv.mapper.BarcodeMapper;
import com.sv.netty.utils.MakeCode;
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;
public 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;
}
}