Skip to content

Commit 1b3c043

Browse files
author
sparkmemory
committed
feat(stock): 增加股价提醒功能并优化报警逻辑
- 在 SetAlarmChangePercent 函数中添加 alarmPrice 参数 - 在前端添加股价提醒输入框 - 修改报警逻辑,支持同时根据涨跌幅和股价进行提醒 - 更新数据库模型,添加 AlarmPrice 字段
1 parent 04446d7 commit 1b3c043

File tree

6 files changed

+29
-14
lines changed

6 files changed

+29
-14
lines changed

app.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,8 @@ func (a *App) SetCostPriceAndVolume(stockCode string, price float64, volume int6
107107
return data.NewStockDataApi().SetCostPriceAndVolume(price, volume, stockCode)
108108
}
109109

110-
func (a *App) SetAlarmChangePercent(val float64, stockCode string) string {
111-
return data.NewStockDataApi().SetAlarmChangePercent(val, stockCode)
110+
func (a *App) SetAlarmChangePercent(val, alarmPrice float64, stockCode string) string {
111+
return data.NewStockDataApi().SetAlarmChangePercent(val, alarmPrice, stockCode)
112112
}
113113

114114
func (a *App) SendDingDingMessage(message string, stockCode string) string {

backend/data/stock_data_api.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@ type FollowedStock struct {
135135
PriceChange float64
136136
ChangePercent float64
137137
AlarmChangePercent float64
138+
AlarmPrice float64
138139
Time time.Time
139140
Sort int64
140141
IsDel soft_delete.DeletedAt `gorm:"softDelete:flag"`
@@ -310,8 +311,11 @@ func (receiver StockDataApi) SetCostPriceAndVolume(price float64, volume int64,
310311
return "设置成功"
311312
}
312313

313-
func (receiver StockDataApi) SetAlarmChangePercent(val float64, stockCode string) string {
314-
err := db.Dao.Model(&FollowedStock{}).Where("stock_code = ?", stockCode).Update("alarm_change_percent", val).Error
314+
func (receiver StockDataApi) SetAlarmChangePercent(val, alarmPrice float64, stockCode string) string {
315+
err := db.Dao.Model(&FollowedStock{}).Where("stock_code = ?", stockCode).Updates(&map[string]any{
316+
"alarm_change_percent": val,
317+
"alarm_price": alarmPrice,
318+
}).Error
315319
if err != nil {
316320
logger.SugaredLogger.Error(err.Error())
317321
return "设置失败"

frontend/src/components/stock.vue

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ const formModel = ref({
3232
costPrice: 0.000,
3333
volume: 0,
3434
alarm: 0,
35+
alarmPrice:0,
3536
})
3637
3738
const data = reactive({
@@ -203,7 +204,7 @@ async function monitor() {
203204
}else if(result.profitAmount<0){
204205
result.profitType="success"
205206
}
206-
if(res[0].AlarmChangePercent>0&&Math.abs(roundedNum)>res[0].AlarmChangePercent){
207+
if((res[0].AlarmChangePercent>0&&Math.abs(roundedNum)>res[0].AlarmChangePercent)||(res[0].AlarmPrice>0&&result["当前价格"]>res[0].AlarmPrice)){
207208
SendMessage(result)
208209
}
209210
}
@@ -236,6 +237,7 @@ function setStock(code,name){
236237
formModel.value.volume=res[0].Volume
237238
formModel.value.costPrice=res[0].CostPrice
238239
formModel.value.alarm=res[0].AlarmChangePercent
240+
formModel.value.alarmPrice=res[0].AlarmPrice
239241
modalShow.value=true
240242
}
241243
@@ -253,10 +255,9 @@ function showK(code,name){
253255
}
254256
255257
256-
function updateCostPriceAndVolumeNew(code,price,volume,alarm){
257-
console.log(code,price,volume)
258-
if(alarm){
259-
SetAlarmChangePercent(alarm,code).then(result => {
258+
function updateCostPriceAndVolumeNew(code,price,volume,alarm,formModel){
259+
if(alarm||formModel.alarmPrice){
260+
SetAlarmChangePercent(alarm,formModel.alarmPrice,code).then(result => {
260261
//message.success(result)
261262
})
262263
}
@@ -383,7 +384,7 @@ function SendMessage(result){
383384
<n-form-item label="股票成本" path="costPrice">
384385
<n-input-number v-model:value="formModel.costPrice" min="0" placeholder="请输入股票成本" >
385386
<template #suffix>
386-
387+
¥
387388
</template>
388389
</n-input-number>
389390
</n-form-item>
@@ -401,9 +402,17 @@ function SendMessage(result){
401402
</template>
402403
</n-input-number>
403404
</n-form-item>
405+
<n-form-item label="股价提醒" path="alarmPrice">
406+
<n-input-number v-model:value="formModel.alarmPrice" min="0" placeholder="请输入股价报警值(¥)" >
407+
<template #suffix>
408+
¥
409+
</template>
410+
</n-input-number>
411+
</n-form-item>
412+
404413
</n-form>
405414
<template #footer>
406-
<n-button type="primary" @click="updateCostPriceAndVolumeNew(formModel.code,formModel.costPrice,formModel.volume,formModel.alarm)">保存</n-button>
415+
<n-button type="primary" @click="updateCostPriceAndVolumeNew(formModel.code,formModel.costPrice,formModel.volume,formModel.alarm,formModel)">保存</n-button>
407416
</template>
408417
</n-modal>
409418

frontend/wailsjs/go/main/App.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ export function Greet(arg1:string):Promise<data.StockInfo>;
1212

1313
export function SendDingDingMessage(arg1:string,arg2:string):Promise<string>;
1414

15-
export function SetAlarmChangePercent(arg1:number,arg2:string):Promise<string>;
15+
export function SetAlarmChangePercent(arg1:number,arg2:number,arg3:string):Promise<string>;
1616

1717
export function SetCostPriceAndVolume(arg1:string,arg2:number,arg3:number):Promise<string>;
1818

frontend/wailsjs/go/main/App.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ export function SendDingDingMessage(arg1, arg2) {
2222
return window['go']['main']['App']['SendDingDingMessage'](arg1, arg2);
2323
}
2424

25-
export function SetAlarmChangePercent(arg1, arg2) {
26-
return window['go']['main']['App']['SetAlarmChangePercent'](arg1, arg2);
25+
export function SetAlarmChangePercent(arg1, arg2, arg3) {
26+
return window['go']['main']['App']['SetAlarmChangePercent'](arg1, arg2, arg3);
2727
}
2828

2929
export function SetCostPriceAndVolume(arg1, arg2, arg3) {

frontend/wailsjs/go/models.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ export namespace data {
99
PriceChange: number;
1010
ChangePercent: number;
1111
AlarmChangePercent: number;
12+
AlarmPrice: number;
1213
// Go type: time
1314
Time: any;
1415
Sort: number;
@@ -28,6 +29,7 @@ export namespace data {
2829
this.PriceChange = source["PriceChange"];
2930
this.ChangePercent = source["ChangePercent"];
3031
this.AlarmChangePercent = source["AlarmChangePercent"];
32+
this.AlarmPrice = source["AlarmPrice"];
3133
this.Time = this.convertValues(source["Time"], null);
3234
this.Sort = source["Sort"];
3335
this.IsDel = source["IsDel"];

0 commit comments

Comments
 (0)