You've already forked FrameTour-BE
Compare commits
7 Commits
0ff0b75910
...
7d2666128a
| Author | SHA1 | Date | |
|---|---|---|---|
| 7d2666128a | |||
| 5c416f6c09 | |||
| 829ab50b03 | |||
| 03fd80a313 | |||
| cf829bec2f | |||
| cbeaee751f | |||
| bea5255927 |
@@ -93,16 +93,6 @@ public class AppOrderV2Controller {
|
|||||||
FaceRespVO face = faceResponse.getData();
|
FaceRespVO face = faceResponse.getData();
|
||||||
Long scenicId = face.getScenicId();
|
Long scenicId = face.getScenicId();
|
||||||
|
|
||||||
// 先尝试从Redis缓存获取价格计算结果
|
|
||||||
PriceCalculationResult cachedResult = priceCacheService.getCachedPriceResult(
|
|
||||||
currentUserId, scenicId, request.getProducts());
|
|
||||||
|
|
||||||
if (cachedResult != null) {
|
|
||||||
log.info("命中价格缓存: userId={}, scenicId={}, finalAmount={}",
|
|
||||||
currentUserId, scenicId, cachedResult.getFinalAmount());
|
|
||||||
return ApiResponse.success(cachedResult);
|
|
||||||
}
|
|
||||||
|
|
||||||
request.getProducts().forEach(product -> {
|
request.getProducts().forEach(product -> {
|
||||||
switch (product.getProductType()) {
|
switch (product.getProductType()) {
|
||||||
case VLOG_VIDEO:
|
case VLOG_VIDEO:
|
||||||
|
|||||||
@@ -89,6 +89,7 @@ public class AppScenicController {
|
|||||||
resp.setVideoSourcePackHint(scenicConfig.getVideoSourcePackHint());
|
resp.setVideoSourcePackHint(scenicConfig.getVideoSourcePackHint());
|
||||||
resp.setImageSourcePackHint(scenicConfig.getImageSourcePackHint());
|
resp.setImageSourcePackHint(scenicConfig.getImageSourcePackHint());
|
||||||
resp.setVoucherEnable(scenicConfig.getVoucherEnable());
|
resp.setVoucherEnable(scenicConfig.getVoucherEnable());
|
||||||
|
resp.setEnableVoucher(scenicConfig.getVoucherEnable()); // compactible
|
||||||
return ApiResponse.success(resp);
|
return ApiResponse.success(resp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -46,4 +46,5 @@ public class ScenicConfigResp {
|
|||||||
private String imageSourcePackHint = "";
|
private String imageSourcePackHint = "";
|
||||||
private String videoSourcePackHint = "";
|
private String videoSourcePackHint = "";
|
||||||
private Boolean voucherEnable;
|
private Boolean voucherEnable;
|
||||||
|
private Boolean enableVoucher;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -82,6 +82,14 @@ public class VoucherPrintServiceImpl implements VoucherPrintService {
|
|||||||
// 验证faceId是否属于当前用户
|
// 验证faceId是否属于当前用户
|
||||||
validateFaceOwnership(request.getFaceId(), currentUserId);
|
validateFaceOwnership(request.getFaceId(), currentUserId);
|
||||||
|
|
||||||
|
ScenicConfigManager config = scenicRepository.getScenicConfigManager(face.getScenicId());
|
||||||
|
Long brokerId = config.getLong("voucher_broker_id");
|
||||||
|
if (brokerId != null) {
|
||||||
|
if (!request.getBrokerId().equals(brokerId)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 使用Redis分布式锁防止重复打印
|
// 使用Redis分布式锁防止重复打印
|
||||||
String lockKey = String.format(PRINT_LOCK_KEY, request.getFaceId(), request.getBrokerId(), request.getScenicId());
|
String lockKey = String.format(PRINT_LOCK_KEY, request.getFaceId(), request.getBrokerId(), request.getScenicId());
|
||||||
String lockValue = UUID.randomUUID().toString();
|
String lockValue = UUID.randomUUID().toString();
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ public class VoucherServiceImpl implements IVoucherService {
|
|||||||
// 检查券码状态和可用性
|
// 检查券码状态和可用性
|
||||||
if (VoucherCodeStatus.UNCLAIMED.getCode().equals(voucherCodeEntity.getStatus())) {
|
if (VoucherCodeStatus.UNCLAIMED.getCode().equals(voucherCodeEntity.getStatus())) {
|
||||||
// 未领取状态,检查是否可以领取
|
// 未领取状态,检查是否可以领取
|
||||||
if (faceId != null && canClaimVoucher(faceId, voucherCodeEntity.getScenicId())) {
|
if (faceId != null) { // && canClaimVoucher(faceId, voucherCodeEntity.getScenicId())
|
||||||
voucherInfo.setAvailable(true);
|
voucherInfo.setAvailable(true);
|
||||||
} else {
|
} else {
|
||||||
voucherInfo.setAvailable(false);
|
voucherInfo.setAvailable(false);
|
||||||
|
|||||||
@@ -795,12 +795,12 @@ public class OrderServiceImpl implements OrderService {
|
|||||||
order.setPrice(cachedResult.getFinalAmount());
|
order.setPrice(cachedResult.getFinalAmount());
|
||||||
// promo code
|
// promo code
|
||||||
order.setPayPrice(cachedResult.getFinalAmount());
|
order.setPayPrice(cachedResult.getFinalAmount());
|
||||||
if (order.getPayPrice().equals(BigDecimal.ZERO)) {
|
}
|
||||||
order.setStatus(OrderStateEnum.PAID.getState());
|
if (order.getPayPrice().equals(BigDecimal.ZERO)) {
|
||||||
order.setPayAt(new Date());
|
order.setStatus(OrderStateEnum.PAID.getState());
|
||||||
} else {
|
order.setPayAt(new Date());
|
||||||
order.setStatus(OrderStateEnum.UNPAID.getState());
|
} else {
|
||||||
}
|
order.setStatus(OrderStateEnum.UNPAID.getState());
|
||||||
}
|
}
|
||||||
|
|
||||||
// coupon
|
// coupon
|
||||||
@@ -843,10 +843,23 @@ public class OrderServiceImpl implements OrderService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ApiResponse<PaymentParamsResponse> getPaymentParams(Long orderId, Long userId, PaymentParamsRequest request) {
|
public ApiResponse<PaymentParamsResponse> getPaymentParams(Long orderId, Long userId, PaymentParamsRequest request) {
|
||||||
|
OrderEntity order = orderMapper.get(orderId);
|
||||||
|
|
||||||
|
// 检查订单金额是否为0
|
||||||
|
if (order.getPayPrice() == null || order.getPayPrice().compareTo(BigDecimal.ZERO) == 0) {
|
||||||
|
// 零金额订单:设置needPay为false,直接标记为已支付
|
||||||
|
order.setStatus(1); // 1表示已支付
|
||||||
|
order.setPayAt(new Date());
|
||||||
|
orderMapper.updateOrder(order);
|
||||||
|
|
||||||
|
// 返回免费订单响应
|
||||||
|
return ApiResponse.success(PaymentParamsResponse.free(orderId, orderId.toString()));
|
||||||
|
}
|
||||||
|
|
||||||
|
// 非零金额订单:按原流程处理
|
||||||
PaymentParamsResponse response = new PaymentParamsResponse();
|
PaymentParamsResponse response = new PaymentParamsResponse();
|
||||||
response.setOrderId(orderId);
|
response.setOrderId(orderId);
|
||||||
response.setOrderNo(orderId.toString());
|
response.setOrderNo(orderId.toString());
|
||||||
OrderEntity order = orderMapper.get(orderId);
|
|
||||||
response.setNeedPay(true);
|
response.setNeedPay(true);
|
||||||
List<OrderItemEntity> orderItems = orderMapper.getOrderItems(orderId);
|
List<OrderItemEntity> orderItems = orderMapper.getOrderItems(orderId);
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -76,7 +76,7 @@
|
|||||||
remark = #{remark},
|
remark = #{remark},
|
||||||
update_time = NOW()
|
update_time = NOW()
|
||||||
WHERE code = #{code}
|
WHERE code = #{code}
|
||||||
AND status = 1
|
AND (status = 1 OR status = 0)
|
||||||
AND deleted = 0
|
AND deleted = 0
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user