From 9a46788339ea61dec3fa9d9cf13a2edb8cc2214a Mon Sep 17 00:00:00 2001 From: spark Date: Thu, 9 Jan 2025 15:37:20 +0800 Subject: [PATCH] =?UTF-8?q?feat(app=5Flinux):=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E8=82=A1=E7=A5=A8=E6=8E=92=E5=BA=8F=E5=92=8C=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E5=8F=91=E9=80=81=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加 SetStockSort 方法,用于设置股票排序 - 新增 SendDingDingMessageByType 方法,根据消息类型发送钉钉消息- 实现 GenNotificationMsg 方法,生成通知消息内容 - 添加 getMsgTypeTTL 和 getMsgTypeName 方法,用于获取消息类型的 TTL 和名称 - 优化 Greet 方法,处理返回的股票数据 --- app_linux.go | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 66 insertions(+), 2 deletions(-) diff --git a/app_linux.go b/app_linux.go index 92490b7..d2acc70 100644 --- a/app_linux.go +++ b/app_linux.go @@ -77,8 +77,9 @@ func (a *App) shutdown(ctx context.Context) { // Greet returns a greeting for the given name func (a *App) Greet(name string) *data.StockInfo { - stockInfo, _ := data.NewStockDataApi().GetStockCodeRealTimeData(name) - return stockInfo + stockDatas, _ := data.NewStockDataApi().GetStockCodeRealTimeData(name) + stockData := (*stockDatas)[0] + return &stockData } func (a *App) Follow(stockCode string) string { @@ -118,3 +119,66 @@ func (a *App) SendDingDingMessage(message string, stockCode string) string { } return data.NewDingDingAPI().SendDingDingMessage(message) } + +func (a *App) SetStockSort(sort int64, stockCode string) { + data.NewStockDataApi().SetStockSort(sort, stockCode) +} + +// SendDingDingMessageByType msgType 报警类型: 1 涨跌报警;2 股价报警 3 成本价报警 +func (a *App) SendDingDingMessageByType(message string, stockCode string, msgType int) string { + ttl, _ := a.cache.TTL([]byte(stockCode)) + logger.SugaredLogger.Infof("stockCode %s ttl:%d", stockCode, ttl) + if ttl > 0 { + return "" + } + err := a.cache.Set([]byte(stockCode), []byte("1"), getMsgTypeTTL(msgType)) + if err != nil { + logger.SugaredLogger.Errorf("set cache error:%s", err.Error()) + return "" + } + return data.NewDingDingAPI().SendDingDingMessage(message) +} + +func GenNotificationMsg(stockInfo *data.StockInfo) string { + Price, err := convertor.ToFloat(stockInfo.Price) + if err != nil { + Price = 0 + } + PreClose, err := convertor.ToFloat(stockInfo.PreClose) + if err != nil { + PreClose = 0 + } + var RF float64 + if PreClose > 0 { + RF = mathutil.RoundToFloat(((Price-PreClose)/PreClose)*100, 2) + } + + return "[" + stockInfo.Name + "] " + stockInfo.Price + " " + convertor.ToString(RF) + "% " + stockInfo.Date + " " + stockInfo.Time +} + +// msgType : 1 涨跌报警(5分钟);2 股价报警(30分钟) 3 成本价报警(30分钟) +func getMsgTypeTTL(msgType int) int { + switch msgType { + case 1: + return 60 * 5 + case 2: + return 60 * 30 + case 3: + return 60 * 30 + default: + return 60 * 5 + } +} + +func getMsgTypeName(msgType int) string { + switch msgType { + case 1: + return "涨跌报警" + case 2: + return "股价报警" + case 3: + return "成本价报警" + default: + return "未知类型" + } +}