feat(frontend): 添加 Tushare 接口 token 配置功能

- 在前端设置页面增加 Tushare api token 输入框
- 在后端 Settings 结构体中添加 TushareToken 字段- 更新相关 API 调用,使用配置的 TushareToken
This commit is contained in:
spark 2025-01-26 21:41:48 +08:00
parent d82ace220a
commit 1751be729b
5 changed files with 16 additions and 4 deletions

View File

@ -8,6 +8,7 @@ import (
type Settings struct {
gorm.Model
TushareToken string `json:"tushareToken"`
LocalPushEnable bool `json:"localPushEnable"`
DingPushEnable bool `json:"dingPushEnable"`
DingRobot string `json:"dingRobot"`
@ -52,6 +53,7 @@ func (s SettingsApi) UpdateConfig() string {
"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,
})
} else {
logger.SugaredLogger.Infof("未找到配置,创建默认配置:%+v", s.Config)
@ -67,6 +69,7 @@ func (s SettingsApi) UpdateConfig() string {
OpenAiModelName: s.Config.OpenAiModelName,
OpenAiMaxTokens: s.Config.OpenAiMaxTokens,
OpenAiTemperature: s.Config.OpenAiTemperature,
TushareToken: s.Config.TushareToken,
})
}
return "保存成功!"

View File

@ -28,10 +28,10 @@ import (
const sinaStockUrl = "http://hq.sinajs.cn/rn=%d&list=%s"
const tushareApiUrl = "http://api.tushare.pro"
const TushareToken = "9125ec636217a99a3218a64fc63507e95205f2666590792923cbaedf"
type StockDataApi struct {
client *resty.Client
config *Settings
}
type StockInfo struct {
gorm.Model
@ -181,6 +181,7 @@ func (receiver StockBasic) TableName() string {
func NewStockDataApi() *StockDataApi {
return &StockDataApi{
client: resty.New(),
config: getConfig(),
}
}
@ -192,7 +193,7 @@ func (receiver StockDataApi) GetIndexBasic() {
SetHeader("content-type", "application/json").
SetBody(&TushareRequest{
ApiName: "index_basic",
Token: TushareToken,
Token: receiver.config.TushareToken,
Params: nil,
Fields: fields}).
SetResult(res).
@ -236,7 +237,7 @@ func (receiver StockDataApi) GetStockBaseInfo() {
SetHeader("content-type", "application/json").
SetBody(&TushareRequest{
ApiName: "stock_basic",
Token: TushareToken,
Token: receiver.config.TushareToken,
Params: nil,
Fields: fields,
}).

View File

@ -1 +1 @@
21651c02a381710ff84c03c3ee0a8235
39a415166f03acc0270e24443a9e2445

View File

@ -9,6 +9,7 @@ const message = useMessage()
const formRef = ref(null)
const formValue = ref({
ID:1,
tushareToken:'',
dingPush:{
enable:false,
dingRobot: ''
@ -31,6 +32,7 @@ const formValue = ref({
onMounted(()=>{
GetConfig().then(res=>{
formValue.value.ID = res.ID
formValue.value.tushareToken = res.tushareToken
formValue.value.dingPush = {
enable:res.dingPushEnable,
dingRobot:res.dingRobot
@ -68,6 +70,7 @@ function saveConfig(){
openAiModelName:formValue.value.openAI.model,
openAiMaxTokens:formValue.value.openAI.maxTokens,
openAiTemperature:formValue.value.openAI.temperature,
tushareToken:formValue.value.tushareToken
})
//console.log("Settings",config)
@ -106,6 +109,9 @@ function sendTestNotice(){
<n-gi :span="24">
<n-text type="default" style="font-size: 25px;font-weight: bold">基础设置</n-text>
</n-gi>
<n-form-item-gi :span="10" label="Tushare api token" path="tushareToken" >
<n-input type="text" placeholder="Tushare api token" v-model:value="formValue.tushareToken" clearable />
</n-form-item-gi>
<n-form-item-gi :span="6" label="启动时更新A股/指数信息:" path="updateBasicInfoOnStart" >
<n-switch v-model:value="formValue.updateBasicInfoOnStart" />
</n-form-item-gi>

View File

@ -61,6 +61,7 @@ export namespace data {
UpdatedAt: any;
// Go type: gorm
DeletedAt: any;
tushareToken: string;
localPushEnable: boolean;
dingPushEnable: boolean;
dingRobot: string;
@ -83,6 +84,7 @@ export namespace data {
this.CreatedAt = this.convertValues(source["CreatedAt"], null);
this.UpdatedAt = this.convertValues(source["UpdatedAt"], null);
this.DeletedAt = this.convertValues(source["DeletedAt"], null);
this.tushareToken = source["tushareToken"];
this.localPushEnable = source["localPushEnable"];
this.dingPushEnable = source["dingPushEnable"];
this.dingRobot = source["dingRobot"];