优化商品下单业务、水票解冻业务

This commit is contained in:
2026-05-09 14:56:53 +08:00
parent c6cec21d12
commit bc88f54c24
3 changed files with 33 additions and 36 deletions

View File

@@ -4,18 +4,19 @@ import com.gxwebsoft.common.core.annotation.IgnoreTenant;
import com.gxwebsoft.glt.service.GltUserTicketAutoReleaseService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.concurrent.atomic.AtomicBoolean;
/**
* 冻结水票自动释放任务:
* - 扫描 glt_user_ticket_release 中到期且待释放status=0的记录
* - 释放成功:frozen -> available并将 release.status 置为 1
* 冻结水票自动释放任务:每月1日凌晨1-3点每2分钟执行一次任务
* - 扫描 glt_user_ticket_release 中本月到期且待释放status=0的记录
* - 释放成功:
* 1.修改水票释放任务为已释放状态 glt_user_ticket_release
* 2.修改个人水票中:可用数量、冻结数量、已释放数量 glt_user_ticket
* 3.同步生产水票释放记录数据 glt_user_ticket_log
*/
@Slf4j
@Component

View File

@@ -5,42 +5,41 @@ import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.gxwebsoft.common.core.config.ConfigProperties;
import com.gxwebsoft.common.core.config.CertificateProperties;
import com.gxwebsoft.common.core.utils.RedisUtil;
import com.gxwebsoft.common.core.config.ConfigProperties;
import com.gxwebsoft.common.core.utils.CertificateLoader;
import com.gxwebsoft.common.core.utils.RedisUtil;
import com.gxwebsoft.common.core.utils.WechatCertAutoConfig;
import com.gxwebsoft.common.core.utils.WechatPayConfigValidator;
import com.gxwebsoft.common.core.web.ApiResult;
import com.gxwebsoft.common.core.web.BaseController;
import com.gxwebsoft.common.core.web.BatchParam;
import com.gxwebsoft.common.core.web.PageResult;
import com.gxwebsoft.common.system.entity.Payment;
import com.gxwebsoft.common.system.entity.User;
import com.gxwebsoft.glt.service.GltTicketIssueService;
import com.gxwebsoft.shop.dto.*;
import com.gxwebsoft.shop.entity.ShopOrderDelivery;
import com.gxwebsoft.shop.entity.ShopUserAddress;
import com.gxwebsoft.shop.service.*;
import com.gxwebsoft.glt.service.GltTicketRevokeService;
import com.gxwebsoft.shop.service.impl.KuaiDi100Impl;
import com.gxwebsoft.shop.task.OrderAutoCancelTask;
import com.gxwebsoft.shop.entity.ShopOrder;
import com.gxwebsoft.shop.param.ShopOrderParam;
import com.gxwebsoft.payment.service.PaymentService;
import com.gxwebsoft.payment.dto.PaymentResponse;
import com.gxwebsoft.payment.enums.PaymentType;
import com.gxwebsoft.common.core.web.ApiResult;
import com.gxwebsoft.common.core.web.PageResult;
import com.gxwebsoft.common.core.web.BatchParam;
import com.gxwebsoft.common.system.entity.User;
import com.gxwebsoft.payment.service.PaymentService;
import com.gxwebsoft.shop.dto.*;
import com.gxwebsoft.shop.entity.ShopOrder;
import com.gxwebsoft.shop.entity.ShopOrderDelivery;
import com.gxwebsoft.shop.entity.ShopUserAddress;
import com.gxwebsoft.shop.param.ShopOrderParam;
import com.gxwebsoft.shop.service.*;
import com.gxwebsoft.shop.service.impl.KuaiDi100Impl;
import com.gxwebsoft.shop.task.OrderAutoCancelTask;
import com.wechat.pay.java.core.RSAAutoCertificateConfig;
import com.wechat.pay.java.core.notification.NotificationConfig;
import com.wechat.pay.java.core.notification.NotificationParser;
import com.wechat.pay.java.core.notification.RequestParam;
import com.wechat.pay.java.core.RSAAutoCertificateConfig;
import com.wechat.pay.java.service.payments.model.Transaction;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springdoc.api.annotations.ParameterObject;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.core.Authentication;

View File

@@ -95,32 +95,29 @@ public class OrderBusinessService {
//3. 处理收货地址信息
processDeliveryAddress(shopOrder, request, loginUser);
// 3.1 下单时校验配送范围(电子围栏)
//4. 下单时校验配送范围(电子围栏)
validateDeliveryFenceIfNeeded(shopOrder, loginUser);
// 4. 应用业务规则
applyBusinessRules(shopOrder, loginUser);
// 如果商品仅有一个则更新formId
//5.如果商品仅有一个则更新formId
if (request.getGoodsItems().size() == 1) {
shopOrder.setFormId(request.getGoodsItems().get(0).getGoodsId());
}
// 5. 保存订单
//6.保存订单
boolean saved = shopOrderService.save(shopOrder);
if (!saved) {
throw new BusinessException("订单保存失败");
}
// 6. 保存订单商品
//7.保存订单商品
saveOrderGoods(request, shopOrder);
// 7. 标记优惠券为已使用
//8.标记优惠券为已使用
if (shopOrder.getCouponId() != null && shopOrder.getCouponId() > 0) {
markCouponAsUsed(shopOrder.getCouponId(), shopOrder.getOrderId());
}
// 8. 创建微信支付订单
//9.创建微信支付订单
try {
return shopOrderService.createWxOrder(shopOrder);
} catch (Exception e) {