From 64bc81d5f7bd99b470422b329aaca2182b79531c Mon Sep 17 00:00:00 2001
From: dd <gitluke@outlook.com>
Date: Mon, 01 Jun 2026 09:11:45 +0800
Subject: [PATCH] 1

---
 src/main/java/com/nq/service/impl/StockServiceImpl.java |   59 +++++++++++++++++++++++++++++++++++++----------------------
 1 files changed, 37 insertions(+), 22 deletions(-)

diff --git a/src/main/java/com/nq/service/impl/StockServiceImpl.java b/src/main/java/com/nq/service/impl/StockServiceImpl.java
index a4d61ea..561000c 100644
--- a/src/main/java/com/nq/service/impl/StockServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/StockServiceImpl.java
@@ -116,34 +116,49 @@
     PageHelper.startPage(pageNum, pageSize);
     User user = iUserService.getCurrentUser(request);
     List<Stock> stockList = this.stockMapper.findStockListByKeyWords(keyWords, stockPlate, stockType, Integer.valueOf(0));
+    boolean quickSearch = org.apache.commons.lang3.StringUtils.isNotBlank(keyWords);
 
     List<StockListVO> stockListVOS = Lists.newArrayList();
-    if (stockList.size() > 0)
-      for (Stock stock : stockList) {
-        StockListVO stockListVO = new StockListVO();
-        stockListVO=SinaStockApi.assembleLideStockListVO(LiDeDataUtils.getStock(stock.getStockCode()));
-        if(ObjectUtils.isEmpty(stockListVO)){
-          stockListVO = SinaStockApi.assembleStockListVO(SinaStockApi.getSinaStock(stock.getStockGid()));
-        }
-        stockListVO.setCode(stock.getStockCode());
-        stockListVO.setSpell(stock.getStockSpell());
-        stockListVO.setGid(stock.getStockGid());
-        BigDecimal day3Rate = (BigDecimal)selectRateByDaysAndStockCode(stock.getStockCode(), 3).getData();
-        stockListVO.setDay3Rate(day3Rate);
-        stockListVO.setStock_plate(stock.getStockPlate());
-        stockListVO.setStock_type(stock.getStockType());
-        //是否添加自选
-        if(user == null){
-          stockListVO.setIsOption("0");
-        } else {
-          stockListVO.setIsOption(iStockOptionService.isMyOption(user.getId(), stock.getStockCode()));
-        }
-        stockListVOS.add(stockListVO);
-      }
+    if (stockList.size() > 0) {
+      Integer userId = user != null ? user.getId() : null;
+      stockListVOS = stockList.parallelStream().map(stock -> assembleStockListItem(stock, userId, quickSearch))
+              .collect(java.util.stream.Collectors.toList());
+    }
     PageInfo pageInfo = new PageInfo(stockList);
     pageInfo.setList(stockListVOS);
     return ServerResponse.createBySuccess(pageInfo);
   }
+
+  /** 搜索列表组装行情:关键词搜索走轻量路径,跳过三日涨幅等慢查询 */
+  private StockListVO assembleStockListItem(Stock stock, Integer userId, boolean quickSearch) {
+    StockListVO stockListVO = SinaStockApi.assembleLideStockListVO(LiDeDataUtils.getStock(stock.getStockCode()));
+    if (ObjectUtils.isEmpty(stockListVO)) {
+      stockListVO = SinaStockApi.assembleStockListVO(SinaStockApi.getSinaStock(stock.getStockGid()));
+    }
+    if (stockListVO == null) {
+      stockListVO = new StockListVO();
+      stockListVO.setName(stock.getStockName());
+      stockListVO.setNowPrice("0");
+      stockListVO.setHcrate(java.math.BigDecimal.ZERO);
+    }
+    stockListVO.setCode(stock.getStockCode());
+    stockListVO.setSpell(stock.getStockSpell());
+    stockListVO.setGid(stock.getStockGid());
+    if (!quickSearch) {
+      BigDecimal day3Rate = (BigDecimal) selectRateByDaysAndStockCode(stock.getStockCode(), 3).getData();
+      stockListVO.setDay3Rate(day3Rate);
+    }
+    stockListVO.setStock_plate(stock.getStockPlate());
+    stockListVO.setStock_type(stock.getStockType());
+    if (userId == null) {
+      stockListVO.setIsOption("0");
+    } else if (quickSearch) {
+      stockListVO.setIsOption("0");
+    } else {
+      stockListVO.setIsOption(iStockOptionService.isMyOption(userId, stock.getStockCode()));
+    }
+    return stockListVO;
+  }
   public void z1() {
     this.stockPoll.z1();
   }

--
Gitblit v1.9.3