Browse Source

完成获取服务器信息的功能接口

SliverHorn 4 years ago
parent
commit
960c209d3f

+ 16 - 0
server/api/v1/sys_system.go

@@ -60,3 +60,19 @@ func ReloadSystem(c *gin.Context) {
 		response.OkWithMessage("设置成功", c)
 	}
 }
+
+// @Tags system
+// @Summary 获取服务器信息
+// @Security ApiKeyAuth
+// @Produce  application/json
+// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}"
+// @Router /system/getServerInfo [post]
+func GetServerInfo(c *gin.Context) {
+	server, err := service.GetServerInfo()
+	if err != nil {
+		response.FailWithMessage(fmt.Sprintf("获取失败,%v", err), c)
+		return
+	}
+	response.OkDetailed(gin.H{"server":server}, "获取成功",c)
+
+}

+ 2 - 0
server/gva/init_data/init_data.go

@@ -87,6 +87,7 @@ func InitSysApi() (err error) {
 		{gorm.Model{ID: 63, CreatedAt: time.Now(), UpdatedAt: time.Now()}, "/simpleUploader/checkFileMd5", "文件完整度验证", "simpleUploader", "GET"},
 		{gorm.Model{ID: 64, CreatedAt: time.Now(), UpdatedAt: time.Now()}, "/simpleUploader/mergeFileMd5", "上传完成合并文件", "simpleUploader", "GET"},
 		{gorm.Model{ID: 65, CreatedAt: time.Now(), UpdatedAt: time.Now()}, "/user/setUserInfo", "设置用户信息", "user", "PUT"},
+		{gorm.Model{ID: 66, CreatedAt: time.Now(), UpdatedAt: time.Now()}, "/system/getServerInfo", "获取服务器信息", "system", "POST"},
 	}
 	if tx.Create(&insert).Error != nil { // 遇到错误时回滚事务
 		tx.Rollback()
@@ -161,6 +162,7 @@ func InitCasbinModel() (err error) {
 		{"p", "888", "/jwt/jsonInBlacklist", "POST"},
 		{"p", "888", "/system/getSystemConfig", "POST"},
 		{"p", "888", "/system/setSystemConfig", "POST"},
+		{"p", "888", "/system/getServerInfo", "POST"},
 		{"p", "888", "/customer/customer", "POST"},
 		{"p", "888", "/customer/customer", "PUT"},
 		{"p", "888", "/customer/customer", "DELETE"},

+ 4 - 3
server/router/sys_system.go

@@ -7,9 +7,10 @@ import (
 )
 
 func InitSystemRouter(Router *gin.RouterGroup) {
-	UserRouter := Router.Group("system").Use(middleware.JWTAuth()).Use(middleware.CasbinHandler())
+	SystemRouter := Router.Group("system").Use(middleware.JWTAuth()).Use(middleware.CasbinHandler())
 	{
-		UserRouter.POST("getSystemConfig", v1.GetSystemConfig) // 获取配置文件内容
-		UserRouter.POST("setSystemConfig", v1.SetSystemConfig) // 设置配置文件内容
+		SystemRouter.POST("getSystemConfig", v1.GetSystemConfig) // 获取配置文件内容
+		SystemRouter.POST("setSystemConfig", v1.SetSystemConfig) // 设置配置文件内容
+		SystemRouter.POST("getServerInfo", v1.GetServerInfo)     // 获取服务器信息
 	}
 }

+ 28 - 0
server/service/sys_system.go

@@ -5,6 +5,7 @@ import (
 	"gin-vue-admin/global"
 	"gin-vue-admin/model"
 	"gin-vue-admin/utils"
+	"go.uber.org/zap"
 )
 
 // @title    GetSystemConfig
@@ -31,3 +32,30 @@ func SetSystemConfig(system model.System) (err error) {
 	err = global.GVA_VP.WriteConfig()
 	return err
 }
+
+
+// @title    GetServerInfo
+// @description   get server info , 获取服务器信息
+// @auth                    (2020/04/05  20:22)
+// @return    server         *utils.Server
+// @return    err            error
+
+func GetServerInfo() (server *utils.Server, err error) {
+	var s utils.Server
+	s.Os = utils.InitOS()
+	if s.Cpu, err = utils.InitCPU(); err != nil{
+		global.GVA_LOG.Error("func utils.InitCPU() Failed!", zap.String("err", err.Error()))
+		return &s, err
+	}
+	if s.Rrm, err = utils.InitRAM(); err != nil{
+		global.GVA_LOG.Error("func utils.InitRAM() Failed!", zap.String("err", err.Error()))
+		return &s, err
+	}
+	if s.Disk, err = utils.InitDisk(); err != nil{
+		global.GVA_LOG.Error("func utils.InitDisk() Failed!", zap.String("err", err.Error()))
+		return &s, err
+	}
+
+	return &s, nil
+}
+

+ 78 - 39
server/utils/server.go

@@ -1,14 +1,13 @@
 package utils
 
 import (
-	"fmt"
 	"github.com/shirou/gopsutil/cpu"
 	"github.com/shirou/gopsutil/disk"
-	"github.com/shirou/gopsutil/load"
 	"github.com/shirou/gopsutil/mem"
 	"runtime"
 	"time"
 )
+
 const (
 	B  = 1
 	KB = 1024 * B
@@ -16,47 +15,87 @@ const (
 	GB = 1024 * MB
 )
 
-//服务器硬盘使用量
-func DiskCheck() {
-	u, _ := disk.Usage("/")
-	usedMB := int(u.Used) / MB
-	usedGB := int(u.Used) / GB
-	totalMB := int(u.Total) / MB
-	totalGB := int(u.Total) / GB
-	usedPercent := int(u.UsedPercent)
-	fmt.Printf("Free space: %dMB (%dGB) / %dMB (%dGB) | Used: %d%%\n", usedMB, usedGB, totalMB, totalGB, usedPercent)
+type Server struct {
+	Os   Os   `json:"os"`
+	Cpu  Cpu  `json:"cpu"`
+	Rrm  Rrm  `json:"ram"`
+	Disk Disk `json:"disk"`
+}
+
+type Os struct {
+	GOOS         string `json:"goos"`
+	NumCPU       int    `json:"numCpu"`
+	Compiler     string `json:"compiler"`
+	GoVersion    string `json:"goVersion"`
+	NumGoroutine int    `json:"numGoroutine"`
+}
+
+type Cpu struct {
+	Cpus  []float64 `json:"cpus"`
+	Cores int       `json:"cores"`
+}
+
+
+type Rrm struct {
+	UsedMB      int `json:"usedMb"`
+	TotalMB     int `json:"totalMb"`
+	UsedPercent int `json:"usedPercent"`
 }
 
-//OS
-func OSCheck() {
-	fmt.Printf("goOs:%s,compiler:%s,numCpu:%d,version:%s,numGoroutine:%d\n", runtime.GOOS, runtime.Compiler, runtime.NumCPU(), runtime.Version(), runtime.NumGoroutine())
+type Disk struct {
+	UsedMB      int `json:"usedMb"`
+	UsedGB      int `json:"usedGb"`
+	TotalMB     int `json:"totalMb"`
+	TotalGB     int `json:"totalGb"`
+	UsedPercent int `json:"usedPercent"`
 }
 
-//CPU 使用量
-func CPUCheck() {
-	cores, _ := cpu.Counts(false)
+// InitOS OS信息
+func InitOS() (o Os) {
+	o.GOOS = runtime.GOOS
+	o.NumCPU = runtime.NumCPU()
+	o.GoVersion = runtime.Version()
+	o.NumGoroutine = runtime.NumGoroutine()
+	return o
+}
+
+// InitCPU CPU信息
+func InitCPU() (c Cpu, err error) {
+	if cores, err := cpu.Counts(false); err != nil {
+		return c, err
+	} else {
+		c.Cores = cores
+	}
+	if cpus, err := cpu.Percent(time.Duration(200)*time.Millisecond, true); err != nil {
+		return c, err
+	} else {
+		c.Cpus = cpus
+	}
+	return c, nil
+}
+
+// InitRAM ARM信息
+func InitRAM() (r Rrm, err error) {
+	if u, err := mem.VirtualMemory(); err != nil{
+		return r, err
+	}else {
+		r.UsedMB = int(u.Used) / MB
+		r.TotalMB = int(u.Total) / MB
+		r.UsedPercent = int(u.UsedPercent)
+	}
+	return r, nil
+}
 
-	cpus, err := cpu.Percent(time.Duration(200)*time.Millisecond, true)
-	if err == nil {
-		for i, c := range cpus {
-			fmt.Printf("cpu%d : %f%%\n", i, c)
-		}
+// InitDisk 硬盘信息
+func InitDisk() (d Disk, err error) {
+	if u, err := disk.Usage("/"); err != nil{
+		return d, err
+	} else {
+		d.UsedMB = int(u.Used) / MB
+		d.UsedGB = int(u.Used) / GB
+		d.TotalMB = int(u.Total) / MB
+		d.TotalGB = int(u.Total) / GB
+		d.UsedPercent = int(u.UsedPercent)
 	}
-	a, _ := load.Avg()
-	l1 := a.Load1
-	l5 := a.Load5
-	l15 := a.Load15
-	fmt.Println(l1)
-	fmt.Println(l5)
-	fmt.Println(l15)
-	fmt.Println(cores)
-}
-
-//内存使用量
-func RAMCheck() {
-	u, _ := mem.VirtualMemory()
-	usedMB := int(u.Used) / MB
-	totalMB := int(u.Total) / MB
-	usedPercent := int(u.UsedPercent)
-	fmt.Printf("usedMB:%d,totalMB:%d,usedPercent:%d", usedMB, totalMB, usedPercent)
+	return d, nil
 }

+ 1 - 1
web/src/view/example/simpleUploader/simpleUploader.vue

@@ -94,7 +94,7 @@ export default {
           return false;
         }
         md5 = SparkMD5.ArrayBuffer.hash(e.target.result, false);
-        
+
         file.uniqueIdentifier = md5;
         if (md5 != "") {
           const res = await checkFileMd5({ md5: md5 });