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();
|
||||
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 -> {
|
||||
switch (product.getProductType()) {
|
||||
case VLOG_VIDEO:
|
||||
|
@@ -89,6 +89,7 @@ public class AppScenicController {
|
||||
resp.setVideoSourcePackHint(scenicConfig.getVideoSourcePackHint());
|
||||
resp.setImageSourcePackHint(scenicConfig.getImageSourcePackHint());
|
||||
resp.setVoucherEnable(scenicConfig.getVoucherEnable());
|
||||
resp.setEnableVoucher(scenicConfig.getVoucherEnable()); // compactible
|
||||
return ApiResponse.success(resp);
|
||||
}
|
||||
|
||||
|
@@ -46,4 +46,5 @@ public class ScenicConfigResp {
|
||||
private String imageSourcePackHint = "";
|
||||
private String videoSourcePackHint = "";
|
||||
private Boolean voucherEnable;
|
||||
private Boolean enableVoucher;
|
||||
}
|
||||
|
@@ -81,6 +81,14 @@ public class VoucherPrintServiceImpl implements VoucherPrintService {
|
||||
|
||||
// 验证faceId是否属于当前用户
|
||||
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分布式锁防止重复打印
|
||||
String lockKey = String.format(PRINT_LOCK_KEY, request.getFaceId(), request.getBrokerId(), request.getScenicId());
|
||||
@@ -107,7 +115,7 @@ public class VoucherPrintServiceImpl implements VoucherPrintService {
|
||||
if (availableVoucher == null) {
|
||||
throw new BaseException("暂无可用优惠券");
|
||||
}
|
||||
|
||||
|
||||
// 生成流水号
|
||||
String code = generateCode();
|
||||
|
||||
|
@@ -63,7 +63,7 @@ public class VoucherServiceImpl implements IVoucherService {
|
||||
// 检查券码状态和可用性
|
||||
if (VoucherCodeStatus.UNCLAIMED.getCode().equals(voucherCodeEntity.getStatus())) {
|
||||
// 未领取状态,检查是否可以领取
|
||||
if (faceId != null && canClaimVoucher(faceId, voucherCodeEntity.getScenicId())) {
|
||||
if (faceId != null) { // && canClaimVoucher(faceId, voucherCodeEntity.getScenicId())
|
||||
voucherInfo.setAvailable(true);
|
||||
} else {
|
||||
voucherInfo.setAvailable(false);
|
||||
|
@@ -795,12 +795,12 @@ public class OrderServiceImpl implements OrderService {
|
||||
order.setPrice(cachedResult.getFinalAmount());
|
||||
// promo code
|
||||
order.setPayPrice(cachedResult.getFinalAmount());
|
||||
if (order.getPayPrice().equals(BigDecimal.ZERO)) {
|
||||
order.setStatus(OrderStateEnum.PAID.getState());
|
||||
order.setPayAt(new Date());
|
||||
} else {
|
||||
order.setStatus(OrderStateEnum.UNPAID.getState());
|
||||
}
|
||||
}
|
||||
if (order.getPayPrice().equals(BigDecimal.ZERO)) {
|
||||
order.setStatus(OrderStateEnum.PAID.getState());
|
||||
order.setPayAt(new Date());
|
||||
} else {
|
||||
order.setStatus(OrderStateEnum.UNPAID.getState());
|
||||
}
|
||||
|
||||
// coupon
|
||||
@@ -843,10 +843,23 @@ public class OrderServiceImpl implements OrderService {
|
||||
|
||||
@Override
|
||||
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();
|
||||
response.setOrderId(orderId);
|
||||
response.setOrderNo(orderId.toString());
|
||||
OrderEntity order = orderMapper.get(orderId);
|
||||
response.setNeedPay(true);
|
||||
List<OrderItemEntity> orderItems = orderMapper.getOrderItems(orderId);
|
||||
try {
|
||||
|
@@ -76,7 +76,7 @@
|
||||
remark = #{remark},
|
||||
update_time = NOW()
|
||||
WHERE code = #{code}
|
||||
AND status = 1
|
||||
AND (status = 1 OR status = 0)
|
||||
AND deleted = 0
|
||||
</update>
|
||||
|
||||
|
Reference in New Issue
Block a user