通知媒介可以设置发送频率

This commit is contained in:
GoEdgeLab
2021-08-24 15:46:37 +08:00
parent e360de6d8c
commit 7a9f6486a7
6 changed files with 102 additions and 0 deletions

View File

@@ -3,6 +3,7 @@ package instances
import (
"encoding/json"
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
"github.com/TeaOSLab/EdgeCommon/pkg/monitorconfigs"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/iwind/TeaGo/actions"
"github.com/iwind/TeaGo/maps"
@@ -65,6 +66,9 @@ func (this *CreatePopupAction) RunPost(params struct {
TelegramToken string
RateMinutes int32
RateCount int32
Description string
Must *actions.Must
@@ -231,11 +235,22 @@ func (this *CreatePopupAction) RunPost(params struct {
return
}
var rateConfig = &monitorconfigs.RateConfig{
Minutes: params.RateMinutes,
Count: params.RateCount,
}
rateJSON, err := json.Marshal(rateConfig)
if err != nil {
this.ErrorPage(err)
return
}
resp, err := this.RPC().MessageMediaInstanceRPC().CreateMessageMediaInstance(this.AdminContext(), &pb.CreateMessageMediaInstanceRequest{
Name: params.Name,
MediaType: params.MediaType,
ParamsJSON: optionsJSON,
Description: params.Description,
RateJSON: rateJSON,
})
if err != nil {
this.ErrorPage(err)

View File

@@ -3,6 +3,7 @@ package instances
import (
"encoding/json"
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
"github.com/TeaOSLab/EdgeCommon/pkg/monitorconfigs"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/iwind/TeaGo/maps"
)
@@ -38,6 +39,16 @@ func (this *InstanceAction) RunGet(params struct {
}
}
// 频率
var rateConfig = &monitorconfigs.RateConfig{}
if len(instance.RateJSON) > 0 {
err = json.Unmarshal(instance.RateJSON, rateConfig)
if err != nil {
this.ErrorPage(err)
return
}
}
this.Data["instance"] = maps.Map{
"id": instance.Id,
"name": instance.Name,
@@ -48,6 +59,7 @@ func (this *InstanceAction) RunGet(params struct {
},
"description": instance.Description,
"params": mediaParams,
"rate": rateConfig,
}
this.Show()

View File

@@ -3,6 +3,7 @@ package instances
import (
"encoding/json"
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
"github.com/TeaOSLab/EdgeCommon/pkg/monitorconfigs"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/iwind/TeaGo/actions"
"github.com/iwind/TeaGo/maps"
@@ -39,6 +40,15 @@ func (this *UpdateAction) RunGet(params struct {
}
}
var rateConfig = &monitorconfigs.RateConfig{}
if len(instance.RateJSON) > 0 {
err = json.Unmarshal(instance.RateJSON, rateConfig)
if err != nil {
this.ErrorPage(err)
return
}
}
this.Data["instance"] = maps.Map{
"id": instance.Id,
"name": instance.Name,
@@ -49,6 +59,7 @@ func (this *UpdateAction) RunGet(params struct {
},
"description": instance.Description,
"params": mediaParams,
"rate": rateConfig,
}
this.Show()
@@ -104,6 +115,9 @@ func (this *UpdateAction) RunPost(params struct {
Description string
IsOn bool
RateMinutes int32
RateCount int32
Must *actions.Must
CSRF *actionutils.CSRF
}) {
@@ -270,12 +284,23 @@ func (this *UpdateAction) RunPost(params struct {
return
}
var rateConfig = &monitorconfigs.RateConfig{
Minutes: params.RateMinutes,
Count: params.RateCount,
}
rateJSON, err := json.Marshal(rateConfig)
if err != nil {
this.ErrorPage(err)
return
}
_, err = this.RPC().MessageMediaInstanceRPC().UpdateMessageMediaInstance(this.AdminContext(), &pb.UpdateMessageMediaInstanceRequest{
MessageMediaInstanceId: params.InstanceId,
Name: params.Name,
MediaType: params.MediaType,
ParamsJSON: optionsJSON,
Description: params.Description,
RateJSON: rateJSON,
IsOn: params.IsOn,
})
if err != nil {

View File

@@ -342,6 +342,28 @@
</tr>
</tbody>
<tr>
<td>发送频率<em>(次/分钟)</em></td>
<td>
<div class="ui fields inline">
<div class="ui field">
<div class="ui right labeled input">
<input type="text" name="rateCount" size="4"/>
<span class="ui label"></span>
</div>
</div>
<div class="ui field">/</div>
<div class="ui field">
<div class="ui right labeled input">
<input type="text" name="rateMinutes" size="4"/>
<span class="ui label">分钟</span>
</div>
</div>
</div>
<p class="comment">用来限制此媒介的发送频率。</p>
</td>
</tr>
<tr>
<td>备注</td>
<td>

View File

@@ -227,6 +227,13 @@
<td>{{instance.params.accessSecret}}</td>
</tr>
</tbody>
<tr>
<td>发送频率<em>(次/分钟)</em></td>
<td>
<span v-if="instance.rate.minutes <= 0 || instance.rate.count <= 0" class="disabled">没有限制</span>
<span v-else>{{instance.rate.count}}次/{{instance.rate.minutes}}分钟</span>
</td>
</tr>
<tr>
<td>备注</td>
<td>

View File

@@ -342,6 +342,27 @@
</td>
</tr>
</tbody>
<tr>
<td>发送频率<em>(次/分钟)</em></td>
<td>
<div class="ui fields inline">
<div class="ui field">
<div class="ui right labeled input">
<input type="text" name="rateCount" size="4" v-model="instance.rate.count"/>
<span class="ui label"></span>
</div>
</div>
<div class="ui field">/</div>
<div class="ui field">
<div class="ui right labeled input">
<input type="text" name="rateMinutes" size="4" v-model="instance.rate.minutes"/>
<span class="ui label">分钟</span>
</div>
</div>
</div>
<p class="comment">用来限制此媒介的发送频率。</p>
</td>
</tr>
<tr>
<td>备注</td>
<td>