新增判断用户是否在场内逻辑,新增清场功能,修改二维码多样性
This commit is contained in:
@@ -20,4 +20,12 @@ public interface BarcodeEnterLogMapper {
|
||||
@NoPlatform
|
||||
BarcodeEnterLog findLastByBarcode(String barcode);
|
||||
|
||||
/**
|
||||
* 统计线下订单二维码最多只能使用6次
|
||||
* @param barcode
|
||||
* @return
|
||||
*/
|
||||
@NoPlatform
|
||||
int countTimesByBarcode(String barcode);
|
||||
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -149,4 +149,11 @@
|
||||
WHERE barcode = #{barcode,jdbcType=VARCHAR} order by created_time desc LIMIT 1
|
||||
</select>
|
||||
|
||||
<select id="countTimesByBarcode" resultType="int">
|
||||
select
|
||||
count(1)
|
||||
from sv_barcode_enter_venue_log
|
||||
WHERE barcode = #{barcode,jdbcType=VARCHAR}
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
||||
@@ -0,0 +1,123 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
|
||||
<mapper namespace="com.sv.mapper.MemberEnterStatusMapper" >
|
||||
<resultMap id="BaseResultMap" type="com.sv.entity.MemberEnterStatus" >
|
||||
<constructor >
|
||||
<idArg column="id" jdbcType="INTEGER" javaType="java.lang.Integer" />
|
||||
<arg column="member_id" jdbcType="INTEGER" javaType="java.lang.Integer" />
|
||||
<arg column="venue_id" jdbcType="INTEGER" javaType="java.lang.Integer" />
|
||||
<arg column="status" jdbcType="INTEGER" javaType="java.lang.Integer" />
|
||||
<arg column="created_time" jdbcType="TIMESTAMP" javaType="java.util.Date" />
|
||||
<arg column="modified_time" jdbcType="TIMESTAMP" javaType="java.util.Date" />
|
||||
</constructor>
|
||||
</resultMap>
|
||||
<sql id="Base_Column_List" >
|
||||
id, member_id, venue_id, status, created_time, modified_time
|
||||
</sql>
|
||||
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
|
||||
select
|
||||
<include refid="Base_Column_List" />
|
||||
from sv_member_enter_status
|
||||
where id = #{id,jdbcType=INTEGER}
|
||||
</select>
|
||||
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
|
||||
delete from sv_member_enter_status
|
||||
where id = #{id,jdbcType=INTEGER}
|
||||
</delete>
|
||||
<insert id="insert" parameterType="com.sv.entity.MemberEnterStatus" >
|
||||
insert into sv_member_enter_status (id, member_id, venue_id,
|
||||
status, created_time, modified_time
|
||||
)
|
||||
values (#{id,jdbcType=INTEGER}, #{memberId,jdbcType=INTEGER}, #{venueId,jdbcType=INTEGER},
|
||||
#{status,jdbcType=INTEGER}, #{createdTime,jdbcType=TIMESTAMP}, #{modifiedTime,jdbcType=TIMESTAMP}
|
||||
)
|
||||
</insert>
|
||||
<insert id="insertSelective" parameterType="com.sv.entity.MemberEnterStatus" >
|
||||
insert into sv_member_enter_status
|
||||
<trim prefix="(" suffix=")" suffixOverrides="," >
|
||||
<if test="id != null" >
|
||||
id,
|
||||
</if>
|
||||
<if test="memberId != null" >
|
||||
member_id,
|
||||
</if>
|
||||
<if test="venueId != null" >
|
||||
venue_id,
|
||||
</if>
|
||||
<if test="status != null" >
|
||||
status,
|
||||
</if>
|
||||
<if test="createdTime != null" >
|
||||
created_time,
|
||||
</if>
|
||||
<if test="modifiedTime != null" >
|
||||
modified_time,
|
||||
</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides="," >
|
||||
<if test="id != null" >
|
||||
#{id,jdbcType=INTEGER},
|
||||
</if>
|
||||
<if test="memberId != null" >
|
||||
#{memberId,jdbcType=INTEGER},
|
||||
</if>
|
||||
<if test="venueId != null" >
|
||||
#{venueId,jdbcType=INTEGER},
|
||||
</if>
|
||||
<if test="status != null" >
|
||||
#{status,jdbcType=INTEGER},
|
||||
</if>
|
||||
<if test="createdTime != null" >
|
||||
#{createdTime,jdbcType=TIMESTAMP},
|
||||
</if>
|
||||
<if test="modifiedTime != null" >
|
||||
#{modifiedTime,jdbcType=TIMESTAMP},
|
||||
</if>
|
||||
</trim>
|
||||
</insert>
|
||||
<update id="updateByPrimaryKeySelective" parameterType="com.sv.entity.MemberEnterStatus" >
|
||||
update sv_member_enter_status
|
||||
<set >
|
||||
<if test="memberId != null" >
|
||||
member_id = #{memberId,jdbcType=INTEGER},
|
||||
</if>
|
||||
<if test="venueId != null" >
|
||||
venue_id = #{venueId,jdbcType=INTEGER},
|
||||
</if>
|
||||
<if test="status != null" >
|
||||
status = #{status,jdbcType=INTEGER},
|
||||
</if>
|
||||
<if test="createdTime != null" >
|
||||
created_time = #{createdTime,jdbcType=TIMESTAMP},
|
||||
</if>
|
||||
<if test="modifiedTime != null" >
|
||||
modified_time = #{modifiedTime,jdbcType=TIMESTAMP},
|
||||
</if>
|
||||
</set>
|
||||
where id = #{id,jdbcType=INTEGER}
|
||||
</update>
|
||||
<update id="updateByPrimaryKey" parameterType="com.sv.entity.MemberEnterStatus" >
|
||||
update sv_member_enter_status
|
||||
set member_id = #{memberId,jdbcType=INTEGER},
|
||||
venue_id = #{venueId,jdbcType=INTEGER},
|
||||
status = #{status,jdbcType=INTEGER},
|
||||
created_time = #{createdTime,jdbcType=TIMESTAMP},
|
||||
modified_time = #{modifiedTime,jdbcType=TIMESTAMP}
|
||||
where id = #{id,jdbcType=INTEGER}
|
||||
</update>
|
||||
|
||||
<select id="selectByMemberVenue" resultMap="BaseResultMap" >
|
||||
select
|
||||
<include refid="Base_Column_List" />
|
||||
from sv_member_enter_status
|
||||
where member_id = #{memberId} and venue_id = #{venueId}
|
||||
</select>
|
||||
|
||||
<select id="findAllNeedClear" resultMap="BaseResultMap" >
|
||||
select
|
||||
<include refid="Base_Column_List" />
|
||||
from sv_member_enter_status
|
||||
where status = 1
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@@ -90,7 +90,7 @@
|
||||
domainObjectName 给表对应的 model 起名字
|
||||
注意:大小写敏感问题。
|
||||
-->
|
||||
<table tableName="sv_barcode_order_time" domainObjectName="BarcodeOrderTime"
|
||||
<table tableName="sv_member_enter_status" domainObjectName="MemberEnterStatus"
|
||||
enableInsert="true"
|
||||
enableDeleteByPrimaryKey="true"
|
||||
enableSelectByPrimaryKey="true"
|
||||
|
||||
Reference in New Issue
Block a user