diff --git a/src/main/java/com/gxwebsoft/glt/task/GltUserTicketAutoReleaseTask.java b/src/main/java/com/gxwebsoft/glt/task/GltUserTicketAutoReleaseTask.java index 261a8c6..0aaabe5 100644 --- a/src/main/java/com/gxwebsoft/glt/task/GltUserTicketAutoReleaseTask.java +++ b/src/main/java/com/gxwebsoft/glt/task/GltUserTicketAutoReleaseTask.java @@ -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 diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopOrderController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopOrderController.java index 0b30c59..efba38e 100644 --- a/src/main/java/com/gxwebsoft/shop/controller/ShopOrderController.java +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopOrderController.java @@ -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; diff --git a/src/main/java/com/gxwebsoft/shop/service/OrderBusinessService.java b/src/main/java/com/gxwebsoft/shop/service/OrderBusinessService.java index b21251c..7ac1629 100644 --- a/src/main/java/com/gxwebsoft/shop/service/OrderBusinessService.java +++ b/src/main/java/com/gxwebsoft/shop/service/OrderBusinessService.java @@ -86,41 +86,38 @@ public class OrderBusinessService { @Transactional(rollbackFor = Exception.class) public Map createOrder(OrderCreateRequest request, User loginUser) { - // 1. 参数校验 + //1. 参数校验 validateOrderRequest(request, loginUser); - // 2. 构建订单对象 + //2. 构建订单对象 ShopOrder shopOrder = buildShopOrder(request, loginUser); - // 3. 处理收货地址信息 + //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) {