From 51aae0539cae67fef7b54cd6da77bb8638ea1b09 Mon Sep 17 00:00:00 2001 From: ArvinLovegood Date: Mon, 31 Mar 2025 16:39:13 +0800 Subject: [PATCH] =?UTF-8?q?refactor(backend):=E4=BC=98=E5=8C=96=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E8=BE=93=E5=87=BA=E5=92=8C=E6=8E=A5=E5=8F=A3=E8=B0=83?= =?UTF-8?q?=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除不必要的日志输出,减少日志噪音 - 优化 OpenAI API 调用逻辑,改进消息构建方式 - 注释掉部分不必要的代码,提高代码可读性 - 更新 README 中的 DeepSeek 相关信息 --- README.md | 2 +- app.go | 2 +- backend/data/crawler_api.go | 6 +- backend/data/dingding_api.go | 2 +- backend/data/fund_data_api.go | 50 ++++++++-------- backend/data/openai_api.go | 100 ++++++++++++++++++++++--------- backend/data/openai_api_test.go | 5 +- backend/data/stock_data_api.go | 48 +++++++-------- backend/data/tushare_data_api.go | 6 +- 9 files changed, 134 insertions(+), 87 deletions(-) diff --git a/README.md b/README.md index cdf32d5..129a42a 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ QQ交流群:[点击链接加入群聊【go-stock交流群】:491605333](http | [Ollama](https://ollama.com/) | ✅ | 本地大模型运行平台 | | [LMStudio](https://lmstudio.ai/) | ✅ | 本地大模型运行平台 | | [AnythingLLM](https://anythingllm.com/) | ✅ | 本地知识库 | -| [DeepSeek](https://www.deepseek.com/) | ✅ | deepseek-reasoner模型测试有问题,可通过本地模型或聚合模型平台使用 | +| [DeepSeek](https://www.deepseek.com/) | ✅ | deepseek-reasoner,deepseek-chat | | [大模型聚合平台](https://cloud.siliconflow.cn/i/foufCerk) | ✅ | 如:[硅基流动](https://cloud.siliconflow.cn/i/foufCerk),[火山方舟](https://www.volcengine.com/experience/ark?utm_term=202502dsinvite&ac=DSASUQY5&rc=IJSE43PZ) | ### 各位亲爱的朋友们,如果您对这个项目感兴趣,请先给我一个star吧,谢谢!💕 diff --git a/app.go b/app.go index e242b3f..2737c45 100644 --- a/app.go +++ b/app.go @@ -380,7 +380,7 @@ func MonitorStockPrices(a *App) { total += stockInfo.ProfitAmountToday price, _ := convertor.ToFloat(stockInfo.Price) if stockInfo.PrePrice != price { - logger.SugaredLogger.Infof("-----------------------股票代码: %s, 股票名称: %s, 股票价格: %s,盘前盘后:%s", stockInfo.Code, stockInfo.Name, stockInfo.Price, stockInfo.BA) + //logger.SugaredLogger.Infof("-----------------------股票代码: %s, 股票名称: %s, 股票价格: %s,盘前盘后:%s", stockInfo.Code, stockInfo.Name, stockInfo.Price, stockInfo.BA) go runtime.EventsEmit(a.ctx, "stock_price", stockInfo) } } diff --git a/backend/data/crawler_api.go b/backend/data/crawler_api.go index e1cd6aa..41dc1e0 100644 --- a/backend/data/crawler_api.go +++ b/backend/data/crawler_api.go @@ -32,7 +32,7 @@ func (c *CrawlerApi) NewCrawler(ctx context.Context, crawlerBaseInfo CrawlerBase func (c *CrawlerApi) GetHtml(url, waitVisible string, headless bool) (string, bool) { htmlContent := "" path := getConfig().BrowserPath - logger.SugaredLogger.Infof("Browser path:%s", path) + //logger.SugaredLogger.Infof("Browser path:%s", path) if path != "" { pctx, pcancel := chromedp.NewExecAllocator( c.crawlerCtx, @@ -95,7 +95,7 @@ func (c *CrawlerApi) GetHtml(url, waitVisible string, headless bool) (string, bo func (c *CrawlerApi) GetHtmlWithNoCancel(url, waitVisible string, headless bool) (html string, ok bool, parent context.CancelFunc, child context.CancelFunc) { htmlContent := "" path := getConfig().BrowserPath - logger.SugaredLogger.Infof("BrowserPath :%s", path) + //logger.SugaredLogger.Infof("BrowserPath :%s", path) var parentCancel context.CancelFunc var childCancel context.CancelFunc var pctx context.Context @@ -163,7 +163,7 @@ func (c *CrawlerApi) GetHtmlWithActions(actions *[]chromedp.Action, headless boo *actions = append(*actions, chromedp.InnerHTML("body", &htmlContent)) path := getConfig().BrowserPath - logger.SugaredLogger.Infof("GetHtmlWithActions path:%s", path) + //logger.SugaredLogger.Infof("GetHtmlWithActions path:%s", path) if path != "" { pctx, pcancel := chromedp.NewExecAllocator( c.crawlerCtx, diff --git a/backend/data/dingding_api.go b/backend/data/dingding_api.go index a5ed6be..60c3afa 100644 --- a/backend/data/dingding_api.go +++ b/backend/data/dingding_api.go @@ -22,7 +22,7 @@ func NewDingDingAPI() *DingDingAPI { func (DingDingAPI) SendDingDingMessage(message string) string { if getConfig().DingPushEnable == false { - logger.SugaredLogger.Info("钉钉推送未开启") + //logger.SugaredLogger.Info("钉钉推送未开启") return "钉钉推送未开启" } // 发送钉钉消息 diff --git a/backend/data/fund_data_api.go b/backend/data/fund_data_api.go index 84006b6..7a649f6 100644 --- a/backend/data/fund_data_api.go +++ b/backend/data/fund_data_api.go @@ -107,7 +107,7 @@ func (f *FundApi) CrawlFundBasic(fundCode string) (*FundBasic, error) { crawler = crawler.NewCrawler(ctx, crawler.crawlerBaseInfo) url := fmt.Sprintf("%s/%s.html", crawler.crawlerBaseInfo.BaseUrl, fundCode) - logger.SugaredLogger.Infof("CrawlFundBasic url:%s", url) + //logger.SugaredLogger.Infof("CrawlFundBasic url:%s", url) // 使用现有爬虫框架解析页面 htmlContent, ok := crawler.GetHtml(url, ".merchandiseDetail", true) @@ -124,14 +124,14 @@ func (f *FundApi) CrawlFundBasic(fundCode string) (*FundBasic, error) { // 解析基础信息 name := doc.Find(".merchandiseDetail .fundDetail-tit").First().Text() fund.Name = strings.TrimSpace(strutil.ReplaceWithMap(name, map[string]string{"查看相关ETF>": ""})) - logger.SugaredLogger.Infof("基金名称:%s", fund.Name) + //logger.SugaredLogger.Infof("基金名称:%s", fund.Name) doc.Find(".infoOfFund table td ").Each(func(i int, s *goquery.Selection) { text := strutil.RemoveWhiteSpace(s.Text(), true) - logger.SugaredLogger.Infof("基金信息:%+v", text) + //logger.SugaredLogger.Infof("基金信息:%+v", text) defer func() { if r := recover(); r != nil { - logger.SugaredLogger.Errorf("panic: %v", r) + //logger.SugaredLogger.Errorf("panic: %v", r) } }() splitEx := strutil.SplitEx(text, ":", true) @@ -161,19 +161,19 @@ func (f *FundApi) CrawlFundBasic(fundCode string) (*FundBasic, error) { //获取基金净值涨跌幅信息 doc.Find(".dataOfFund dl > dd").Each(func(i int, s *goquery.Selection) { text := strutil.RemoveWhiteSpace(s.Text(), true) - logger.SugaredLogger.Infof("净值涨跌幅信息:%+v", text) + //logger.SugaredLogger.Infof("净值涨跌幅信息:%+v", text) defer func() { if r := recover(); r != nil { - logger.SugaredLogger.Errorf("panic: %v", r) + //logger.SugaredLogger.Errorf("panic: %v", r) } }() splitEx := strutil.SplitAndTrim(text, ":", "%") toFloat, err1 := convertor.ToFloat(splitEx[1]) if err1 != nil { - logger.SugaredLogger.Errorf("转换失败:%+v", err) + //logger.SugaredLogger.Errorf("转换失败:%+v", err) return } - logger.SugaredLogger.Infof("净值涨跌幅信息:%+v", toFloat) + //logger.SugaredLogger.Infof("净值涨跌幅信息:%+v", toFloat) if strutil.ContainsAny(text, []string{"近1月"}) { fund.NetGrowth1 = &toFloat } @@ -199,17 +199,17 @@ func (f *FundApi) CrawlFundBasic(fundCode string) (*FundBasic, error) { fund.NetGrowthAll = &toFloat } }) - doc.Find(".dataOfFund dl > dd.dataNums,.dataOfFund dl > dt").Each(func(i int, s *goquery.Selection) { - text := s.Text() - defer func() { - if r := recover(); r != nil { - logger.SugaredLogger.Errorf("panic: %v", r) - } - }() - logger.SugaredLogger.Infof("净值信息:%+v", text) - }) + //doc.Find(".dataOfFund dl > dd.dataNums,.dataOfFund dl > dt").Each(func(i int, s *goquery.Selection) { + // //text := s.Text() + // defer func() { + // if r := recover(); r != nil { + // //logger.SugaredLogger.Errorf("panic: %v", r) + // } + // }() + // //logger.SugaredLogger.Infof("净值信息:%+v", text) + //}) - logger.SugaredLogger.Infof("基金信息:%+v", fund) + //logger.SugaredLogger.Infof("基金信息:%+v", fund) count := int64(0) db.Dao.Model(fund).Where("code=?", fund.Code).Count(&count) @@ -275,7 +275,7 @@ func (f *FundApi) UnFollowFund(fundCode string) string { func (f *FundApi) AllFund() { defer func() { if r := recover(); r != nil { - logger.SugaredLogger.Errorf("AllFund panic: %v", r) + //logger.SugaredLogger.Errorf("AllFund panic: %v", r) } }() @@ -296,7 +296,7 @@ func (f *FundApi) AllFund() { cnt++ name := text[0] str := strutil.SplitAndTrim(name, ")", "(", ")") - logger.SugaredLogger.Infof("%d,基金信息 code:%s,name:%s", cnt, str[0], str[1]) + //logger.SugaredLogger.Infof("%d,基金信息 code:%s,name:%s", cnt, str[0], str[1]) //go f.CrawlFundBasic(str[0]) fund := &FundBasic{ Code: str[0], @@ -337,11 +337,11 @@ func (f *FundApi) CrawlFundNetEstimatedUnit(code string) { } if response.StatusCode() == 200 { htmlContent := string(response.Body()) - logger.SugaredLogger.Infof("htmlContent:%s", htmlContent) + //logger.SugaredLogger.Infof("htmlContent:%s", htmlContent) if strings.Contains(htmlContent, "jsonpgz") { htmlContent = strutil.Trim(htmlContent, "jsonpgz(", ");") htmlContent = strutil.Trim(htmlContent, ");") - logger.SugaredLogger.Infof("基金净值信息:%s", htmlContent) + //logger.SugaredLogger.Infof("基金净值信息:%s", htmlContent) err := json.Unmarshal([]byte(htmlContent), &fundNetUnitValue) if err != nil { logger.SugaredLogger.Errorf("json.Unmarshal error:%s", err.Error()) @@ -365,7 +365,7 @@ func (f *FundApi) CrawlFundNetEstimatedUnit(code string) { func (f *FundApi) CrawlFundNetUnitValue(code string) { // var fundNetUnitValue FundNetUnitValue url := fmt.Sprintf("http://hq.sinajs.cn/rn=%d&list=f_%s", time.Now().UnixMilli(), code) - logger.SugaredLogger.Infof("url:%s", url) + //logger.SugaredLogger.Infof("url:%s", url) response, err := f.client.SetTimeout(time.Duration(f.config.CrawlTimeOut)*time.Second).R(). SetHeader("Host", "hq.sinajs.cn"). SetHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.0.0"). @@ -377,12 +377,12 @@ func (f *FundApi) CrawlFundNetUnitValue(code string) { } if response.StatusCode() == 200 { data := string(GB18030ToUTF8(response.Body())) - logger.SugaredLogger.Infof("data:%s", data) + //logger.SugaredLogger.Infof("data:%s", data) datas := strutil.SplitAndTrim(data, "=", "\"") if len(datas) >= 2 { //codex := strings.Split(datas[0], "hq_str_f_")[1] parts := strutil.SplitAndTrim(datas[1], ",", "\"") - logger.SugaredLogger.Infof("parts:%s", parts) + //logger.SugaredLogger.Infof("parts:%s", parts) val, err := convertor.ToFloat(parts[1]) if err != nil { logger.SugaredLogger.Errorf("err:%s", err.Error()) diff --git a/backend/data/openai_api.go b/backend/data/openai_api.go index 2b805cc..a021b98 100644 --- a/backend/data/openai_api.go +++ b/backend/data/openai_api.go @@ -167,9 +167,14 @@ func (o OpenAi) NewChatStream(stock, stockCode, userQuestion string, sysPromptId market.WriteString(getZSInfo("创业板指数", "sz399006", 30) + "\n") market.WriteString(getZSInfo("上证综合指数", "sh000001", 30) + "\n") market.WriteString(getZSInfo("沪深300指数", "sh000300", 30) + "\n") + //logger.SugaredLogger.Infof("NewChatStream getZSInfo=\n%s", market.String()) msg = append(msg, map[string]interface{}{ "role": "user", - "content": "大盘指数情况如下:\n" + market.String(), + "content": "市场指数", + }) + msg = append(msg, map[string]interface{}{ + "role": "assistant", + "content": "市场指数情况如下:\n" + market.String(), }) }() @@ -184,6 +189,10 @@ func (o OpenAi) NewChatStream(stock, stockCode, userQuestion string, sysPromptId K := NewTushareApi(getConfig()).GetDaily(code, startDate, endDate, o.CrawlTimeOut) msg = append(msg, map[string]interface{}{ "role": "user", + "content": stock + "日K数据", + }) + msg = append(msg, map[string]interface{}{ + "role": "assistant", "content": stock + "日K数据如下:\n" + K, }) }() @@ -208,6 +217,10 @@ func (o OpenAi) NewChatStream(stock, stockCode, userQuestion string, sysPromptId } msg = append(msg, map[string]interface{}{ "role": "user", + "content": stock + "股价数据", + }) + msg = append(msg, map[string]interface{}{ + "role": "assistant", "content": "\n## " + stock + "股价数据:\n" + price, }) }() @@ -231,9 +244,13 @@ func (o OpenAi) NewChatStream(stock, stockCode, userQuestion string, sysPromptId go runtime.EventsEmit(o.ctx, "warnMsg", "❗获取股票财报失败,分析结果可能不准确") return } + msg = append(msg, map[string]interface{}{ + "role": "user", + "content": stock + "财报数据", + }) for _, message := range *messages { msg = append(msg, map[string]interface{}{ - "role": "user", + "role": "assistant", "content": stock + message, }) } @@ -248,12 +265,19 @@ func (o OpenAi) NewChatStream(stock, stockCode, userQuestion string, sysPromptId //go runtime.EventsEmit(o.ctx, "warnMsg", "❗获取市场资讯失败,分析结果可能不准确") return } + var messageText strings.Builder for _, message := range *messages { - msg = append(msg, map[string]interface{}{ - "role": "user", - "content": message, - }) + messageText.WriteString(message + "\n") } + msg = append(msg, map[string]interface{}{ + "role": "user", + "content": "市场资讯", + }) + msg = append(msg, map[string]interface{}{ + "role": "assistant", + "content": messageText.String(), + }) + messages = GetTopNewsList(o.CrawlTimeOut) if messages == nil || len(*messages) == 0 { logger.SugaredLogger.Error("获取新闻资讯失败") @@ -261,12 +285,18 @@ func (o OpenAi) NewChatStream(stock, stockCode, userQuestion string, sysPromptId //go runtime.EventsEmit(o.ctx, "warnMsg", "❗获取新闻资讯失败,分析结果可能不准确") return } + var newsText strings.Builder for _, message := range *messages { - msg = append(msg, map[string]interface{}{ - "role": "user", - "content": message, - }) + newsText.WriteString(message + "\n") } + msg = append(msg, map[string]interface{}{ + "role": "user", + "content": "新闻资讯", + }) + msg = append(msg, map[string]interface{}{ + "role": "assistant", + "content": newsText.String(), + }) }() //go func() { @@ -294,12 +324,18 @@ func (o OpenAi) NewChatStream(stock, stockCode, userQuestion string, sysPromptId //go runtime.EventsEmit(o.ctx, "warnMsg", "❗获取股票电报资讯失败,分析结果可能不准确") return } + var newsText strings.Builder for _, message := range *messages { - msg = append(msg, map[string]interface{}{ - "role": "user", - "content": message, - }) + newsText.WriteString(message + "\n") } + msg = append(msg, map[string]interface{}{ + "role": "user", + "content": stock + "相关新闻资讯", + }) + msg = append(msg, map[string]interface{}{ + "role": "assistant", + "content": newsText.String(), + }) }() go func() { @@ -316,12 +352,18 @@ func (o OpenAi) NewChatStream(stock, stockCode, userQuestion string, sysPromptId //go runtime.EventsEmit(o.ctx, "warnMsg", "❗获取股势通资讯失败,分析结果可能不准确") return } + var newsText strings.Builder for _, message := range *messages { - msg = append(msg, map[string]interface{}{ - "role": "user", - "content": message, - }) + newsText.WriteString(message + "\n") } + msg = append(msg, map[string]interface{}{ + "role": "user", + "content": stock + "相关新闻资讯", + }) + msg = append(msg, map[string]interface{}{ + "role": "assistant", + "content": newsText.String(), + }) }() wg.Wait() @@ -329,6 +371,10 @@ func (o OpenAi) NewChatStream(stock, stockCode, userQuestion string, sysPromptId "role": "user", "content": question, }) + + //reqJson, _ := json.Marshal(msg) + //logger.SugaredLogger.Errorf("Stream request: \n%s", reqJson) + client := resty.New() client.SetBaseURL(strutil.Trim(o.BaseUrl)) client.SetHeader("Authorization", "Bearer "+o.ApiKey) @@ -365,7 +411,7 @@ func (o OpenAi) NewChatStream(stock, stockCode, userQuestion string, sysPromptId scanner := bufio.NewScanner(body) for scanner.Scan() { line := scanner.Text() - logger.SugaredLogger.Infof("Received data: %s", line) + //logger.SugaredLogger.Infof("Received data: %s", line) if strings.HasPrefix(line, "data:") { data := strutil.Trim(strings.TrimPrefix(line, "data:")) if data == "[DONE]" { @@ -396,7 +442,7 @@ func (o OpenAi) NewChatStream(stock, stockCode, userQuestion string, sysPromptId "content": content, } - logger.SugaredLogger.Infof("Content data: %s", content) + //logger.SugaredLogger.Infof("Content data: %s", content) } if reasoningContent := choice.Delta.ReasoningContent; reasoningContent != "" { //ch <- reasoningContent @@ -408,7 +454,7 @@ func (o OpenAi) NewChatStream(stock, stockCode, userQuestion string, sysPromptId "content": reasoningContent, } - logger.SugaredLogger.Infof("ReasoningContent data: %s", reasoningContent) + //logger.SugaredLogger.Infof("ReasoningContent data: %s", reasoningContent) } if choice.FinishReason == "stop" { return @@ -482,7 +528,7 @@ func SearchGuShiTongStockInfo(stock string, crawlTimeOut int64) *[]string { url = "https://gushitong.baidu.com/stock/us-" + strings.Replace(stock, "gb_", "", 1) } - logger.SugaredLogger.Infof("SearchGuShiTongStockInfo搜索股票-%s: %s", stock, url) + //logger.SugaredLogger.Infof("SearchGuShiTongStockInfo搜索股票-%s: %s", stock, url) actions := []chromedp.Action{ chromedp.Navigate(url), chromedp.WaitVisible("div.cos-tab"), @@ -503,9 +549,9 @@ func SearchGuShiTongStockInfo(stock string, crawlTimeOut int64) *[]string { document.Find("div.finance-hover,div.list-date").Each(func(i int, selection *goquery.Selection) { text := strutil.RemoveWhiteSpace(selection.Text(), false) messages = append(messages, ReplaceSensitiveWords(text)) - logger.SugaredLogger.Infof("SearchGuShiTongStockInfo搜索到消息-%s: %s", "", text) + //logger.SugaredLogger.Infof("SearchGuShiTongStockInfo搜索到消息-%s: %s", "", text) }) - logger.SugaredLogger.Infof("messages:%d", len(messages)) + //logger.SugaredLogger.Infof("messages:%d", len(messages)) } return &messages } @@ -527,7 +573,7 @@ func GetFinancialReports(stockCode string, crawlTimeOut int64) *[]string { } - logger.SugaredLogger.Infof("GetFinancialReports搜索股票-%s: %s", stockCode, url) + //logger.SugaredLogger.Infof("GetFinancialReports搜索股票-%s: %s", stockCode, url) crawlerAPI := CrawlerApi{} crawlerBaseInfo := CrawlerBaseInfo{ @@ -570,7 +616,7 @@ func GetTelegraphList(crawlTimeOut int64) *[]string { } var telegraph []string document.Find("div.telegraph-content-box").Each(func(i int, selection *goquery.Selection) { - logger.SugaredLogger.Info(selection.Text()) + //logger.SugaredLogger.Info(selection.Text()) telegraph = append(telegraph, ReplaceSensitiveWords(selection.Text())) }) return &telegraph @@ -592,7 +638,7 @@ func GetTopNewsList(crawlTimeOut int64) *[]string { } var telegraph []string document.Find("div.home-article-title a,div.home-article-rec a").Each(func(i int, selection *goquery.Selection) { - logger.SugaredLogger.Info(selection.Text()) + //logger.SugaredLogger.Info(selection.Text()) telegraph = append(telegraph, ReplaceSensitiveWords(selection.Text())) }) return &telegraph diff --git a/backend/data/openai_api_test.go b/backend/data/openai_api_test.go index a02c5ad..6707aa7 100644 --- a/backend/data/openai_api_test.go +++ b/backend/data/openai_api_test.go @@ -2,13 +2,14 @@ package data import ( "context" + "go-stock/backend/db" "testing" ) func TestNewDeepSeekOpenAiConfig(t *testing.T) { - //db.Init("../../data/stock.db") + db.Init("../../data/stock.db") ai := NewDeepSeekOpenAi(context.TODO()) - res := ai.NewChatStream("上海贝岭", "sh600171", "分析以上股票资金流入信息,找出适合买入的股票,给出具体操作建议", nil) + res := ai.NewChatStream("上海贝岭", "sh600171", "上海贝岭分析和总结", nil) for { select { case msg := <-res: diff --git a/backend/data/stock_data_api.go b/backend/data/stock_data_api.go index 76ede50..3cfc23a 100644 --- a/backend/data/stock_data_api.go +++ b/backend/data/stock_data_api.go @@ -267,7 +267,7 @@ func (receiver StockDataApi) GetStockBaseInfo() { stock := &StockBasic{} data := map[string]any{} for _, field := range strings.Split(fields, ",") { - logger.SugaredLogger.Infof("field: %s", field) + //logger.SugaredLogger.Infof("field: %s", field) idx := slice.IndexOf(res.Data.Fields, field) if idx == -1 { continue @@ -318,7 +318,7 @@ func (receiver StockDataApi) GetStockCodeRealTimeData(StockCodes ...string) (*[] for _, data := range dataStr { //logger.SugaredLogger.Info(data) stockData, err := ParseFullSingleStockData(data) - logger.SugaredLogger.Infof("GetStockCodeRealTimeData %v", stockData) + //logger.SugaredLogger.Infof("GetStockCodeRealTimeData %v", stockData) if err != nil { logger.SugaredLogger.Error(err.Error()) continue @@ -341,7 +341,7 @@ func (receiver StockDataApi) GetStockCodeRealTimeData(StockCodes ...string) (*[] } func (receiver StockDataApi) Follow(stockCode string) string { - logger.SugaredLogger.Infof("Follow %s", stockCode) + //logger.SugaredLogger.Infof("Follow %s", stockCode) stockInfos, err := receiver.GetStockCodeRealTimeData(stockCode) if err != nil || len(*stockInfos) == 0 { logger.SugaredLogger.Error(err) @@ -351,7 +351,7 @@ func (receiver StockDataApi) Follow(stockCode string) string { maxSort := int64(0) db.Dao.Model(&FollowedStock{}).Raw("select max(sort) as sort from followed_stock").Scan(&maxSort) - logger.SugaredLogger.Infof("Follow-maxSort %v", maxSort) + //logger.SugaredLogger.Infof("Follow-maxSort %v", maxSort) stockInfo := (*stockInfos)[0] price, _ := convertor.ToFloat(stockInfo.Price) @@ -531,7 +531,7 @@ func ParseUSStockData(datas []string) (map[string]string, error) { result := make(map[string]string) parts := strutil.SplitAndTrim(datas[1], ",", "\"", ";") //parts := strings.Split(data, ",") - logger.SugaredLogger.Infof("股票数据解析完成: parts:%d", len(parts)) + //logger.SugaredLogger.Infof("股票数据解析完成: parts:%d", len(parts)) if len(parts) < 35 { return nil, fmt.Errorf("invalid data format") } @@ -590,7 +590,7 @@ func ParseUSStockData(datas []string) (map[string]string, error) { result["盘前盘后涨跌幅"] = parts[22] result["日期"] = strutil.SplitAndTrim(parts[3], " ", "")[0] result["时间"] = strutil.SplitAndTrim(parts[3], " ", "")[1] - logger.SugaredLogger.Infof("美股股票数据解析完成: %v", result) + //logger.SugaredLogger.Infof("美股股票数据解析完成: %v", result) return result, nil } @@ -749,16 +749,16 @@ func GetRealTimeStockPriceInfo(ctx context.Context, stockCode string) (price, pr priceTime := "" document, err := goquery.NewDocumentFromReader(strings.NewReader(htmlContent)) if err != nil { - logger.SugaredLogger.Errorf("GetRealTimeStockPriceInfo error: %v", err) + //logger.SugaredLogger.Errorf("GetRealTimeStockPriceInfo error: %v", err) } document.Find("div.zxj").Each(func(i int, selection *goquery.Selection) { price = selection.Text() - logger.SugaredLogger.Infof("股票代码: %s, 当前价格: %s", stockCode, price) + //logger.SugaredLogger.Infof("股票代码: %s, 当前价格: %s", stockCode, price) }) document.Find("span.quote_title_time").Each(func(i int, selection *goquery.Selection) { priceTime = selection.Text() - logger.SugaredLogger.Infof("股票代码: %s, 当前价格时间: %s", stockCode, priceTime) + //logger.SugaredLogger.Infof("股票代码: %s, 当前价格时间: %s", stockCode, priceTime) }) return price, priceTime } @@ -814,25 +814,25 @@ func getUSStockPriceInfo(stockCode string, crawlTimeOut int64) *[]string { stockPriceTime := "" document.Find("div.hq_title >h1").Each(func(i int, selection *goquery.Selection) { stockName = strutil.RemoveNonPrintable(selection.Text()) - logger.SugaredLogger.Infof("股票名称-:%s", stockName) + //logger.SugaredLogger.Infof("股票名称-:%s", stockName) }) document.Find("#hqPrice").Each(func(i int, selection *goquery.Selection) { stockPrice = strutil.RemoveNonPrintable(selection.Text()) - logger.SugaredLogger.Infof("现价: %s", stockPrice) + //logger.SugaredLogger.Infof("现价: %s", stockPrice) }) document.Find("div.hq_time").Each(func(i int, selection *goquery.Selection) { stockPriceTime = strutil.RemoveNonPrintable(selection.Text()) - logger.SugaredLogger.Infof("时间: %s", stockPriceTime) + //logger.SugaredLogger.Infof("时间: %s", stockPriceTime) }) messages = append(messages, fmt.Sprintf("%s:%s现价%s", stockPriceTime, stockName, stockPrice)) - logger.SugaredLogger.Infof("股票: %s", messages) + //logger.SugaredLogger.Infof("股票: %s", messages) document.Find("div#hqDetails >table tbody tr").Each(func(i int, selection *goquery.Selection) { text := strutil.RemoveNonPrintable(selection.Text()) - logger.SugaredLogger.Infof("股票名称-%s: %s", stockName, text) + //logger.SugaredLogger.Infof("股票名称-%s: %s", stockName, text) messages = append(messages, text) }) @@ -866,25 +866,25 @@ func getHKStockPriceInfo(stockCode string, crawlTimeOut int64) *[]string { stockPriceTime := "" document.Find("#stock_cname").Each(func(i int, selection *goquery.Selection) { stockName = strutil.RemoveNonPrintable(selection.Text()) - logger.SugaredLogger.Infof("股票名称-:%s", stockName) + //logger.SugaredLogger.Infof("股票名称-:%s", stockName) }) document.Find("#mts_stock_hk_price").Each(func(i int, selection *goquery.Selection) { stockPrice = strutil.RemoveNonPrintable(selection.Text()) - logger.SugaredLogger.Infof("现价: %s", stockPrice) + //logger.SugaredLogger.Infof("现价: %s", stockPrice) }) document.Find("#mts_stock_hk_time").Each(func(i int, selection *goquery.Selection) { stockPriceTime = strutil.RemoveNonPrintable(selection.Text()) - logger.SugaredLogger.Infof("时间: %s", stockPriceTime) + //logger.SugaredLogger.Infof("时间: %s", stockPriceTime) }) messages = append(messages, fmt.Sprintf("%s:%s现价%s", stockPriceTime, stockName, stockPrice)) - logger.SugaredLogger.Infof("股票: %s", messages) + //logger.SugaredLogger.Infof("股票: %s", messages) document.Find(".deta_hqContainer >.deta03 li").Each(func(i int, selection *goquery.Selection) { text := strutil.RemoveNonPrintable(selection.Text()) - logger.SugaredLogger.Infof("股票名称-%s: %s", stockName, text) + //logger.SugaredLogger.Infof("股票名称-%s: %s", stockName, text) messages = append(messages, text) }) @@ -967,7 +967,7 @@ func SearchStockInfo(stock, msgType string, crawlTimeOut int64) *[]string { defer timeoutCtxCancel() crawler = crawler.NewCrawler(timeoutCtx, crawler.crawlerBaseInfo) url := fmt.Sprintf("https://www.cls.cn/searchPage?keyword=%s&type=%s", RemoveAllBlankChar(stock), msgType) - logger.SugaredLogger.Infof("SearchStockInfo url:%s", url) + //logger.SugaredLogger.Infof("SearchStockInfo url:%s", url) waitVisible := ".search-telegraph-list,.subject-interest-list" htmlContent, ok := crawler.GetHtml(url, waitVisible, true) if !ok { @@ -982,7 +982,7 @@ func SearchStockInfo(stock, msgType string, crawlTimeOut int64) *[]string { document.Find(waitVisible).Each(func(i int, selection *goquery.Selection) { text := strutil.RemoveNonPrintable(selection.Text()) messages = append(messages, ReplaceSensitiveWords(text)) - logger.SugaredLogger.Infof("搜索到消息-%s: %s", msgType, text) + //logger.SugaredLogger.Infof("搜索到消息-%s: %s", msgType, text) }) return &messages } @@ -1020,7 +1020,7 @@ func SearchStockInfoByCode(stock string) *[]string { text := strutil.RemoveNonPrintable(selection.Text()) if strings.Contains(text, stock) { messages = append(messages, text) - logger.SugaredLogger.Infof("搜索到消息: %s", text) + //logger.SugaredLogger.Infof("搜索到消息: %s", text) } }) return &messages @@ -1039,7 +1039,7 @@ func checkChromeOnWindows() (string, bool) { } defer key.Close() path, _, err := key.GetStringValue("Path") - logger.SugaredLogger.Infof("Chrome安装路径:%s", path) + //logger.SugaredLogger.Infof("Chrome安装路径:%s", path) if err != nil { return "", false } @@ -1063,7 +1063,7 @@ func CheckBrowserOnWindows() (string, bool) { } defer key.Close() path, _, err := key.GetStringValue("Path") - logger.SugaredLogger.Infof("Edge安装路径:%s", path) + //logger.SugaredLogger.Infof("Edge安装路径:%s", path) if err != nil { return "", false } diff --git a/backend/data/tushare_data_api.go b/backend/data/tushare_data_api.go index a959897..d123215 100644 --- a/backend/data/tushare_data_api.go +++ b/backend/data/tushare_data_api.go @@ -29,12 +29,12 @@ func NewTushareApi(config *Settings) *TushareApi { // GetDaily tushare A股日线行情 func (receiver TushareApi) GetDaily(tsCode, startDate, endDate string, crawlTimeOut int64) string { - logger.SugaredLogger.Debugf("tushare daily request: ts_code=%s, start_date=%s, end_date=%s", tsCode, startDate, endDate) + //logger.SugaredLogger.Debugf("tushare daily request: ts_code=%s, start_date=%s, end_date=%s", tsCode, startDate, endDate) fields := "ts_code,trade_date,open,high,low,close,pre_close,change,pct_chg,vol,amount" resp := &TushareStockBasicResponse{} stockType := getStockType(tsCode) tsCodeNEW := getTsCode(tsCode) - logger.SugaredLogger.Debugf("tushare daily request: %s,tsCode:%s,tsCodeNEW:%s", stockType, tsCode, tsCodeNEW) + //logger.SugaredLogger.Debugf("tushare daily request: %s,tsCode:%s,tsCodeNEW:%s", stockType, tsCode, tsCodeNEW) _, err := receiver.client.SetTimeout(time.Duration(crawlTimeOut)*time.Second).R(). SetHeader("content-type", "application/json"). SetBody(&TushareRequest{ @@ -66,7 +66,7 @@ func (receiver TushareApi) GetDaily(tsCode, startDate, endDate string, crawlTime res += t + "\n" } } - logger.SugaredLogger.Debugf("tushare response: %s", res) + //logger.SugaredLogger.Debugf("tushare response: %s", res) return res }