diff --git a/internal/web/actions/default/admins/recipients/createPopup.go b/internal/web/actions/default/admins/recipients/createPopup.go index 8fe807f0..f98712b0 100644 --- a/internal/web/actions/default/admins/recipients/createPopup.go +++ b/internal/web/actions/default/admins/recipients/createPopup.go @@ -5,6 +5,7 @@ import ( "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" "github.com/iwind/TeaGo/actions" + "regexp" ) type CreatePopupAction struct { @@ -29,6 +30,14 @@ func (this *CreatePopupAction) RunPost(params struct { GroupIds string Description string + TimeFromHour string + TimeFromMinute string + TimeFromSecond string + + TimeToHour string + TimeToMinute string + TimeToSecond string + Must *actions.Must CSRF *actionutils.CSRF }) { @@ -40,12 +49,26 @@ func (this *CreatePopupAction) RunPost(params struct { groupIds := utils.SplitNumbers(params.GroupIds) + var digitReg = regexp.MustCompile(`^\d+$`) + + var timeFrom = "" + if digitReg.MatchString(params.TimeFromHour) && digitReg.MatchString(params.TimeFromMinute) && digitReg.MatchString(params.TimeFromSecond) { + timeFrom = params.TimeFromHour + ":" + params.TimeFromMinute + ":" + params.TimeFromSecond + } + + var timeTo = "" + if digitReg.MatchString(params.TimeToHour) && digitReg.MatchString(params.TimeToMinute) && digitReg.MatchString(params.TimeToSecond) { + timeTo = params.TimeToHour + ":" + params.TimeToMinute + ":" + params.TimeToSecond + } + resp, err := this.RPC().MessageRecipientRPC().CreateMessageRecipient(this.AdminContext(), &pb.CreateMessageRecipientRequest{ AdminId: params.AdminId, MessageMediaInstanceId: params.InstanceId, User: params.User, MessageRecipientGroupIds: groupIds, Description: params.Description, + TimeFrom: timeFrom, + TimeTo: timeTo, }) if err != nil { this.ErrorPage(err) diff --git a/internal/web/actions/default/admins/recipients/recipient.go b/internal/web/actions/default/admins/recipients/recipient.go index 01b9cf03..0ef64cd4 100644 --- a/internal/web/actions/default/admins/recipients/recipient.go +++ b/internal/web/actions/default/admins/recipients/recipient.go @@ -44,6 +44,8 @@ func (this *RecipientAction) RunGet(params struct { }, "user": recipient.User, "description": recipient.Description, + "timeFrom": recipient.TimeFrom, + "timeTo": recipient.TimeTo, } this.Show() diff --git a/internal/web/actions/default/admins/recipients/update.go b/internal/web/actions/default/admins/recipients/update.go index c7665e98..96f8f196 100644 --- a/internal/web/actions/default/admins/recipients/update.go +++ b/internal/web/actions/default/admins/recipients/update.go @@ -6,6 +6,8 @@ import ( "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" "github.com/iwind/TeaGo/actions" "github.com/iwind/TeaGo/maps" + "regexp" + "strings" ) type UpdateAction struct { @@ -30,6 +32,27 @@ func (this *UpdateAction) RunGet(params struct { return } + var timeFromHour = "" + var timeFromMinute = "" + var timeFromSecond = "" + + if len(recipient.TimeFrom) > 0 { + var pieces = strings.Split(recipient.TimeFrom, ":") + timeFromHour = pieces[0] + timeFromMinute = pieces[1] + timeFromSecond = pieces[2] + } + + var timeToHour = "" + var timeToMinute = "" + var timeToSecond = "" + if len(recipient.TimeTo) > 0 { + var pieces = strings.Split(recipient.TimeTo, ":") + timeToHour = pieces[0] + timeToMinute = pieces[1] + timeToSecond = pieces[2] + } + this.Data["recipient"] = maps.Map{ "id": recipient.Id, "admin": maps.Map{ @@ -43,8 +66,14 @@ func (this *UpdateAction) RunGet(params struct { "id": recipient.MessageMediaInstance.Id, "name": recipient.MessageMediaInstance.Name, }, - "user": recipient.User, - "description": recipient.Description, + "user": recipient.User, + "description": recipient.Description, + "timeFromHour": timeFromHour, + "timeFromMinute": timeFromMinute, + "timeFromSecond": timeFromSecond, + "timeToHour": timeToHour, + "timeToMinute": timeToMinute, + "timeToSecond": timeToSecond, } this.Show() @@ -61,6 +90,14 @@ func (this *UpdateAction) RunPost(params struct { Description string IsOn bool + TimeFromHour string + TimeFromMinute string + TimeFromSecond string + + TimeToHour string + TimeToMinute string + TimeToSecond string + Must *actions.Must CSRF *actionutils.CSRF }) { @@ -74,6 +111,18 @@ func (this *UpdateAction) RunPost(params struct { groupIds := utils.SplitNumbers(params.GroupIds) + var digitReg = regexp.MustCompile(`^\d+$`) + + var timeFrom = "" + if digitReg.MatchString(params.TimeFromHour) && digitReg.MatchString(params.TimeFromMinute) && digitReg.MatchString(params.TimeFromSecond) { + timeFrom = params.TimeFromHour + ":" + params.TimeFromMinute + ":" + params.TimeFromSecond + } + + var timeTo = "" + if digitReg.MatchString(params.TimeToHour) && digitReg.MatchString(params.TimeToMinute) && digitReg.MatchString(params.TimeToSecond) { + timeTo = params.TimeToHour + ":" + params.TimeToMinute + ":" + params.TimeToSecond + } + _, err := this.RPC().MessageRecipientRPC().UpdateMessageRecipient(this.AdminContext(), &pb.UpdateMessageRecipientRequest{ MessageRecipientId: params.RecipientId, AdminId: params.AdminId, @@ -82,6 +131,8 @@ func (this *UpdateAction) RunPost(params struct { MessageRecipientGroupIds: groupIds, Description: params.Description, IsOn: params.IsOn, + TimeFrom: timeFrom, + TimeTo: timeTo, }) if err != nil { this.ErrorPage(err) diff --git a/web/views/@default/admins/recipients/createPopup.html b/web/views/@default/admins/recipients/createPopup.html index 8dad0bd4..23c3c4e1 100644 --- a/web/views/@default/admins/recipients/createPopup.html +++ b/web/views/@default/admins/recipients/createPopup.html @@ -34,11 +34,69 @@
24小时制,即小时从0到23。如果填写了发送时间,系统只会在这个时间段内给当前接收人发送消息。 [清除]
+24小时制,即小时从0到23。如果填写了发送时间,系统只会在这个时间段内给当前接收人发送消息。 + [清除]
+