release-20260330 - 修改为手机开门,不扫码。

This commit is contained in:
2026-04-07 09:46:33 +08:00
parent c0b011c098
commit a1e22e9773
2 changed files with 36 additions and 24 deletions

3
.gitignore vendored
View File

@@ -28,3 +28,6 @@ hs_err_pid*
target target
*.iml *.iml
.vscode
.DS_Store

View File

@@ -25,7 +25,6 @@ import javax.annotation.Resource;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.*; import java.util.*;
/** /**
* Service - 场馆 * Service - 场馆
* *
@@ -51,7 +50,6 @@ public class VenueEnterService extends BaseServiceImpl {
@Resource @Resource
OrderMapper orderMapper; OrderMapper orderMapper;
/** /**
* api 接口 * api 接口
* 我要进场 * 我要进场
@@ -63,7 +61,7 @@ public class VenueEnterService extends BaseServiceImpl {
if (memberId == null) { if (memberId == null) {
throw new ServiceException(com.ydd.framework.core.exception.ExceptionCodeTemplate.NEED_LOGIN); throw new ServiceException(com.ydd.framework.core.exception.ExceptionCodeTemplate.NEED_LOGIN);
} }
//参数校验 // 参数校验
ValidationUtils.assertNotNull(venueId); ValidationUtils.assertNotNull(venueId);
// 2. 查询该场馆需要的费用,并比较用户余额是否足够 // 2. 查询该场馆需要的费用,并比较用户余额是否足够
// 查询当前时间内,场馆对应的价格 // 查询当前时间内,场馆对应的价格
@@ -74,7 +72,7 @@ public class VenueEnterService extends BaseServiceImpl {
throw new ServiceException(ExceptionCodeTemplate.VENUE_ERROR); throw new ServiceException(ExceptionCodeTemplate.VENUE_ERROR);
} }
BigDecimal price = venuePrice.getPrice(); BigDecimal price = venuePrice.getPrice();
if (PayStyleEnum.HOUR.getValue() == venue.getPayStyle()){ if (PayStyleEnum.HOUR.getValue() == venue.getPayStyle()) {
// 按时入场余额需要包含两个小时的场地费 // 按时入场余额需要包含两个小时的场地费
price = price.multiply(new BigDecimal(2)); price = price.multiply(new BigDecimal(2));
} }
@@ -88,19 +86,19 @@ public class VenueEnterService extends BaseServiceImpl {
if (price.compareTo(BigDecimal.ZERO) > 0) { if (price.compareTo(BigDecimal.ZERO) > 0) {
checkOrderPaying(memberId); checkOrderPaying(memberId);
basketEnterResult.setFlg(2); basketEnterResult.setFlg(2);
if (PayStyleEnum.HOUR.getValue() == venue.getPayStyle()){ if (PayStyleEnum.HOUR.getValue() == venue.getPayStyle()) {
basketEnterResult.setMsg("预付押金"+ price + "元,出门后按分钟结算,收费规则见场馆主页详情"); basketEnterResult.setMsg("预付押金" + price + "元,出门后按分钟结算,收费规则见场馆主页详情");
} else { } else {
basketEnterResult.setMsg("订单金额"+ price + "元,请确认!"); basketEnterResult.setMsg("订单金额" + price + "元,请确认!");
} }
basketEnterResult.setMoney(price); basketEnterResult.setMoney(price);
} else { } else {
logger.info(memberId + "&用户创建订单,开始进场,免费入场"); logger.info(memberId + "&用户创建订单,开始进场,免费入场");
Integer timePayHour = 2; Integer timePayHour = 2;
if(PayStyleEnum.TIME.getValue() == venue.getPayStyle()){ if (PayStyleEnum.TIME.getValue() == venue.getPayStyle()) {
timePayHour = venue.getTimePayHour() != null ? venue.getTimePayHour() : 4; timePayHour = venue.getTimePayHour() != null ? venue.getTimePayHour() : 4;
} }
createBarcodeTimeOrder(memberId,venueId,timePayHour,"000"); createBarcodeTimeOrder(memberId, venueId, timePayHour, "000");
} }
} else { } else {
// 已有有效订单 // 已有有效订单
@@ -119,6 +117,7 @@ public class VenueEnterService extends BaseServiceImpl {
/** /**
* 我要出场 * 我要出场
*
* @param memberId * @param memberId
* @param venueId * @param venueId
* @return * @return
@@ -158,7 +157,8 @@ public class VenueEnterService extends BaseServiceImpl {
BigDecimal deposit = basePrice.multiply(new BigDecimal(2)); BigDecimal deposit = basePrice.multiply(new BigDecimal(2));
BigDecimal difference = actualCost.subtract(deposit); BigDecimal difference = actualCost.subtract(deposit);
logger.info("用户出场$" + memberId + "$经过" + minutes + "分钟,实际费用:" + actualCost + ",押金:" + deposit + ",差额:" + difference); logger.info("用户出场$" + memberId + "$经过" + minutes + "分钟,实际费用:" + actualCost + ",押金:" + deposit + ",差额:"
+ difference);
if (difference.compareTo(BigDecimal.ZERO) > 0) { if (difference.compareTo(BigDecimal.ZERO) > 0) {
checkOrderPaying(memberId); checkOrderPaying(memberId);
@@ -196,6 +196,7 @@ public class VenueEnterService extends BaseServiceImpl {
/** /**
* 用户五分钟内有过微信支付,不能在结果未出来之前就让用户付款 * 用户五分钟内有过微信支付,不能在结果未出来之前就让用户付款
*
* @param memberId * @param memberId
*/ */
private void checkOrderPaying(Integer memberId) { private void checkOrderPaying(Integer memberId) {
@@ -222,9 +223,11 @@ public class VenueEnterService extends BaseServiceImpl {
* @param venueId * @param venueId
* @param venueType * @param venueType
*/ */
public void createMemberMoneyLog(Integer type, BigDecimal price, Integer memberId, Integer platformId, Integer payType, String cardType, public void createMemberMoneyLog(Integer type, BigDecimal price, Integer memberId, Integer platformId,
Integer payType, String cardType,
Integer venueId, Integer venueType) { Integer venueId, Integer venueType) {
memberMoneyLogService.create(memberId,platformId == null ? 1 : platformId,type,price.negate(),payType,cardType,venueId,venueType,null); memberMoneyLogService.create(memberId, platformId == null ? 1 : platformId, type, price.negate(), payType,
cardType, venueId, venueType, null);
} }
public void addNumber(Integer venueId, Integer number, Integer memberId) { public void addNumber(Integer venueId, Integer number, Integer memberId) {
@@ -239,17 +242,18 @@ public class VenueEnterService extends BaseServiceImpl {
/** /**
* 按次入场订单入库 * 按次入场订单入库
*
* @param memberId * @param memberId
* @param venueId * @param venueId
* @param timePayHour * @param timePayHour
*/ */
private void createBarcodeTimeOrder(Integer memberId, Integer venueId, Integer timePayHour,String orderSn) { private void createBarcodeTimeOrder(Integer memberId, Integer venueId, Integer timePayHour, String orderSn) {
Date startDate = new Date(); Date startDate = new Date();
Date endDate = DateUtilCard.addHours(startDate, timePayHour); Date endDate = DateUtilCard.addHours(startDate, timePayHour);
// // 如果小于2小时则默认给15分钟宽限期包时订单 // // 如果小于2小时则默认给15分钟宽限期包时订单
// if (timePayHour <= 2) { // if (timePayHour <= 2) {
// endDate = DateUtilCard.addMinute(endDate,15); // endDate = DateUtilCard.addMinute(endDate,15);
// } // }
BarcodeOrderTime barcodeOrderTime = new BarcodeOrderTime(); BarcodeOrderTime barcodeOrderTime = new BarcodeOrderTime();
barcodeOrderTime.setMemberId(memberId); barcodeOrderTime.setMemberId(memberId);
barcodeOrderTime.setVenueId(venueId); barcodeOrderTime.setVenueId(venueId);
@@ -263,6 +267,7 @@ public class VenueEnterService extends BaseServiceImpl {
/** /**
* 支付成功 * 支付成功
*
* @param order * @param order
*/ */
public void paySuccess(Order order) { public void paySuccess(Order order) {
@@ -271,10 +276,11 @@ public class VenueEnterService extends BaseServiceImpl {
Integer memberId = order.getMemberId(); Integer memberId = order.getMemberId();
Integer venueId = order.getParentOrderId(); Integer venueId = order.getParentOrderId();
Venue venue = venueMapper.findById(venueId); Venue venue = venueMapper.findById(venueId);
createMemberMoneyLog(MoneyLogEnum.JOIN.value, order.getPrice(), memberId, order.getPlatformId(), PayTypeEnum.WEI_XIN.value, null,venue.getId(), venue.getType()); createMemberMoneyLog(MoneyLogEnum.JOIN.value, order.getPrice(), memberId, order.getPlatformId(),
PayTypeEnum.WEI_XIN.value, null, venue.getId(), venue.getType());
if (EnterEnum.OUT.value != enterFlag) { if (EnterEnum.OUT.value != enterFlag) {
Integer timePayHour = 8; // 此处修改押金小时数 Integer timePayHour = 8; // 此处修改押金小时数
if(PayStyleEnum.TIME.getValue() == venue.getPayStyle()){ if (PayStyleEnum.TIME.getValue() == venue.getPayStyle()) {
// 按次入场先收钱,且多久不收钱,出场不收钱 // 按次入场先收钱,且多久不收钱,出场不收钱
// 该用户上次订单的是否逾期 // 该用户上次订单的是否逾期
timePayHour = venue.getTimePayHour(); timePayHour = venue.getTimePayHour();
@@ -282,9 +288,10 @@ public class VenueEnterService extends BaseServiceImpl {
timePayHour = 8; timePayHour = 8;
} }
} }
createBarcodeTimeOrder(memberId,venueId,timePayHour,order.getOrderSn()); createBarcodeTimeOrder(memberId, venueId, timePayHour, order.getOrderSn());
} else { } else {
BarcodeOrderTime lastOrder = barcodeOrderTimeMapper.findLastOrderBySn(memberId, venueId,order.getOrderSn()); BarcodeOrderTime lastOrder = barcodeOrderTimeMapper.findLastOrderBySn(memberId, venueId,
order.getOrderSn());
if (lastOrder != null) { if (lastOrder != null) {
lastOrder.setPaying(2); lastOrder.setPaying(2);
lastOrder.setStatus(BarCodeStatusEnum.USED.getValue()); lastOrder.setStatus(BarCodeStatusEnum.USED.getValue());
@@ -296,6 +303,7 @@ public class VenueEnterService extends BaseServiceImpl {
/** /**
* 我的进场订单 * 我的进场订单
*
* @param memberId * @param memberId
* @param pagination * @param pagination
* @return * @return
@@ -331,7 +339,7 @@ public class VenueEnterService extends BaseServiceImpl {
if (1 == paying) { if (1 == paying) {
memberEnterOrderDTO.setStatus(EnterOrderStatusEnum.PAYING.value); memberEnterOrderDTO.setStatus(EnterOrderStatusEnum.PAYING.value);
} }
if (0 == paying){ if (0 == paying) {
memberEnterOrderDTO.setStatus(EnterOrderStatusEnum.USING.value); memberEnterOrderDTO.setStatus(EnterOrderStatusEnum.USING.value);
} }
} }
@@ -357,7 +365,8 @@ public class VenueEnterService extends BaseServiceImpl {
throw new ServiceException("订单多次支付(使用超时),无法进行退款!"); throw new ServiceException("订单多次支付(使用超时),无法进行退款!");
} }
Order baseOrder = orderMapper.findByOrderSn(orderSn); Order baseOrder = orderMapper.findByOrderSn(orderSn);
BigDecimal currentSumPayMoney = barcodeOrder.getSumPayMoney() == null ? BigDecimal.ZERO : barcodeOrder.getSumPayMoney(); BigDecimal currentSumPayMoney = barcodeOrder.getSumPayMoney() == null ? BigDecimal.ZERO
: barcodeOrder.getSumPayMoney();
if (currentSumPayMoney.add(payMoney).compareTo(baseOrder.getPrice()) > 0) { if (currentSumPayMoney.add(payMoney).compareTo(baseOrder.getPrice()) > 0) {
throw new ServiceException("退款金额不能超过总支付金额!"); throw new ServiceException("退款金额不能超过总支付金额!");
} }