package recipients import ( "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" "github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs" "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" "github.com/iwind/TeaGo/maps" ) type RecipientAction struct { actionutils.ParentAction } func (this *RecipientAction) Init() { this.Nav("", "", "recipient") } func (this *RecipientAction) RunGet(params struct { RecipientId int64 }) { recipientResp, err := this.RPC().MessageRecipientRPC().FindEnabledMessageRecipient(this.AdminContext(), &pb.FindEnabledMessageRecipientRequest{MessageRecipientId: params.RecipientId}) if err != nil { this.ErrorPage(err) return } var recipient = recipientResp.MessageRecipient if recipient == nil || recipient.Admin == nil || recipient.MessageMediaInstance == nil { this.NotFound("messageRecipient", params.RecipientId) return } // 已关联的接收者 receiversResp, err := this.RPC().MessageReceiverRPC().FindAllEnabledMessageReceiversWithMessageRecipientId(this.AdminContext(), &pb.FindAllEnabledMessageReceiversWithMessageRecipientIdRequest{ MessageRecipientId: params.RecipientId, }) if err != nil { this.ErrorPage(err) return } // node clusters var nodeClusterMaps = []maps.Map{} for _, receiver := range receiversResp.MessageReceivers { if receiver.Role == nodeconfigs.NodeRoleNode && receiver.ClusterId > 0 && receiver.NodeId == 0 && receiver.ServerId == 0 { clusterResp, err := this.RPC().NodeClusterRPC().FindEnabledNodeCluster(this.AdminContext(), &pb.FindEnabledNodeClusterRequest{NodeClusterId: receiver.ClusterId}) if err != nil { this.ErrorPage(err) return } var cluster = clusterResp.NodeCluster if cluster != nil { nodeClusterMaps = append(nodeClusterMaps, maps.Map{ "receiverId": receiver.Id, "id": cluster.Id, "name": cluster.Name, }) } } } this.Data["nodeClusters"] = nodeClusterMaps this.Data["recipient"] = maps.Map{ "id": recipient.Id, "admin": maps.Map{ "id": recipient.Admin.Id, "fullname": recipient.Admin.Fullname, "username": recipient.Admin.Username, }, "groups": recipient.MessageRecipientGroups, "isOn": recipient.IsOn, "instance": maps.Map{ "id": recipient.MessageMediaInstance.Id, "name": recipient.MessageMediaInstance.Name, "description": recipient.MessageMediaInstance.Description, }, "user": recipient.User, "description": recipient.Description, "timeFrom": recipient.TimeFrom, "timeTo": recipient.TimeTo, } this.Show() }