From 673d446b05d696ea5813af03d4278088f93cff98 Mon Sep 17 00:00:00 2001 From: ArvinLovegood Date: Thu, 12 Jun 2025 17:32:58 +0800 Subject: [PATCH] =?UTF-8?q?feat(market):=E5=A2=9E=E5=8A=A0=E9=BE=99?= =?UTF-8?q?=E8=99=8E=E6=A6=9C=E4=B8=8A=E6=A6=9C=E5=8E=9F=E5=9B=A0=E7=AD=9B?= =?UTF-8?q?=E9=80=89=E5=8A=9F=E8=83=BD=E5=B9=B6=E4=BC=98=E5=8C=96=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在前端市场组件中添加龙虎榜上榜原因筛选功能 - 实现后台数据存储优化,避免重复插入相同数据 - 为 LongTigerRankData 模型添加索引,提高查询效率 --- backend/data/market_news_api.go | 11 +++++++++- backend/models/models.go | 4 ++-- frontend/src/components/market.vue | 33 +++++++++++++++++++++++++++--- 3 files changed, 42 insertions(+), 6 deletions(-) diff --git a/backend/data/market_news_api.go b/backend/data/market_news_api.go index ce48c6f..2ca9ca5 100644 --- a/backend/data/market_news_api.go +++ b/backend/data/market_news_api.go @@ -365,6 +365,15 @@ func (m MarketNewsApi) LongTiger(date string) *[]models.LongTigerRankData { logger.SugaredLogger.Error(err) return ranks } - db.Dao.Create(*ranks) + for _, rankData := range *ranks { + temp := &models.LongTigerRankData{} + db.Dao.Model(temp).Where(&models.LongTigerRankData{ + TRADEDATE: rankData.TRADEDATE, + SECUCODE: rankData.SECUCODE, + }).First(temp) + if temp.SECURITYTYPECODE == "" { + db.Dao.Model(temp).Create(&rankData) + } + } return ranks } diff --git a/backend/models/models.go b/backend/models/models.go index 55598a1..b30312b 100644 --- a/backend/models/models.go +++ b/backend/models/models.go @@ -291,11 +291,11 @@ type LongTigerRankData struct { EXPLAIN string `json:"EXPLAIN"` EXPLANATION string `json:"EXPLANATION"` FREEMARKETCAP float64 `json:"FREE_MARKET_CAP"` - SECUCODE string `json:"SECUCODE"` + SECUCODE string `json:"SECUCODE" gorm:"index"` SECURITYCODE string `json:"SECURITY_CODE"` SECURITYNAMEABBR string `json:"SECURITY_NAME_ABBR"` SECURITYTYPECODE string `json:"SECURITY_TYPE_CODE"` - TRADEDATE string `json:"TRADE_DATE"` + TRADEDATE string `json:"TRADE_DATE" gorm:"index"` TURNOVERRATE float64 `json:"TURNOVERRATE"` } diff --git a/frontend/src/components/market.vue b/frontend/src/components/market.vue index 23cba7e..565b6bb 100644 --- a/frontend/src/components/market.vue +++ b/frontend/src/components/market.vue @@ -65,6 +65,7 @@ const nowTab = ref("市场快讯") const indexInterval = ref(null) const indexIndustryRank = ref(null) const drawerShow= ref(false) +const EXPLANATIONs = ref([]) const today = new Date(); const year = today.getFullYear(); @@ -76,6 +77,7 @@ const formattedDate = `${year}-${month}-${day}`; const SearchForm= ref({ dateValue: formattedDate, + EXPLANATION:null, }) function getIndex() { @@ -102,9 +104,29 @@ function longTiger(date) { if (res.length === 0) { message.info("暂无数据,请切换日期") } + EXPLANATIONs.value=_.uniqBy(_.map(lhbList.value,function (item){ + return { + label: item['EXPLANATION'], + value: item['EXPLANATION'], + } + }),'label'); }) } +function handleEXPLANATION(value, option){ + SearchForm.value.EXPLANATION = value + if(value){ + LongTigerRank(SearchForm.value.dateValue).then(res => { + lhbList.value=_.filter(res, function(o) { return o['EXPLANATION']===value; }); + if (res.length === 0) { + message.info("暂无数据,请切换日期") + } + }) + }else{ + longTiger(SearchForm.value.dateValue) + } +} + function sortLongTigerRank(e){ console.log(e.target.dataset) // let field= e.target.dataset.field; @@ -580,11 +602,16 @@ function ReFlesh(source) { - - + + - + + + + +