线下订单驱动开门

This commit is contained in:
2023-11-24 22:37:12 +08:00
parent c79b75708d
commit 07a648c3f5
24 changed files with 1621 additions and 37 deletions

View File

@@ -0,0 +1,21 @@
package com.sv.mapper;
import com.sv.entity.BarcodeEnterLog;
import com.sv.entity.BarcodeOffline;
public interface BarcodeEnterLogMapper {
int deleteByPrimaryKey(Integer id);
int insert(BarcodeEnterLog record);
int insertSelective(BarcodeEnterLog record);
BarcodeEnterLog selectByPrimaryKey(Integer id);
int updateByPrimaryKeySelective(BarcodeEnterLog record);
int updateByPrimaryKey(BarcodeEnterLog record);
BarcodeEnterLog findLastByBarcode(String barcode);
}

View File

@@ -0,0 +1,19 @@
package com.sv.mapper;
import com.sv.entity.BarcodeOffline;
public interface BarcodeOfflineMapper {
int deleteByPrimaryKey(Integer id);
int insert(BarcodeOffline record);
int insertSelective(BarcodeOffline record);
BarcodeOffline selectByPrimaryKey(Integer id);
int updateByPrimaryKeySelective(BarcodeOffline record);
int updateByPrimaryKey(BarcodeOffline record);
BarcodeOffline selectByBarcode(String barcode);
}

View File

@@ -294,7 +294,7 @@ public class VenueService extends BaseServiceImpl {
}
if (useCard != null) {
//使用会员卡入场
logger.info("用户" + member.getNickname() + "使用" + useCard.getCardType() + "入场");
logger.info("用户" + member.getNickname() + "使用" + useCard.getCardType() + "核销");
// 会员卡入场,增加记录
createMemberMoneyLog(MoneyLogEnum.JOIN.value, venue.getPrice(), member.getId(), member.getPlatformId(), PayTypeEnum.MEMBER_CARD.value, useCard.getCardType(),
venue.getId(), venue.getType());
@@ -305,21 +305,21 @@ public class VenueService extends BaseServiceImpl {
}
}else {
//查无可用会员卡
logger.info("用户" + member.getNickname() + "您好!请先购买会员卡再进场");
logger.info("用户" + member.getNickname() + "您好!请先购买会员卡再出场核销");
result.setFlg(1);
result.setMsg("未查询到会员卡,请先购买");
result.setMsg("未查询到会员卡,请先购买会员卡");
}
}else {
//判断余额是否够 TODO 应该从入场订单里面去取
//判断余额是否够
String time = DateUtilCard.nowTime().toString();
VenuePrice venuePrice = venuePriceService.findPrice(venueId, time);
if (memberService.isMoneyEnough(member.getId(), venuePrice.getPrice())) {
logger.info("用户" + member.getNickname() + "使用余额进场");
logger.info("用户" + member.getNickname() + "使用余额核销订单");
createMemberMoneyLog(MoneyLogEnum.JOIN.value, venuePrice.getPrice(), member.getId(), member.getPlatformId(), PayTypeEnum.BALANCE.value, null,
venue.getId(), venue.getType());
} else {
//余额不足
logger.error("用户" + member.getNickname() + "余额不足进场失败");
logger.error("用户" + member.getNickname() + "余额不足核销失败");
result.setFlg(1);
result.setMsg("余额不足,请先充值");
}

View File

@@ -0,0 +1,60 @@
package com.sv.service.common;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.concurrent.TimeUnit;
@Component
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 = 30;
@Resource
RedisCache redisCache;
/**
* 门禁有人扫码之后需要锁定门禁30s
* @return
*/
public boolean checkDoorLock(String doorSn){
String doorKey = DOOR_LOCK + doorSn;
if (redisCache.getCacheObject(doorKey) == null){
return false;
}
return true;
}
/**
* 门禁有人扫码之后需要锁定门禁30s
* @param doorSn
*/
public void lockDoor(String doorSn){
String doorKey = DOOR_LOCK + doorSn;
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

@@ -0,0 +1,264 @@
package com.sv.service.common;
import org.springframework.data.redis.core.BoundSetOperations;
import org.springframework.data.redis.core.HashOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.*;
import java.util.concurrent.TimeUnit;
/**
* spring redis 工具类
*
* @author quinn
**/
@Component
public class RedisCache
{
@Resource
public RedisTemplate redisTemplate;
/**
* 缓存基本的对象Integer、String、实体类等
*
* @param key 缓存的键值
* @param value 缓存的值
*/
public <T> void setCacheObject(final String key, final T value)
{
redisTemplate.opsForValue().set(key, value);
}
/**
* 缓存基本的对象Integer、String、实体类等
*
* @param key 缓存的键值
* @param value 缓存的值
* @param timeout 时间
* @param timeUnit 时间颗粒度
*/
public <T> void setCacheObject(final String key, final T value, final Integer timeout, final TimeUnit timeUnit)
{
redisTemplate.opsForValue().set(key, value, timeout, timeUnit);
}
/**
* 设置有效时间
*
* @param key Redis键
* @param timeout 超时时间
* @return true=设置成功false=设置失败
*/
public boolean expire(final String key, final long timeout)
{
return expire(key, timeout, TimeUnit.SECONDS);
}
/**
* 设置有效时间
*
* @param key Redis键
* @param timeout 超时时间
* @param unit 时间单位
* @return true=设置成功false=设置失败
*/
public boolean expire(final String key, final long timeout, final TimeUnit unit)
{
return redisTemplate.expire(key, timeout, unit);
}
/**
* 获取有效时间
*
* @param key Redis键
* @return 有效时间
*/
public long getExpire(final String key)
{
return redisTemplate.getExpire(key);
}
/**
* 判断 key是否存在
*
* @param key 键
* @return true 存在 false不存在
*/
public Boolean hasKey(String key)
{
return redisTemplate.hasKey(key);
}
/**
* 获得缓存的基本对象。
*
* @param key 缓存键值
* @return 缓存键值对应的数据
*/
public <T> T getCacheObject(final String key)
{
ValueOperations<String, T> operation = redisTemplate.opsForValue();
return operation.get(key);
}
/**
* 删除单个对象
*
* @param key
*/
public void deleteObject(final String key)
{
redisTemplate.delete(key);
}
/**
* 删除集合对象
*
* @param collection 多个对象
* @return
*/
public void deleteObject(final Collection collection)
{
redisTemplate.delete(collection);
}
/**
* 缓存List数据
*
* @param key 缓存的键值
* @param dataList 待缓存的List数据
* @return 缓存的对象
*/
public <T> long setCacheList(final String key, final List<T> dataList)
{
Long count = redisTemplate.opsForList().rightPushAll(key, dataList);
return count == null ? 0 : count;
}
/**
* 获得缓存的list对象
*
* @param key 缓存的键值
* @return 缓存键值对应的数据
*/
public <T> List<T> getCacheList(final String key)
{
return redisTemplate.opsForList().range(key, 0, -1);
}
/**
* 缓存Set
*
* @param key 缓存键值
* @param dataSet 缓存的数据
* @return 缓存数据的对象
*/
public <T> BoundSetOperations<String, T> setCacheSet(final String key, final Set<T> dataSet)
{
BoundSetOperations<String, T> setOperation = redisTemplate.boundSetOps(key);
Iterator<T> it = dataSet.iterator();
while (it.hasNext())
{
setOperation.add(it.next());
}
return setOperation;
}
/**
* 获得缓存的set
*
* @param key
* @return
*/
public <T> Set<T> getCacheSet(final String key)
{
return redisTemplate.opsForSet().members(key);
}
/**
* 缓存Map
*
* @param key
* @param dataMap
*/
public <T> void setCacheMap(final String key, final Map<String, T> dataMap)
{
if (dataMap != null) {
redisTemplate.opsForHash().putAll(key, dataMap);
}
}
/**
* 获得缓存的Map
*
* @param key
* @return
*/
public <T> Map<String, T> getCacheMap(final String key)
{
return redisTemplate.opsForHash().entries(key);
}
/**
* 往Hash中存入数据
*
* @param key Redis键
* @param hKey Hash键
* @param value 值
*/
public <T> void setCacheMapValue(final String key, final String hKey, final T value)
{
redisTemplate.opsForHash().put(key, hKey, value);
}
/**
* 获取Hash中的数据
*
* @param key Redis键
* @param hKey Hash键
* @return Hash中的对象
*/
public <T> T getCacheMapValue(final String key, final String hKey)
{
HashOperations<String, String, T> opsForHash = redisTemplate.opsForHash();
return opsForHash.get(key, hKey);
}
/**
* 获取多个Hash中的数据
*
* @param key Redis键
* @param hKeys Hash键集合
* @return Hash对象集合
*/
public <T> List<T> getMultiCacheMapValue(final String key, final Collection<Object> hKeys)
{
return redisTemplate.opsForHash().multiGet(key, hKeys);
}
/**
* 删除Hash中的某条数据
*
* @param key Redis键
* @param hKey Hash键
* @return 是否成功
*/
public boolean deleteCacheMapValue(final String key, final String hKey)
{
return redisTemplate.opsForHash().delete(key, hKey) > 0;
}
/**
* 获得缓存的基本对象列表
*
* @param pattern 字符串前缀
* @return 对象列表
*/
public Collection<String> keys(final String pattern)
{
return redisTemplate.keys(pattern);
}
}

View File

@@ -4,12 +4,16 @@ import com.common.DeviceDTO;
import com.enums.DeviceStatusEnum;
import com.enums.EnterEnum;
import com.github.pagehelper.PageHelper;
import com.sv.entity.BarcodeOffline;
import com.sv.entity.Device;
import com.sv.exception.oms.OmsException;
import com.sv.mapper.BarcodeOfflineMapper;
import com.sv.mapper.DeviceMapper;
import com.sv.service.api.util.DateUtilCard;
import com.ydd.framework.core.common.Pagination;
import com.ydd.framework.core.common.dto.ResponseDTO;
import com.ydd.framework.core.service.impl.BaseServiceImpl;
import org.apache.commons.lang.time.DateUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpEntity;
@@ -21,6 +25,7 @@ import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
/**
@@ -40,6 +45,9 @@ public class DeviceService extends BaseServiceImpl {
@Resource
private RestTemplate restTemplate;
@Resource
private BarcodeOfflineMapper barcodeOfflineMapper;
/**
* 创建门禁设备
@@ -206,7 +214,6 @@ public class DeviceService extends BaseServiceImpl {
}
}
/**
* find by DeviceName
*/
@@ -214,5 +221,16 @@ public class DeviceService extends BaseServiceImpl {
return deviceMapper.findByDevice(venueId);
}
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);
}
}

View File

@@ -0,0 +1,109 @@
package com.sv.service.utils;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
import com.ydd.framework.core.exception.ServiceException;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Hashtable;
public class VenueBarcodeUtil {
private static final int BLACK = 0xFF000000;
private static final int WHITE = 0xFFFFFFFF;
private static final int margin = 0;
public static String generateBarcode(String barcodeValue,String fileName) {
try {
String geneFilePath = "/Users/limqhz/home/test/" + fileName;
makeBarcode(geneFilePath,barcodeValue);
return geneFilePath;
}catch (WriterException e) {
throw new ServiceException("生成二维码图片文件有问题");
}
}
private static void makeBarcode(String path, String barcodeValue) throws WriterException {
//二维码内容
String content = barcodeValue;
String format = "jpg";
int width = 200; // 二维码宽度
int height = 200;// 二维码高度
// 设置二维码矩阵的信息
BitMatrix bitMatrix = setBitMatrix(content, width, height);
// 设置输出流
OutputStream outStream = null;
try {
outStream = new FileOutputStream(new File(path));
// 目前 针对容错等级为H reduceWhiteArea 二维码空白区域的大小 根据实际情况设置,如果二维码内容长度不固定的话 需要自己根据实际情况计算reduceWhiteArea的大小
writeToFile(bitMatrix, format, outStream, 5);
outStream.close();
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
outStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 设置生成二维码矩阵信息
* @param content 二维码图片内容
* @param width 二维码图片宽度
* @param height 二维码图片高度
* @throws WriterException
*/
private static BitMatrix setBitMatrix(String content, int width, int height) throws WriterException {
BitMatrix bitMatrix = null;
Hashtable<EncodeHintType, Object> hints = new Hashtable<EncodeHintType, Object>();
hints.put(EncodeHintType.CHARACTER_SET, "UTF-8"); // 指定编码方式,避免中文乱码
hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H); // 指定纠错等级 如果二维码里面的内容比较多的话推荐使用H 容错率30% 这样可以避免一些扫描不出来的问题
hints.put(EncodeHintType.MARGIN, margin); // 指定二维码四周白色区域大小 官方的这个方法目前没有没有作用默认设置为0
bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height, hints);
return bitMatrix;
}
/**
* @param matrix
* @param format
* @param outStream
* @param reduceWhiteArea 二维码空白区域设置
* @throws IOException
*/
private static void writeToFile(BitMatrix matrix, String format, OutputStream outStream, int reduceWhiteArea) throws IOException {
BufferedImage image = toBufferedImage(matrix, reduceWhiteArea);
ImageIO.write(image, format, outStream);
}
/**
*
* @param matrix
* @param reduceWhiteArea
* @return
*/
private static BufferedImage toBufferedImage(BitMatrix matrix, int reduceWhiteArea) {
int width = matrix.getWidth();
int height = matrix.getHeight();
BufferedImage image = new BufferedImage(width - 2 * reduceWhiteArea, height - 2 * reduceWhiteArea, BufferedImage.TYPE_3BYTE_BGR);
for (int x = reduceWhiteArea; x < width - reduceWhiteArea; x++) {
for (int y = reduceWhiteArea; y < height - reduceWhiteArea; y++) {
image.setRGB(x - reduceWhiteArea, y - reduceWhiteArea, matrix.get(x, y) ? BLACK : WHITE);
}
}
return image;
}
}

View File

@@ -0,0 +1,152 @@
<?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.BarcodeEnterLogMapper" >
<resultMap id="BaseResultMap" type="com.sv.entity.BarcodeEnterLog" >
<constructor >
<idArg column="id" jdbcType="INTEGER" javaType="java.lang.Integer" />
<arg column="barcode" jdbcType="VARCHAR" javaType="java.lang.String" />
<arg column="venue_id" jdbcType="INTEGER" javaType="java.lang.Integer" />
<arg column="platform_id" jdbcType="INTEGER" javaType="java.lang.Integer" />
<arg column="created_id" jdbcType="INTEGER" javaType="java.lang.Integer" />
<arg column="modified_id" 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" />
<arg column="type" jdbcType="INTEGER" javaType="java.lang.Integer" />
</constructor>
</resultMap>
<sql id="Base_Column_List" >
id, barcode, venue_id, platform_id, created_id, modified_id, created_time, modified_time,
type
</sql>
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
select
<include refid="Base_Column_List" />
from sv_barcode_enter_venue_log
where id = #{id,jdbcType=INTEGER}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
delete from sv_barcode_enter_venue_log
where id = #{id,jdbcType=INTEGER}
</delete>
<insert id="insert" parameterType="com.sv.entity.BarcodeEnterLog" >
insert into sv_barcode_enter_venue_log (id, barcode, venue_id,
platform_id, created_id, modified_id,
created_time, modified_time, type
)
values (#{id,jdbcType=INTEGER}, #{barcode,jdbcType=VARCHAR}, #{venueId,jdbcType=INTEGER},
#{platformId,jdbcType=INTEGER}, #{createdId,jdbcType=INTEGER}, #{modifiedId,jdbcType=INTEGER},
#{createdTime,jdbcType=TIMESTAMP}, #{modifiedTime,jdbcType=TIMESTAMP}, #{type,jdbcType=INTEGER}
)
</insert>
<insert id="insertSelective" parameterType="com.sv.entity.BarcodeEnterLog" >
insert into sv_barcode_enter_venue_log
<trim prefix="(" suffix=")" suffixOverrides="," >
<if test="id != null" >
id,
</if>
<if test="barcode != null" >
barcode,
</if>
<if test="venueId != null" >
venue_id,
</if>
<if test="platformId != null" >
platform_id,
</if>
<if test="createdId != null" >
created_id,
</if>
<if test="modifiedId != null" >
modified_id,
</if>
<if test="createdTime != null" >
created_time,
</if>
<if test="modifiedTime != null" >
modified_time,
</if>
<if test="type != null" >
type,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides="," >
<if test="id != null" >
#{id,jdbcType=INTEGER},
</if>
<if test="barcode != null" >
#{barcode,jdbcType=VARCHAR},
</if>
<if test="venueId != null" >
#{venueId,jdbcType=INTEGER},
</if>
<if test="platformId != null" >
#{platformId,jdbcType=INTEGER},
</if>
<if test="createdId != null" >
#{createdId,jdbcType=INTEGER},
</if>
<if test="modifiedId != null" >
#{modifiedId,jdbcType=INTEGER},
</if>
<if test="createdTime != null" >
#{createdTime,jdbcType=TIMESTAMP},
</if>
<if test="modifiedTime != null" >
#{modifiedTime,jdbcType=TIMESTAMP},
</if>
<if test="type != null" >
#{type,jdbcType=INTEGER},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.sv.entity.BarcodeEnterLog" >
update sv_barcode_enter_venue_log
<set >
<if test="barcode != null" >
barcode = #{barcode,jdbcType=VARCHAR},
</if>
<if test="venueId != null" >
venue_id = #{venueId,jdbcType=INTEGER},
</if>
<if test="platformId != null" >
platform_id = #{platformId,jdbcType=INTEGER},
</if>
<if test="createdId != null" >
created_id = #{createdId,jdbcType=INTEGER},
</if>
<if test="modifiedId != null" >
modified_id = #{modifiedId,jdbcType=INTEGER},
</if>
<if test="createdTime != null" >
created_time = #{createdTime,jdbcType=TIMESTAMP},
</if>
<if test="modifiedTime != null" >
modified_time = #{modifiedTime,jdbcType=TIMESTAMP},
</if>
<if test="type != null" >
type = #{type,jdbcType=INTEGER},
</if>
</set>
where id = #{id,jdbcType=INTEGER}
</update>
<update id="updateByPrimaryKey" parameterType="com.sv.entity.BarcodeEnterLog" >
update sv_barcode_enter_venue_log
set barcode = #{barcode,jdbcType=VARCHAR},
venue_id = #{venueId,jdbcType=INTEGER},
platform_id = #{platformId,jdbcType=INTEGER},
created_id = #{createdId,jdbcType=INTEGER},
modified_id = #{modifiedId,jdbcType=INTEGER},
created_time = #{createdTime,jdbcType=TIMESTAMP},
modified_time = #{modifiedTime,jdbcType=TIMESTAMP},
type = #{type,jdbcType=INTEGER}
where id = #{id,jdbcType=INTEGER}
</update>
<select id="findLastByBarcode" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from sv_barcode_enter_venue_log
WHERE barcode = #{barcode,jdbcType=VARCHAR} order by created_time desc LIMIT 1
</select>
</mapper>

View File

@@ -0,0 +1,314 @@
<?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.BarcodeOfflineMapper">
<resultMap id="BaseResultMap" type="com.sv.entity.BarcodeOffline">
<constructor>
<idArg column="id" javaType="java.lang.Integer" jdbcType="INTEGER" />
<arg column="barcode" javaType="java.lang.String" jdbcType="VARCHAR" />
<arg column="start_time" javaType="java.util.Date" jdbcType="TIMESTAMP" />
<arg column="end_time" javaType="java.util.Date" jdbcType="TIMESTAMP" />
<arg column="venue_id" javaType="java.lang.Integer" jdbcType="INTEGER" />
<arg column="created_id" javaType="java.lang.Integer" jdbcType="INTEGER" />
<arg column="modified_id" javaType="java.lang.Integer" jdbcType="INTEGER" />
<arg column="created_time" javaType="java.util.Date" jdbcType="TIMESTAMP" />
<arg column="modified_time" javaType="java.util.Date" jdbcType="TIMESTAMP" />
<arg column="device_name" javaType="java.lang.String" jdbcType="VARCHAR" />
</constructor>
</resultMap>
<sql id="Base_Column_List">
id, barcode, start_time, end_time, venue_id, created_id, modified_id, created_time,
modified_time, device_name
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from sv_barcode_offline
where id = #{id,jdbcType=INTEGER}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
delete from sv_barcode_offline
where id = #{id,jdbcType=INTEGER}
</delete>
<insert id="insert" parameterType="com.sv.entity.BarcodeOffline">
insert into sv_barcode_offline (id, barcode, start_time,
end_time, venue_id, created_id,
modified_id, created_time, modified_time,
device_name)
values (#{id,jdbcType=INTEGER}, #{barcode,jdbcType=VARCHAR}, #{startTime,jdbcType=TIMESTAMP},
#{endTime,jdbcType=TIMESTAMP}, #{venueId,jdbcType=INTEGER}, #{createdId,jdbcType=INTEGER},
#{modifiedId,jdbcType=INTEGER}, #{createdTime,jdbcType=TIMESTAMP}, #{modifiedTime,jdbcType=TIMESTAMP},
#{deviceName,jdbcType=VARCHAR})
</insert>
<insert id="insertSelective" parameterType="com.sv.entity.BarcodeOffline">
insert into sv_barcode_offline
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
id,
</if>
<if test="barcode != null">
barcode,
</if>
<if test="startTime != null">
start_time,
</if>
<if test="endTime != null">
end_time,
</if>
<if test="venueId != null">
venue_id,
</if>
<if test="createdId != null">
created_id,
</if>
<if test="modifiedId != null">
modified_id,
</if>
<if test="createdTime != null">
created_time,
</if>
<if test="modifiedTime != null">
modified_time,
</if>
<if test="deviceName != null">
device_name,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id,jdbcType=INTEGER},
</if>
<if test="barcode != null">
#{barcode,jdbcType=VARCHAR},
</if>
<if test="startTime != null">
#{startTime,jdbcType=TIMESTAMP},
</if>
<if test="endTime != null">
#{endTime,jdbcType=TIMESTAMP},
</if>
<if test="venueId != null">
#{venueId,jdbcType=INTEGER},
</if>
<if test="createdId != null">
#{createdId,jdbcType=INTEGER},
</if>
<if test="modifiedId != null">
#{modifiedId,jdbcType=INTEGER},
</if>
<if test="createdTime != null">
#{createdTime,jdbcType=TIMESTAMP},
</if>
<if test="modifiedTime != null">
#{modifiedTime,jdbcType=TIMESTAMP},
</if>
<if test="deviceName != null">
#{deviceName,jdbcType=VARCHAR},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.sv.entity.BarcodeOffline">
update sv_barcode_offline
<set>
<if test="barcode != null">
barcode = #{barcode,jdbcType=VARCHAR},
</if>
<if test="startTime != null">
start_time = #{startTime,jdbcType=TIMESTAMP},
</if>
<if test="endTime != null">
end_time = #{endTime,jdbcType=TIMESTAMP},
</if>
<if test="venueId != null">
venue_id = #{venueId,jdbcType=INTEGER},
</if>
<if test="createdId != null">
created_id = #{createdId,jdbcType=INTEGER},
</if>
<if test="modifiedId != null">
modified_id = #{modifiedId,jdbcType=INTEGER},
</if>
<if test="createdTime != null">
created_time = #{createdTime,jdbcType=TIMESTAMP},
</if>
<if test="modifiedTime != null">
modified_time = #{modifiedTime,jdbcType=TIMESTAMP},
</if>
<if test="deviceName != null">
device_name = #{deviceName,jdbcType=VARCHAR},
</if>
</set>
where id = #{id,jdbcType=INTEGER}
</update>
<update id="updateByPrimaryKey" parameterType="com.sv.entity.BarcodeOffline">
update sv_barcode_offline
set barcode = #{barcode,jdbcType=VARCHAR},
start_time = #{startTime,jdbcType=TIMESTAMP},
end_time = #{endTime,jdbcType=TIMESTAMP},
venue_id = #{venueId,jdbcType=INTEGER},
created_id = #{createdId,jdbcType=INTEGER},
modified_id = #{modifiedId,jdbcType=INTEGER},
created_time = #{createdTime,jdbcType=TIMESTAMP},
modified_time = #{modifiedTime,jdbcType=TIMESTAMP},
device_name = #{deviceName,jdbcType=VARCHAR}
where id = #{id,jdbcType=INTEGER}
</update>
<resultMap id="BaseResultMap" type="com.sv.entity.BarcodeOffline">
<constructor>
<idArg column="id" javaType="java.lang.Integer" jdbcType="INTEGER" />
<arg column="barcode" javaType="java.lang.String" jdbcType="VARCHAR" />
<arg column="start_time" javaType="java.util.Date" jdbcType="TIMESTAMP" />
<arg column="end_time" javaType="java.util.Date" jdbcType="TIMESTAMP" />
<arg column="venue_id" javaType="java.lang.Integer" jdbcType="INTEGER" />
<arg column="created_id" javaType="java.lang.Integer" jdbcType="INTEGER" />
<arg column="modified_id" javaType="java.lang.Integer" jdbcType="INTEGER" />
<arg column="created_time" javaType="java.util.Date" jdbcType="TIMESTAMP" />
<arg column="modified_time" javaType="java.util.Date" jdbcType="TIMESTAMP" />
<arg column="device_name" javaType="java.lang.String" jdbcType="VARCHAR" />
</constructor>
</resultMap>
<sql id="Base_Column_List">
id, barcode, start_time, end_time, venue_id, created_id, modified_id, created_time,
modified_time, device_name
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from sv_barcode_offline
where id = #{id,jdbcType=INTEGER}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
delete from sv_barcode_offline
where id = #{id,jdbcType=INTEGER}
</delete>
<insert id="insert" parameterType="com.sv.entity.BarcodeOffline">
insert into sv_barcode_offline (id, barcode, start_time,
end_time, venue_id, created_id,
modified_id, created_time, modified_time,
device_name)
values (#{id,jdbcType=INTEGER}, #{barcode,jdbcType=VARCHAR}, #{startTime,jdbcType=TIMESTAMP},
#{endTime,jdbcType=TIMESTAMP}, #{venueId,jdbcType=INTEGER}, #{createdId,jdbcType=INTEGER},
#{modifiedId,jdbcType=INTEGER}, #{createdTime,jdbcType=TIMESTAMP}, #{modifiedTime,jdbcType=TIMESTAMP},
#{deviceName,jdbcType=VARCHAR})
</insert>
<insert id="insertSelective" parameterType="com.sv.entity.BarcodeOffline">
insert into sv_barcode_offline
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
id,
</if>
<if test="barcode != null">
barcode,
</if>
<if test="startTime != null">
start_time,
</if>
<if test="endTime != null">
end_time,
</if>
<if test="venueId != null">
venue_id,
</if>
<if test="createdId != null">
created_id,
</if>
<if test="modifiedId != null">
modified_id,
</if>
<if test="createdTime != null">
created_time,
</if>
<if test="modifiedTime != null">
modified_time,
</if>
<if test="deviceName != null">
device_name,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id,jdbcType=INTEGER},
</if>
<if test="barcode != null">
#{barcode,jdbcType=VARCHAR},
</if>
<if test="startTime != null">
#{startTime,jdbcType=TIMESTAMP},
</if>
<if test="endTime != null">
#{endTime,jdbcType=TIMESTAMP},
</if>
<if test="venueId != null">
#{venueId,jdbcType=INTEGER},
</if>
<if test="createdId != null">
#{createdId,jdbcType=INTEGER},
</if>
<if test="modifiedId != null">
#{modifiedId,jdbcType=INTEGER},
</if>
<if test="createdTime != null">
#{createdTime,jdbcType=TIMESTAMP},
</if>
<if test="modifiedTime != null">
#{modifiedTime,jdbcType=TIMESTAMP},
</if>
<if test="deviceName != null">
#{deviceName,jdbcType=VARCHAR},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.sv.entity.BarcodeOffline">
update sv_barcode_offline
<set>
<if test="barcode != null">
barcode = #{barcode,jdbcType=VARCHAR},
</if>
<if test="startTime != null">
start_time = #{startTime,jdbcType=TIMESTAMP},
</if>
<if test="endTime != null">
end_time = #{endTime,jdbcType=TIMESTAMP},
</if>
<if test="venueId != null">
venue_id = #{venueId,jdbcType=INTEGER},
</if>
<if test="createdId != null">
created_id = #{createdId,jdbcType=INTEGER},
</if>
<if test="modifiedId != null">
modified_id = #{modifiedId,jdbcType=INTEGER},
</if>
<if test="createdTime != null">
created_time = #{createdTime,jdbcType=TIMESTAMP},
</if>
<if test="modifiedTime != null">
modified_time = #{modifiedTime,jdbcType=TIMESTAMP},
</if>
<if test="deviceName != null">
device_name = #{deviceName,jdbcType=VARCHAR},
</if>
</set>
where id = #{id,jdbcType=INTEGER}
</update>
<update id="updateByPrimaryKey" parameterType="com.sv.entity.BarcodeOffline">
update sv_barcode_offline
set barcode = #{barcode,jdbcType=VARCHAR},
start_time = #{startTime,jdbcType=TIMESTAMP},
end_time = #{endTime,jdbcType=TIMESTAMP},
venue_id = #{venueId,jdbcType=INTEGER},
created_id = #{createdId,jdbcType=INTEGER},
modified_id = #{modifiedId,jdbcType=INTEGER},
created_time = #{createdTime,jdbcType=TIMESTAMP},
modified_time = #{modifiedTime,jdbcType=TIMESTAMP},
device_name = #{deviceName,jdbcType=VARCHAR}
where id = #{id,jdbcType=INTEGER}
</update>
<select id="selectByBarcode" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from sv_barcode_offline
where barcode = #{barcode,jdbcType=VARCHAR}
</select>
</mapper>

View File

@@ -90,7 +90,7 @@
domainObjectName 给表对应的 model 起名字
注意:大小写敏感问题。
-->
<table tableName="sv_barcode" domainObjectName="Barcode"
<table tableName="sv_barcode_enter_venue_log" domainObjectName="BarcodeEnterLog"
enableInsert="true"
enableDeleteByPrimaryKey="true"
enableSelectByPrimaryKey="true"