增加系统信息
parent
944b273bbb
commit
d93041180a
|
@ -518,7 +518,7 @@ if ok == true {
|
||||||
results, err := e.BatchEnforce([][]interface{}{{"alice", "data1", "read"}, {"bob", "data2", "write"}, {"jack", "data3", "read"}})
|
results, err := e.BatchEnforce([][]interface{}{{"alice", "data1", "read"}, {"bob", "data2", "write"}, {"jack", "data3", "read"}})
|
||||||
```
|
```
|
||||||
|
|
||||||
f
|
|
||||||
# 文件上传及下载
|
# 文件上传及下载
|
||||||
|
|
||||||
# 反射reflect
|
# 反射reflect
|
||||||
|
@ -548,6 +548,10 @@ func (t *T) Do(a int, b string) {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
# GoWeb 发布
|
||||||
|
go build编译出moduleName的可执行文件,加载配置文件config.yaml即可运行。
|
||||||
|
|
||||||
|
|
||||||
# 疑问及拓展
|
# 疑问及拓展
|
||||||
#### 为什么函数或方法中变量名很多都是大写字母开始的?
|
#### 为什么函数或方法中变量名很多都是大写字母开始的?
|
||||||
- 任何需要对外暴露的名字必须以大写字母开头,不需要对外暴露的则应该以小写字母开头。
|
- 任何需要对外暴露的名字必须以大写字母开头,不需要对外暴露的则应该以小写字母开头。
|
||||||
|
|
|
@ -14,4 +14,5 @@ var userService = service.ServiceGroupApp.UserService
|
||||||
var jwtService = service.ServiceGroupApp.JwtService
|
var jwtService = service.ServiceGroupApp.JwtService
|
||||||
var menuService = service.ServiceGroupApp.MenuService
|
var menuService = service.ServiceGroupApp.MenuService
|
||||||
var baseMenuService = service.ServiceGroupApp.BaseMenuService
|
var baseMenuService = service.ServiceGroupApp.BaseMenuService
|
||||||
|
var systemConfigService = service.ServiceGroupApp.SystemConfigService
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,79 @@
|
||||||
|
package web
|
||||||
|
|
||||||
|
import (
|
||||||
|
"goweb-gin-demo/global"
|
||||||
|
"goweb-gin-demo/model/common/response"
|
||||||
|
"goweb-gin-demo/model/web"
|
||||||
|
systemRes "goweb-gin-demo/model/web/response"
|
||||||
|
"goweb-gin-demo/utils"
|
||||||
|
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
"go.uber.org/zap"
|
||||||
|
)
|
||||||
|
|
||||||
|
type SystemApi struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Tags System
|
||||||
|
// @Summary 获取配置文件内容
|
||||||
|
// @Security ApiKeyAuth
|
||||||
|
// @Produce application/json
|
||||||
|
// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}"
|
||||||
|
// @Router /system/getSystemConfig [post]
|
||||||
|
func (s *SystemApi) GetSystemConfig(c *gin.Context) {
|
||||||
|
if err, config := systemConfigService.GetSystemConfig(); err != nil {
|
||||||
|
global.GLOBAL_LOG.Error("获取失败!", zap.Any("err", err))
|
||||||
|
response.FailWithMessage("获取失败", c)
|
||||||
|
} else {
|
||||||
|
response.OkWithDetailed(systemRes.SysConfigResponse{Config: config}, "获取成功", c)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Tags System
|
||||||
|
// @Summary 设置配置文件内容
|
||||||
|
// @Security ApiKeyAuth
|
||||||
|
// @Produce application/json
|
||||||
|
// @Param data body web.System true "设置配置文件内容"
|
||||||
|
// @Success 200 {string} string "{"success":true,"data":{},"msg":"设置成功"}"
|
||||||
|
// @Router /system/setSystemConfig [post]
|
||||||
|
func (s *SystemApi) SetSystemConfig(c *gin.Context) {
|
||||||
|
var sys web.System
|
||||||
|
_ = c.ShouldBindJSON(&sys)
|
||||||
|
if err := systemConfigService.SetSystemConfig(sys); err != nil {
|
||||||
|
global.GLOBAL_LOG.Error("设置失败!", zap.Any("err", err))
|
||||||
|
response.FailWithMessage("设置失败", c)
|
||||||
|
} else {
|
||||||
|
response.OkWithData("设置成功", c)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Tags System
|
||||||
|
// @Summary 重启系统
|
||||||
|
// @Security ApiKeyAuth
|
||||||
|
// @Produce application/json
|
||||||
|
// @Success 200 {string} string "{"code":0,"data":{},"msg":"重启系统成功"}"
|
||||||
|
// @Router /system/reloadSystem [post]
|
||||||
|
func (s *SystemApi) ReloadSystem(c *gin.Context) {
|
||||||
|
err := utils.Reload()
|
||||||
|
if err != nil {
|
||||||
|
global.GLOBAL_LOG.Error("重启系统失败!", zap.Any("err", err))
|
||||||
|
response.FailWithMessage("重启系统失败", c)
|
||||||
|
} else {
|
||||||
|
response.OkWithMessage("重启系统成功", c)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Tags System
|
||||||
|
// @Summary 获取服务器信息
|
||||||
|
// @Security ApiKeyAuth
|
||||||
|
// @Produce application/json
|
||||||
|
// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}"
|
||||||
|
// @Router /system/getServerInfo [post]
|
||||||
|
func (s *SystemApi) GetServerInfo(c *gin.Context) {
|
||||||
|
if server, err := systemConfigService.GetServerInfo(); err != nil {
|
||||||
|
global.GLOBAL_LOG.Error("获取失败!", zap.Any("err", err))
|
||||||
|
response.FailWithMessage("获取失败", c)
|
||||||
|
} else {
|
||||||
|
response.OkWithDetailed(gin.H{"server": server}, "获取成功", c)
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,79 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
def_version="1.0.0"
|
||||||
|
|
||||||
|
version=''
|
||||||
|
os=''
|
||||||
|
arch=''
|
||||||
|
debug=''
|
||||||
|
|
||||||
|
echo -e "请选择操作系统:"
|
||||||
|
oss=("linux" "windows" "darwin")
|
||||||
|
select opt in "${oss[@]}"; do
|
||||||
|
case $opt in
|
||||||
|
"linux")
|
||||||
|
os=$opt
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
"windows")
|
||||||
|
os=$opt
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
"darwin")
|
||||||
|
os=$opt
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
*) echo "invalid option $REPLY" ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
echo -e "请选择CPU架构:"
|
||||||
|
archs=("amd64" "arm" "arm64")
|
||||||
|
select opt in "${archs[@]}"; do
|
||||||
|
case $opt in
|
||||||
|
"amd64")
|
||||||
|
arch=$opt
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
"arm")
|
||||||
|
arch=$opt
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
"arm64")
|
||||||
|
arch=$opt
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
*) echo "invalid option $REPLY" ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
read -p "请选择编译版本:" name
|
||||||
|
|
||||||
|
echo -e "是否是调试版本"
|
||||||
|
debugs=("false" "true")
|
||||||
|
select opt in "${debugs[@]}"; do
|
||||||
|
case $opt in
|
||||||
|
"true")
|
||||||
|
debug=''
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
"false")
|
||||||
|
debug="-ldflags '-s -w'"
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
*) echo "invalid option $REPLY" ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
export CGO_ENABLED=1
|
||||||
|
export GOOS=${os}
|
||||||
|
export GOARCH=${arch}
|
||||||
|
|
||||||
|
# CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build -ldflags '-s -w'
|
||||||
|
build_info="CGO_ENABLED=1 GOOS=${os} GOARCH=${arch} go build ${debug}"
|
||||||
|
echo "编译指令为:${build_info}"
|
||||||
|
|
||||||
|
build_cmd="go build ${debug}"
|
||||||
|
|
||||||
|
`${build_cmd}`
|
||||||
|
|
|
@ -8,7 +8,7 @@ jwt:
|
||||||
zap:
|
zap:
|
||||||
level: 'info'
|
level: 'info'
|
||||||
format: 'console'
|
format: 'console'
|
||||||
prefix: '[github.com/flipped-aurora/gin-vue-admin/server]'
|
prefix: '[goweb-demo]'
|
||||||
director: 'log'
|
director: 'log'
|
||||||
link-name: 'latest_log'
|
link-name: 'latest_log'
|
||||||
show-line: true
|
show-line: true
|
||||||
|
|
544
docs/docs.go
544
docs/docs.go
|
@ -443,6 +443,113 @@ var doc = `{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"/system/getServerInfo": {
|
||||||
|
"post": {
|
||||||
|
"security": [
|
||||||
|
{
|
||||||
|
"ApiKeyAuth": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"System"
|
||||||
|
],
|
||||||
|
"summary": "获取服务器信息",
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "{\"success\":true,\"data\":{},\"msg\":\"获取成功\"}",
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/system/getSystemConfig": {
|
||||||
|
"post": {
|
||||||
|
"security": [
|
||||||
|
{
|
||||||
|
"ApiKeyAuth": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"System"
|
||||||
|
],
|
||||||
|
"summary": "获取配置文件内容",
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "{\"success\":true,\"data\":{},\"msg\":\"获取成功\"}",
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/system/reloadSystem": {
|
||||||
|
"post": {
|
||||||
|
"security": [
|
||||||
|
{
|
||||||
|
"ApiKeyAuth": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"System"
|
||||||
|
],
|
||||||
|
"summary": "重启系统",
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "{\"code\":0,\"data\":{},\"msg\":\"重启系统成功\"}",
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/system/setSystemConfig": {
|
||||||
|
"post": {
|
||||||
|
"security": [
|
||||||
|
{
|
||||||
|
"ApiKeyAuth": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"System"
|
||||||
|
],
|
||||||
|
"summary": "设置配置文件内容",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"description": "设置配置文件内容",
|
||||||
|
"name": "data",
|
||||||
|
"in": "body",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/web.System"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "{\"success\":true,\"data\":{},\"msg\":\"设置成功\"}",
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"/user/changePassword": {
|
"/user/changePassword": {
|
||||||
"post": {
|
"post": {
|
||||||
"security": [
|
"security": [
|
||||||
|
@ -727,6 +834,435 @@ var doc = `{
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"definitions": {
|
"definitions": {
|
||||||
|
"config.AliyunOSS": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"accessKeyId": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"accessKeySecret": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"basePath": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"bucketName": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"bucketUrl": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"endpoint": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"config.Autocode": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"root": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"server": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"serverApi": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"serverInitialize": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"serverModel": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"serverRequest": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"serverRouter": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"serverService": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"transferRestart": {
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"web": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"webApi": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"webForm": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"webTable": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"config.Captcha": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"imgHeight": {
|
||||||
|
"description": "验证码高度",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"imgWidth": {
|
||||||
|
"description": "验证码宽度",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"keyLong": {
|
||||||
|
"description": "验证码长度",
|
||||||
|
"type": "integer"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"config.Casbin": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"modelPath": {
|
||||||
|
"description": "存放casbin模型的相对路径",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"config.Detail": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"compareField": {
|
||||||
|
"description": "需要比较时间的字段",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"interval": {
|
||||||
|
"description": "时间间隔",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"tableName": {
|
||||||
|
"description": "需要清理的表名",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"config.Email": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"from": {
|
||||||
|
"description": "收件人",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"host": {
|
||||||
|
"description": "服务器地址",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"isSSL": {
|
||||||
|
"description": "是否SSL",
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"nickname": {
|
||||||
|
"description": "昵称",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"port": {
|
||||||
|
"description": "端口",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"secret": {
|
||||||
|
"description": "密钥",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"to": {
|
||||||
|
"description": "收件人:多个以英文逗号分隔",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"config.Excel": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"dir": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"config.JWT": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"bufferTime": {
|
||||||
|
"description": "缓冲时间",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"expiresTime": {
|
||||||
|
"description": "过期时间",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"signingKey": {
|
||||||
|
"description": "jwt签名",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"config.Local": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"path": {
|
||||||
|
"description": "本地文件路径",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"config.Mysql": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"config": {
|
||||||
|
"description": "高级配置",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"dbname": {
|
||||||
|
"description": "数据库名",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"logMode": {
|
||||||
|
"description": "是否开启Gorm全局日志",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"logZap": {
|
||||||
|
"description": "是否通过zap写入日志文件",
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"maxIdleConns": {
|
||||||
|
"description": "空闲中的最大连接数",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"maxOpenConns": {
|
||||||
|
"description": "打开到数据库的最大连接数",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"password": {
|
||||||
|
"description": "数据库密码",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"path": {
|
||||||
|
"description": "服务器地址:端口",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"username": {
|
||||||
|
"description": "数据库用户名",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"config.Qiniu": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"accessKey": {
|
||||||
|
"description": "秘钥AK",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"bucket": {
|
||||||
|
"description": "空间名称",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"imgPath": {
|
||||||
|
"description": "CDN加速域名",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"secretKey": {
|
||||||
|
"description": "秘钥SK",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"useCdnDomains": {
|
||||||
|
"description": "上传是否使用CDN上传加速",
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"useHttps": {
|
||||||
|
"description": "是否使用https",
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"zone": {
|
||||||
|
"description": "存储区域",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"config.Redis": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"addr": {
|
||||||
|
"description": "服务器地址:端口",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"db": {
|
||||||
|
"description": "redis的哪个数据库",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"password": {
|
||||||
|
"description": "密码",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"config.Server": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"aliyunOSS": {
|
||||||
|
"$ref": "#/definitions/config.AliyunOSS"
|
||||||
|
},
|
||||||
|
"autoCode": {
|
||||||
|
"description": "auto",
|
||||||
|
"$ref": "#/definitions/config.Autocode"
|
||||||
|
},
|
||||||
|
"captcha": {
|
||||||
|
"$ref": "#/definitions/config.Captcha"
|
||||||
|
},
|
||||||
|
"casbin": {
|
||||||
|
"$ref": "#/definitions/config.Casbin"
|
||||||
|
},
|
||||||
|
"email": {
|
||||||
|
"$ref": "#/definitions/config.Email"
|
||||||
|
},
|
||||||
|
"excel": {
|
||||||
|
"$ref": "#/definitions/config.Excel"
|
||||||
|
},
|
||||||
|
"jwt": {
|
||||||
|
"$ref": "#/definitions/config.JWT"
|
||||||
|
},
|
||||||
|
"local": {
|
||||||
|
"description": "oss",
|
||||||
|
"$ref": "#/definitions/config.Local"
|
||||||
|
},
|
||||||
|
"mysql": {
|
||||||
|
"description": "gorm",
|
||||||
|
"$ref": "#/definitions/config.Mysql"
|
||||||
|
},
|
||||||
|
"qiniu": {
|
||||||
|
"$ref": "#/definitions/config.Qiniu"
|
||||||
|
},
|
||||||
|
"redis": {
|
||||||
|
"$ref": "#/definitions/config.Redis"
|
||||||
|
},
|
||||||
|
"system": {
|
||||||
|
"$ref": "#/definitions/config.System"
|
||||||
|
},
|
||||||
|
"tencentCOS": {
|
||||||
|
"$ref": "#/definitions/config.TencentCOS"
|
||||||
|
},
|
||||||
|
"timer": {
|
||||||
|
"$ref": "#/definitions/config.Timer"
|
||||||
|
},
|
||||||
|
"zap": {
|
||||||
|
"$ref": "#/definitions/config.Zap"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"config.System": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"addr": {
|
||||||
|
"description": "端口值",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"dbType": {
|
||||||
|
"description": "数据库类型:mysql(默认)|sqlite|sqlserver|postgresql",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"env": {
|
||||||
|
"description": "环境值",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"ossType": {
|
||||||
|
"description": "Oss类型",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"useMultipoint": {
|
||||||
|
"description": "多点登录拦截",
|
||||||
|
"type": "boolean"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"config.TencentCOS": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"baseURL": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"bucket": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"pathPrefix": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"region": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"secretID": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"secretKey": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"config.Timer": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"detail": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"$ref": "#/definitions/config.Detail"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"spec": {
|
||||||
|
"description": "CRON表达式",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"start": {
|
||||||
|
"description": "是否启用",
|
||||||
|
"type": "boolean"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"config.Zap": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"director": {
|
||||||
|
"description": "日志文件夹",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"encodeLevel": {
|
||||||
|
"description": "编码级",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"format": {
|
||||||
|
"description": "输出",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"level": {
|
||||||
|
"description": "级别",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"linkName": {
|
||||||
|
"description": "软链接名称",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"logInConsole": {
|
||||||
|
"description": "输出控制台",
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"prefix": {
|
||||||
|
"description": "日志前缀",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"showLine": {
|
||||||
|
"description": "显示行",
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"stacktraceKey": {
|
||||||
|
"description": "栈名",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"request.AddMenuAuthorityInfo": {
|
"request.AddMenuAuthorityInfo": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
|
@ -1082,6 +1618,14 @@ var doc = `{
|
||||||
"type": "string"
|
"type": "string"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"web.System": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"config": {
|
||||||
|
"$ref": "#/definitions/config.Server"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}`
|
}`
|
||||||
|
|
|
@ -424,6 +424,113 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"/system/getServerInfo": {
|
||||||
|
"post": {
|
||||||
|
"security": [
|
||||||
|
{
|
||||||
|
"ApiKeyAuth": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"System"
|
||||||
|
],
|
||||||
|
"summary": "获取服务器信息",
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "{\"success\":true,\"data\":{},\"msg\":\"获取成功\"}",
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/system/getSystemConfig": {
|
||||||
|
"post": {
|
||||||
|
"security": [
|
||||||
|
{
|
||||||
|
"ApiKeyAuth": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"System"
|
||||||
|
],
|
||||||
|
"summary": "获取配置文件内容",
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "{\"success\":true,\"data\":{},\"msg\":\"获取成功\"}",
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/system/reloadSystem": {
|
||||||
|
"post": {
|
||||||
|
"security": [
|
||||||
|
{
|
||||||
|
"ApiKeyAuth": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"System"
|
||||||
|
],
|
||||||
|
"summary": "重启系统",
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "{\"code\":0,\"data\":{},\"msg\":\"重启系统成功\"}",
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/system/setSystemConfig": {
|
||||||
|
"post": {
|
||||||
|
"security": [
|
||||||
|
{
|
||||||
|
"ApiKeyAuth": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"System"
|
||||||
|
],
|
||||||
|
"summary": "设置配置文件内容",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"description": "设置配置文件内容",
|
||||||
|
"name": "data",
|
||||||
|
"in": "body",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/web.System"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "{\"success\":true,\"data\":{},\"msg\":\"设置成功\"}",
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"/user/changePassword": {
|
"/user/changePassword": {
|
||||||
"post": {
|
"post": {
|
||||||
"security": [
|
"security": [
|
||||||
|
@ -708,6 +815,435 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"definitions": {
|
"definitions": {
|
||||||
|
"config.AliyunOSS": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"accessKeyId": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"accessKeySecret": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"basePath": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"bucketName": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"bucketUrl": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"endpoint": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"config.Autocode": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"root": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"server": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"serverApi": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"serverInitialize": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"serverModel": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"serverRequest": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"serverRouter": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"serverService": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"transferRestart": {
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"web": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"webApi": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"webForm": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"webTable": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"config.Captcha": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"imgHeight": {
|
||||||
|
"description": "验证码高度",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"imgWidth": {
|
||||||
|
"description": "验证码宽度",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"keyLong": {
|
||||||
|
"description": "验证码长度",
|
||||||
|
"type": "integer"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"config.Casbin": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"modelPath": {
|
||||||
|
"description": "存放casbin模型的相对路径",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"config.Detail": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"compareField": {
|
||||||
|
"description": "需要比较时间的字段",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"interval": {
|
||||||
|
"description": "时间间隔",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"tableName": {
|
||||||
|
"description": "需要清理的表名",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"config.Email": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"from": {
|
||||||
|
"description": "收件人",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"host": {
|
||||||
|
"description": "服务器地址",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"isSSL": {
|
||||||
|
"description": "是否SSL",
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"nickname": {
|
||||||
|
"description": "昵称",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"port": {
|
||||||
|
"description": "端口",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"secret": {
|
||||||
|
"description": "密钥",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"to": {
|
||||||
|
"description": "收件人:多个以英文逗号分隔",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"config.Excel": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"dir": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"config.JWT": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"bufferTime": {
|
||||||
|
"description": "缓冲时间",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"expiresTime": {
|
||||||
|
"description": "过期时间",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"signingKey": {
|
||||||
|
"description": "jwt签名",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"config.Local": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"path": {
|
||||||
|
"description": "本地文件路径",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"config.Mysql": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"config": {
|
||||||
|
"description": "高级配置",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"dbname": {
|
||||||
|
"description": "数据库名",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"logMode": {
|
||||||
|
"description": "是否开启Gorm全局日志",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"logZap": {
|
||||||
|
"description": "是否通过zap写入日志文件",
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"maxIdleConns": {
|
||||||
|
"description": "空闲中的最大连接数",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"maxOpenConns": {
|
||||||
|
"description": "打开到数据库的最大连接数",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"password": {
|
||||||
|
"description": "数据库密码",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"path": {
|
||||||
|
"description": "服务器地址:端口",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"username": {
|
||||||
|
"description": "数据库用户名",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"config.Qiniu": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"accessKey": {
|
||||||
|
"description": "秘钥AK",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"bucket": {
|
||||||
|
"description": "空间名称",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"imgPath": {
|
||||||
|
"description": "CDN加速域名",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"secretKey": {
|
||||||
|
"description": "秘钥SK",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"useCdnDomains": {
|
||||||
|
"description": "上传是否使用CDN上传加速",
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"useHttps": {
|
||||||
|
"description": "是否使用https",
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"zone": {
|
||||||
|
"description": "存储区域",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"config.Redis": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"addr": {
|
||||||
|
"description": "服务器地址:端口",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"db": {
|
||||||
|
"description": "redis的哪个数据库",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"password": {
|
||||||
|
"description": "密码",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"config.Server": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"aliyunOSS": {
|
||||||
|
"$ref": "#/definitions/config.AliyunOSS"
|
||||||
|
},
|
||||||
|
"autoCode": {
|
||||||
|
"description": "auto",
|
||||||
|
"$ref": "#/definitions/config.Autocode"
|
||||||
|
},
|
||||||
|
"captcha": {
|
||||||
|
"$ref": "#/definitions/config.Captcha"
|
||||||
|
},
|
||||||
|
"casbin": {
|
||||||
|
"$ref": "#/definitions/config.Casbin"
|
||||||
|
},
|
||||||
|
"email": {
|
||||||
|
"$ref": "#/definitions/config.Email"
|
||||||
|
},
|
||||||
|
"excel": {
|
||||||
|
"$ref": "#/definitions/config.Excel"
|
||||||
|
},
|
||||||
|
"jwt": {
|
||||||
|
"$ref": "#/definitions/config.JWT"
|
||||||
|
},
|
||||||
|
"local": {
|
||||||
|
"description": "oss",
|
||||||
|
"$ref": "#/definitions/config.Local"
|
||||||
|
},
|
||||||
|
"mysql": {
|
||||||
|
"description": "gorm",
|
||||||
|
"$ref": "#/definitions/config.Mysql"
|
||||||
|
},
|
||||||
|
"qiniu": {
|
||||||
|
"$ref": "#/definitions/config.Qiniu"
|
||||||
|
},
|
||||||
|
"redis": {
|
||||||
|
"$ref": "#/definitions/config.Redis"
|
||||||
|
},
|
||||||
|
"system": {
|
||||||
|
"$ref": "#/definitions/config.System"
|
||||||
|
},
|
||||||
|
"tencentCOS": {
|
||||||
|
"$ref": "#/definitions/config.TencentCOS"
|
||||||
|
},
|
||||||
|
"timer": {
|
||||||
|
"$ref": "#/definitions/config.Timer"
|
||||||
|
},
|
||||||
|
"zap": {
|
||||||
|
"$ref": "#/definitions/config.Zap"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"config.System": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"addr": {
|
||||||
|
"description": "端口值",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"dbType": {
|
||||||
|
"description": "数据库类型:mysql(默认)|sqlite|sqlserver|postgresql",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"env": {
|
||||||
|
"description": "环境值",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"ossType": {
|
||||||
|
"description": "Oss类型",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"useMultipoint": {
|
||||||
|
"description": "多点登录拦截",
|
||||||
|
"type": "boolean"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"config.TencentCOS": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"baseURL": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"bucket": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"pathPrefix": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"region": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"secretID": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"secretKey": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"config.Timer": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"detail": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"$ref": "#/definitions/config.Detail"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"spec": {
|
||||||
|
"description": "CRON表达式",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"start": {
|
||||||
|
"description": "是否启用",
|
||||||
|
"type": "boolean"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"config.Zap": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"director": {
|
||||||
|
"description": "日志文件夹",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"encodeLevel": {
|
||||||
|
"description": "编码级",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"format": {
|
||||||
|
"description": "输出",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"level": {
|
||||||
|
"description": "级别",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"linkName": {
|
||||||
|
"description": "软链接名称",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"logInConsole": {
|
||||||
|
"description": "输出控制台",
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"prefix": {
|
||||||
|
"description": "日志前缀",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"showLine": {
|
||||||
|
"description": "显示行",
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"stacktraceKey": {
|
||||||
|
"description": "栈名",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"request.AddMenuAuthorityInfo": {
|
"request.AddMenuAuthorityInfo": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
|
@ -1063,6 +1599,14 @@
|
||||||
"type": "string"
|
"type": "string"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"web.System": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"config": {
|
||||||
|
"$ref": "#/definitions/config.Server"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,4 +1,303 @@
|
||||||
definitions:
|
definitions:
|
||||||
|
config.AliyunOSS:
|
||||||
|
properties:
|
||||||
|
accessKeyId:
|
||||||
|
type: string
|
||||||
|
accessKeySecret:
|
||||||
|
type: string
|
||||||
|
basePath:
|
||||||
|
type: string
|
||||||
|
bucketName:
|
||||||
|
type: string
|
||||||
|
bucketUrl:
|
||||||
|
type: string
|
||||||
|
endpoint:
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
config.Autocode:
|
||||||
|
properties:
|
||||||
|
root:
|
||||||
|
type: string
|
||||||
|
server:
|
||||||
|
type: string
|
||||||
|
serverApi:
|
||||||
|
type: string
|
||||||
|
serverInitialize:
|
||||||
|
type: string
|
||||||
|
serverModel:
|
||||||
|
type: string
|
||||||
|
serverRequest:
|
||||||
|
type: string
|
||||||
|
serverRouter:
|
||||||
|
type: string
|
||||||
|
serverService:
|
||||||
|
type: string
|
||||||
|
transferRestart:
|
||||||
|
type: boolean
|
||||||
|
web:
|
||||||
|
type: string
|
||||||
|
webApi:
|
||||||
|
type: string
|
||||||
|
webForm:
|
||||||
|
type: string
|
||||||
|
webTable:
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
config.Captcha:
|
||||||
|
properties:
|
||||||
|
imgHeight:
|
||||||
|
description: 验证码高度
|
||||||
|
type: integer
|
||||||
|
imgWidth:
|
||||||
|
description: 验证码宽度
|
||||||
|
type: integer
|
||||||
|
keyLong:
|
||||||
|
description: 验证码长度
|
||||||
|
type: integer
|
||||||
|
type: object
|
||||||
|
config.Casbin:
|
||||||
|
properties:
|
||||||
|
modelPath:
|
||||||
|
description: 存放casbin模型的相对路径
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
config.Detail:
|
||||||
|
properties:
|
||||||
|
compareField:
|
||||||
|
description: 需要比较时间的字段
|
||||||
|
type: string
|
||||||
|
interval:
|
||||||
|
description: 时间间隔
|
||||||
|
type: string
|
||||||
|
tableName:
|
||||||
|
description: 需要清理的表名
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
config.Email:
|
||||||
|
properties:
|
||||||
|
from:
|
||||||
|
description: 收件人
|
||||||
|
type: string
|
||||||
|
host:
|
||||||
|
description: 服务器地址
|
||||||
|
type: string
|
||||||
|
isSSL:
|
||||||
|
description: 是否SSL
|
||||||
|
type: boolean
|
||||||
|
nickname:
|
||||||
|
description: 昵称
|
||||||
|
type: string
|
||||||
|
port:
|
||||||
|
description: 端口
|
||||||
|
type: integer
|
||||||
|
secret:
|
||||||
|
description: 密钥
|
||||||
|
type: string
|
||||||
|
to:
|
||||||
|
description: 收件人:多个以英文逗号分隔
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
config.Excel:
|
||||||
|
properties:
|
||||||
|
dir:
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
config.JWT:
|
||||||
|
properties:
|
||||||
|
bufferTime:
|
||||||
|
description: 缓冲时间
|
||||||
|
type: integer
|
||||||
|
expiresTime:
|
||||||
|
description: 过期时间
|
||||||
|
type: integer
|
||||||
|
signingKey:
|
||||||
|
description: jwt签名
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
config.Local:
|
||||||
|
properties:
|
||||||
|
path:
|
||||||
|
description: 本地文件路径
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
config.Mysql:
|
||||||
|
properties:
|
||||||
|
config:
|
||||||
|
description: 高级配置
|
||||||
|
type: string
|
||||||
|
dbname:
|
||||||
|
description: 数据库名
|
||||||
|
type: string
|
||||||
|
logMode:
|
||||||
|
description: 是否开启Gorm全局日志
|
||||||
|
type: string
|
||||||
|
logZap:
|
||||||
|
description: 是否通过zap写入日志文件
|
||||||
|
type: boolean
|
||||||
|
maxIdleConns:
|
||||||
|
description: 空闲中的最大连接数
|
||||||
|
type: integer
|
||||||
|
maxOpenConns:
|
||||||
|
description: 打开到数据库的最大连接数
|
||||||
|
type: integer
|
||||||
|
password:
|
||||||
|
description: 数据库密码
|
||||||
|
type: string
|
||||||
|
path:
|
||||||
|
description: 服务器地址:端口
|
||||||
|
type: string
|
||||||
|
username:
|
||||||
|
description: 数据库用户名
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
config.Qiniu:
|
||||||
|
properties:
|
||||||
|
accessKey:
|
||||||
|
description: 秘钥AK
|
||||||
|
type: string
|
||||||
|
bucket:
|
||||||
|
description: 空间名称
|
||||||
|
type: string
|
||||||
|
imgPath:
|
||||||
|
description: CDN加速域名
|
||||||
|
type: string
|
||||||
|
secretKey:
|
||||||
|
description: 秘钥SK
|
||||||
|
type: string
|
||||||
|
useCdnDomains:
|
||||||
|
description: 上传是否使用CDN上传加速
|
||||||
|
type: boolean
|
||||||
|
useHttps:
|
||||||
|
description: 是否使用https
|
||||||
|
type: boolean
|
||||||
|
zone:
|
||||||
|
description: 存储区域
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
config.Redis:
|
||||||
|
properties:
|
||||||
|
addr:
|
||||||
|
description: 服务器地址:端口
|
||||||
|
type: string
|
||||||
|
db:
|
||||||
|
description: redis的哪个数据库
|
||||||
|
type: integer
|
||||||
|
password:
|
||||||
|
description: 密码
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
config.Server:
|
||||||
|
properties:
|
||||||
|
aliyunOSS:
|
||||||
|
$ref: '#/definitions/config.AliyunOSS'
|
||||||
|
autoCode:
|
||||||
|
$ref: '#/definitions/config.Autocode'
|
||||||
|
description: auto
|
||||||
|
captcha:
|
||||||
|
$ref: '#/definitions/config.Captcha'
|
||||||
|
casbin:
|
||||||
|
$ref: '#/definitions/config.Casbin'
|
||||||
|
email:
|
||||||
|
$ref: '#/definitions/config.Email'
|
||||||
|
excel:
|
||||||
|
$ref: '#/definitions/config.Excel'
|
||||||
|
jwt:
|
||||||
|
$ref: '#/definitions/config.JWT'
|
||||||
|
local:
|
||||||
|
$ref: '#/definitions/config.Local'
|
||||||
|
description: oss
|
||||||
|
mysql:
|
||||||
|
$ref: '#/definitions/config.Mysql'
|
||||||
|
description: gorm
|
||||||
|
qiniu:
|
||||||
|
$ref: '#/definitions/config.Qiniu'
|
||||||
|
redis:
|
||||||
|
$ref: '#/definitions/config.Redis'
|
||||||
|
system:
|
||||||
|
$ref: '#/definitions/config.System'
|
||||||
|
tencentCOS:
|
||||||
|
$ref: '#/definitions/config.TencentCOS'
|
||||||
|
timer:
|
||||||
|
$ref: '#/definitions/config.Timer'
|
||||||
|
zap:
|
||||||
|
$ref: '#/definitions/config.Zap'
|
||||||
|
type: object
|
||||||
|
config.System:
|
||||||
|
properties:
|
||||||
|
addr:
|
||||||
|
description: 端口值
|
||||||
|
type: integer
|
||||||
|
dbType:
|
||||||
|
description: 数据库类型:mysql(默认)|sqlite|sqlserver|postgresql
|
||||||
|
type: string
|
||||||
|
env:
|
||||||
|
description: 环境值
|
||||||
|
type: string
|
||||||
|
ossType:
|
||||||
|
description: Oss类型
|
||||||
|
type: string
|
||||||
|
useMultipoint:
|
||||||
|
description: 多点登录拦截
|
||||||
|
type: boolean
|
||||||
|
type: object
|
||||||
|
config.TencentCOS:
|
||||||
|
properties:
|
||||||
|
baseURL:
|
||||||
|
type: string
|
||||||
|
bucket:
|
||||||
|
type: string
|
||||||
|
pathPrefix:
|
||||||
|
type: string
|
||||||
|
region:
|
||||||
|
type: string
|
||||||
|
secretID:
|
||||||
|
type: string
|
||||||
|
secretKey:
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
config.Timer:
|
||||||
|
properties:
|
||||||
|
detail:
|
||||||
|
items:
|
||||||
|
$ref: '#/definitions/config.Detail'
|
||||||
|
type: array
|
||||||
|
spec:
|
||||||
|
description: CRON表达式
|
||||||
|
type: string
|
||||||
|
start:
|
||||||
|
description: 是否启用
|
||||||
|
type: boolean
|
||||||
|
type: object
|
||||||
|
config.Zap:
|
||||||
|
properties:
|
||||||
|
director:
|
||||||
|
description: 日志文件夹
|
||||||
|
type: string
|
||||||
|
encodeLevel:
|
||||||
|
description: 编码级
|
||||||
|
type: string
|
||||||
|
format:
|
||||||
|
description: 输出
|
||||||
|
type: string
|
||||||
|
level:
|
||||||
|
description: 级别
|
||||||
|
type: string
|
||||||
|
linkName:
|
||||||
|
description: 软链接名称
|
||||||
|
type: string
|
||||||
|
logInConsole:
|
||||||
|
description: 输出控制台
|
||||||
|
type: boolean
|
||||||
|
prefix:
|
||||||
|
description: 日志前缀
|
||||||
|
type: string
|
||||||
|
showLine:
|
||||||
|
description: 显示行
|
||||||
|
type: boolean
|
||||||
|
stacktraceKey:
|
||||||
|
description: 栈名
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
request.AddMenuAuthorityInfo:
|
request.AddMenuAuthorityInfo:
|
||||||
properties:
|
properties:
|
||||||
authorityId:
|
authorityId:
|
||||||
|
@ -249,6 +548,11 @@ definitions:
|
||||||
description: 用户UUID
|
description: 用户UUID
|
||||||
type: string
|
type: string
|
||||||
type: object
|
type: object
|
||||||
|
web.System:
|
||||||
|
properties:
|
||||||
|
config:
|
||||||
|
$ref: '#/definitions/config.Server'
|
||||||
|
type: object
|
||||||
info:
|
info:
|
||||||
contact: {}
|
contact: {}
|
||||||
paths:
|
paths:
|
||||||
|
@ -506,6 +810,69 @@ paths:
|
||||||
summary: 更新菜单
|
summary: 更新菜单
|
||||||
tags:
|
tags:
|
||||||
- Menu
|
- Menu
|
||||||
|
/system/getServerInfo:
|
||||||
|
post:
|
||||||
|
produces:
|
||||||
|
- application/json
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: '{"success":true,"data":{},"msg":"获取成功"}'
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
security:
|
||||||
|
- ApiKeyAuth: []
|
||||||
|
summary: 获取服务器信息
|
||||||
|
tags:
|
||||||
|
- System
|
||||||
|
/system/getSystemConfig:
|
||||||
|
post:
|
||||||
|
produces:
|
||||||
|
- application/json
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: '{"success":true,"data":{},"msg":"获取成功"}'
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
security:
|
||||||
|
- ApiKeyAuth: []
|
||||||
|
summary: 获取配置文件内容
|
||||||
|
tags:
|
||||||
|
- System
|
||||||
|
/system/reloadSystem:
|
||||||
|
post:
|
||||||
|
produces:
|
||||||
|
- application/json
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: '{"code":0,"data":{},"msg":"重启系统成功"}'
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
security:
|
||||||
|
- ApiKeyAuth: []
|
||||||
|
summary: 重启系统
|
||||||
|
tags:
|
||||||
|
- System
|
||||||
|
/system/setSystemConfig:
|
||||||
|
post:
|
||||||
|
parameters:
|
||||||
|
- description: 设置配置文件内容
|
||||||
|
in: body
|
||||||
|
name: data
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/web.System'
|
||||||
|
produces:
|
||||||
|
- application/json
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: '{"success":true,"data":{},"msg":"设置成功"}'
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
security:
|
||||||
|
- ApiKeyAuth: []
|
||||||
|
summary: 设置配置文件内容
|
||||||
|
tags:
|
||||||
|
- System
|
||||||
/user/changePassword:
|
/user/changePassword:
|
||||||
post:
|
post:
|
||||||
parameters:
|
parameters:
|
||||||
|
|
1
go.mod
1
go.mod
|
@ -18,6 +18,7 @@ require (
|
||||||
github.com/mojocn/base64Captcha v1.3.1
|
github.com/mojocn/base64Captcha v1.3.1
|
||||||
github.com/robfig/cron/v3 v3.0.1
|
github.com/robfig/cron/v3 v3.0.1
|
||||||
github.com/satori/go.uuid v1.2.0
|
github.com/satori/go.uuid v1.2.0
|
||||||
|
github.com/shirou/gopsutil v3.20.11+incompatible
|
||||||
github.com/songzhibin97/gkit v1.1.1
|
github.com/songzhibin97/gkit v1.1.1
|
||||||
github.com/spf13/viper v1.7.0
|
github.com/spf13/viper v1.7.0
|
||||||
github.com/stretchr/testify v1.7.0
|
github.com/stretchr/testify v1.7.0
|
||||||
|
|
3
go.sum
3
go.sum
|
@ -24,6 +24,7 @@ github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tN
|
||||||
github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
|
github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
|
||||||
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M=
|
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M=
|
||||||
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
|
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
|
||||||
|
github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d h1:G0m3OIz70MZUWq3EgK3CesDbo8upS2Vm9/P3FtgI+Jk=
|
||||||
github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg=
|
github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg=
|
||||||
github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c=
|
github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c=
|
||||||
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
|
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
|
||||||
|
@ -93,6 +94,7 @@ github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9
|
||||||
github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
|
github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
|
||||||
github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE=
|
github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE=
|
||||||
github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=
|
github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=
|
||||||
|
github.com/go-ole/go-ole v1.2.4 h1:nNBDSCOigTSiarFpYE9J/KtEA1IOW4CNeqT9TQDqCxI=
|
||||||
github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM=
|
github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM=
|
||||||
github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M=
|
github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M=
|
||||||
github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
|
github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
|
||||||
|
@ -376,6 +378,7 @@ github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb
|
||||||
github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww=
|
github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww=
|
||||||
github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
|
github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
|
||||||
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
|
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
|
||||||
|
github.com/shirou/gopsutil v3.20.11+incompatible h1:LJr4ZQK4mPpIV5gOa4jCOKOGb4ty4DZO54I4FGqIpto=
|
||||||
github.com/shirou/gopsutil v3.20.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
|
github.com/shirou/gopsutil v3.20.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
|
||||||
github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4=
|
github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4=
|
||||||
github.com/shopspring/decimal v0.0.0-20200227202807-02e2044944cc/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
|
github.com/shopspring/decimal v0.0.0-20200227202807-02e2044944cc/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
|
||||||
|
|
BIN
goweb-gin-demo
BIN
goweb-gin-demo
Binary file not shown.
|
@ -1 +1 @@
|
||||||
log/2021-11-01.log
|
log/2021-11-02.log
|
|
@ -38,3 +38,12 @@
|
||||||
[github.com/flipped-aurora/gin-vue-admin/server]2021/11/01 - 18:12:49.860 [34minfo[0m /Users/zero/work/mygithub/goweb-gin-demo/initialize/router.go:43 router register success
|
[github.com/flipped-aurora/gin-vue-admin/server]2021/11/01 - 18:12:49.860 [34minfo[0m /Users/zero/work/mygithub/goweb-gin-demo/initialize/router.go:43 router register success
|
||||||
[github.com/flipped-aurora/gin-vue-admin/server]2021/11/01 - 18:12:49.861 [34minfo[0m /Users/zero/work/mygithub/goweb-gin-demo/core/server.go:31 server run success on {"address": ":8888"}
|
[github.com/flipped-aurora/gin-vue-admin/server]2021/11/01 - 18:12:49.861 [34minfo[0m /Users/zero/work/mygithub/goweb-gin-demo/core/server.go:31 server run success on {"address": ":8888"}
|
||||||
[github.com/flipped-aurora/gin-vue-admin/server]2021/11/01 - 18:13:19.271 [31merror[0m /Users/zero/work/mygithub/goweb-gin-demo/core/server.go:38 accept tcp [::]:8888: use of closed network connection
|
[github.com/flipped-aurora/gin-vue-admin/server]2021/11/01 - 18:13:19.271 [31merror[0m /Users/zero/work/mygithub/goweb-gin-demo/core/server.go:38 accept tcp [::]:8888: use of closed network connection
|
||||||
|
[github.com/flipped-aurora/gin-vue-admin/server]2021/11/01 - 18:30:05.640 [34minfo[0m /Users/zero/work/mygithub/goweb-gin-demo/initialize/router.go:43 router register success
|
||||||
|
[github.com/flipped-aurora/gin-vue-admin/server]2021/11/01 - 18:30:05.644 [34minfo[0m /Users/zero/work/mygithub/goweb-gin-demo/core/server.go:31 server run success on {"address": ":8888"}
|
||||||
|
[github.com/flipped-aurora/gin-vue-admin/server]2021/11/01 - 18:30:05.644 [31merror[0m /Users/zero/work/mygithub/goweb-gin-demo/core/server.go:38 net.Listen error: listen tcp :8888: bind: address already in use
|
||||||
|
[github.com/flipped-aurora/gin-vue-admin/server]2021/11/01 - 18:30:24.169 [34minfo[0m /Users/zero/work/mygithub/goweb-gin-demo/initialize/router.go:43 router register success
|
||||||
|
[github.com/flipped-aurora/gin-vue-admin/server]2021/11/01 - 18:30:24.170 [34minfo[0m /Users/zero/work/mygithub/goweb-gin-demo/core/server.go:31 server run success on {"address": ":8888"}
|
||||||
|
[github.com/flipped-aurora/gin-vue-admin/server]2021/11/01 - 18:56:07.799 [31merror[0m /Users/zero/work/mygithub/goweb-gin-demo/core/server.go:38 accept tcp [::]:8888: use of closed network connection
|
||||||
|
[github.com/flipped-aurora/gin-vue-admin/server]2021/11/01 - 18:57:34.874 [34minfo[0m /Users/zero/work/mygithub/goweb-gin-demo/initialize/router.go:43 router register success
|
||||||
|
[github.com/flipped-aurora/gin-vue-admin/server]2021/11/01 - 18:57:34.877 [34minfo[0m /Users/zero/work/mygithub/goweb-gin-demo/core/server.go:31 server run success on {"address": ":8888"}
|
||||||
|
[github.com/flipped-aurora/gin-vue-admin/server]2021/11/01 - 18:57:55.922 [31merror[0m /Users/zero/work/mygithub/goweb-gin-demo/core/server.go:38 accept tcp [::]:8888: use of closed network connection
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
[github.com/flipped-aurora/gin-vue-admin/server]2021/11/02 - 09:23:57.317 [34minfo[0m /Users/zero/work/mygithub/goweb-gin-demo/initialize/router.go:43 router register success
|
||||||
|
[github.com/flipped-aurora/gin-vue-admin/server]2021/11/02 - 09:23:57.319 [34minfo[0m /Users/zero/work/mygithub/goweb-gin-demo/core/server.go:31 server run success on {"address": ":8888"}
|
||||||
|
[github.com/flipped-aurora/gin-vue-admin/server]2021/11/02 - 09:26:03.968 [31merror[0m /Users/zero/work/mygithub/goweb-gin-demo/core/server.go:38 accept tcp [::]:8888: use of closed network connection
|
||||||
|
[goweb-demo]2021/11/02 - 11:30:42.979 [34minfo[0m /Users/zero/work/mygithub/goweb-gin-demo/initialize/router.go:43 router register success
|
||||||
|
[goweb-demo]2021/11/02 - 11:30:42.982 [34minfo[0m /Users/zero/work/mygithub/goweb-gin-demo/core/server.go:31 server run success on {"address": ":8888"}
|
||||||
|
[goweb-demo]2021/11/02 - 11:30:44.819 [31merror[0m /Users/zero/work/mygithub/goweb-gin-demo/core/server.go:38 accept tcp [::]:8888: use of closed network connection
|
|
@ -0,0 +1,7 @@
|
||||||
|
package response
|
||||||
|
|
||||||
|
import "goweb-gin-demo/config"
|
||||||
|
|
||||||
|
type SysConfigResponse struct {
|
||||||
|
Config config.Server `json:"config"`
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
package web
|
||||||
|
|
||||||
|
import (
|
||||||
|
"goweb-gin-demo/config"
|
||||||
|
)
|
||||||
|
|
||||||
|
// 配置文件结构体
|
||||||
|
type System struct {
|
||||||
|
Config config.Server `json:"config"`
|
||||||
|
}
|
|
@ -7,6 +7,7 @@ type ServiceGroup struct {
|
||||||
OperationRecordService
|
OperationRecordService
|
||||||
MenuService
|
MenuService
|
||||||
BaseMenuService
|
BaseMenuService
|
||||||
|
SystemConfigService
|
||||||
}
|
}
|
||||||
|
|
||||||
var ServiceGroupApp = new(ServiceGroup)
|
var ServiceGroupApp = new(ServiceGroup)
|
||||||
|
|
|
@ -0,0 +1,61 @@
|
||||||
|
package service
|
||||||
|
|
||||||
|
import (
|
||||||
|
"go.uber.org/zap"
|
||||||
|
"goweb-gin-demo/config"
|
||||||
|
"goweb-gin-demo/global"
|
||||||
|
"goweb-gin-demo/model/web"
|
||||||
|
"goweb-gin-demo/utils"
|
||||||
|
)
|
||||||
|
|
||||||
|
//@author: [piexlmax](https://github.com/piexlmax)
|
||||||
|
//@function: GetSystemConfig
|
||||||
|
//@description: 读取配置文件
|
||||||
|
//@return: err error, conf config.Server
|
||||||
|
|
||||||
|
type SystemConfigService struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
func (systemConfigService *SystemConfigService) GetSystemConfig() (err error, conf config.Server) {
|
||||||
|
return nil, global.GLOBAL_CONFIG
|
||||||
|
}
|
||||||
|
|
||||||
|
// @description set system config,
|
||||||
|
//@author: [piexlmax](https://github.com/piexlmax)
|
||||||
|
//@function: SetSystemConfig
|
||||||
|
//@description: 设置配置文件
|
||||||
|
//@param: system model.System
|
||||||
|
//@return: err error
|
||||||
|
|
||||||
|
func (systemConfigService *SystemConfigService) SetSystemConfig(web web.System) (err error) {
|
||||||
|
cs := utils.StructToMap(web.Config)
|
||||||
|
for k, v := range cs {
|
||||||
|
global.GLOBAL_VP.Set(k, v)
|
||||||
|
}
|
||||||
|
err = global.GLOBAL_VP.WriteConfig()
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
//@author: [SliverHorn](https://github.com/SliverHorn)
|
||||||
|
//@function: GetServerInfo
|
||||||
|
//@description: 获取服务器信息
|
||||||
|
//@return: server *utils.Server, err error
|
||||||
|
|
||||||
|
func (systemConfigService *SystemConfigService) GetServerInfo() (server *utils.Server, err error) {
|
||||||
|
var s utils.Server
|
||||||
|
s.Os = utils.InitOS()
|
||||||
|
if s.Cpu, err = utils.InitCPU(); err != nil {
|
||||||
|
global.GLOBAL_LOG.Error("func utils.InitCPU() Failed", zap.String("err", err.Error()))
|
||||||
|
return &s, err
|
||||||
|
}
|
||||||
|
if s.Rrm, err = utils.InitRAM(); err != nil {
|
||||||
|
global.GLOBAL_LOG.Error("func utils.InitRAM() Failed", zap.String("err", err.Error()))
|
||||||
|
return &s, err
|
||||||
|
}
|
||||||
|
if s.Disk, err = utils.InitDisk(); err != nil {
|
||||||
|
global.GLOBAL_LOG.Error("func utils.InitDisk() Failed", zap.String("err", err.Error()))
|
||||||
|
return &s, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return &s, nil
|
||||||
|
}
|
|
@ -0,0 +1,38 @@
|
||||||
|
package utils
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"reflect"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
//@author: [piexlmax](https://github.com/piexlmax)
|
||||||
|
//@function: StructToMap
|
||||||
|
//@description: 利用反射将结构体转化为map
|
||||||
|
//@param: obj interface{}
|
||||||
|
//@return: map[string]interface{}
|
||||||
|
|
||||||
|
func StructToMap(obj interface{}) map[string]interface{} {
|
||||||
|
obj1 := reflect.TypeOf(obj)
|
||||||
|
obj2 := reflect.ValueOf(obj)
|
||||||
|
|
||||||
|
var data = make(map[string]interface{})
|
||||||
|
for i := 0; i < obj1.NumField(); i++ {
|
||||||
|
if obj1.Field(i).Tag.Get("mapstructure") != "" {
|
||||||
|
data[obj1.Field(i).Tag.Get("mapstructure")] = obj2.Field(i).Interface()
|
||||||
|
} else {
|
||||||
|
data[obj1.Field(i).Name] = obj2.Field(i).Interface()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return data
|
||||||
|
}
|
||||||
|
|
||||||
|
//@author: [piexlmax](https://github.com/piexlmax)
|
||||||
|
//@function: ArrayToString
|
||||||
|
//@description: 将数组格式化为字符串
|
||||||
|
//@param: array []interface{}
|
||||||
|
//@return: string
|
||||||
|
|
||||||
|
func ArrayToString(array []interface{}) string {
|
||||||
|
return strings.Replace(strings.Trim(fmt.Sprint(array), "[]"), " ", ",", -1)
|
||||||
|
}
|
|
@ -0,0 +1,18 @@
|
||||||
|
package utils
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"os"
|
||||||
|
"os/exec"
|
||||||
|
"runtime"
|
||||||
|
"strconv"
|
||||||
|
)
|
||||||
|
|
||||||
|
func Reload() error {
|
||||||
|
if runtime.GOOS == "windows" {
|
||||||
|
return errors.New("系统不支持")
|
||||||
|
}
|
||||||
|
pid := os.Getpid()
|
||||||
|
cmd := exec.Command("kill", "-1", strconv.Itoa(pid))
|
||||||
|
return cmd.Run()
|
||||||
|
}
|
|
@ -0,0 +1,117 @@
|
||||||
|
package utils
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/shirou/gopsutil/cpu"
|
||||||
|
"github.com/shirou/gopsutil/disk"
|
||||||
|
"github.com/shirou/gopsutil/mem"
|
||||||
|
"runtime"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
B = 1
|
||||||
|
KB = 1024 * B
|
||||||
|
MB = 1024 * KB
|
||||||
|
GB = 1024 * MB
|
||||||
|
)
|
||||||
|
|
||||||
|
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"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type Disk struct {
|
||||||
|
UsedMB int `json:"usedMb"`
|
||||||
|
UsedGB int `json:"usedGb"`
|
||||||
|
TotalMB int `json:"totalMb"`
|
||||||
|
TotalGB int `json:"totalGb"`
|
||||||
|
UsedPercent int `json:"usedPercent"`
|
||||||
|
}
|
||||||
|
|
||||||
|
//@author: [SliverHorn](https://github.com/SliverHorn)
|
||||||
|
//@function: InitCPU
|
||||||
|
//@description: OS信息
|
||||||
|
//@return: o Os, err error
|
||||||
|
|
||||||
|
func InitOS() (o Os) {
|
||||||
|
o.GOOS = runtime.GOOS
|
||||||
|
o.NumCPU = runtime.NumCPU()
|
||||||
|
o.Compiler = runtime.Compiler
|
||||||
|
o.GoVersion = runtime.Version()
|
||||||
|
o.NumGoroutine = runtime.NumGoroutine()
|
||||||
|
return o
|
||||||
|
}
|
||||||
|
|
||||||
|
//@author: [SliverHorn](https://github.com/SliverHorn)
|
||||||
|
//@function: InitCPU
|
||||||
|
//@description: CPU信息
|
||||||
|
//@return: c Cpu, err error
|
||||||
|
|
||||||
|
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
|
||||||
|
}
|
||||||
|
|
||||||
|
//@author: [SliverHorn](https://github.com/SliverHorn)
|
||||||
|
//@function: InitRAM
|
||||||
|
//@description: ARM信息
|
||||||
|
//@return: r Rrm, err error
|
||||||
|
|
||||||
|
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
|
||||||
|
}
|
||||||
|
|
||||||
|
//@author: [SliverHorn](https://github.com/SliverHorn)
|
||||||
|
//@function: InitDisk
|
||||||
|
//@description: 硬盘信息
|
||||||
|
//@return: d Disk, err error
|
||||||
|
|
||||||
|
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)
|
||||||
|
}
|
||||||
|
return d, nil
|
||||||
|
}
|
Loading…
Reference in New Issue