8
0

3 Incheckningar 9804acb180 ... 8ea2f3bdb0

Upphovsman SHA1 Meddelande Datum
  codingliang 8ea2f3bdb0 新增修改店铺销量定时任务 3 månader sedan
  codingliang 2293efe99d 新增sku组合数量校验 3 månader sedan
  codingliang 7c9747a770 注释修改店铺销量方法 3 månader sedan

+ 1 - 1
src/main/java/com/sqx/modules/errand/service/impl/TbIndentServiceImpl.java

@@ -2298,7 +2298,7 @@ public class TbIndentServiceImpl extends ServiceImpl<TbIndentDao, TbIndent> impl
 //                goodsShopDao.updateShopSales(2, goodsNum, goodsShopRelevancy.getShopId()); //减销量
 //                goodsShopDao.updateShopSales(2, goodsNum, goodsShopRelevancy.getShopId()); //减销量
             }
             }
 
 
-            goodsShopDao.updateShopSales(2, 1, indent1.getShopId());
+//            goodsShopDao.updateShopSales(2, 1, indent1.getShopId());
         }
         }
 
 
 
 

+ 15 - 0
src/main/java/com/sqx/modules/goods/service/impl/GoodsServiceImpl.java

@@ -249,6 +249,21 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsDao, Goods> implements Go
         //1.获取商品规格值
         //1.获取商品规格值
         List<GoodsAttrValue> attr = goodsAttr.getAttrValue();
         List<GoodsAttrValue> attr = goodsAttr.getAttrValue();
         int attrSize = attr.size();
         int attrSize = attr.size();
+
+        // 临时校验规则总组合数
+        final long MAX_ALLOW_SKU = 5000;
+        long totalCombination = 1L;
+        for (GoodsAttrValue goodsAttrValue : attr) {
+            String detail = goodsAttrValue.getDetail();
+            int optionCount = detail.split(",").length;
+            // 每个规格的选项数相乘,得到总组合数
+            totalCombination = totalCombination * optionCount;
+            // 超过阈值直接返回错误,避免继续生成撑爆内存
+            if (totalCombination > MAX_ALLOW_SKU) {
+                throw new SqxException("SKU规格选项过多,总组合数超过上限" + MAX_ALLOW_SKU + ",请减少规格/规格选项数量");
+            }
+        }
+
         //2.准备返回值
         //2.准备返回值
         Map<String, Object> map = new HashMap<>();
         Map<String, Object> map = new HashMap<>();
         List<String> header = new ArrayList<>(); //表头
         List<String> header = new ArrayList<>(); //表头

+ 2 - 2
src/main/java/com/sqx/modules/order/dao/AppOrderDao.java

@@ -117,8 +117,8 @@ public interface AppOrderDao extends BaseMapper<TbOrder> {
     List<TbOrder> temp();
     List<TbOrder> temp();
 
 
     /**
     /**
-     * 统计近近30天每个店铺的已完成的订单数量
+     * 统计每个店铺的已完成的订单数量
      * @return 店铺id-订单数量映射列表
      * @return 店铺id-订单数量映射列表
      */
      */
-    List<Map<String, Object>> countFinishByShopIdWithLast30Days();
+    List<Map<String, Object>> countFinishGroupByShopId();
 }
 }

+ 1 - 1
src/main/java/com/sqx/modules/order/service/AppOrderService.java

@@ -211,7 +211,7 @@ public interface AppOrderService extends IService<TbOrder> {
       * 统计最近30天内每个店铺的订单完成数量
       * 统计最近30天内每个店铺的订单完成数量
       * @return 店铺id-订单完成数量映射
       * @return 店铺id-订单完成数量映射
       */
       */
-    Map<Long, Integer> countFinishByShopIdWithLast30Days();
+    Map<Long, Integer> countFinishGroupByShopId();
 
 
     /**
     /**
      * 根据订单id查询订单信息,包含订单商品信息
      * 根据订单id查询订单信息,包含订单商品信息

+ 6 - 6
src/main/java/com/sqx/modules/order/service/impl/AppAppOrderServiceImpl.java

@@ -662,7 +662,7 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
             // goodsShopDao.updateShopSales(1, goodsNum, goodsShopRelevancy.getShopId());
             // goodsShopDao.updateShopSales(1, goodsNum, goodsShopRelevancy.getShopId());
         }
         }
 
 
-        goodsShopDao.updateShopSales(1, 1, tbOrder.getShopId());
+//        goodsShopDao.updateShopSales(1, 1, tbOrder.getShopId());
     }
     }
 
 
     @Override
     @Override
@@ -2002,7 +2002,7 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
 //                goodsShopDao.updateShopSales(2, goodsNum, goodsShopRelevancy.getShopId()); //减销量
 //                goodsShopDao.updateShopSales(2, goodsNum, goodsShopRelevancy.getShopId()); //减销量
 
 
             }
             }
-            goodsShopDao.updateShopSales(2, 1, tbOrder.getShopId()); //减销量
+//            goodsShopDao.updateShopSales(2, 1, tbOrder.getShopId()); //减销量
             return Result.success("取消订单成功!");
             return Result.success("取消订单成功!");
         }
         }
         order.setUpdateTime(format1);
         order.setUpdateTime(format1);
@@ -2517,7 +2517,7 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
 //                goodsShopDao.updateShopSales(2, goodsNum, goodsShopRelevancy.getShopId());//减销量
 //                goodsShopDao.updateShopSales(2, goodsNum, goodsShopRelevancy.getShopId());//减销量
 
 
             }
             }
-            goodsShopDao.updateShopSales(2, 1, tbOrder.getShopId()); //减销量
+//            goodsShopDao.updateShopSales(2, 1, tbOrder.getShopId()); //减销量
             // 取消跑腿订单
             // 取消跑腿订单
             tbIndentService.sysCancelOrder(tbOrder.getOrderNumber());
             tbIndentService.sysCancelOrder(tbOrder.getOrderNumber());
 
 
@@ -2676,7 +2676,7 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
 //                goodsShopDao.updateShopSales(2, goodsNum, goodsShopRelevancy.getShopId());//减销量
 //                goodsShopDao.updateShopSales(2, goodsNum, goodsShopRelevancy.getShopId());//减销量
 
 
             }
             }
-            goodsShopDao.updateShopSales(2, 1, tbOrder.getShopId()); //减销量
+//            goodsShopDao.updateShopSales(2, 1, tbOrder.getShopId()); //减销量
 
 
             // 打印退款小票
             // 打印退款小票
             try {
             try {
@@ -2985,9 +2985,9 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
     }
     }
 
 
     @Override
     @Override
-    public Map<Long, Integer> countFinishByShopIdWithLast30Days() {
+    public Map<Long, Integer> countFinishGroupByShopId() {
         // 统计近近30天每个店铺的已完成订单数量
         // 统计近近30天每个店铺的已完成订单数量
-        List<Map<String, Object>> shopSalesList = baseMapper.countFinishByShopIdWithLast30Days();
+        List<Map<String, Object>> shopSalesList = baseMapper.countFinishGroupByShopId();
         // 转换为ShopId -> OrderCount的Map返回
         // 转换为ShopId -> OrderCount的Map返回
         return shopSalesList.stream()
         return shopSalesList.stream()
                 .filter(map -> map.containsKey("shop_id") && map.containsKey("order_count"))
                 .filter(map -> map.containsKey("shop_id") && map.containsKey("order_count"))

+ 4 - 4
src/main/java/com/sqx/scheduler/order/OrderScheduler.java

@@ -308,10 +308,10 @@ public class OrderScheduler {
 
 
     /**
     /**
      * 更新店铺销量
      * 更新店铺销量
-     *  每天1点、10点、13点、22点执行
+     *  每天1点、10点、15点、22点执行
      */
      */
-    // @Async
-    // @Scheduled(cron = "0 0 1,10,13,22 * * ?")
+     @Async
+     @Scheduled(cron = "0 0 1,10,15,22 * * ?")
     public void updateShopSales() {
     public void updateShopSales() {
         RLock lock = null;
         RLock lock = null;
         try {
         try {
@@ -323,7 +323,7 @@ public class OrderScheduler {
                 return;
                 return;
             }
             }
             log.info("更新店铺销量任务开始运行");
             log.info("更新店铺销量任务开始运行");
-            Map<Long, Integer> shopSalesMap = orderService.countFinishByShopIdWithLast30Days();
+            Map<Long, Integer> shopSalesMap = orderService.countFinishGroupByShopId();
             goodsShopService.updateShopSales(shopSalesMap);
             goodsShopService.updateShopSales(shopSalesMap);
             log.info("更新店铺销量任务运行成功");
             log.info("更新店铺销量任务运行成功");
         } catch (Exception e) {
         } catch (Exception e) {

+ 1 - 1
src/main/resources/mapper/order/OrderMapper.xml

@@ -812,7 +812,7 @@
 
 
     </select>
     </select>
 
 
-    <select id="countFinishByShopIdWithLast30Days" resultType="java.util.Map">
+    <select id="countFinishGroupByShopId" resultType="java.util.Map">
         SELECT
         SELECT
             shop_id,
             shop_id,
             COUNT(*) AS order_count
             COUNT(*) AS order_count