mirror of
https://github.com/ArvinLovegood/go-stock.git
synced 2025-07-19 00:00:09 +08:00
feat(frontend): 添加 Tushare 接口 token 配置功能
- 在前端设置页面增加 Tushare api token 输入框 - 在后端 Settings 结构体中添加 TushareToken 字段- 更新相关 API 调用,使用配置的 TushareToken
This commit is contained in:
parent
d82ace220a
commit
1751be729b
@ -8,6 +8,7 @@ import (
|
|||||||
|
|
||||||
type Settings struct {
|
type Settings struct {
|
||||||
gorm.Model
|
gorm.Model
|
||||||
|
TushareToken string `json:"tushareToken"`
|
||||||
LocalPushEnable bool `json:"localPushEnable"`
|
LocalPushEnable bool `json:"localPushEnable"`
|
||||||
DingPushEnable bool `json:"dingPushEnable"`
|
DingPushEnable bool `json:"dingPushEnable"`
|
||||||
DingRobot string `json:"dingRobot"`
|
DingRobot string `json:"dingRobot"`
|
||||||
@ -52,6 +53,7 @@ func (s SettingsApi) UpdateConfig() string {
|
|||||||
"open_ai_model_name": s.Config.OpenAiModelName,
|
"open_ai_model_name": s.Config.OpenAiModelName,
|
||||||
"open_ai_max_tokens": s.Config.OpenAiMaxTokens,
|
"open_ai_max_tokens": s.Config.OpenAiMaxTokens,
|
||||||
"open_ai_temperature": s.Config.OpenAiTemperature,
|
"open_ai_temperature": s.Config.OpenAiTemperature,
|
||||||
|
"tushare_token": s.Config.TushareToken,
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
logger.SugaredLogger.Infof("未找到配置,创建默认配置:%+v", s.Config)
|
logger.SugaredLogger.Infof("未找到配置,创建默认配置:%+v", s.Config)
|
||||||
@ -67,6 +69,7 @@ func (s SettingsApi) UpdateConfig() string {
|
|||||||
OpenAiModelName: s.Config.OpenAiModelName,
|
OpenAiModelName: s.Config.OpenAiModelName,
|
||||||
OpenAiMaxTokens: s.Config.OpenAiMaxTokens,
|
OpenAiMaxTokens: s.Config.OpenAiMaxTokens,
|
||||||
OpenAiTemperature: s.Config.OpenAiTemperature,
|
OpenAiTemperature: s.Config.OpenAiTemperature,
|
||||||
|
TushareToken: s.Config.TushareToken,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
return "保存成功!"
|
return "保存成功!"
|
||||||
|
@ -28,10 +28,10 @@ import (
|
|||||||
|
|
||||||
const sinaStockUrl = "http://hq.sinajs.cn/rn=%d&list=%s"
|
const sinaStockUrl = "http://hq.sinajs.cn/rn=%d&list=%s"
|
||||||
const tushareApiUrl = "http://api.tushare.pro"
|
const tushareApiUrl = "http://api.tushare.pro"
|
||||||
const TushareToken = "9125ec636217a99a3218a64fc63507e95205f2666590792923cbaedf"
|
|
||||||
|
|
||||||
type StockDataApi struct {
|
type StockDataApi struct {
|
||||||
client *resty.Client
|
client *resty.Client
|
||||||
|
config *Settings
|
||||||
}
|
}
|
||||||
type StockInfo struct {
|
type StockInfo struct {
|
||||||
gorm.Model
|
gorm.Model
|
||||||
@ -181,6 +181,7 @@ func (receiver StockBasic) TableName() string {
|
|||||||
func NewStockDataApi() *StockDataApi {
|
func NewStockDataApi() *StockDataApi {
|
||||||
return &StockDataApi{
|
return &StockDataApi{
|
||||||
client: resty.New(),
|
client: resty.New(),
|
||||||
|
config: getConfig(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -192,7 +193,7 @@ func (receiver StockDataApi) GetIndexBasic() {
|
|||||||
SetHeader("content-type", "application/json").
|
SetHeader("content-type", "application/json").
|
||||||
SetBody(&TushareRequest{
|
SetBody(&TushareRequest{
|
||||||
ApiName: "index_basic",
|
ApiName: "index_basic",
|
||||||
Token: TushareToken,
|
Token: receiver.config.TushareToken,
|
||||||
Params: nil,
|
Params: nil,
|
||||||
Fields: fields}).
|
Fields: fields}).
|
||||||
SetResult(res).
|
SetResult(res).
|
||||||
@ -236,7 +237,7 @@ func (receiver StockDataApi) GetStockBaseInfo() {
|
|||||||
SetHeader("content-type", "application/json").
|
SetHeader("content-type", "application/json").
|
||||||
SetBody(&TushareRequest{
|
SetBody(&TushareRequest{
|
||||||
ApiName: "stock_basic",
|
ApiName: "stock_basic",
|
||||||
Token: TushareToken,
|
Token: receiver.config.TushareToken,
|
||||||
Params: nil,
|
Params: nil,
|
||||||
Fields: fields,
|
Fields: fields,
|
||||||
}).
|
}).
|
||||||
|
@ -1 +1 @@
|
|||||||
21651c02a381710ff84c03c3ee0a8235
|
39a415166f03acc0270e24443a9e2445
|
@ -9,6 +9,7 @@ const message = useMessage()
|
|||||||
const formRef = ref(null)
|
const formRef = ref(null)
|
||||||
const formValue = ref({
|
const formValue = ref({
|
||||||
ID:1,
|
ID:1,
|
||||||
|
tushareToken:'',
|
||||||
dingPush:{
|
dingPush:{
|
||||||
enable:false,
|
enable:false,
|
||||||
dingRobot: ''
|
dingRobot: ''
|
||||||
@ -31,6 +32,7 @@ const formValue = ref({
|
|||||||
onMounted(()=>{
|
onMounted(()=>{
|
||||||
GetConfig().then(res=>{
|
GetConfig().then(res=>{
|
||||||
formValue.value.ID = res.ID
|
formValue.value.ID = res.ID
|
||||||
|
formValue.value.tushareToken = res.tushareToken
|
||||||
formValue.value.dingPush = {
|
formValue.value.dingPush = {
|
||||||
enable:res.dingPushEnable,
|
enable:res.dingPushEnable,
|
||||||
dingRobot:res.dingRobot
|
dingRobot:res.dingRobot
|
||||||
@ -68,6 +70,7 @@ function saveConfig(){
|
|||||||
openAiModelName:formValue.value.openAI.model,
|
openAiModelName:formValue.value.openAI.model,
|
||||||
openAiMaxTokens:formValue.value.openAI.maxTokens,
|
openAiMaxTokens:formValue.value.openAI.maxTokens,
|
||||||
openAiTemperature:formValue.value.openAI.temperature,
|
openAiTemperature:formValue.value.openAI.temperature,
|
||||||
|
tushareToken:formValue.value.tushareToken
|
||||||
})
|
})
|
||||||
|
|
||||||
//console.log("Settings",config)
|
//console.log("Settings",config)
|
||||||
@ -106,6 +109,9 @@ function sendTestNotice(){
|
|||||||
<n-gi :span="24">
|
<n-gi :span="24">
|
||||||
<n-text type="default" style="font-size: 25px;font-weight: bold">基础设置</n-text>
|
<n-text type="default" style="font-size: 25px;font-weight: bold">基础设置</n-text>
|
||||||
</n-gi>
|
</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-form-item-gi :span="6" label="启动时更新A股/指数信息:" path="updateBasicInfoOnStart" >
|
||||||
<n-switch v-model:value="formValue.updateBasicInfoOnStart" />
|
<n-switch v-model:value="formValue.updateBasicInfoOnStart" />
|
||||||
</n-form-item-gi>
|
</n-form-item-gi>
|
||||||
|
@ -61,6 +61,7 @@ export namespace data {
|
|||||||
UpdatedAt: any;
|
UpdatedAt: any;
|
||||||
// Go type: gorm
|
// Go type: gorm
|
||||||
DeletedAt: any;
|
DeletedAt: any;
|
||||||
|
tushareToken: string;
|
||||||
localPushEnable: boolean;
|
localPushEnable: boolean;
|
||||||
dingPushEnable: boolean;
|
dingPushEnable: boolean;
|
||||||
dingRobot: string;
|
dingRobot: string;
|
||||||
@ -83,6 +84,7 @@ export namespace data {
|
|||||||
this.CreatedAt = this.convertValues(source["CreatedAt"], null);
|
this.CreatedAt = this.convertValues(source["CreatedAt"], null);
|
||||||
this.UpdatedAt = this.convertValues(source["UpdatedAt"], null);
|
this.UpdatedAt = this.convertValues(source["UpdatedAt"], null);
|
||||||
this.DeletedAt = this.convertValues(source["DeletedAt"], null);
|
this.DeletedAt = this.convertValues(source["DeletedAt"], null);
|
||||||
|
this.tushareToken = source["tushareToken"];
|
||||||
this.localPushEnable = source["localPushEnable"];
|
this.localPushEnable = source["localPushEnable"];
|
||||||
this.dingPushEnable = source["dingPushEnable"];
|
this.dingPushEnable = source["dingPushEnable"];
|
||||||
this.dingRobot = source["dingRobot"];
|
this.dingRobot = source["dingRobot"];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user