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
*.iml
.vscode
.DS_Store

View File

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