mirror of
https://github.com/ArvinLovegood/go-stock.git
synced 2025-07-19 00:00:09 +08:00
143 lines
5.1 KiB
Go
143 lines
5.1 KiB
Go
package data
|
|
|
|
import (
|
|
"encoding/json"
|
|
"go-stock/backend/db"
|
|
"go-stock/backend/logger"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
type Settings struct {
|
|
gorm.Model
|
|
TushareToken string `json:"tushareToken"`
|
|
LocalPushEnable bool `json:"localPushEnable"`
|
|
DingPushEnable bool `json:"dingPushEnable"`
|
|
DingRobot string `json:"dingRobot"`
|
|
UpdateBasicInfoOnStart bool `json:"updateBasicInfoOnStart"`
|
|
RefreshInterval int64 `json:"refreshInterval"`
|
|
|
|
OpenAiEnable bool `json:"openAiEnable"`
|
|
OpenAiBaseUrl string `json:"openAiBaseUrl"`
|
|
OpenAiApiKey string `json:"openAiApiKey"`
|
|
OpenAiModelName string `json:"openAiModelName"`
|
|
OpenAiMaxTokens int `json:"openAiMaxTokens"`
|
|
OpenAiTemperature float64 `json:"openAiTemperature"`
|
|
OpenAiApiTimeOut int `json:"openAiApiTimeOut"`
|
|
Prompt string `json:"prompt"`
|
|
CheckUpdate bool `json:"checkUpdate"`
|
|
QuestionTemplate string `json:"questionTemplate"`
|
|
CrawlTimeOut int64 `json:"crawlTimeOut"`
|
|
KDays int64 `json:"kDays"`
|
|
EnableDanmu bool `json:"enableDanmu"`
|
|
BrowserPath string `json:"browserPath"`
|
|
EnableNews bool `json:"enableNews"`
|
|
DarkTheme bool `json:"darkTheme"`
|
|
BrowserPoolSize int `json:"browserPoolSize"`
|
|
EnableFund bool `json:"enableFund"`
|
|
EnablePushNews bool `json:"enablePushNews"`
|
|
}
|
|
|
|
func (receiver Settings) TableName() string {
|
|
return "settings"
|
|
}
|
|
|
|
type SettingsApi struct {
|
|
Config Settings
|
|
}
|
|
|
|
func NewSettingsApi(settings *Settings) *SettingsApi {
|
|
return &SettingsApi{
|
|
Config: *settings,
|
|
}
|
|
}
|
|
|
|
func (s SettingsApi) UpdateConfig() string {
|
|
count := int64(0)
|
|
db.Dao.Model(s.Config).Count(&count)
|
|
if count > 0 {
|
|
db.Dao.Model(s.Config).Where("id=?", s.Config.ID).Updates(map[string]any{
|
|
"local_push_enable": s.Config.LocalPushEnable,
|
|
"ding_push_enable": s.Config.DingPushEnable,
|
|
"ding_robot": s.Config.DingRobot,
|
|
"update_basic_info_on_start": s.Config.UpdateBasicInfoOnStart,
|
|
"refresh_interval": s.Config.RefreshInterval,
|
|
"open_ai_enable": s.Config.OpenAiEnable,
|
|
"open_ai_base_url": s.Config.OpenAiBaseUrl,
|
|
"open_ai_api_key": s.Config.OpenAiApiKey,
|
|
"open_ai_model_name": s.Config.OpenAiModelName,
|
|
"open_ai_max_tokens": s.Config.OpenAiMaxTokens,
|
|
"open_ai_temperature": s.Config.OpenAiTemperature,
|
|
"tushare_token": s.Config.TushareToken,
|
|
"prompt": s.Config.Prompt,
|
|
"check_update": s.Config.CheckUpdate,
|
|
"open_ai_api_time_out": s.Config.OpenAiApiTimeOut,
|
|
"question_template": s.Config.QuestionTemplate,
|
|
"crawl_time_out": s.Config.CrawlTimeOut,
|
|
"k_days": s.Config.KDays,
|
|
"enable_danmu": s.Config.EnableDanmu,
|
|
"browser_path": s.Config.BrowserPath,
|
|
"enable_news": s.Config.EnableNews,
|
|
"dark_theme": s.Config.DarkTheme,
|
|
"enable_fund": s.Config.EnableFund,
|
|
"enable_push_news": s.Config.EnablePushNews,
|
|
})
|
|
} else {
|
|
logger.SugaredLogger.Infof("未找到配置,创建默认配置:%+v", s.Config)
|
|
db.Dao.Model(s.Config).Create(&Settings{
|
|
LocalPushEnable: s.Config.LocalPushEnable,
|
|
DingPushEnable: s.Config.DingPushEnable,
|
|
DingRobot: s.Config.DingRobot,
|
|
UpdateBasicInfoOnStart: s.Config.UpdateBasicInfoOnStart,
|
|
RefreshInterval: s.Config.RefreshInterval,
|
|
OpenAiEnable: s.Config.OpenAiEnable,
|
|
OpenAiBaseUrl: s.Config.OpenAiBaseUrl,
|
|
OpenAiApiKey: s.Config.OpenAiApiKey,
|
|
OpenAiModelName: s.Config.OpenAiModelName,
|
|
OpenAiMaxTokens: s.Config.OpenAiMaxTokens,
|
|
OpenAiTemperature: s.Config.OpenAiTemperature,
|
|
TushareToken: s.Config.TushareToken,
|
|
Prompt: s.Config.Prompt,
|
|
CheckUpdate: s.Config.CheckUpdate,
|
|
OpenAiApiTimeOut: s.Config.OpenAiApiTimeOut,
|
|
QuestionTemplate: s.Config.QuestionTemplate,
|
|
CrawlTimeOut: s.Config.CrawlTimeOut,
|
|
KDays: s.Config.KDays,
|
|
EnableDanmu: s.Config.EnableDanmu,
|
|
BrowserPath: s.Config.BrowserPath,
|
|
EnableNews: s.Config.EnableNews,
|
|
DarkTheme: s.Config.DarkTheme,
|
|
EnableFund: s.Config.EnableFund,
|
|
EnablePushNews: s.Config.EnablePushNews,
|
|
})
|
|
}
|
|
return "保存成功!"
|
|
}
|
|
func (s SettingsApi) GetConfig() *Settings {
|
|
var settings Settings
|
|
db.Dao.Model(&Settings{}).First(&settings)
|
|
|
|
if settings.OpenAiEnable {
|
|
if settings.OpenAiApiTimeOut <= 0 {
|
|
settings.OpenAiApiTimeOut = 60 * 5
|
|
}
|
|
if settings.CrawlTimeOut <= 0 {
|
|
settings.CrawlTimeOut = 60
|
|
}
|
|
if settings.KDays < 30 {
|
|
settings.KDays = 120
|
|
}
|
|
}
|
|
if settings.BrowserPath == "" {
|
|
settings.BrowserPath, _ = CheckBrowser()
|
|
}
|
|
if settings.BrowserPoolSize <= 0 {
|
|
settings.BrowserPoolSize = 1
|
|
}
|
|
return &settings
|
|
}
|
|
|
|
func (s SettingsApi) Export() string {
|
|
d, _ := json.MarshalIndent(s.GetConfig(), "", " ")
|
|
return string(d)
|
|
}
|