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 venueId, Integer venueType) { Integer payType, String cardType,
memberMoneyLogService.create(memberId,platformId == null ? 1 : platformId,type,price.negate(),payType,cardType,venueId,venueType,null); Integer venueId, Integer venueType) {
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("退款金额不能超过总支付金额!");
} }