mirror of
https://github.com/ArvinLovegood/go-stock.git
synced 2025-07-19 00:00:09 +08:00
feat(stock): 增加股价提醒功能并优化报警逻辑
- 在 SetAlarmChangePercent 函数中添加 alarmPrice 参数 - 在前端添加股价提醒输入框 - 修改报警逻辑,支持同时根据涨跌幅和股价进行提醒 - 更新数据库模型,添加 AlarmPrice 字段
This commit is contained in:
parent
04446d7521
commit
1b3c043ce6
4
app.go
4
app.go
@ -107,8 +107,8 @@ func (a *App) SetCostPriceAndVolume(stockCode string, price float64, volume int6
|
||||
return data.NewStockDataApi().SetCostPriceAndVolume(price, volume, stockCode)
|
||||
}
|
||||
|
||||
func (a *App) SetAlarmChangePercent(val float64, stockCode string) string {
|
||||
return data.NewStockDataApi().SetAlarmChangePercent(val, stockCode)
|
||||
func (a *App) SetAlarmChangePercent(val, alarmPrice float64, stockCode string) string {
|
||||
return data.NewStockDataApi().SetAlarmChangePercent(val, alarmPrice, stockCode)
|
||||
}
|
||||
|
||||
func (a *App) SendDingDingMessage(message string, stockCode string) string {
|
||||
|
@ -135,6 +135,7 @@ type FollowedStock struct {
|
||||
PriceChange float64
|
||||
ChangePercent float64
|
||||
AlarmChangePercent float64
|
||||
AlarmPrice float64
|
||||
Time time.Time
|
||||
Sort int64
|
||||
IsDel soft_delete.DeletedAt `gorm:"softDelete:flag"`
|
||||
@ -310,8 +311,11 @@ func (receiver StockDataApi) SetCostPriceAndVolume(price float64, volume int64,
|
||||
return "设置成功"
|
||||
}
|
||||
|
||||
func (receiver StockDataApi) SetAlarmChangePercent(val float64, stockCode string) string {
|
||||
err := db.Dao.Model(&FollowedStock{}).Where("stock_code = ?", stockCode).Update("alarm_change_percent", val).Error
|
||||
func (receiver StockDataApi) SetAlarmChangePercent(val, alarmPrice float64, stockCode string) string {
|
||||
err := db.Dao.Model(&FollowedStock{}).Where("stock_code = ?", stockCode).Updates(&map[string]any{
|
||||
"alarm_change_percent": val,
|
||||
"alarm_price": alarmPrice,
|
||||
}).Error
|
||||
if err != nil {
|
||||
logger.SugaredLogger.Error(err.Error())
|
||||
return "设置失败"
|
||||
|
@ -32,6 +32,7 @@ const formModel = ref({
|
||||
costPrice: 0.000,
|
||||
volume: 0,
|
||||
alarm: 0,
|
||||
alarmPrice:0,
|
||||
})
|
||||
|
||||
const data = reactive({
|
||||
@ -203,7 +204,7 @@ async function monitor() {
|
||||
}else if(result.profitAmount<0){
|
||||
result.profitType="success"
|
||||
}
|
||||
if(res[0].AlarmChangePercent>0&&Math.abs(roundedNum)>res[0].AlarmChangePercent){
|
||||
if((res[0].AlarmChangePercent>0&&Math.abs(roundedNum)>res[0].AlarmChangePercent)||(res[0].AlarmPrice>0&&result["当前价格"]>res[0].AlarmPrice)){
|
||||
SendMessage(result)
|
||||
}
|
||||
}
|
||||
@ -236,6 +237,7 @@ function setStock(code,name){
|
||||
formModel.value.volume=res[0].Volume
|
||||
formModel.value.costPrice=res[0].CostPrice
|
||||
formModel.value.alarm=res[0].AlarmChangePercent
|
||||
formModel.value.alarmPrice=res[0].AlarmPrice
|
||||
modalShow.value=true
|
||||
}
|
||||
|
||||
@ -253,10 +255,9 @@ function showK(code,name){
|
||||
}
|
||||
|
||||
|
||||
function updateCostPriceAndVolumeNew(code,price,volume,alarm){
|
||||
console.log(code,price,volume)
|
||||
if(alarm){
|
||||
SetAlarmChangePercent(alarm,code).then(result => {
|
||||
function updateCostPriceAndVolumeNew(code,price,volume,alarm,formModel){
|
||||
if(alarm||formModel.alarmPrice){
|
||||
SetAlarmChangePercent(alarm,formModel.alarmPrice,code).then(result => {
|
||||
//message.success(result)
|
||||
})
|
||||
}
|
||||
@ -383,7 +384,7 @@ function SendMessage(result){
|
||||
<n-form-item label="股票成本" path="costPrice">
|
||||
<n-input-number v-model:value="formModel.costPrice" min="0" placeholder="请输入股票成本" >
|
||||
<template #suffix>
|
||||
元
|
||||
¥
|
||||
</template>
|
||||
</n-input-number>
|
||||
</n-form-item>
|
||||
@ -401,9 +402,17 @@ function SendMessage(result){
|
||||
</template>
|
||||
</n-input-number>
|
||||
</n-form-item>
|
||||
<n-form-item label="股价提醒" path="alarmPrice">
|
||||
<n-input-number v-model:value="formModel.alarmPrice" min="0" placeholder="请输入股价报警值(¥)" >
|
||||
<template #suffix>
|
||||
¥
|
||||
</template>
|
||||
</n-input-number>
|
||||
</n-form-item>
|
||||
|
||||
</n-form>
|
||||
<template #footer>
|
||||
<n-button type="primary" @click="updateCostPriceAndVolumeNew(formModel.code,formModel.costPrice,formModel.volume,formModel.alarm)">保存</n-button>
|
||||
<n-button type="primary" @click="updateCostPriceAndVolumeNew(formModel.code,formModel.costPrice,formModel.volume,formModel.alarm,formModel)">保存</n-button>
|
||||
</template>
|
||||
</n-modal>
|
||||
|
||||
|
2
frontend/wailsjs/go/main/App.d.ts
vendored
2
frontend/wailsjs/go/main/App.d.ts
vendored
@ -12,7 +12,7 @@ export function Greet(arg1:string):Promise<data.StockInfo>;
|
||||
|
||||
export function SendDingDingMessage(arg1:string,arg2:string):Promise<string>;
|
||||
|
||||
export function SetAlarmChangePercent(arg1:number,arg2:string):Promise<string>;
|
||||
export function SetAlarmChangePercent(arg1:number,arg2:number,arg3:string):Promise<string>;
|
||||
|
||||
export function SetCostPriceAndVolume(arg1:string,arg2:number,arg3:number):Promise<string>;
|
||||
|
||||
|
@ -22,8 +22,8 @@ export function SendDingDingMessage(arg1, arg2) {
|
||||
return window['go']['main']['App']['SendDingDingMessage'](arg1, arg2);
|
||||
}
|
||||
|
||||
export function SetAlarmChangePercent(arg1, arg2) {
|
||||
return window['go']['main']['App']['SetAlarmChangePercent'](arg1, arg2);
|
||||
export function SetAlarmChangePercent(arg1, arg2, arg3) {
|
||||
return window['go']['main']['App']['SetAlarmChangePercent'](arg1, arg2, arg3);
|
||||
}
|
||||
|
||||
export function SetCostPriceAndVolume(arg1, arg2, arg3) {
|
||||
|
@ -9,6 +9,7 @@ export namespace data {
|
||||
PriceChange: number;
|
||||
ChangePercent: number;
|
||||
AlarmChangePercent: number;
|
||||
AlarmPrice: number;
|
||||
// Go type: time
|
||||
Time: any;
|
||||
Sort: number;
|
||||
@ -28,6 +29,7 @@ export namespace data {
|
||||
this.PriceChange = source["PriceChange"];
|
||||
this.ChangePercent = source["ChangePercent"];
|
||||
this.AlarmChangePercent = source["AlarmChangePercent"];
|
||||
this.AlarmPrice = source["AlarmPrice"];
|
||||
this.Time = this.convertValues(source["Time"], null);
|
||||
this.Sort = source["Sort"];
|
||||
this.IsDel = source["IsDel"];
|
||||
|
Loading…
x
Reference in New Issue
Block a user