package recipients import ( "github.com/TeaOSLab/EdgeAdmin/internal/utils" "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" "github.com/TeaOSLab/EdgeCommon/pkg/langs/codes" "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" "github.com/iwind/TeaGo/actions" "github.com/iwind/TeaGo/maps" "regexp" ) type CreatePopupAction struct { actionutils.ParentAction } func (this *CreatePopupAction) Init() { this.Nav("", "", "") } func (this *CreatePopupAction) RunGet(params struct{}) { // node clusters nodeClustersResp, err := this.RPC().NodeClusterRPC().FindAllEnabledNodeClusters(this.AdminContext(), &pb.FindAllEnabledNodeClustersRequest{}) if err != nil { this.ErrorPage(err) return } var nodeClusterMaps = []maps.Map{} for _, nodeCluster := range nodeClustersResp.NodeClusters { nodeClusterMaps = append(nodeClusterMaps, maps.Map{ "id": nodeCluster.Id, "name": nodeCluster.Name, }) } this.Data["nodeClusters"] = nodeClusterMaps this.Show() } func (this *CreatePopupAction) RunPost(params struct { AdminId int64 InstanceId int64 User string TelegramToken string GroupIds string Description string TimeFromHour string TimeFromMinute string TimeFromSecond string TimeToHour string TimeToMinute string TimeToSecond string NodeClusterIds []int64 Must *actions.Must CSRF *actionutils.CSRF }) { params.Must. Field("adminId", params.AdminId). Gt(0, "请选择系统用户"). Field("instanceId", params.InstanceId). Gt(0, "请选择媒介") var 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, NodeClusterIds: params.NodeClusterIds, }) if err != nil { this.ErrorPage(err) return } defer this.CreateLogInfo(codes.MessageRecipient_LogCreateMessageRecipient, resp.MessageRecipientId) this.Success() }