lubo 5 mesi fa
parent
commit
36c9f9a56d

+ 22 - 0
ruoyi-admin/src/main/java/com/ruoyi/schedule/ProjectSchedule.java

@@ -2,6 +2,9 @@ package com.ruoyi.schedule;
 
 
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.collection.CollectionUtil;
 import com.ruoyi.shop.constants.ShopConstants;
 import com.ruoyi.shop.constants.ShopConstants;
+import com.ruoyi.shop.order.domain.ShopOrderDetail;
+import com.ruoyi.shop.order.service.IShopOrderDetailService;
+import com.ruoyi.shop.order.service.IShopOrderService;
 import com.ruoyi.shop.product.domain.bo.ProductViewUpdate;
 import com.ruoyi.shop.product.domain.bo.ProductViewUpdate;
 import com.ruoyi.shop.product.service.IProductService;
 import com.ruoyi.shop.product.service.IProductService;
 import lombok.RequiredArgsConstructor;
 import lombok.RequiredArgsConstructor;
@@ -31,6 +34,10 @@ public class ProjectSchedule {
 
 
     private final IProductService productService;
     private final IProductService productService;
 
 
+    private final IShopOrderDetailService shopOrderDetailService;
+
+    private final IShopOrderService shopOrderService;
+
     @Scheduled(fixedDelay = 30_000) // 每30秒执行一次
     @Scheduled(fixedDelay = 30_000) // 每30秒执行一次
     public void syncProductViewCountToDb() {
     public void syncProductViewCountToDb() {
         // 获取所有待同步的商品浏览增量
         // 获取所有待同步的商品浏览增量
@@ -66,4 +73,19 @@ public class ProjectSchedule {
             throw e;
             throw e;
         }
         }
     }
     }
+
+    @Scheduled(cron = "${task1h}")
+    public void autoEnd() {
+        List<ShopOrderDetail> list = shopOrderDetailService.needAutoEndOrder();
+        list.forEach(v -> {
+            try {
+                log.info(String.format("订单:%s,购买商品【%s】封单开始", v.getOrderNo(),v.getProductTitle()));
+                shopOrderService.autoEnd(v);
+                log.info(String.format("订单:%s,购买商品【%s】封单完成", v.getOrderNo(),v.getProductTitle()));
+            }
+            catch (Exception ex) {
+                log.error(String.format("订单:%s,购买商品【%s】封单完成,出错%s", v.getOrderNo(),v.getProductTitle(), ex.getMessage()));
+            }
+        });
+    }
 }
 }

+ 2 - 2
ruoyi-admin/src/main/java/com/ruoyi/web/controller/shop/order/ShopOrderController.java

@@ -292,7 +292,7 @@ public class ShopOrderController extends BaseController {
      * @return
      * @return
      */
      */
     @ApiOperation("统计订单数与同比值")
     @ApiOperation("统计订单数与同比值")
-    @RequestMapping("/statistics-order-num/year-on-year")
+    @GetMapping("/statistics-order-num/year-on-year")
     public R<YearOnYearOrderNumVo> orderNumYearOnYear(@RequestParam Map<String, Object> params) {
     public R<YearOnYearOrderNumVo> orderNumYearOnYear(@RequestParam Map<String, Object> params) {
         Long businessId = getBusinessId(false);
         Long businessId = getBusinessId(false);
         String type = MapUtil.getStr(params, "type");
         String type = MapUtil.getStr(params, "type");
@@ -382,7 +382,7 @@ public class ShopOrderController extends BaseController {
      * @return
      * @return
      */
      */
     @ApiOperation("统计订单销售额与同比值")
     @ApiOperation("统计订单销售额与同比值")
-    @RequestMapping("/statistics-order-amount/year-on-year")
+    @GetMapping("/statistics-order-amount/year-on-year")
     public R<YearOnYearOrderAmountVo> orderAmountYearOnYear(@RequestParam Map<String, Object> params) {
     public R<YearOnYearOrderAmountVo> orderAmountYearOnYear(@RequestParam Map<String, Object> params) {
         Long businessId = getBusinessId(false);
         Long businessId = getBusinessId(false);
         String type = MapUtil.getStr(params, "type");
         String type = MapUtil.getStr(params, "type");

+ 2 - 0
ruoyi-admin/src/main/resources/application.yml

@@ -391,3 +391,5 @@ jsu:
   interfaceUrl: "https://api.jisuapi.com/express/query"
   interfaceUrl: "https://api.jisuapi.com/express/query"
   updateHour: 6
   updateHour: 6
 
 
+#每天1点
+task1h: 0 0 1 * * ?

+ 2 - 0
ruoyi-shop/src/main/java/com/ruoyi/shop/order/service/IShopOrderDetailService.java

@@ -114,4 +114,6 @@ public interface IShopOrderDetailService {
     ShopOrderDetail refundOperate(ShopOrderDetail shopOrderDetail, RightsMethod rightsMethod);
     ShopOrderDetail refundOperate(ShopOrderDetail shopOrderDetail, RightsMethod rightsMethod);
 
 
     ProductStockFlowWaterBo inStock(ShopOrderDetail shopOrderDetail, StockFlowWater stockFlowWater, Integer num);
     ProductStockFlowWaterBo inStock(ShopOrderDetail shopOrderDetail, StockFlowWater stockFlowWater, Integer num);
+
+    List<ShopOrderDetail> needAutoEndOrder();
 }
 }

+ 13 - 0
ruoyi-shop/src/main/java/com/ruoyi/shop/order/service/impl/ShopOrderDetailServiceImpl.java

@@ -33,6 +33,8 @@ import org.springframework.stereotype.Service;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
 import java.util.Collection;
 import java.util.Collection;
+import java.util.Collections;
+import java.util.Date;
 import java.util.List;
 import java.util.List;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
@@ -292,6 +294,17 @@ public class ShopOrderDetailServiceImpl implements IShopOrderDetailService {
         return productStockFlowWaterBo;
         return productStockFlowWaterBo;
     }
     }
 
 
+    @Override
+    public List<ShopOrderDetail> needAutoEndOrder() {
+        return this.baseMapper.selectList(new LambdaQueryWrapper<ShopOrderDetail>()
+            .eq(ShopOrderDetail::getEnd, false)
+            .eq(ShopOrderDetail::getTransactionStatus, TransactionStatus.TRADE_SUCCESS)
+            .eq(ShopOrderDetail::getRightsStatus, RightsStatus.NO_RIGHTS)
+            .isNotNull(ShopOrderDetail::getLastEndTime)
+            .le(ShopOrderDetail::getLastEndTime, new Date())
+            );
+    }
+
     /**
     /**
      * 修改订单明细
      * 修改订单明细
      *
      *

+ 2 - 2
ruoyi-shop/src/main/resources/mapper/business/UserBusinessRoleMapper.xml

@@ -26,8 +26,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <select id="selectCustomCount" resultType="java.lang.Integer">
     <select id="selectCustomCount" resultType="java.lang.Integer">
         SELECT COUNT(1) FROM tb_user_business_role
         SELECT COUNT(1) FROM tb_user_business_role
             <where>
             <where>
-                <if test="businessId != null">
-                    business_id = #{businessId}
+                <if test="bo.businessId != null">
+                    business_id = #{bo.businessId}
                 </if>
                 </if>
                 <if test="bo.startTime!=null">
                 <if test="bo.startTime!=null">
                     AND create_time &gt;= #{bo.startTime}
                     AND create_time &gt;= #{bo.startTime}

+ 1 - 1
ruoyi-shop/src/main/resources/mapper/product/ProductMapper.xml

@@ -201,7 +201,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <where>
         <where>
             tp.del_flag = 0 and tp.audit_status = 10
             tp.del_flag = 0 and tp.audit_status = 10
             <if test="businessId != null">
             <if test="businessId != null">
-                AND business_id = #{businessId}
+                AND tp.business_id = #{businessId}
             </if>
             </if>
         </where>
         </where>
         ) as t
         ) as t