diff --git a/app_common.go b/app_common.go
index 0418174..14351ec 100644
--- a/app_common.go
+++ b/app_common.go
@@ -13,3 +13,7 @@ import (
func (a *App) LongTigerRank(date string) *[]models.LongTigerRankData {
return data.NewMarketNewsApi().LongTiger(date)
}
+
+func (a *App) StockResearchReport() []any {
+ return data.NewMarketNewsApi().StockResearchReport(7)
+}
diff --git a/backend/data/market_news_api.go b/backend/data/market_news_api.go
index 2ca9ca5..4a47212 100644
--- a/backend/data/market_news_api.go
+++ b/backend/data/market_news_api.go
@@ -377,3 +377,50 @@ func (m MarketNewsApi) LongTiger(date string) *[]models.LongTigerRankData {
}
return ranks
}
+
+func (m MarketNewsApi) StockResearchReport(days int) []any {
+
+ type Req struct {
+ BeginTime string `json:"beginTime"`
+ EndTime string `json:"endTime"`
+ IndustryCode string `json:"industryCode"`
+ RatingChange string `json:"ratingChange"`
+ Rating string `json:"rating"`
+ OrgCode interface{} `json:"orgCode"`
+ Code string `json:"code"`
+ Rcode string `json:"rcode"`
+ PageSize int `json:"pageSize"`
+ PageNo int `json:"pageNo"`
+ P int `json:"p"`
+ PageNum int `json:"pageNum"`
+ PageNumber int `json:"pageNumber"`
+ }
+
+ url := "https://reportapi.eastmoney.com/report/list2"
+ beginDate := time.Now().Add(-time.Duration(days) * 24 * time.Hour).Format("2006-01-02")
+ endDate := time.Now().Format("2006-01-02")
+ logger.SugaredLogger.Infof("beginDate:%s endDate:%s", beginDate, endDate)
+ resp, err := resty.New().SetTimeout(time.Duration(15)*time.Second).R().
+ SetHeader("Host", "reportapi.eastmoney.com").
+ SetHeader("Origin", "https://data.eastmoney.com").
+ SetHeader("Referer", "https://data.eastmoney.com/report/stock.jshtml").
+ SetHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:140.0) Gecko/20100101 Firefox/140.0").
+ SetHeader("Content-Type", "application/json").
+ SetBody(&Req{
+ BeginTime: beginDate,
+ EndTime: endDate,
+ PageNo: 1,
+ PageSize: 50,
+ P: 1,
+ PageNum: 1,
+ PageNumber: 1,
+ }).Post(url)
+ respMap := map[string]any{}
+
+ if err != nil {
+ return []any{}
+ }
+ json.Unmarshal(resp.Body(), &respMap)
+ //logger.SugaredLogger.Infof("resp:%+v", respMap["data"])
+ return respMap["data"].([]any)
+}
diff --git a/backend/data/market_news_api_test.go b/backend/data/market_news_api_test.go
index dd2eabb..bfa0069 100644
--- a/backend/data/market_news_api_test.go
+++ b/backend/data/market_news_api_test.go
@@ -64,3 +64,11 @@ func TestLongTiger(t *testing.T) {
NewMarketNewsApi().LongTiger("2025-06-08")
}
+
+func TestStockResearchReport(t *testing.T) {
+ db.Init("../../data/stock.db")
+ resp := NewMarketNewsApi().StockResearchReport(7)
+ for _, a := range resp {
+ logger.SugaredLogger.Debugf("value: %+v", a)
+ }
+}
diff --git a/frontend/src/components/StockResearchReportList.vue b/frontend/src/components/StockResearchReportList.vue
new file mode 100644
index 0000000..4645ed4
--- /dev/null
+++ b/frontend/src/components/StockResearchReportList.vue
@@ -0,0 +1,103 @@
+
+
+
+
+
+
+
+ 名称
+ 行业
+ 标题
+ 东财评级
+ 评级变动
+ 机构评级
+ 分析师
+ 机构
+ 日期
+
+
+
+
+
+
+
+
+ {{item.stockName}}
+
+
+
+
+ {{item.indvInduName}}
+
+ {{item.title}}
+
+
+ {{item.emRatingName}}
+
+ {{ratingChangeName(item.ratingChange)}}
+ {{item.sRatingName}}
+ {{item.researcher}}
+ {{item.orgSName}}
+ {{item.publishDate.substring(0,10)}}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/frontend/src/components/market.vue b/frontend/src/components/market.vue
index 565b6bb..f9dd4ad 100644
--- a/frontend/src/components/market.vue
+++ b/frontend/src/components/market.vue
@@ -24,6 +24,7 @@ import {useRoute} from 'vue-router'
import RankTable from "./rankTable.vue";
import IndustryMoneyRank from "./industryMoneyRank.vue";
import MoneyTrend from "./moneyTrend.vue";
+import StockResearchReportList from "./StockResearchReportList.vue";
const route = useRoute()
const icon = ref('https://raw.githubusercontent.com/ArvinLovegood/go-stock/master/build/appicon.png');
@@ -703,6 +704,9 @@ function ReFlesh(source) {
+
+
+
diff --git a/frontend/wailsjs/go/main/App.d.ts b/frontend/wailsjs/go/main/App.d.ts
index 594abac..a71e540 100644
--- a/frontend/wailsjs/go/main/App.d.ts
+++ b/frontend/wailsjs/go/main/App.d.ts
@@ -89,6 +89,8 @@ export function SetStockSort(arg1:number,arg2:string):Promise;
export function ShareAnalysis(arg1:string,arg2:string):Promise;
+export function StockResearchReport():Promise>;
+
export function SummaryStockNews(arg1:string,arg2:any):Promise;
export function UnFollow(arg1:string):Promise;
diff --git a/frontend/wailsjs/go/main/App.js b/frontend/wailsjs/go/main/App.js
index 50d3cf9..dfb00a2 100644
--- a/frontend/wailsjs/go/main/App.js
+++ b/frontend/wailsjs/go/main/App.js
@@ -174,6 +174,10 @@ export function ShareAnalysis(arg1, arg2) {
return window['go']['main']['App']['ShareAnalysis'](arg1, arg2);
}
+export function StockResearchReport() {
+ return window['go']['main']['App']['StockResearchReport']();
+}
+
export function SummaryStockNews(arg1, arg2) {
return window['go']['main']['App']['SummaryStockNews'](arg1, arg2);
}