mirror of
				https://github.com/TeaOSLab/EdgeAdmin.git
				synced 2025-11-04 05:00:25 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			182 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			182 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package userui
 | 
						|
 | 
						|
import (
 | 
						|
	"github.com/TeaOSLab/EdgeAdmin/internal/configloaders"
 | 
						|
	"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/actions"
 | 
						|
	"io"
 | 
						|
)
 | 
						|
 | 
						|
type IndexAction struct {
 | 
						|
	actionutils.ParentAction
 | 
						|
}
 | 
						|
 | 
						|
func (this *IndexAction) Init() {
 | 
						|
	this.Nav("", "", "")
 | 
						|
}
 | 
						|
 | 
						|
func (this *IndexAction) RunGet(params struct{}) {
 | 
						|
	config, err := configloaders.LoadUserUIConfig()
 | 
						|
	if err != nil {
 | 
						|
		this.ErrorPage(err)
 | 
						|
		return
 | 
						|
	}
 | 
						|
	this.Data["config"] = config
 | 
						|
 | 
						|
	// 时区
 | 
						|
	this.Data["timeZoneGroups"] = nodeconfigs.FindAllTimeZoneGroups()
 | 
						|
	this.Data["timeZoneLocations"] = nodeconfigs.FindAllTimeZoneLocations()
 | 
						|
 | 
						|
	if len(config.TimeZone) == 0 {
 | 
						|
		config.TimeZone = nodeconfigs.DefaultTimeZoneLocation
 | 
						|
	}
 | 
						|
	this.Data["timeZoneLocation"] = nodeconfigs.FindTimeZoneLocation(config.TimeZone)
 | 
						|
 | 
						|
	this.Show()
 | 
						|
}
 | 
						|
 | 
						|
func (this *IndexAction) RunPost(params struct {
 | 
						|
	ProductName        string
 | 
						|
	UserSystemName     string
 | 
						|
	ShowOpenSourceInfo bool
 | 
						|
	ShowVersion        bool
 | 
						|
	Version            string
 | 
						|
	ShowFinance        bool
 | 
						|
	FaviconFile        *actions.File
 | 
						|
	LogoFile           *actions.File
 | 
						|
	TimeZone           string
 | 
						|
 | 
						|
	ShowTrafficCharts   bool
 | 
						|
	ShowBandwidthCharts bool
 | 
						|
	BandwidthUnit       string
 | 
						|
 | 
						|
	Must *actions.Must
 | 
						|
	CSRF *actionutils.CSRF
 | 
						|
}) {
 | 
						|
	params.Must.
 | 
						|
		Field("productName", params.ProductName).
 | 
						|
		Require("请输入产品名称").
 | 
						|
		Field("userSystemName", params.UserSystemName).
 | 
						|
		Require("请输入管理员系统名称")
 | 
						|
 | 
						|
	config, err := configloaders.LoadUserUIConfig()
 | 
						|
	if err != nil {
 | 
						|
		this.ErrorPage(err)
 | 
						|
		return
 | 
						|
	}
 | 
						|
	config.ProductName = params.ProductName
 | 
						|
	config.UserSystemName = params.UserSystemName
 | 
						|
	config.ShowOpenSourceInfo = params.ShowOpenSourceInfo
 | 
						|
	config.ShowVersion = params.ShowVersion
 | 
						|
	config.Version = params.Version
 | 
						|
	config.ShowFinance = params.ShowFinance
 | 
						|
	config.ShowTrafficCharts = params.ShowTrafficCharts
 | 
						|
	config.ShowBandwidthCharts = params.ShowBandwidthCharts
 | 
						|
	config.BandwidthUnit = params.BandwidthUnit
 | 
						|
	config.TimeZone = params.TimeZone
 | 
						|
 | 
						|
	// 上传Favicon文件
 | 
						|
	if params.FaviconFile != nil {
 | 
						|
		createResp, err := this.RPC().FileRPC().CreateFile(this.AdminContext(), &pb.CreateFileRequest{
 | 
						|
			Filename: params.FaviconFile.Filename,
 | 
						|
			Size:     params.FaviconFile.Size,
 | 
						|
			IsPublic: true,
 | 
						|
		})
 | 
						|
		if err != nil {
 | 
						|
			this.ErrorPage(err)
 | 
						|
			return
 | 
						|
		}
 | 
						|
		fileId := createResp.FileId
 | 
						|
 | 
						|
		// 上传内容
 | 
						|
		buf := make([]byte, 512*1024)
 | 
						|
		reader, err := params.FaviconFile.OriginFile.Open()
 | 
						|
		if err != nil {
 | 
						|
			this.ErrorPage(err)
 | 
						|
			return
 | 
						|
		}
 | 
						|
		for {
 | 
						|
			n, err := reader.Read(buf)
 | 
						|
			if n > 0 {
 | 
						|
				_, err = this.RPC().FileChunkRPC().CreateFileChunk(this.AdminContext(), &pb.CreateFileChunkRequest{
 | 
						|
					FileId: fileId,
 | 
						|
					Data:   buf[:n],
 | 
						|
				})
 | 
						|
				if err != nil {
 | 
						|
					this.Fail("上传失败:" + err.Error())
 | 
						|
				}
 | 
						|
			}
 | 
						|
			if err != nil {
 | 
						|
				if err == io.EOF {
 | 
						|
					break
 | 
						|
				}
 | 
						|
				this.Fail("上传失败:" + err.Error())
 | 
						|
			}
 | 
						|
		}
 | 
						|
 | 
						|
		// 置为已完成
 | 
						|
		_, err = this.RPC().FileRPC().UpdateFileFinished(this.AdminContext(), &pb.UpdateFileFinishedRequest{FileId: fileId})
 | 
						|
		if err != nil {
 | 
						|
			this.ErrorPage(err)
 | 
						|
		}
 | 
						|
		config.FaviconFileId = fileId
 | 
						|
	}
 | 
						|
 | 
						|
	// 上传Logo文件
 | 
						|
	if params.LogoFile != nil {
 | 
						|
		createResp, err := this.RPC().FileRPC().CreateFile(this.AdminContext(), &pb.CreateFileRequest{
 | 
						|
			Filename: params.LogoFile.Filename,
 | 
						|
			Size:     params.LogoFile.Size,
 | 
						|
			IsPublic: true,
 | 
						|
		})
 | 
						|
		if err != nil {
 | 
						|
			this.ErrorPage(err)
 | 
						|
			return
 | 
						|
		}
 | 
						|
		fileId := createResp.FileId
 | 
						|
 | 
						|
		// 上传内容
 | 
						|
		buf := make([]byte, 512*1024)
 | 
						|
		reader, err := params.LogoFile.OriginFile.Open()
 | 
						|
		if err != nil {
 | 
						|
			this.ErrorPage(err)
 | 
						|
			return
 | 
						|
		}
 | 
						|
		for {
 | 
						|
			n, err := reader.Read(buf)
 | 
						|
			if n > 0 {
 | 
						|
				_, err = this.RPC().FileChunkRPC().CreateFileChunk(this.AdminContext(), &pb.CreateFileChunkRequest{
 | 
						|
					FileId: fileId,
 | 
						|
					Data:   buf[:n],
 | 
						|
				})
 | 
						|
				if err != nil {
 | 
						|
					this.Fail("上传失败:" + err.Error())
 | 
						|
				}
 | 
						|
			}
 | 
						|
			if err != nil {
 | 
						|
				if err == io.EOF {
 | 
						|
					break
 | 
						|
				}
 | 
						|
				this.Fail("上传失败:" + err.Error())
 | 
						|
			}
 | 
						|
		}
 | 
						|
 | 
						|
		// 置为已完成
 | 
						|
		_, err = this.RPC().FileRPC().UpdateFileFinished(this.AdminContext(), &pb.UpdateFileFinishedRequest{FileId: fileId})
 | 
						|
		if err != nil {
 | 
						|
			this.ErrorPage(err)
 | 
						|
		}
 | 
						|
		config.LogoFileId = fileId
 | 
						|
	}
 | 
						|
 | 
						|
	err = configloaders.UpdateUserUIConfig(config)
 | 
						|
	if err != nil {
 | 
						|
		this.ErrorPage(err)
 | 
						|
		return
 | 
						|
	}
 | 
						|
 | 
						|
	this.Success()
 | 
						|
}
 |