diff --git a/internal/web/actions/default/admins/recipients/instances/createPopup.go b/internal/web/actions/default/admins/recipients/instances/createPopup.go index 3dc488f4..e4fc73fd 100644 --- a/internal/web/actions/default/admins/recipients/instances/createPopup.go +++ b/internal/web/actions/default/admins/recipients/instances/createPopup.go @@ -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) diff --git a/internal/web/actions/default/admins/recipients/instances/instance.go b/internal/web/actions/default/admins/recipients/instances/instance.go index 92a560cf..1e0d4da3 100644 --- a/internal/web/actions/default/admins/recipients/instances/instance.go +++ b/internal/web/actions/default/admins/recipients/instances/instance.go @@ -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() diff --git a/internal/web/actions/default/admins/recipients/instances/update.go b/internal/web/actions/default/admins/recipients/instances/update.go index 850710b0..a02c03ce 100644 --- a/internal/web/actions/default/admins/recipients/instances/update.go +++ b/internal/web/actions/default/admins/recipients/instances/update.go @@ -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 { diff --git a/web/views/@default/admins/recipients/instances/createPopup.html b/web/views/@default/admins/recipients/instances/createPopup.html index c7677f87..7527430a 100644 --- a/web/views/@default/admins/recipients/instances/createPopup.html +++ b/web/views/@default/admins/recipients/instances/createPopup.html @@ -342,6 +342,28 @@ + + 发送频率(次/分钟) + +
+
+
+ + +
+
+
/
+
+
+ + 分钟 +
+
+
+

用来限制此媒介的发送频率。

+ + + 备注 diff --git a/web/views/@default/admins/recipients/instances/instance.html b/web/views/@default/admins/recipients/instances/instance.html index adfda369..e6ef2705 100644 --- a/web/views/@default/admins/recipients/instances/instance.html +++ b/web/views/@default/admins/recipients/instances/instance.html @@ -227,6 +227,13 @@ {{instance.params.accessSecret}} + + 发送频率(次/分钟) + + 没有限制 + {{instance.rate.count}}次/{{instance.rate.minutes}}分钟 + + 备注 diff --git a/web/views/@default/admins/recipients/instances/update.html b/web/views/@default/admins/recipients/instances/update.html index 900e65b4..1a3ac1c0 100644 --- a/web/views/@default/admins/recipients/instances/update.html +++ b/web/views/@default/admins/recipients/instances/update.html @@ -342,6 +342,27 @@ + + 发送频率(次/分钟) + +
+
+
+ + +
+
+
/
+
+
+ + 分钟 +
+
+
+

用来限制此媒介的发送频率。

+ + 备注