瀏覽代碼

优化joinActivity,accountEntryManagementDetails,calcOrderPriceAndPack,selectAllOrder,selectAllOrderAdmin,selectOrderDetails,waitTakeFood,selectShoppingTrolley,deleteOrderList,selectOrderList,selectOrder,checkAndFillGoodsInfo这些循环调用数据库的业务

liu 2 月之前
父節點
當前提交
ff947f66ac

+ 77 - 0
.vscode/launch.json

@@ -0,0 +1,77 @@
+{
+    // 使用 IntelliSense 了解相关属性。 
+    // 悬停以查看现有属性的描述。
+    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
+    "version": "0.2.0",
+    "configurations": [
+        {
+            "type": "java",
+            "name": "Current File",
+            "request": "launch",
+            "mainClass": "${file}"
+        },
+        {
+            "type": "java",
+            "name": "SecureApiTest",
+            "request": "launch",
+            "mainClass": "com.sqx.SecureApiTest",
+            "projectName": "tcwm"
+        },
+        {
+            "type": "java",
+            "name": "SqxApplication",
+            "request": "launch",
+            "mainClass": "com.sqx.SqxApplication",
+            "projectName": "tcwm"
+        },
+        {
+            "type": "java",
+            "name": "QRCodeUtil",
+            "request": "launch",
+            "mainClass": "com.sqx.common.utils.QRCodeUtil",
+            "projectName": "tcwm"
+        },
+        {
+            "type": "java",
+            "name": "SftpUtil",
+            "request": "launch",
+            "mainClass": "com.sqx.common.utils.SftpUtil",
+            "projectName": "tcwm"
+        },
+        {
+            "type": "java",
+            "name": "SignUtil",
+            "request": "launch",
+            "mainClass": "com.sqx.common.utils.SignUtil",
+            "projectName": "tcwm"
+        },
+        {
+            "type": "java",
+            "name": "CallBackController",
+            "request": "launch",
+            "mainClass": "com.sqx.modules.callBack.controller.CallBackController",
+            "projectName": "tcwm"
+        },
+        {
+            "type": "java",
+            "name": "GoodsShopServiceImpl",
+            "request": "launch",
+            "mainClass": "com.sqx.modules.goods.service.impl.GoodsShopServiceImpl",
+            "projectName": "tcwm"
+        },
+        {
+            "type": "java",
+            "name": "CusAccessObjectUtil",
+            "request": "launch",
+            "mainClass": "com.sqx.modules.utils.CusAccessObjectUtil",
+            "projectName": "tcwm"
+        },
+        {
+            "type": "java",
+            "name": "FeiYunUtils",
+            "request": "launch",
+            "mainClass": "com.sqx.modules.utils.fieYun.FeiYunUtils",
+            "projectName": "tcwm"
+        }
+    ]
+}

+ 20 - 0
.vscode/settings.json

@@ -0,0 +1,20 @@
+{
+  "java.compile.nullAnalysis.mode": "automatic",
+  "java.configuration.updateBuildConfiguration": "automatic",
+  "java.configuration.maven.userSettings": "D:\\soft\\maven\\apache-maven-3.8.6\\conf\\settings.xml",
+  "java.debug.settings.hotCodeReplace": "auto",
+  "java.dependency.packagePresentation": "hierarchical",
+  "java.configuration.runtimes": [
+    {
+      "name": "JavaSE-1.8",
+      "path": "D:\\soft\\JDK8",
+      "default": true
+    }
+  ],
+  "java.jdt.ls.java.home": "D:\\soft\\JDK8",
+  "java.configuration.maven.globalSettings": "D:\\soft\\maven\\apache-maven-3.8.6\\conf\\settings.xml",
+  "workbench.settings.applyToAllProfiles": [
+    "java.configuration.maven.globalSettings",
+    "java.configuration.maven.userSettings"
+  ]
+}

+ 7 - 4
src/main/java/com/sqx/modules/activity/service/impl/ActivityShopServiceImpl.java

@@ -77,14 +77,17 @@ public class ActivityShopServiceImpl extends ServiceImpl<ActivityShopDao, Activi
         checkParam(dto);
 
         List<ActivityShop> activityShops = new ArrayList<>();
+
+        // 判断当前店铺已经加入的活动数量
+        LambdaQueryWrapper<ActivityShop> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.in(ActivityShop::getShopId, dto.getShopIds());
+        List<ActivityShop> oldActivityShopsDatas = list(queryWrapper);
         for (Long shopId : dto.getShopIds()) {
             // 自动退出活动
             autoExitActivity(shopId);
 
-            // 判断当前店铺已经加入的活动数量
-            LambdaQueryWrapper<ActivityShop> queryWrapper = Wrappers.lambdaQuery();
-            queryWrapper.eq(ActivityShop::getShopId, shopId);
-            List<ActivityShop> oldActivityShops = list(queryWrapper);
+            List<ActivityShop> oldActivityShops = oldActivityShopsDatas != null && oldActivityShopsDatas.size() > 0 ?
+                    oldActivityShopsDatas.stream().filter(e -> e.getShopId().equals(shopId)).collect(Collectors.toList()) : new ArrayList<>();
             if (oldActivityShops.size() >= MyConstant.MAX_NUM_OF_SHOP_JOIN) {
                 throw new SqxException("店铺【" + shopId + "】参与活动数量达到上限,请退出其他活动后再次尝试加入活动");
             }

+ 10 - 3
src/main/java/com/sqx/modules/app/service/impl/UserMoneyDetailsServiceImpl.java

@@ -29,6 +29,8 @@ import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+import java.util.Optional;
+import java.util.stream.Collectors;
 
 @Service
 public class UserMoneyDetailsServiceImpl extends ServiceImpl<UserMoneyDetailsDao, UserMoneyDetails> implements UserMoneyDetailsService {
@@ -165,7 +167,12 @@ public class UserMoneyDetailsServiceImpl extends ServiceImpl<UserMoneyDetailsDao
         Double smsMoney = Double.valueOf(value);
 
 //        计算每个订单所发送短信金额
+        List<Long> orderIds = userMoneyDetailsList != null && userMoneyDetailsList.size() > 0 ?
+                userMoneyDetailsList.stream().map(UserMoneyDetails::getOrderId).distinct().collect(Collectors.toList()) : null;
 
+        LambdaQueryWrapper<TbIndent> wrapperTBI = new LambdaQueryWrapper<>();
+        wrapperTBI.in(TbIndent::getOrderId, orderIds);
+        List<TbIndent> tbIndents = orderIds != null && orderIds.size() > 0 ? tbIndentService.list(wrapperTBI) : null;
         for (int i = 0; i < userMoneyDetailsList.size(); i++) {
             UserMoneyDetails userMoneyDetails = userMoneyDetailsList.get(i);
             BigDecimal couponMoney = userMoneyDetails.getCouponMoney();
@@ -181,9 +188,9 @@ public class UserMoneyDetailsServiceImpl extends ServiceImpl<UserMoneyDetailsDao
             BigDecimal orderAmount = payMoney.add(couponMoney).add(activityDiscountAmount).setScale(2, BigDecimal.ROUND_DOWN);
             userMoneyDetails.setOrderAmount(orderAmount);
 
-            LambdaQueryWrapper<TbIndent> wrapperTBI=new LambdaQueryWrapper<>();
-            wrapperTBI.eq(TbIndent::getOrderId,userMoneyDetails.getOrderId());
-            TbIndent tbIndent = tbIndentService.getOne(wrapperTBI);
+            Optional<TbIndent> oT = tbIndents != null && tbIndents.size() > 0 ? tbIndents.stream().filter(e -> e.getOrderId().equals(userMoneyDetails.getOrderId())).findFirst() : null;
+
+            TbIndent tbIndent =oT != null && oT.isPresent() ? oT.get() : null;
             if (ObjectUtils.isNotEmpty(tbIndent)) {
                 LambdaQueryWrapper<TbIndentSmsSendLog> wrapper=new LambdaQueryWrapper<>();
                 wrapper.eq(TbIndentSmsSendLog::getSuccessFlag,"1");

+ 3 - 0
src/main/java/com/sqx/modules/callBack/controller/CallBackController.java

@@ -109,6 +109,7 @@ public class CallBackController {
             tbOrder.setStatus(3);
             appOrderService.updateOrder(tbOrder);
             tbIndentService.orderIndentReceiving(userEntity.getUserId(), tbOrder.getOrderId()+"");
+            log.info("接单完成:"+order_no);
         } else if ("5".equals(state)) {//取餐
             log.info("骑手取餐:" + order_no);
 //            判断订单是否完成
@@ -126,6 +127,7 @@ public class CallBackController {
             }
 
             tbIndentService.riderBuyGoods(tbIndent);
+            log.info("取餐完成:"+order_no);
         } else if ("6".equals(state)) {//完成订单
             log.info("骑手完成订单:" + order_no);
             if (tbOrder.getStatus()!=4) {
@@ -140,6 +142,7 @@ public class CallBackController {
                 tbIndentService.updateById(tbIndent);
             }
             tbIndentService.finalizeOrder(userEntity.getUserId(), tbIndent);
+            log.info("订单完成:"+order_no);
         }
         return "success";
     }

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

@@ -1256,12 +1256,13 @@ public class TbIndentServiceImpl extends ServiceImpl<TbIndentDao, TbIndent> impl
         RLock lock = redissonClient.getLock(String.format(RedisKey.UPDATE_INDENT_LOCK, tbIndent.getIndentNumber()));
         lock.lock();
         try {
+            log.info("进入接单锁");
             // 再次查询订单
             tbIndent = getById(tbIndent.getIndentId());
             if (!"2".equals(tbIndent.getIndentState())) {
                 throw new SqxException("订单已被抢走!");
             }
-
+            log.info("骑手开始接单");
             // 更改订单状态
             TbIndent newIndent = new TbIndent();
             newIndent.setIndentId(tbIndent.getIndentId());
@@ -1283,6 +1284,7 @@ public class TbIndentServiceImpl extends ServiceImpl<TbIndentDao, TbIndent> impl
             }
             tr.setDeleteFlag(0);
             transferRecordDao.insert(tr);
+            log.info("接单完成");
         } finally {
             lock.unlock();
         }

+ 2 - 0
src/main/java/com/sqx/modules/goods/service/GoodsService.java

@@ -11,6 +11,8 @@ import java.util.List;
 
 public interface GoodsService extends IService<Goods> {
 
+    List<Goods> queryGoods(List<Long> goodIds);
+
     Result insertGoods(Goods goods);
 
     Result selectGoodsById(Long goodsId);

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

@@ -87,6 +87,12 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsDao, Goods> implements Go
     @Autowired
     private RedisUtils redisUtils;
 
+    @Override
+    public List<Goods> queryGoods(List<Long> goodIds) {
+        List<Goods> result = goodsDao.selectBatchIds(goodIds);
+        return result;
+    }
+
     @Transactional
     @Override
     public Result insertGoods(Goods goods) {

+ 7 - 0
src/main/java/com/sqx/modules/order/service/OrderGoodsService.java

@@ -2,6 +2,13 @@ package com.sqx.modules.order.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.sqx.modules.order.entity.OrderGoods;
+import com.sqx.modules.order.entity.TbOrder;
+
+import java.util.List;
 
 public interface OrderGoodsService extends IService<OrderGoods> {
+
+    List<OrderGoods> queryOrderList(List<Long> orderIds);
+
+    List<OrderGoods> queryOrderListByGoodId(List<Long> goodIds);
 }

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

@@ -58,6 +58,7 @@ import com.sqx.modules.goods.entity.Goods;
 import com.sqx.modules.goods.entity.GoodsShop;
 import com.sqx.modules.goods.entity.GoodsShopRelevancy;
 import com.sqx.modules.goods.entity.GoodsSku;
+import com.sqx.modules.goods.service.GoodsService;
 import com.sqx.modules.goods.service.GoodsShopService;
 import com.sqx.modules.integral.dao.UserIntegralDao;
 import com.sqx.modules.integral.dao.UserIntegralDetailsDao;
@@ -79,6 +80,7 @@ import com.sqx.modules.order.entity.OrderGoods;
 import com.sqx.modules.order.entity.TbOrder;
 import com.sqx.modules.order.service.AppOrderService;
 import com.sqx.modules.order.service.EvaluateRiderService;
+import com.sqx.modules.order.service.OrderGoodsService;
 import com.sqx.modules.pay.config.WechatPayConfig;
 import com.sqx.modules.pay.controller.app.AliPayController;
 import com.sqx.modules.pay.dao.PayDetailsDao;
@@ -125,12 +127,7 @@ import java.time.LocalDateTime;
 import java.time.LocalTime;
 import java.time.format.DateTimeFormatter;
 import java.time.temporal.ChronoUnit;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
@@ -143,6 +140,8 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
     @Autowired
     private GoodsDao goodsDao;
     @Autowired
+    private GoodsService goodsService;
+    @Autowired
     private UserDao userDao;
     @Autowired
     private CommonInfoService commonInfoService;
@@ -151,6 +150,8 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
     @Autowired
     private PayDetailsService payDetailsService;
     @Autowired
+    private OrderGoodsService orderGoodsService;
+    @Autowired
     private OrderGoodsDao orderGoodsDao;
     @Autowired
     private GoodsSkuDao goodsSkuDao;
@@ -1295,11 +1296,14 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
         if (orderList.size() == 0) {
             throw new SqxException("订单不存在,请刷新后重试!");
         }
+        List<Long> orderIds = orderList.stream().map(TbOrder::getOrderId).distinct().collect(Collectors.toList());
+
+        List<OrderGoods> orderGoodsAllDataList = orderIds != null && orderIds.size() > 0 ? orderGoodsService.queryOrderList(orderIds) : null;
+
         for (int i = 0; i < orderList.size(); i++) {
             Long orderId = orderList.get(i).getOrderId();
-            List<OrderGoods> orderGoodsList = orderGoodsDao.selectList(
-                    new QueryWrapper<OrderGoods>()
-                            .eq("order_id", orderId));
+            List<OrderGoods> orderGoodsList = orderGoodsAllDataList != null && orderGoodsAllDataList.size() > 0 ?
+                    orderGoodsAllDataList.stream().filter(e -> e.getOrderId().equals(orderId)).collect(Collectors.toList()) : new ArrayList<>();
             for (int a = 0; a < orderGoodsList.size(); a++) {
                 OrderGoods orderGoods = orderGoodsList.get(a);
                 BigDecimal goodsNum = new BigDecimal(orderGoods.getGoodsNum());
@@ -1467,9 +1471,16 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
     public Result selectAllOrder(Integer page, Integer limit, Integer status, String phone, Long shopId, String userName, String orderNumber, Integer orderType, String shopName, String transactionId) {
         Page<TbOrder> pages = new Page<>(page, limit);
         IPage<TbOrder> tbOrderIPage = appOrderDao.selectOrder(pages, status, phone, shopId, userName, orderNumber, orderType, shopName, transactionId);
+
+        List<Long> orderIds = tbOrderIPage != null && tbOrderIPage.getRecords() != null && tbOrderIPage.getRecords().size() > 0 ?
+                tbOrderIPage.getRecords().stream().map(TbOrder::getOrderId).distinct().collect(Collectors.toList()) : null;
+
+        List<OrderGoods> orderGoodsAllDataList = orderIds != null && orderIds.size() > 0 ? orderGoodsService.queryOrderList(orderIds) : null;
+
         for (int i = 0; i < tbOrderIPage.getRecords().size(); i++) {
-            List<OrderGoods> orderGoodsList = orderGoodsDao.selectList(new QueryWrapper<OrderGoods>()
-                    .eq("order_id", tbOrderIPage.getRecords().get(i).getOrderId()));
+            Long orderId = tbOrderIPage.getRecords().get(i).getOrderId();
+            List<OrderGoods> orderGoodsList = orderGoodsAllDataList != null && orderGoodsAllDataList.size() > 0 ?
+                    orderGoodsAllDataList.stream().filter(e -> e.getOrderId().equals(orderId)).collect(Collectors.toList()) : null;
             tbOrderIPage.getRecords().get(i).setOrderGoodsList(orderGoodsList);
             //todo
             /*BigDecimal packMoney = BigDecimal.valueOf(0);
@@ -1487,9 +1498,16 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
     public Result selectAllOrderAdmin(OrderQueryDto queryDto) {
         Page<TbOrder> pages = new Page<>(queryDto.getPage(), queryDto.getLimit());
         IPage<TbOrder> tbOrderIPage = appOrderDao.selectAllOrderAdmin(pages, queryDto);
+
+        List<Long> orderIds = tbOrderIPage != null && tbOrderIPage.getRecords() != null && tbOrderIPage.getRecords().size() > 0 ?
+                tbOrderIPage.getRecords().stream().map(TbOrder::getOrderId).distinct().collect(Collectors.toList()) : null;
+
+        List<OrderGoods> orderGoodsAllDataList = orderIds != null && orderIds.size() > 0 ? orderGoodsService.queryOrderList(orderIds) : null;
+
         for (int i = 0; i < tbOrderIPage.getRecords().size(); i++) {
-            List<OrderGoods> orderGoodsList = orderGoodsDao.selectList(new QueryWrapper<OrderGoods>()
-                    .eq("order_id", tbOrderIPage.getRecords().get(i).getOrderId()));
+            Long orderId = tbOrderIPage.getRecords().get(i).getOrderId();
+            List<OrderGoods> orderGoodsList = orderGoodsAllDataList != null && orderGoodsAllDataList.size() > 0 ?
+                    orderGoodsAllDataList.stream().filter(e -> e.getOrderId().equals(orderId)).collect(Collectors.toList()) : null;
             tbOrderIPage.getRecords().get(i).setOrderGoodsList(orderGoodsList);
         }
         PageUtils pageUtils = new PageUtils(tbOrderIPage);
@@ -1653,9 +1671,16 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
     public Result selectOrderDetails(Integer page, Integer limit, Long userId) {
         Page<TbOrder> pages = new Page<>(page, limit);
         IPage<TbOrder> tbOrderIPage = appOrderDao.selectOrderDetails(pages, userId);
+
+        List<Long> orderIds = tbOrderIPage != null && tbOrderIPage.getRecords() != null && tbOrderIPage.getRecords().size() > 0 ?
+                tbOrderIPage.getRecords().stream().map(TbOrder::getOrderId).distinct().collect(Collectors.toList()) : null;
+
+        List<OrderGoods> orderGoodsAllDataList = orderIds != null && orderIds.size() > 0 ? orderGoodsService.queryOrderList(orderIds) : null;
+
         for (int i = 0; i < tbOrderIPage.getRecords().size(); i++) {
             Long orderId = tbOrderIPage.getRecords().get(i).getOrderId();
-            List<OrderGoods> orderGoodsList = orderGoodsDao.selectList(new QueryWrapper<OrderGoods>().eq("order_id", orderId));
+            List<OrderGoods> orderGoodsList = orderGoodsAllDataList != null && orderGoodsAllDataList.size() > 0 ?
+                    orderGoodsAllDataList.stream().filter(e -> e.getOrderId().equals(orderId)).collect(Collectors.toList()) : null;
             tbOrderIPage.getRecords().get(i).setOrderGoodsList(orderGoodsList);
         }
 
@@ -1669,11 +1694,17 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
     public Result waitTakeFood(Long userId, Integer orderType, Integer page, Integer limit, Integer status) {
         Page<TbOrder> pages = new Page<>(page, limit);
         IPage<TbOrder> tbOrderIPage = appOrderDao.waitTakeFood(pages, userId, orderType, status);
-        List<TbOrder> records = tbOrderIPage.getRecords();
-        int size = records.size();
+
+        List<Long> orderIds = tbOrderIPage != null && tbOrderIPage.getRecords() != null && tbOrderIPage.getRecords().size() > 0 ?
+                tbOrderIPage.getRecords().stream().map(TbOrder::getOrderId).distinct().collect(Collectors.toList()) : null;
+
+        List<OrderGoods> orderGoodsAllDataList = orderIds != null && orderIds.size() > 0 ? orderGoodsService.queryOrderList(orderIds) : null;
+
+        int size = tbOrderIPage != null && tbOrderIPage.getRecords() != null && tbOrderIPage.getRecords().size() > 0 ? tbOrderIPage.getRecords().size() : 0;
         for (int i = 0; i < size; i++) {
-            List<OrderGoods> orderGoodsList = orderGoodsDao.selectList(new QueryWrapper<OrderGoods>()
-                    .eq("order_id", records.get(i).getOrderId()));
+            Long orderId = tbOrderIPage.getRecords().get(i).getOrderId();
+            List<OrderGoods> orderGoodsList = orderGoodsAllDataList != null && orderGoodsAllDataList.size() > 0 ?
+                    orderGoodsAllDataList.stream().filter(e -> e.getOrderId().equals(orderId)).collect(Collectors.toList()) : null;
             tbOrderIPage.getRecords().get(i).setOrderGoodsList(orderGoodsList);
             //判断骑手是否接单 status13为待骑手接单
 //            if (records.get(i).getOrderTypeExtra() == 2 && "2".equals(records.get(i).getIndentState())) {
@@ -2453,9 +2484,17 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
     @DataSource("dynamic")
     public Result selectShoppingTrolley(Long userId) {
         List<TbOrder> tbOrderIPage = appOrderDao.selectShoppingTrolley(userId);
+
+        List<Long> orderIds = tbOrderIPage != null && tbOrderIPage.size() > 0 ?
+                tbOrderIPage.stream().map(TbOrder::getOrderId).distinct().collect(Collectors.toList()) : null;
+
+        List<OrderGoods> orderGoodsAllDataList = orderIds != null && orderIds.size() > 0 ? orderGoodsService.queryOrderList(orderIds) : null;
+
         for (int i = 0; i < tbOrderIPage.size(); i++) {
             Long orderId = tbOrderIPage.get(i).getOrderId();
-            List<OrderGoods> orderGoods = orderGoodsDao.selectList(new QueryWrapper<OrderGoods>().eq("order_id", orderId));
+            List<OrderGoods> orderGoods = orderGoodsAllDataList != null && orderGoodsAllDataList.size() > 0 ?
+                    orderGoodsAllDataList.stream().filter(e -> e.getOrderId().equals(orderId)).collect(Collectors.toList()) : null;
+
             tbOrderIPage.get(i).setOrderGoodsList(orderGoods);
         }
         return Result.success().put("data", tbOrderIPage);
@@ -2609,13 +2648,10 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
     }
 
 
-    @Transactional
     @Override
     public Result deleteOrderList(List<Integer> orderId) {
-        for (int i = 0; i < orderId.size(); i++) {
-            baseMapper.deleteById(orderId.get(i));
-        }
-        return Result.success();
+        int result = baseMapper.deleteBatchIds(orderId);
+        return result < 0 ? Result.error(): Result.success();
     }
 
     @Override
@@ -2769,11 +2805,17 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
         HashMap hashMap = new HashMap();
         Page<TbOrder> pages = new Page(page, limit);
         IPage<TbOrder> tbOrderList = baseMapper.selectOrderList(pages, userId, status, orderType, shopId);
+        List<Long> orderIds = tbOrderList != null && tbOrderList.getRecords() != null && tbOrderList.getRecords().size() > 0 ?
+                tbOrderList.getRecords().stream().map(TbOrder::getOrderId).distinct().collect(Collectors.toList()) : null;
+
+        List<OrderGoods> orderGoodsAllDataList = orderIds != null && orderIds.size() > 0 ? orderGoodsService.queryOrderList(orderIds) : null;
+
         BigDecimal money = new BigDecimal(0);
         ArrayList list = new ArrayList();
         for (int i = 0; i < tbOrderList.getRecords().size(); i++) {
-            List<OrderGoods> orderGoodsList = orderGoodsDao.selectList(new QueryWrapper<OrderGoods>()
-                    .eq("order_id", tbOrderList.getRecords().get(i).getOrderId()));
+            Long orderId = tbOrderList.getRecords().get(i).getOrderId();
+            List<OrderGoods> orderGoodsList = orderGoodsAllDataList != null && orderGoodsAllDataList.size() > 0 ?
+                    orderGoodsAllDataList.stream().filter(e -> e.getOrderId().equals(orderId)).collect(Collectors.toList()) : null;
             for (int a = 0; a < orderGoodsList.size(); a++) {
                 BigDecimal goodsPrice = orderGoodsList.get(a).getGoodsPrice();
                 Integer goodsNum = orderGoodsList.get(a).getGoodsNum();
@@ -2821,11 +2863,19 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
         HashMap hashMap = new HashMap();
         Page<TbOrder> pages = new Page(page, limit);
         IPage<TbOrder> tbOrderList = baseMapper.selectOrderPage(pages, userId, orderId);
+
+        List<Long> orderIds = tbOrderList != null && tbOrderList.getRecords() != null && tbOrderList.getRecords().size() > 0 ?
+                tbOrderList.getRecords().stream().map(TbOrder::getOrderId).distinct().collect(Collectors.toList()) : null;
+
+        List<OrderGoods> orderGoodsAllDataList = orderIds != null && orderIds.size() > 0 ? orderGoodsService.queryOrderList(orderIds) : null;
+
         BigDecimal money = new BigDecimal(0);
         ArrayList list = new ArrayList();
         for (int i = 0; i < tbOrderList.getRecords().size(); i++) {
-            List<OrderGoods> orderGoodsList = orderGoodsDao.selectList(new QueryWrapper<OrderGoods>()
-                    .eq("order_id", tbOrderList.getRecords().get(i).getOrderId()));
+            Long orderIdN = tbOrderList.getRecords().get(i).getOrderId();
+            List<OrderGoods> orderGoodsList = orderGoodsAllDataList != null && orderGoodsAllDataList.size() > 0 ?
+                    orderGoodsAllDataList.stream().filter(e -> e.getOrderId().equals(orderIdN)).collect(Collectors.toList()) : null;
+
             for (int a = 0; a < orderGoodsList.size(); a++) {
                 BigDecimal goodsPrice = orderGoodsList.get(a).getGoodsPrice();
                 Integer goodsNum = orderGoodsList.get(a).getGoodsNum();
@@ -3108,11 +3158,19 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
                 new QueryWrapper<OrderGoods>()
                         .eq("order_id", order.getOrderId()));
         order.setOrderGoodsList(orderGoodsList);
+
+        List<Long> goodIds = orderGoodsList.stream().map(OrderGoods::getGoodsId).distinct().collect(Collectors.toList());
+        List<Goods> goodDatas = goodsService.queryGoods(goodIds);
         List<Goods> goodsList = new ArrayList<>();
         for (int b = 0; b < orderGoodsList.size(); b++) {
             OrderGoods orderGoods = orderGoodsList.get(b);
             Long goodsId = orderGoods.getGoodsId();
-            Goods goods = goodsDao.selectById(goodsId);
+            Goods goods = null;
+            Optional<Goods> oGoods = goodDatas.stream().filter(e -> e.getGoodsId().equals(goodsId)).findFirst();
+            if(oGoods != null && oGoods.isPresent()){
+                goods = oGoods.get();
+            }
+
             if (goods == null || goods.getStatus().equals(1)) {
                 orderGoodsDao.deleteById(orderGoods.getId());
                 throw new SqxException("商品:" + orderGoods.getGoodsName() + ",不存在,请刷新后重试!");

+ 25 - 0
src/main/java/com/sqx/modules/order/service/impl/OrderGoodsServiceImpl.java

@@ -1,11 +1,36 @@
 package com.sqx.modules.order.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.sqx.modules.order.dao.OrderGoodsDao;
 import com.sqx.modules.order.entity.OrderGoods;
+import com.sqx.modules.order.entity.TbOrder;
 import com.sqx.modules.order.service.OrderGoodsService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 @Service
 public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsDao, OrderGoods> implements OrderGoodsService {
+
+    @Autowired
+    private OrderGoodsDao orderGoodsDao;
+
+    @Override
+    public List<OrderGoods> queryOrderList(List<Long> orderIds) {
+        QueryWrapper<OrderGoods> queryWrapper = new QueryWrapper<>();
+        queryWrapper.in(orderIds != null && orderIds.size() > 0, "order_id", orderIds);
+        List<OrderGoods> orders = orderGoodsDao.selectList(queryWrapper);
+        return orders;
+    }
+
+
+    @Override
+    public List<OrderGoods> queryOrderListByGoodId(List<Long> goodIds) {
+        QueryWrapper<OrderGoods> queryWrapper = new QueryWrapper<>();
+        queryWrapper.in(goodIds != null && goodIds.size() > 0, "goods_id", goodIds);
+        List<OrderGoods> orders = orderGoodsDao.selectList(queryWrapper);
+        return orders;
+    }
 }