mirror of
				https://github.com/TeaOSLab/EdgeAdmin.git
				synced 2025-11-04 13:10:26 +08:00 
			
		
		
		
	
		
			
	
	
		
			98 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
		
		
			
		
	
	
			98 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| 
								 | 
							
								// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved. Official site: https://goedge.cn .
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								package regions
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import (
							 | 
						||
| 
								 | 
							
									"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
							 | 
						||
| 
								 | 
							
									"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
							 | 
						||
| 
								 | 
							
									"github.com/iwind/TeaGo/actions"
							 | 
						||
| 
								 | 
							
									"github.com/iwind/TeaGo/maps"
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								type UpdateNodeRegionPopupAction struct {
							 | 
						||
| 
								 | 
							
									actionutils.ParentAction
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func (this *UpdateNodeRegionPopupAction) Init() {
							 | 
						||
| 
								 | 
							
									this.Nav("", "", "")
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func (this *UpdateNodeRegionPopupAction) RunGet(params struct {
							 | 
						||
| 
								 | 
							
									NodeId   int64
							 | 
						||
| 
								 | 
							
									RegionId int64
							 | 
						||
| 
								 | 
							
								}) {
							 | 
						||
| 
								 | 
							
									// node
							 | 
						||
| 
								 | 
							
									nodeResp, err := this.RPC().NodeRPC().FindEnabledNode(this.AdminContext(), &pb.FindEnabledNodeRequest{NodeId: params.NodeId})
							 | 
						||
| 
								 | 
							
									if err != nil {
							 | 
						||
| 
								 | 
							
										this.ErrorPage(err)
							 | 
						||
| 
								 | 
							
										return
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									var node = nodeResp.Node
							 | 
						||
| 
								 | 
							
									if node == nil {
							 | 
						||
| 
								 | 
							
										this.NotFound("node", params.NodeId)
							 | 
						||
| 
								 | 
							
										return
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									this.Data["node"] = maps.Map{
							 | 
						||
| 
								 | 
							
										"id":   node.Id,
							 | 
						||
| 
								 | 
							
										"name": node.Name,
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// region
							 | 
						||
| 
								 | 
							
									this.Data["region"] = maps.Map{
							 | 
						||
| 
								 | 
							
										"id":   0,
							 | 
						||
| 
								 | 
							
										"name": "",
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									if params.RegionId > 0 {
							 | 
						||
| 
								 | 
							
										regionResp, err := this.RPC().NodeRegionRPC().FindEnabledNodeRegion(this.AdminContext(), &pb.FindEnabledNodeRegionRequest{NodeRegionId: params.RegionId})
							 | 
						||
| 
								 | 
							
										if err != nil {
							 | 
						||
| 
								 | 
							
											this.ErrorPage(err)
							 | 
						||
| 
								 | 
							
											return
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										var region = regionResp.NodeRegion
							 | 
						||
| 
								 | 
							
										if region != nil {
							 | 
						||
| 
								 | 
							
											this.Data["region"] = maps.Map{
							 | 
						||
| 
								 | 
							
												"id":   region.Id,
							 | 
						||
| 
								 | 
							
												"name": region.Name,
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// all regions
							 | 
						||
| 
								 | 
							
									regionsResp, err := this.RPC().NodeRegionRPC().FindAllAvailableNodeRegions(this.AdminContext(), &pb.FindAllAvailableNodeRegionsRequest{})
							 | 
						||
| 
								 | 
							
									if err != nil {
							 | 
						||
| 
								 | 
							
										this.ErrorPage(err)
							 | 
						||
| 
								 | 
							
										return
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									var regionMaps = []maps.Map{}
							 | 
						||
| 
								 | 
							
									for _, region := range regionsResp.NodeRegions {
							 | 
						||
| 
								 | 
							
										regionMaps = append(regionMaps, maps.Map{
							 | 
						||
| 
								 | 
							
											"id":   region.Id,
							 | 
						||
| 
								 | 
							
											"name": region.Name,
							 | 
						||
| 
								 | 
							
										})
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									this.Data["regions"] = regionMaps
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									this.Show()
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func (this *UpdateNodeRegionPopupAction) RunPost(params struct {
							 | 
						||
| 
								 | 
							
									NodeId   int64
							 | 
						||
| 
								 | 
							
									RegionId int64
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									Must *actions.Must
							 | 
						||
| 
								 | 
							
									CSRF *actionutils.CSRF
							 | 
						||
| 
								 | 
							
								}) {
							 | 
						||
| 
								 | 
							
									defer this.CreateLogInfo("修改节点 %d 区域到 %d", params.RegionId)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									_, err := this.RPC().NodeRPC().UpdateNodeRegionInfo(this.AdminContext(), &pb.UpdateNodeRegionInfoRequest{
							 | 
						||
| 
								 | 
							
										NodeId:       params.NodeId,
							 | 
						||
| 
								 | 
							
										NodeRegionId: params.RegionId,
							 | 
						||
| 
								 | 
							
									})
							 | 
						||
| 
								 | 
							
									if err != nil {
							 | 
						||
| 
								 | 
							
										this.ErrorPage(err)
							 | 
						||
| 
								 | 
							
										return
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									this.Success()
							 | 
						||
| 
								 | 
							
								}
							 |