扫描二维码入场逻辑

This commit is contained in:
2023-09-05 09:27:00 +08:00
parent f0ef32ffc6
commit 52aa9659a2
41 changed files with 1562 additions and 492 deletions

View File

@@ -0,0 +1,26 @@
package com.sv.mapper;
import com.sv.annotation.NoPlatform;
import com.sv.entity.Barcode;
import org.apache.ibatis.annotations.Param;
public interface BarcodeMapper {
int deleteByPrimaryKey(Integer id);
@NoPlatform
int insert(Barcode record);
int insertSelective(Barcode record);
Barcode selectByPrimaryKey(Integer id);
int updateByPrimaryKeySelective(Barcode record);
int updateByPrimaryKey(Barcode record);
@NoPlatform
void writeOffCode(@Param("barcode") String barcode);
@NoPlatform
Barcode findBarcode(@Param("venueId") Integer venueId,@Param("memberId") Integer memberId);
}

View File

@@ -1,5 +1,6 @@
package com.sv.mapper;
import com.common.DeviceDTO;
import com.sv.annotation.NoPlatform;
import com.sv.entity.Device;
import org.apache.ibatis.annotations.Param;
@@ -50,6 +51,7 @@ public interface DeviceMapper {
* @param id 编号
* @return 门禁设备
*/
@NoPlatform
Device findById(Integer id);
/**
@@ -78,11 +80,11 @@ public interface DeviceMapper {
/**
* 根据记录找设备
* @param deviceName
* @param venueId
* @return
*/
Device findByDevice(@Param("deviceName") String deviceName,@Param("venueId") Integer venueId);
@NoPlatform
Device findByDevice(@Param("venueId") Integer venueId);
/**
* 设备绑定正在扫码的用户

View File

@@ -71,4 +71,6 @@ public interface MemberMoneyLogMapper {
* api 查询用户账单
*/
List<MemberMoneyLogDTO> findAllBill(Integer memberId);
}
MemberMoneyLog selectLastLog(@Param("memberId")Integer memberId, @Param("venueId")Integer venueId);
}

View File

@@ -23,6 +23,7 @@ import javax.annotation.Resource;
*/
@Service
@Transactional(readOnly = true)
@Deprecated
public class MemberFaceInfoService extends BaseServiceImpl {
private final Logger logger = LoggerFactory.getLogger(MemberFaceInfoService.class);

View File

@@ -132,5 +132,12 @@ public class MemberMoneyLogService extends MemberMoney {
public void insert(MemberMoneyLog memberMoneyLog){
memberMoneyLogMapper.insert(memberMoneyLog);
}
/**
* 插入
*/
public MemberMoneyLog selectLastLog(Integer memberId,Integer venueId){
return memberMoneyLogMapper.selectLastLog(memberId,venueId);
}
}

View File

@@ -251,6 +251,7 @@ public class OrderService extends BaseServiceImpl {
* @param memberId
* @return
*/
@Deprecated
public String createEnterVenueOrder(Venue venue, Integer memberId,PayTypeEnum payTypeEnum,BigDecimal price){
//创建订单
Order order = new Order();

View File

@@ -11,7 +11,6 @@ import com.sv.exception.api.ExceptionCodeTemplate;
import com.sv.mapper.VenueMapper;
import com.sv.service.api.util.DateUtilCard;
import com.sv.service.api.util.GeoHashUtils;
import com.sv.service.oms.DeviceService;
import com.ydd.framework.core.common.Pagination;
import com.ydd.framework.core.common.utils.ValidationUtils;
import com.ydd.framework.core.exception.ServiceException;
@@ -54,11 +53,6 @@ public class VenueService extends BaseServiceImpl {
@Resource
private MemberEnterVenueLogService memberEnterVenueLogService;
@Resource(name = "OrderServiceApi")
private OrderService orderService;
@Resource
private DeviceService deviceService;
@Resource
private MemberMoneyLogService memberMoneyLogService;
@Resource
@@ -120,9 +114,14 @@ public class VenueService extends BaseServiceImpl {
*/
public VenueDTO findByVenueId(Integer id,Integer memberId) {
VenueDTO getVenue = venueMapper.findByVenueId(id);
if (VenueTypeEnum.BASKETBALL.getValue().equals(getVenue.getType())){
MemberEnterVenueLog memberLastLog = memberEnterVenueLogService.findMemberLastLog(memberId, id);
getVenue.setEnterFlag(memberLastLog.getType());
if (getVenue != null) {
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());
}
}
}
return getVenue;
}
@@ -206,8 +205,8 @@ public class VenueService extends BaseServiceImpl {
* api 接口
* 我要进场
*/
public Integer join(Integer memberId, Integer venueId) {
public BarCodeResult join(Integer memberId, Integer venueId) {
BarCodeResult barCodeResult = new BarCodeResult();
Integer flag = 0;
// 判断用户是否登录
if (memberId == null) {
@@ -215,17 +214,8 @@ public class VenueService extends BaseServiceImpl {
}
//参数校验
ValidationUtils.assertNotNull(venueId);
/*// 1.判断用户有没有人脸识别的图像,根据用户ID查找一个用户只能有一条
MemberFaceInfo memberFaceInfo = memberFaceInfoService.findByMemberId(memberId);
if (memberFaceInfo == null) {
flag = 1;
return flag;
}*/
// 1.判断用户有没有该馆的会员卡(有效期内,如果有免费卡和别的卡,优先使用别的卡),有不判断余额
List<MemberCard> memberCards = memberCardService.findByMemberId(venueId, memberId);
// 2. 查询该场馆需要的费用,并比较用户余额是否足够
// 查询当前时间内,场馆对应的价格
String time = DateUtilCard.nowTime().toString();
@@ -233,23 +223,20 @@ public class VenueService extends BaseServiceImpl {
if (venuePrice == null) {
throw new ServiceException(ExceptionCodeTemplate.VENUE_ERROR);
}
Venue venue = venueMapper.findById(venueId);
if (memberCards.size() == 0) {
Member member = memberService.findById(memberId);
if (member.getMoney().compareTo(venuePrice.getPrice()) == -1) {
flag = 2;
return flag;
}
}
barCodeResult.setFlg(flag);
// 3.判断用户有没有人脸识别的图像,根据用户ID查找一个用户只能有一条
// MemberFaceInfo memberFaceInfo = memberFaceInfoService.findByMemberId(memberId);
// if (memberFaceInfo == null) {
// flag = 1;
// return flag;
// }
return flag;
return barCodeResult;
}
/**
@@ -260,7 +247,7 @@ public class VenueService extends BaseServiceImpl {
*/
public BarCodeResult out(Integer memberId, Integer venueId) {
BarCodeResult result = new BarCodeResult();
result.setCode("0");
result.setFlg(0);
// 判断用户是否登录
if (memberId == null) {
throw new ServiceException(com.ydd.framework.core.exception.ExceptionCodeTemplate.NEED_LOGIN);
@@ -268,17 +255,10 @@ public class VenueService extends BaseServiceImpl {
//参数校验
ValidationUtils.assertNotNull(venueId);
Venue venue = venueMapper.findById(venueId);
synchronized (("enter" + memberId).intern()) {
synchronized (("scancode" + memberId).intern()) {
// 查询当前时间内,场馆对应的价格(健身房没有价格)
Member member = memberService.findByMember(memberId);
memberService.verify(member);
// 记录用户进场记录
MemberEnterVenueLog log = new MemberEnterVenueLog();
log.setMemberId(member.getId());
log.setVeneuType(venue.getType());
log.setVenueId(venue.getId());
log.setPlatformId(member.getPlatformId());
log.setType(0);
//进场之前 查看是否有会员卡
List<MemberCard> cards = memberCardService.findByMemberId(venue.getId(), member.getId());
if (cards.size() > 0) {
@@ -309,24 +289,18 @@ public class VenueService extends BaseServiceImpl {
if (useCard != null) {
//使用会员卡入场
logger.info("用户" + member.getNickname() + "使用" + useCard.getCardType() + "入场");
log.setMemberCardId(useCard.getId());
log.setPayType(EnterVenuePayTypeEnum.MEMBER_CARD.value);
String orderSn = orderService.createEnterVenueOrder(venue, member.getId(), PayTypeEnum.MEMBER_CARD, BigDecimal.ZERO);
// 会员卡入场,增加记录
createMemberMoneyLog(MoneyLogEnum.JOIN.value, venue.getPrice(), member.getId(), member.getPlatformId(), PayTypeEnum.MEMBER_CARD.value, useCard.getCardType(),
venue.getId(), venue.getType());
log.setOrderSn(orderSn);
memberEnterVenueLogService.save(log);
// 如果是单次卡,清除单次卡
if (VipTypeEnum.ONCECARD.value.equals(useCard.getCardType())
|| VipTypeEnum.PUB_ONCECARD.value.equals(useCard.getCardType())){
memberCardService.delete(useCard.getId());
}
result.setBarcode("test123456");
}else {
//查无可用会员卡
logger.info("用户" + member.getNickname() + "您好!请先购买会员卡再进场");
result.setCode("1");
result.setFlg(1);
result.setMsg("未查询到会员卡,请先购买");
}
}else {
@@ -335,15 +309,12 @@ public class VenueService extends BaseServiceImpl {
VenuePrice venuePrice = venuePriceService.findPrice(venueId, time);
if (memberService.isMoneyEnough(member.getId(), venuePrice.getPrice())) {
logger.info("用户" + member.getNickname() + "使用余额进场");
String orderSn = orderService.createEnterVenueOrder(venue, member.getId(), PayTypeEnum.BALANCE, venuePrice.getPrice());
log.setOrderSn(orderSn);
log.setPayType(EnterVenuePayTypeEnum.WEI_XIN.value);
memberEnterVenueLogService.save(log);
result.setBarcode("test123456");
createMemberMoneyLog(MoneyLogEnum.JOIN.value, venuePrice.getPrice(), member.getId(), member.getPlatformId(), PayTypeEnum.BALANCE.value, null,
venue.getId(), venue.getType());
} else {
//余额不足
logger.error("用户" + member.getNickname() + "余额不足进场失败");
result.setCode("1");
result.setFlg(1);
result.setMsg("余额不足,请先充值");
}
}
@@ -398,32 +369,11 @@ public class VenueService extends BaseServiceImpl {
return StringUtils.isNotBlank(longitude) && StringUtils.isNotBlank(latitude);
}
/**
* 二维码入场-判断是否成功入场
*
* @return 0成功 -1失败
*/
@Transactional
public synchronized boolean qrCodeEnterVenue(Integer memberId, String deviceName,Integer venueId,Venue venue) {
return false;
}
// 记录使用会员卡入场记录
// 记录入场记录
@Transactional
public void createMemberMoneyLog(Integer type, BigDecimal price, Integer memberId, Integer platformId, Integer payType, String cardType,
Integer venueId, Integer venueType) {
MemberMoneyLog memberMoneyLog = new MemberMoneyLog();
memberMoneyLog.setType(type);
memberMoneyLog.setMoney(price.negate());
memberMoneyLog.setMemberId(memberId);
memberMoneyLog.setPlatformId(platformId);
memberMoneyLog.setPayType(payType);
memberMoneyLog.setCardType(cardType);
memberMoneyLog.setVenueId(venueId);
memberMoneyLog.setVenueType(venueType);
// memberMoneyLog.setLessonId(lessonId);
memberMoneyLogService.insert(memberMoneyLog);
memberMoneyLogService.create(memberId,platformId == null ? 1 : platformId,type,price.negate(),payType,cardType,venueId,venueType,null);
}
@Transactional(rollbackFor = Exception.class)

View File

@@ -2,6 +2,7 @@ package com.sv.service.oms;
import com.common.DeviceDTO;
import com.enums.DeviceStatusEnum;
import com.enums.EnterEnum;
import com.github.pagehelper.PageHelper;
import com.sv.entity.Device;
import com.sv.exception.oms.OmsException;
@@ -20,8 +21,6 @@ import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
import java.sql.SQLException;
import java.util.Date;
import java.util.List;
/**
@@ -170,12 +169,13 @@ public class DeviceService extends BaseServiceImpl {
deviceMapper.update(device);
}
@Deprecated
public void reconnect(Integer deviceId){
try {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(null,headers);
ResponseDTO responseDTO = restTemplate.postForObject("http://127.0.0.1:8000/device/reconnect/"+deviceId, request, ResponseDTO.class);
ResponseDTO responseDTO = restTemplate.postForObject("http://127.0.0.1:8093/device/reconnect/"+deviceId, request, ResponseDTO.class);
Integer code = (Integer) responseDTO.get(ResponseDTO.ERR_CODE);
if(0 != code){
throw new OmsException("重启失败!");
@@ -183,15 +183,35 @@ public class DeviceService extends BaseServiceImpl {
}catch (Exception e){
throw new OmsException("连接失败!");
}
}
public void adminOperate(Integer deviceId,EnterEnum enterEnum){
try {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(null,headers);
ResponseDTO responseDTO = null;
if (EnterEnum.ENTER.equals(enterEnum)){
responseDTO = restTemplate.postForObject("http://127.0.0.1:8093/admin/enter/"+deviceId, request, ResponseDTO.class);
}else {
responseDTO = restTemplate.postForObject("http://127.0.0.1:8093/admin/out/"+deviceId, request, ResponseDTO.class);
}
Integer code = (Integer) responseDTO.get(ResponseDTO.ERR_CODE);
if(0 != code){
throw new OmsException("开门失败,设备离线或者门禁异常!");
}
}catch (Exception e){
logger.error("设备离线或者门禁异常",e);
throw new OmsException("开门失败,设备离线或者门禁异常!");
}
}
/**
* find by DeviceName
*/
public Device findByDevice(String deviceName, Integer venueId){
return deviceMapper.findByDevice(deviceName,venueId);
public Device findByDevice(Integer venueId){
return deviceMapper.findByDevice(venueId);
}
}

View File

@@ -0,0 +1,171 @@
<?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.BarcodeMapper" >
<resultMap id="BaseResultMap" type="com.sv.entity.Barcode" >
<constructor >
<idArg column="id" jdbcType="INTEGER" javaType="java.lang.Integer" />
<arg column="barcode" jdbcType="VARCHAR" javaType="java.lang.String" />
<arg column="status" 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="enter" 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" />
</constructor>
</resultMap>
<sql id="Base_Column_List" >
id, barcode, status, member_id, venue_id, enter, created_id, modified_id, created_time,
modified_time
</sql>
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
select
<include refid="Base_Column_List" />
from sv_barcode
where id = #{id,jdbcType=INTEGER}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
delete from sv_barcode
where id = #{id,jdbcType=INTEGER}
</delete>
<insert id="insert" parameterType="com.sv.entity.Barcode" >
insert into sv_barcode (id, barcode, status,
member_id, venue_id, enter,
created_id, modified_id, created_time,
modified_time)
values (#{id,jdbcType=INTEGER}, #{barcode,jdbcType=VARCHAR}, #{status,jdbcType=INTEGER},
#{memberId,jdbcType=INTEGER}, #{venueId,jdbcType=INTEGER}, #{enter,jdbcType=INTEGER},
#{createdId,jdbcType=INTEGER}, #{modifiedId,jdbcType=INTEGER}, #{createdTime,jdbcType=TIMESTAMP},
#{modifiedTime,jdbcType=TIMESTAMP})
</insert>
<insert id="insertSelective" parameterType="com.sv.entity.Barcode" >
insert into sv_barcode
<trim prefix="(" suffix=")" suffixOverrides="," >
<if test="id != null" >
id,
</if>
<if test="barcode != null" >
barcode,
</if>
<if test="status != null" >
status,
</if>
<if test="memberId != null" >
member_id,
</if>
<if test="venueId != null" >
venue_id,
</if>
<if test="enter != null" >
enter,
</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>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides="," >
<if test="id != null" >
#{id,jdbcType=INTEGER},
</if>
<if test="barcode != null" >
#{barcode,jdbcType=VARCHAR},
</if>
<if test="status != null" >
#{status,jdbcType=INTEGER},
</if>
<if test="memberId != null" >
#{memberId,jdbcType=INTEGER},
</if>
<if test="venueId != null" >
#{venueId,jdbcType=INTEGER},
</if>
<if test="enter != null" >
#{enter,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>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.sv.entity.Barcode" >
update sv_barcode
<set >
<if test="barcode != null" >
barcode = #{barcode,jdbcType=VARCHAR},
</if>
<if test="status != null" >
status = #{status,jdbcType=INTEGER},
</if>
<if test="memberId != null" >
member_id = #{memberId,jdbcType=INTEGER},
</if>
<if test="venueId != null" >
venue_id = #{venueId,jdbcType=INTEGER},
</if>
<if test="enter != null" >
enter = #{enter,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>
</set>
where id = #{id,jdbcType=INTEGER}
</update>
<update id="updateByPrimaryKey" parameterType="com.sv.entity.Barcode" >
update sv_barcode
set barcode = #{barcode,jdbcType=VARCHAR},
status = #{status,jdbcType=INTEGER},
member_id = #{memberId,jdbcType=INTEGER},
venue_id = #{venueId,jdbcType=INTEGER},
enter = #{enter,jdbcType=INTEGER},
created_id = #{createdId,jdbcType=INTEGER},
modified_id = #{modifiedId,jdbcType=INTEGER},
created_time = #{createdTime,jdbcType=TIMESTAMP},
modified_time = #{modifiedTime,jdbcType=TIMESTAMP}
where id = #{id,jdbcType=INTEGER}
</update>
<update id="writeOffCode" parameterType="String" >
update sv_barcode
set status = 1
where barcode = #{barcode,jdbcType=VARCHAR}
</update>
<select id="findBarcode" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
select
<include refid="Base_Column_List" />
from sv_barcode
where member_id = #{memberId,jdbcType=INTEGER}
and venue_id = #{venueId,jdbcType=INTEGER}
and status = 0
</select>
</mapper>

View File

@@ -8,8 +8,6 @@
<result column="stream" property="stream"/>
<result column="venue_id" property="venueId"/>
<result column="venue_type" property="venueType"/>
<result column="bind_member" property="bindMember"/>
<result column="bind_time" property="bindTime"/>
<result column="status" property="status"/>
<result column="created_id" property="createdId"/>
<result column="modified_id" property="modifiedId"/>
@@ -35,9 +33,6 @@
venue_id,
status,
venue_type,
device_type,
bind_member,
bind_time,
created_id,
modified_id,
created_time,
@@ -52,8 +47,6 @@
#{stream, jdbcType=VARCHAR},
#{venue_id, jdbcType=INTEGER},
#{venue_type, jdbcType=INTEGER},
#{bind_member, jdbcType=INTEGER},
#{bind_time, jdbcType=TIMESTAMP},
#{createdId, jdbcType=INTEGER},
#{modifiedId, jdbcType=INTEGER},
#{createdTime, jdbcType=TIMESTAMP},
@@ -92,12 +85,6 @@
<if test="venueType != null">
venue_type,
</if>
<if test="bindMember != null">
bind_member,
</if>
<if test="bindTime != null">
bind_time,
</if>
<if test="status != null">
status,
</if>
@@ -133,12 +120,6 @@
<if test="venueType != null">
#{venueType},
</if>
<if test="bindMember != null">
#{bindMember},
</if>
<if test="bindTime != null">
#{bindTime},
</if>
<if test="status != null">
#{status},
</if>
@@ -203,12 +184,6 @@
<if test="venueType != null">
venue_type = #{venueType},
</if>
<if test="bindMember != null">
bind_member = #{bindMember},
</if>
<if test="bindTime != null">
bind_time = #{bindTime},
</if>
<if test="createdId != null">
created_id = #{createdId},
</if>
@@ -275,16 +250,16 @@
<select id="findByDevice" resultType="com.sv.entity.Device">
SELECT
<include refid="Field"></include> FROM sv_device
WHERE 1=1 AND name = #{deviceName} and venue_id=#{venueId} and deleted = 0
WHERE 1=1 and venue_id=#{venueId} and deleted = 0 and status = 2
</select>
<update id="bindMember">
UPDATE sv_device set bind_member = #{bindMember},bind_time = now()
WHERE name = #{deviceName} and venue_id=#{venueId}
</update>
<!-- <update id="bindMember">-->
<!-- UPDATE sv_device set bind_member = #{bindMember},bind_time = now()-->
<!-- WHERE name = #{deviceName} and venue_id=#{venueId}-->
<!-- </update>-->
<update id="unBindMember">
UPDATE sv_device set bind_member = null,bind_time = null
WHERE name = #{deviceName} and venue_id=#{venueId}
</update>
<!-- <update id="unBindMember">-->
<!-- UPDATE sv_device set bind_member = null,bind_time = null-->
<!-- WHERE name = #{deviceName} and venue_id=#{venueId}-->
<!-- </update>-->
</mapper>

View File

@@ -331,7 +331,7 @@
<select id="findLastByMember" resultMap="MemberEnterVeneuLogMap">
SELECT id,member_id,venue_id,created_time,member_card_id,type
FROM sv_member_enter_veneu_log
WHERE member_id = #{memberId} and type = 0 and venue_id = #{venueId} and deleted = 0 order by created_time desc LIMIT 1
WHERE member_id = #{memberId} and venue_id = #{venueId} and deleted = 0 order by created_time desc LIMIT 1
</select>
<select id="findLastNoTypeByMember" resultMap="MemberEnterVeneuLogMap">
@@ -352,4 +352,4 @@
and DATE_FORMAT(created_time,'%X-%m-%d') = #{today} and deleted = 0
</select>
</mapper>
</mapper>

View File

@@ -48,7 +48,7 @@
<sql id="tableName">
sv_member_money_log
</sql>
<!-- 字段 -->
<sql id="Field">
id,
@@ -331,4 +331,20 @@
ORDER BY
created_time DESC
</select>
</mapper>
<!-- oms 查询用户账单 -->
<select id="selectLastLog" resultMap="MemberMoneyLogMap">
SELECT
<include refid="Field"></include>
FROM
sv_member_money_log
WHERE
member_id = #{memberId}
AND venue_id = #{venueId}
AND deleted = 0
ORDER BY
created_time DESC
LIMIT 1
</select>
</mapper>

View File

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