Selaa lähdekoodia

Merge branch 'gva_gormv2_dev' of https://github.com/flipped-aurora/gin-vue-admin into gva_gormv2_dev

蒋吉兆 3 vuotta sitten
vanhempi
commit
23eaba8105
100 muutettua tiedostoa jossa 1212 lisäystä ja 1321 poistoa
  1. 5 4
      README.md
  2. 1 1
      dockerfile_server
  3. 44 0
      server/README.md
  4. 2 2
      server/api/v1/exa_breakpoint_continue.go
  5. 1 1
      server/api/v1/exa_simple_uploader.go
  6. 21 1
      server/api/v1/sys_api.go
  7. 0 1
      server/api/v1/sys_casbin.go
  8. 5 4
      server/api/v1/sys_menu.go
  9. 4 3
      server/api/v1/sys_user.go
  10. 14 1
      server/config.yaml
  11. 3 3
      server/config/captcha.go
  12. 1 1
      server/config/casbin.go
  13. 1 0
      server/config/config.go
  14. 7 7
      server/config/email.go
  15. 1 1
      server/config/excel.go
  16. 5 5
      server/config/gorm.go
  17. 3 3
      server/config/jwt.go
  18. 8 8
      server/config/oss.go
  19. 3 3
      server/config/redis.go
  20. 5 5
      server/config/system.go
  21. 13 0
      server/config/timer.go
  22. 9 9
      server/config/zap.go
  23. 1 1
      server/core/server.go
  24. 1 1
      server/core/server_other.go
  25. 1 1
      server/core/server_win.go
  26. 217 458
      server/docs/docs.go
  27. 225 457
      server/docs/swagger.json
  28. 263 216
      server/docs/swagger.yaml
  29. 5 1
      server/global/global.go
  30. 4 4
      server/global/model.go
  31. 5 8
      server/go.mod
  32. 1 1
      server/initialize/redis.go
  33. 24 0
      server/initialize/timer.go
  34. 1 0
      server/main.go
  35. 5 5
      server/model/exa_customer.go
  36. 1 1
      server/model/exa_excel.go
  37. 4 4
      server/model/exa_file_upload_download.go
  38. 4 4
      server/model/request/common.go
  39. 2 2
      server/model/request/sys_api.go
  40. 3 3
      server/model/request/sys_casbin.go
  41. 4 4
      server/model/request/sys_dictionary.go
  42. 4 4
      server/model/request/sys_dictionary_detail.go
  43. 5 5
      server/model/request/sys_init.go
  44. 1 1
      server/model/request/sys_menu.go
  45. 9 9
      server/model/request/sys_user.go
  46. 4 4
      server/model/sys_api.go
  47. 4 4
      server/model/sys_authority.go
  48. 18 18
      server/model/sys_auto_code.go
  49. 16 16
      server/model/sys_base_menu.go
  50. 1 1
      server/model/sys_casbin.go
  51. 4 4
      server/model/sys_dictionary.go
  52. 5 5
      server/model/sys_dictionary_detail.go
  53. 10 10
      server/model/sys_operation_record.go
  54. 6 6
      server/model/sys_user.go
  55. 0 0
      server/resource/page/css/index.d8b172cd.css
  56. 0 0
      server/resource/page/css/index.f05c41c6.css
  57. 1 0
      server/resource/page/css/parser-example.69e16e51.css
  58. BIN
      server/resource/page/img/logo.e1bc3747.png
  59. 0 0
      server/resource/page/index.html
  60. 0 0
      server/resource/page/js/chunk-vendors.788511b0.js
  61. 0 0
      server/resource/page/js/chunk-vendors.9ae0d8fb.js
  62. 0 0
      server/resource/page/js/index.94d8e405.js
  63. 0 0
      server/resource/page/js/index.b3720c41.js
  64. 0 0
      server/resource/page/js/parser-example.c1051310.js
  65. 0 0
      server/resource/page/js/preview.7fecf17e.js
  66. 0 0
      server/resource/page/js/preview.d8d06dfd.js
  67. 1 0
      server/resource/page/js/tinymce-example.5a756246.js
  68. BIN
      server/resource/page/libs/monaco-editor/vs/base/browser/ui/codicons/codicon/codicon.ttf
  69. 5 0
      server/resource/page/libs/monaco-editor/vs/base/worker/workerMain.js
  70. 6 0
      server/resource/page/libs/monaco-editor/vs/basic-languages/abap/abap.js
  71. 6 0
      server/resource/page/libs/monaco-editor/vs/basic-languages/apex/apex.js
  72. 7 0
      server/resource/page/libs/monaco-editor/vs/basic-languages/azcli/azcli.js
  73. 7 0
      server/resource/page/libs/monaco-editor/vs/basic-languages/bat/bat.js
  74. 6 0
      server/resource/page/libs/monaco-editor/vs/basic-languages/cameligo/cameligo.js
  75. 6 0
      server/resource/page/libs/monaco-editor/vs/basic-languages/clojure/clojure.js
  76. 6 0
      server/resource/page/libs/monaco-editor/vs/basic-languages/coffee/coffee.js
  77. 6 0
      server/resource/page/libs/monaco-editor/vs/basic-languages/cpp/cpp.js
  78. 6 0
      server/resource/page/libs/monaco-editor/vs/basic-languages/csharp/csharp.js
  79. 7 0
      server/resource/page/libs/monaco-editor/vs/basic-languages/csp/csp.js
  80. 6 0
      server/resource/page/libs/monaco-editor/vs/basic-languages/css/css.js
  81. 6 0
      server/resource/page/libs/monaco-editor/vs/basic-languages/dart/dart.js
  82. 7 0
      server/resource/page/libs/monaco-editor/vs/basic-languages/dockerfile/dockerfile.js
  83. 6 0
      server/resource/page/libs/monaco-editor/vs/basic-languages/ecl/ecl.js
  84. 6 0
      server/resource/page/libs/monaco-editor/vs/basic-languages/fsharp/fsharp.js
  85. 6 0
      server/resource/page/libs/monaco-editor/vs/basic-languages/go/go.js
  86. 6 0
      server/resource/page/libs/monaco-editor/vs/basic-languages/graphql/graphql.js
  87. 6 0
      server/resource/page/libs/monaco-editor/vs/basic-languages/handlebars/handlebars.js
  88. 6 0
      server/resource/page/libs/monaco-editor/vs/basic-languages/hcl/hcl.js
  89. 6 0
      server/resource/page/libs/monaco-editor/vs/basic-languages/html/html.js
  90. 7 0
      server/resource/page/libs/monaco-editor/vs/basic-languages/ini/ini.js
  91. 6 0
      server/resource/page/libs/monaco-editor/vs/basic-languages/java/java.js
  92. 6 0
      server/resource/page/libs/monaco-editor/vs/basic-languages/javascript/javascript.js
  93. 6 0
      server/resource/page/libs/monaco-editor/vs/basic-languages/julia/julia.js
  94. 6 0
      server/resource/page/libs/monaco-editor/vs/basic-languages/kotlin/kotlin.js
  95. 6 0
      server/resource/page/libs/monaco-editor/vs/basic-languages/less/less.js
  96. 6 0
      server/resource/page/libs/monaco-editor/vs/basic-languages/lexon/lexon.js
  97. 6 0
      server/resource/page/libs/monaco-editor/vs/basic-languages/lua/lua.js
  98. 6 0
      server/resource/page/libs/monaco-editor/vs/basic-languages/m3/m3.js
  99. 6 0
      server/resource/page/libs/monaco-editor/vs/basic-languages/markdown/markdown.js
  100. 6 0
      server/resource/page/libs/monaco-editor/vs/basic-languages/mips/mips.js

+ 5 - 4
README.md

@@ -141,6 +141,7 @@ Gin-vue-admin 的成长离不开大家的支持,如果你愿意为 gin-vue-adm
 
 > <font color=red>**使用docker-compose进行部署本项目需注意的问题**</font>
 
+- dockerfile_server使用了多阶段构建,这是docker 17.05后引入的,因此安装的docker版本需要高于17.05
 - mysql数据库请使用装在服务器磁盘的本地数据库.
 	- 避免使用docker容器内的mysql,可能会出现写入的问题, io比宿主机低  docker的持久化机制问题
 - [init.sql](.docker-compose/docker-entrypoint-initdb.d/init.sql)是给docker-compose进行<font color=red>体验本项目</font>的, 禁止[init.sql](.docker-compose/docker-entrypoint-initdb.d/init.sql)使用进行项目数据的初始化, 数据库初始化[请使用此方法](https://www.gin-vue-admin.com/docs/help#step1%EF%BC%9A%E6%95%B0%E6%8D%AE%E5%BA%93%E5%88%9D%E5%A7%8B%E5%8C%96)
@@ -165,7 +166,7 @@ npm run serve
 
 ### 2.2 server端
 
-使用 goland等编辑工具,打开server目录,不可以打开 gin-vue-admin目录
+使用 goland等编辑工具,打开server目录,不可以打开 gin-vue-admin目录
 
 ```bash
 # 使用 go.mod
@@ -222,12 +223,12 @@ zap:
 
 #### 2.3.1 安装 swagger
 
-##### (1)可以翻墙
+##### (1)可以科学上网
 ````
 go get -u github.com/swaggo/swag/cmd/swag
 ````
 
-##### (2)无法翻墙
+##### (2)无法科学上网
 
 由于国内没法安装 go.org/x 包下面的东西,推荐使用 [goproxy.io](https://goproxy.io/zh/)
 
@@ -248,7 +249,7 @@ go get -u github.com/swaggo/swag/cmd/swag
 cd server
 swag init
 ````
-执行上面的命令后,server目录下会出现docs文件夹,登录http://localhost:8888/swagger/index.html,即可查看swagger文档
+执行上面的命令后,server目录下会出现docs文件夹,登录 http://localhost:8888/swagger/index.html ,即可查看swagger文档
 
 
 ## 3. 技术选型

+ 1 - 1
dockerfile_server

@@ -12,7 +12,7 @@ RUN sh ./server-handle.sh
 RUN rm -f server-handle.sh
 RUN cat ./config.yaml
 
-RUN go env && go build -o server .
+RUN go env && go mod tidy && go build -o server .
 
 FROM alpine:latest
 LABEL MAINTAINER="SliverHorn@[email protected]"

+ 44 - 0
server/README.md

@@ -0,0 +1,44 @@
+
+整理代码结构
+``` lua
+web
+├── api/v1 -- 主要API
+|   ├── sys_initdb.go -- ico
+|   └── sys_user.go --  
+├── config -- 配置文件 设定操作的结构体
+|   ├── auto_code.go -- ico captcha.go
+|   ├── ... -- ico captcha.go
+|   └── zap.go -- core
+├── core -- 主要结构代码
+|   ├── server_other.go -- ico captcha.go
+|   ├── ... -- ico captcha.go
+|   └── zap.go -- 
+├── docs -- 文档系统
+|   ├── docs.go -- ico captcha.go
+|   ├── swagger.json -- json
+|   └── swagger.yaml -- yaml  
+├── global -- global
+├── initialize -- initialize 
+├── middleware -- 中间键
+├── model -- global
+│   ├── request  -- 所有请求model结构体
+|   |   ├── common.go 
+|   |   ├── ...
+|   |   └── sys_user.go -- yaml  
+|   ├── response  -- 返回数据
+|   |   ├── common.go 
+|   |   ├── ...
+|   |   └── sys_user.go -- yaml  
+├── packfile -- 文件写入
+├── resource -- 资源文件
+├── router -- 路由
+├── service -- service层
+├── source -- 文件目录操作 
+├── utils
+├── config.yaml  -- 
+├── Dockerfile  -- docker配置
+├── go.mod    -- mod 配置
+├── go.sum -- sum
+├── latest_log  -- vue-cli 配置
+└── main.go  -- package.json
+```

+ 2 - 2
server/api/v1/exa_breakpoint_continue.go

@@ -82,7 +82,7 @@ func FindFile(c *gin.Context) {
 		global.GVA_LOG.Error("查找失败!", zap.Any("err", err))
 		response.FailWithMessage("查找失败", c)
 	} else {
-		response.OkWithDetailed(response.FileResponse{File: file},"查找成功", c)
+		response.OkWithDetailed(response.FileResponse{File: file}, "查找成功", c)
 	}
 }
 
@@ -122,7 +122,7 @@ func RemoveChunk(c *gin.Context) {
 	err = service.DeleteFileChunk(fileMd5, fileName, filePath)
 	if err != nil {
 		global.GVA_LOG.Error("缓存切片删除失败!", zap.Any("err", err))
-		response.FailWithDetailed(response.FilePathResponse{FilePath: filePath},"缓存切片删除失败", c)
+		response.FailWithDetailed(response.FilePathResponse{FilePath: filePath}, "缓存切片删除失败", c)
 	} else {
 		response.OkWithDetailed(response.FilePathResponse{FilePath: filePath}, "缓存切片删除成功", c)
 	}

+ 1 - 1
server/api/v1/exa_simple_uploader.go

@@ -69,7 +69,7 @@ func CheckFileMd5(c *gin.Context) {
 		response.OkWithDetailed(gin.H{
 			"chunks": chunks,
 			"isDone": isDone,
-		},"查询成功", c)
+		}, "查询成功", c)
 	}
 }
 

+ 21 - 1
server/api/v1/sys_api.go

@@ -7,6 +7,7 @@ import (
 	"gin-vue-admin/model/response"
 	"gin-vue-admin/service"
 	"gin-vue-admin/utils"
+
 	"github.com/gin-gonic/gin"
 	"go.uber.org/zap"
 )
@@ -100,7 +101,7 @@ func GetApiById(c *gin.Context) {
 		response.FailWithMessage(err.Error(), c)
 		return
 	}
-	err, api := service.GetApiById(idInfo.Id)
+	err, api := service.GetApiById(idInfo.ID)
 	if err != nil {
 		global.GVA_LOG.Error("获取失败!", zap.Any("err", err))
 		response.FailWithMessage("获取失败", c)
@@ -147,3 +148,22 @@ func GetAllApis(c *gin.Context) {
 		response.OkWithDetailed(response.SysAPIListResponse{Apis: apis}, "获取成功", c)
 	}
 }
+
+// @Tags SysApi
+// @Summary 删除选中Api
+// @Security ApiKeyAuth
+// @accept application/json
+// @Produce application/json
+// @Param data body request.IdsReq true "ID"
+// @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}"
+// @Router /api/deleteApisByIds [delete]
+func DeleteApisByIds(c *gin.Context) {
+	var ids request.IdsReq
+	_ = c.ShouldBindJSON(&ids)
+	if err := service.DeleteApisByIds(ids); err != nil {
+		global.GVA_LOG.Error("删除失败!", zap.Any("err", err))
+		response.FailWithMessage("删除失败", c)
+	} else {
+		response.OkWithMessage("删除成功", c)
+	}
+}

+ 0 - 1
server/api/v1/sys_casbin.go

@@ -51,4 +51,3 @@ func GetPolicyPathByAuthorityId(c *gin.Context) {
 	paths := service.GetPolicyPathByAuthorityId(casbin.AuthorityId)
 	response.OkWithDetailed(response.PolicyPathResponse{Paths: paths}, "获取成功", c)
 }
-

+ 5 - 4
server/api/v1/sys_menu.go

@@ -7,6 +7,7 @@ import (
 	"gin-vue-admin/model/response"
 	"gin-vue-admin/service"
 	"gin-vue-admin/utils"
+
 	"github.com/gin-gonic/gin"
 	"go.uber.org/zap"
 )
@@ -132,7 +133,7 @@ func DeleteBaseMenu(c *gin.Context) {
 		response.FailWithMessage(err.Error(), c)
 		return
 	}
-	if err := service.DeleteBaseMenu(menu.Id); err != nil {
+	if err := service.DeleteBaseMenu(menu.ID); err != nil {
 		global.GVA_LOG.Error("删除失败!", zap.Any("err", err))
 		response.FailWithMessage("删除失败", c)
 	} else {
@@ -182,7 +183,7 @@ func GetBaseMenuById(c *gin.Context) {
 		response.FailWithMessage(err.Error(), c)
 		return
 	}
-	if err, menu := service.GetBaseMenuById(idInfo.Id); err != nil {
+	if err, menu := service.GetBaseMenuById(idInfo.ID); err != nil {
 		global.GVA_LOG.Error("获取失败!", zap.Any("err", err))
 		response.FailWithMessage("获取失败", c)
 	} else {
@@ -214,6 +215,6 @@ func GetMenuList(c *gin.Context) {
 			Total:    total,
 			Page:     pageInfo.Page,
 			PageSize: pageInfo.PageSize,
-		},"获取成功", c)
+		}, "获取成功", c)
 	}
-}
+}

+ 4 - 3
server/api/v1/sys_user.go

@@ -8,11 +8,12 @@ import (
 	"gin-vue-admin/model/response"
 	"gin-vue-admin/service"
 	"gin-vue-admin/utils"
+	"time"
+
 	"github.com/dgrijalva/jwt-go"
 	"github.com/gin-gonic/gin"
 	"github.com/go-redis/redis"
 	"go.uber.org/zap"
-	"time"
 )
 
 // @Tags Base
@@ -217,11 +218,11 @@ func DeleteUser(c *gin.Context) {
 		return
 	}
 	jwtId := getUserID(c)
-	if jwtId == uint(reqId.Id) {
+	if jwtId == uint(reqId.ID) {
 		response.FailWithMessage("删除失败, 自杀失败", c)
 		return
 	}
-	if err := service.DeleteUser(reqId.Id); err != nil {
+	if err := service.DeleteUser(reqId.ID); err != nil {
 		global.GVA_LOG.Error("删除失败!", zap.Any("err", err))
 		response.FailWithMessage("删除失败", c)
 	} else {

+ 14 - 1
server/config.yaml

@@ -114,4 +114,17 @@ tencent-cos:
 
 # excel configuration
 excel:
-  dir: './resource/excel/'
+  dir: './resource/excel/'
+
+
+# timer task db clear table
+Timer:
+  spec: "@daily"  # 定时任务详细配置参考 https://pkg.go.dev/github.com/robfig/cron?utm_source=godoc
+  detail: [
+    # tableName: 需要清理的表名
+    # compareField: 需要比较时间的字段
+    # interval: 时间间隔, 具体配置详看 time.ParseDuration() 中字符串表示 且不能为负数
+    # 2160h = 24 * 30 * 3 -> 三个月
+    { tableName: "sys_operation_records" , compareField: "created_at", interval: "2160h" },
+    #{ tableName: "log2" , compareField: "created_at", interval: "2160h" }
+  ]

+ 3 - 3
server/config/captcha.go

@@ -1,7 +1,7 @@
 package config
 
 type Captcha struct {
-	KeyLong   int `mapstructure:"key-long" json:"keyLong" yaml:"key-long"`
-	ImgWidth  int `mapstructure:"img-width" json:"imgWidth" yaml:"img-width"`
-	ImgHeight int `mapstructure:"img-height" json:"imgHeight" yaml:"img-height"`
+	KeyLong   int `mapstructure:"key-long" json:"keyLong" yaml:"key-long"`       // 验证码长度
+	ImgWidth  int `mapstructure:"img-width" json:"imgWidth" yaml:"img-width"`    // 图片宽度
+	ImgHeight int `mapstructure:"img-height" json:"imgHeight" yaml:"img-height"` // 图片高度
 }

+ 1 - 1
server/config/casbin.go

@@ -1,5 +1,5 @@
 package config
 
 type Casbin struct {
-	ModelPath string `mapstructure:"model-path" json:"modelPath" yaml:"model-path"`
+	ModelPath string `mapstructure:"model-path" json:"modelPath" yaml:"model-path"` // Model路径
 }

+ 1 - 0
server/config/config.go

@@ -18,4 +18,5 @@ type Server struct {
 	AliyunOSS  AliyunOSS  `mapstructure:"aliyun-oss" json:"aliyunOSS" yaml:"aliyun-oss"`
 	TencentCOS TencentCOS `mapstructure:"tencent-cos" json:"tencentCOS" yaml:"tencent-cos"`
 	Excel      Excel      `mapstructure:"excel" json:"excel" yaml:"excel"`
+	Timer      Timer      `mapstructure:"timer" json:"timer" yaml:"timer"`
 }

+ 7 - 7
server/config/email.go

@@ -1,11 +1,11 @@
 package config
 
 type Email struct {
-	To       string `mapstructure:"to" json:"to" yaml:"to"`
-	Port     int    `mapstructure:"port" json:"port" yaml:"port"`
-	From     string `mapstructure:"from" json:"from" yaml:"from"`
-	Host     string `mapstructure:"host" json:"host" yaml:"host"`
-	IsSSL    bool   `mapstructure:"is-ssl" json:"isSSL" yaml:"is-ssl"`
-	Secret   string `mapstructure:"secret" json:"secret" yaml:"secret"`
-	Nickname string `mapstructure:"nickname" json:"nickname" yaml:"nickname"`
+	To       string `mapstructure:"to" json:"to" yaml:"to"`                   // 收件人
+	Port     int    `mapstructure:"port" json:"port" yaml:"port"`             // 端口
+	From     string `mapstructure:"from" json:"from" yaml:"from"`             // 收件人
+	Host     string `mapstructure:"host" json:"host" yaml:"host"`             // 服务器地址
+	IsSSL    bool   `mapstructure:"is-ssl" json:"isSSL" yaml:"is-ssl"`        // 是否SSL
+	Secret   string `mapstructure:"secret" json:"secret" yaml:"secret"`       // 密钥
+	Nickname string `mapstructure:"nickname" json:"nickname" yaml:"nickname"` // 昵称
 }

+ 1 - 1
server/config/excel.go

@@ -2,4 +2,4 @@ package config
 
 type Excel struct {
 	Dir string `mapstructure:"dir" json:"dir" yaml:"dir"`
-}
+}

+ 5 - 5
server/config/gorm.go

@@ -1,11 +1,11 @@
 package config
 
 type Mysql struct {
-	Path         string `mapstructure:"path" json:"path" yaml:"path"`
+	Path         string `mapstructure:"path" json:"path" yaml:"path"` // 服务器地址:端口
 	Config       string `mapstructure:"config" json:"config" yaml:"config"`
-	Dbname       string `mapstructure:"db-name" json:"dbname" yaml:"db-name"`
-	Username     string `mapstructure:"username" json:"username" yaml:"username"`
-	Password     string `mapstructure:"password" json:"password" yaml:"password"`
+	Dbname       string `mapstructure:"db-name" json:"dbname" yaml:"db-name"`     // 数据库名
+	Username     string `mapstructure:"username" json:"username" yaml:"username"` // 数据库用户名
+	Password     string `mapstructure:"password" json:"password" yaml:"password"` // 数据库密码
 	MaxIdleConns int    `mapstructure:"max-idle-conns" json:"maxIdleConns" yaml:"max-idle-conns"`
 	MaxOpenConns int    `mapstructure:"max-open-conns" json:"maxOpenConns" yaml:"max-open-conns"`
 	LogMode      bool   `mapstructure:"log-mode" json:"logMode" yaml:"log-mode"`
@@ -14,4 +14,4 @@ type Mysql struct {
 
 func (m *Mysql) Dsn() string {
 	return m.Username + ":" + m.Password + "@tcp(" + m.Path + ")/" + m.Dbname + "?" + m.Config
-}
+}

+ 3 - 3
server/config/jwt.go

@@ -1,7 +1,7 @@
 package config
 
 type JWT struct {
-	SigningKey  string `mapstructure:"signing-key" json:"signingKey" yaml:"signing-key"`
-	ExpiresTime int64  `mapstructure:"expires-time" json:"expiresTime" yaml:"expires-time"`
-	BufferTime  int64  `mapstructure:"buffer-time" json:"bufferTime" yaml:"buffer-time"`
+	SigningKey  string `mapstructure:"signing-key" json:"signingKey" yaml:"signing-key"`    // jwt签名
+	ExpiresTime int64  `mapstructure:"expires-time" json:"expiresTime" yaml:"expires-time"` // 过期时间
+	BufferTime  int64  `mapstructure:"buffer-time" json:"bufferTime" yaml:"buffer-time"`    // 缓冲时间
 }

+ 8 - 8
server/config/oss.go

@@ -1,17 +1,17 @@
 package config
 
 type Local struct {
-	Path string `mapstructure:"path" json:"path" yaml:"path" `
+	Path string `mapstructure:"path" json:"path" yaml:"path"` // 本地文件路径
 }
 
 type Qiniu struct {
-	Zone          string `mapstructure:"zone" json:"zone" yaml:"zone"`
-	Bucket        string `mapstructure:"bucket" json:"bucket" yaml:"bucket"`
-	ImgPath       string `mapstructure:"img-path" json:"imgPath" yaml:"img-path"`
-	UseHTTPS      bool   `mapstructure:"use-https" json:"useHttps" yaml:"use-https"`
-	AccessKey     string `mapstructure:"access-key" json:"accessKey" yaml:"access-key"`
-	SecretKey     string `mapstructure:"secret-key" json:"secretKey" yaml:"secret-key"`
-	UseCdnDomains bool   `mapstructure:"use-cdn-domains" json:"useCdnDomains" yaml:"use-cdn-domains"`
+	Zone          string `mapstructure:"zone" json:"zone" yaml:"zone"`                                // 存储区域
+	Bucket        string `mapstructure:"bucket" json:"bucket" yaml:"bucket"`                          // 空间名称
+	ImgPath       string `mapstructure:"img-path" json:"imgPath" yaml:"img-path"`                     // CDN加速域名
+	UseHTTPS      bool   `mapstructure:"use-https" json:"useHttps" yaml:"use-https"`                  // 是否使用https
+	AccessKey     string `mapstructure:"access-key" json:"accessKey" yaml:"access-key"`               // accessKey
+	SecretKey     string `mapstructure:"secret-key" json:"secretKey" yaml:"secret-key"`               // secretKey
+	UseCdnDomains bool   `mapstructure:"use-cdn-domains" json:"useCdnDomains" yaml:"use-cdn-domains"` // 上传是否使用CDN上传加速
 }
 
 type AliyunOSS struct {

+ 3 - 3
server/config/redis.go

@@ -2,6 +2,6 @@ package config
 
 type Redis struct {
 	DB       int    `mapstructure:"db" json:"db" yaml:"db"`
-	Addr     string `mapstructure:"addr" json:"addr" yaml:"addr"`
-	Password string `mapstructure:"password" json:"password" yaml:"password"`
-}
+	Addr     string `mapstructure:"addr" json:"addr" yaml:"addr"`             // 服务器地址:端口
+	Password string `mapstructure:"password" json:"password" yaml:"password"` // 密码
+}

+ 5 - 5
server/config/system.go

@@ -1,9 +1,9 @@
 package config
 
 type System struct {
-	Env           string `mapstructure:"env" json:"env" yaml:"env"`
-	Addr          int    `mapstructure:"addr" json:"addr" yaml:"addr"`
-	DbType        string `mapstructure:"db-type" json:"dbType" yaml:"db-type"`
-	OssType       string `mapstructure:"oss-type" json:"ossType" yaml:"oss-type"`
-	UseMultipoint bool   `mapstructure:"use-multipoint" json:"useMultipoint" yaml:"use-multipoint"`
+	Env           string `mapstructure:"env" json:"env" yaml:"env"`                                 // 环境值
+	Addr          int    `mapstructure:"addr" json:"addr" yaml:"addr"`                              // 端口值
+	DbType        string `mapstructure:"db-type" json:"dbType" yaml:"db-type"`                      // 数据库类型:mysql(默认)|sqlite|sqlserver|postgresql
+	OssType       string `mapstructure:"oss-type" json:"ossType" yaml:"oss-type"`                   // Oss类型
+	UseMultipoint bool   `mapstructure:"use-multipoint" json:"useMultipoint" yaml:"use-multipoint"` // 多点登录拦截
 }

+ 13 - 0
server/config/timer.go

@@ -0,0 +1,13 @@
+package config
+
+type Timer struct {
+	Start  bool     `mapstructure:"start" json:"start" yaml:"start"`
+	Spec   string   `mapstructure:"spec" json:"spec" yaml:"spec"`
+	Detail []Detail `mapstructure:"detail" json:"detail" yaml:"detail"`
+}
+
+type Detail struct {
+	TableName    string `mapstructure:"tableName" json:"tableName" yaml:"tableName"`
+	CompareField string `mapstructure:"compareField" json:"compareField" yaml:"compareField"`
+	Interval     string `mapstructure:"interval" json:"interval" yaml:"interval"`
+}

+ 9 - 9
server/config/zap.go

@@ -1,13 +1,13 @@
 package config
 
 type Zap struct {
-	Level         string `mapstructure:"level" json:"level" yaml:"level"`
-	Format        string `mapstructure:"format" json:"format" yaml:"format"`
-	Prefix        string `mapstructure:"prefix" json:"prefix" yaml:"prefix"`
-	Director      string `mapstructure:"director" json:"director"  yaml:"director"`
-	LinkName      string `mapstructure:"link-name" json:"linkName" yaml:"link-name"`
-	ShowLine      bool   `mapstructure:"show-line" json:"showLine" yaml:"showLine"`
-	EncodeLevel   string `mapstructure:"encode-level" json:"encodeLevel" yaml:"encode-level"`
-	StacktraceKey string `mapstructure:"stacktrace-key" json:"stacktraceKey" yaml:"stacktrace-key"`
-	LogInConsole  bool   `mapstructure:"log-in-console" json:"logInConsole" yaml:"log-in-console"`
+	Level         string `mapstructure:"level" json:"level" yaml:"level"`                           // 级别
+	Format        string `mapstructure:"format" json:"format" yaml:"format"`                        // 输出
+	Prefix        string `mapstructure:"prefix" json:"prefix" yaml:"prefix"`                        // 日志前缀
+	Director      string `mapstructure:"director" json:"director"  yaml:"director"`                 // 日志文件夹
+	LinkName      string `mapstructure:"link-name" json:"linkName" yaml:"link-name"`                // 软链接名称
+	ShowLine      bool   `mapstructure:"show-line" json:"showLine" yaml:"showLine"`                 // 显示行
+	EncodeLevel   string `mapstructure:"encode-level" json:"encodeLevel" yaml:"encode-level"`       // 编码级
+	StacktraceKey string `mapstructure:"stacktrace-key" json:"stacktraceKey" yaml:"stacktrace-key"` // 栈名
+	LogInConsole  bool   `mapstructure:"log-in-console" json:"logInConsole" yaml:"log-in-console"`  // 输出控制台
 }

+ 1 - 1
server/core/server.go

@@ -29,7 +29,7 @@ func RunWindowsServer() {
 
 	fmt.Printf(`
 	欢迎使用 Gin-Vue-Admin
-	当前版本:V2.4.0
+	当前版本:V2.4.1
     加群方式:微信号:shouzi_1994 QQ群:622360840
 	默认自动化文档地址:http://127.0.0.1%s/swagger/index.html
 	默认前端文件运行地址:http://127.0.0.1:8080

+ 1 - 1
server/core/server_other.go

@@ -14,4 +14,4 @@ func initServer(address string, router *gin.Engine) server {
 	s.WriteTimeout = 10 * time.Second
 	s.MaxHeaderBytes = 1 << 20
 	return s
-}
+}

+ 1 - 1
server/core/server_win.go

@@ -16,4 +16,4 @@ func initServer(address string, router *gin.Engine) server {
 		WriteTimeout:   10 * time.Second,
 		MaxHeaderBytes: 1 << 20,
 	}
-}
+}

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 217 - 458
server/docs/docs.go


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 225 - 457
server/docs/swagger.json


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 263 - 216
server/docs/swagger.yaml


+ 5 - 1
server/global/global.go

@@ -1,9 +1,12 @@
 package global
 
 import (
+	"gin-vue-admin/utils/timer"
+
 	"go.uber.org/zap"
 
 	"gin-vue-admin/config"
+
 	"github.com/go-redis/redis"
 	"github.com/spf13/viper"
 	"gorm.io/gorm"
@@ -15,5 +18,6 @@ var (
 	GVA_CONFIG config.Server
 	GVA_VP     *viper.Viper
 	//GVA_LOG    *oplogging.Logger
-	GVA_LOG    *zap.Logger
+	GVA_LOG   *zap.Logger
+	GVA_Timer timer.Timer = timer.NewTimerTask()
 )

+ 4 - 4
server/global/model.go

@@ -6,8 +6,8 @@ import (
 )
 
 type GVA_MODEL struct {
-	ID        uint `gorm:"primarykey"`
-	CreatedAt time.Time
-	UpdatedAt time.Time
-	DeletedAt gorm.DeletedAt `gorm:"index" json:"-"`
+	ID        uint           `gorm:"primarykey"` // 主键ID
+	CreatedAt time.Time      // 创建时间
+	UpdatedAt time.Time      // 更新时间
+	DeletedAt gorm.DeletedAt `gorm:"index" json:"-"` // 删除时间
 }

+ 5 - 8
server/go.mod

@@ -8,7 +8,6 @@ require (
 	github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751
 	github.com/aliyun/aliyun-oss-go-sdk v2.1.6+incompatible
 	github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f // indirect
-	github.com/casbin/casbin v1.9.1
 	github.com/casbin/casbin/v2 v2.11.0
 	github.com/casbin/gorm-adapter/v3 v3.0.2
 	github.com/dgrijalva/jwt-go v3.2.0+incompatible
@@ -30,7 +29,6 @@ require (
 	github.com/lestrrat-go/file-rotatelogs v2.3.0+incompatible
 	github.com/lestrrat-go/strftime v1.0.3 // indirect
 	github.com/mailru/easyjson v0.7.1 // indirect
-	github.com/mitchellh/go-homedir v1.1.0
 	github.com/mitchellh/mapstructure v1.2.2 // indirect
 	github.com/mojocn/base64Captcha v1.3.1
 	github.com/onsi/ginkgo v1.7.0 // indirect
@@ -38,12 +36,13 @@ require (
 	github.com/pelletier/go-toml v1.6.0 // indirect
 	github.com/pkg/errors v0.9.1 // indirect
 	github.com/qiniu/api.v7/v7 v7.4.1
+	github.com/robfig/cron/v3 v3.0.1
 	github.com/satori/go.uuid v1.2.0
 	github.com/shirou/gopsutil v3.21.1+incompatible
 	github.com/spf13/afero v1.2.2 // indirect
 	github.com/spf13/cast v1.3.1 // indirect
-	github.com/spf13/cobra v1.1.1
 	github.com/spf13/jwalterweatherman v1.1.0 // indirect
+	github.com/spf13/pflag v1.0.5 // indirect
 	github.com/spf13/viper v1.7.0
 	github.com/swaggo/gin-swagger v1.2.0
 	github.com/swaggo/swag v1.6.7
@@ -51,13 +50,11 @@ require (
 	github.com/tencentyun/cos-go-sdk-v5 v0.7.19
 	github.com/unrolled/secure v1.0.7
 	go.uber.org/zap v1.10.0
-	golang.org/x/net v0.0.0-20201224014010-6772e930b67b // indirect
+	golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2 // indirect
 	golang.org/x/tools v0.0.0-20200324003944-a576cf524670 // indirect
 	google.golang.org/protobuf v1.24.0 // indirect
 	gopkg.in/ini.v1 v1.55.0 // indirect
 	gopkg.in/yaml.v2 v2.3.0 // indirect
-	gorm.io/driver/mysql v0.3.0
-	gorm.io/gorm v1.20.9
+	gorm.io/driver/mysql v1.0.1
+	gorm.io/gorm v1.20.7
 )
-
-replace github.com/casbin/gorm-adapter/v3 => github.com/casbin/gorm-adapter/v3 v3.0.2

+ 1 - 1
server/initialize/redis.go

@@ -17,7 +17,7 @@ func Redis() {
 	if err != nil {
 		global.GVA_LOG.Error("redis connect ping failed, err:", zap.Any("err", err))
 	} else {
-		global.GVA_LOG.Info("redis connect ping response:", zap.String("pong",pong))
+		global.GVA_LOG.Info("redis connect ping response:", zap.String("pong", pong))
 		global.GVA_REDIS = client
 	}
 }

+ 24 - 0
server/initialize/timer.go

@@ -0,0 +1,24 @@
+package initialize
+
+import (
+	"fmt"
+	"gin-vue-admin/config"
+	"gin-vue-admin/global"
+	"gin-vue-admin/utils"
+)
+
+func Timer() {
+	if global.GVA_CONFIG.Timer.Start {
+		for _, detail := range global.GVA_CONFIG.Timer.Detail {
+			fmt.Println(detail)
+			go func(detail config.Detail) {
+				global.GVA_Timer.AddTaskByFunc("ClearDB", global.GVA_CONFIG.Timer.Spec, func() {
+					err := utils.ClearTable(global.GVA_DB, detail.TableName, detail.CompareField, detail.Interval)
+					if err != nil {
+						fmt.Println("timer error:", err)
+					}
+				})
+			}(detail)
+		}
+	}
+}

+ 1 - 0
server/main.go

@@ -17,6 +17,7 @@ func main() {
 	global.GVA_VP = core.Viper()      // 初始化Viper
 	global.GVA_LOG = core.Zap()       // 初始化zap日志库
 	global.GVA_DB = initialize.Gorm() // gorm连接数据库
+	initialize.Timer()
 	if global.GVA_DB != nil {
 		initialize.MysqlTables(global.GVA_DB) // 初始化表
 		// 程序结束前关闭数据库链接

+ 5 - 5
server/model/exa_customer.go

@@ -6,9 +6,9 @@ import (
 
 type ExaCustomer struct {
 	global.GVA_MODEL
-	CustomerName       string  `json:"customerName" form:"customerName" gorm:"comment:客户名"`
-	CustomerPhoneData  string  `json:"customerPhoneData" form:"customerPhoneData" gorm:"comment:客户手机号"`
-	SysUserID          uint    `json:"sysUserId" form:"sysUserId" gorm:"comment:管理ID"`
-	SysUserAuthorityID string  `json:"sysUserAuthorityID" form:"sysUserAuthorityID" gorm:"comment:管理角色ID"`
-	SysUser            SysUser `json:"sysUser" form:"sysUser" gorm:"comment:管理详情"`
+	CustomerName       string  `json:"customerName" form:"customerName" gorm:"comment:客户名"`                // 客户名
+	CustomerPhoneData  string  `json:"customerPhoneData" form:"customerPhoneData" gorm:"comment:客户手机号"`    // 客户手机号
+	SysUserID          uint    `json:"sysUserId" form:"sysUserId" gorm:"comment:管理ID"`                     // 管理ID
+	SysUserAuthorityID string  `json:"sysUserAuthorityID" form:"sysUserAuthorityID" gorm:"comment:管理角色ID"` // 管理角色ID
+	SysUser            SysUser `json:"sysUser" form:"sysUser" gorm:"comment:管理详情"`                         // 管理详情
 }

+ 1 - 1
server/model/exa_excel.go

@@ -1,6 +1,6 @@
 package model
 
 type ExcelInfo struct {
-	FileName string        `json:"fileName"`
+	FileName string        `json:"fileName"` // 文件名
 	InfoList []SysBaseMenu `json:"infoList"`
 }

+ 4 - 4
server/model/exa_file_upload_download.go

@@ -6,8 +6,8 @@ import (
 
 type ExaFileUploadAndDownload struct {
 	global.GVA_MODEL
-	Name string `json:"name" gorm:"comment:文件名"`
-	Url  string `json:"url" gorm:"comment:文件地址"`
-	Tag  string `json:"tag" gorm:"comment:文件标签"`
-	Key  string `json:"key" gorm:"comment:编号"`
+	Name string `json:"name" gorm:"comment:文件名"` // 文件名
+	Url  string `json:"url" gorm:"comment:文件地址"` // 文件地址
+	Tag  string `json:"tag" gorm:"comment:文件标签"` // 文件标签
+	Key  string `json:"key" gorm:"comment:编号"`   // 编号
 }

+ 4 - 4
server/model/request/common.go

@@ -2,13 +2,13 @@ package request
 
 // Paging common input parameter structure
 type PageInfo struct {
-	Page     int `json:"page" form:"page"`
-	PageSize int `json:"pageSize" form:"pageSize"`
+	Page     int `json:"page" form:"page"`         // 页码
+	PageSize int `json:"pageSize" form:"pageSize"` // 每页大小
 }
 
 // Find by id structure
 type GetById struct {
-	Id float64 `json:"id" form:"id"`
+	ID float64 `json:"id" form:"id"`
 }
 
 type IdsReq struct {
@@ -17,7 +17,7 @@ type IdsReq struct {
 
 // Get role by id structure
 type GetAuthorityId struct {
-	AuthorityId string
+	AuthorityId string // 角色ID
 }
 
 type Empty struct{}

+ 2 - 2
server/model/request/sys_api.go

@@ -6,6 +6,6 @@ import "gin-vue-admin/model"
 type SearchApiParams struct {
 	model.SysApi
 	PageInfo
-	OrderKey string `json:"orderKey"`
-	Desc     bool   `json:"desc"`
+	OrderKey string `json:"orderKey"` // 排序
+	Desc     bool   `json:"desc"`     // 排序方式:升序false(默认)|降序true
 }

+ 3 - 3
server/model/request/sys_casbin.go

@@ -2,12 +2,12 @@ package request
 
 // Casbin info structure
 type CasbinInfo struct {
-	Path   string `json:"path"`
-	Method string `json:"method"`
+	Path   string `json:"path"`   // 路径
+	Method string `json:"method"` // 方法
 }
 
 // Casbin structure for input parameters
 type CasbinInReceive struct {
-	AuthorityId string       `json:"authorityId"`
+	AuthorityId string       `json:"authorityId"` // 权限id
 	CasbinInfos []CasbinInfo `json:"casbinInfos"`
 }

+ 4 - 4
server/model/request/sys_dictionary.go

@@ -2,7 +2,7 @@ package request
 
 import "gin-vue-admin/model"
 
-type SysDictionarySearch struct{
-    model.SysDictionary
-    PageInfo
-}
+type SysDictionarySearch struct {
+	model.SysDictionary
+	PageInfo
+}

+ 4 - 4
server/model/request/sys_dictionary_detail.go

@@ -2,7 +2,7 @@ package request
 
 import "gin-vue-admin/model"
 
-type SysDictionaryDetailSearch struct{
-    model.SysDictionaryDetail
-    PageInfo
-}
+type SysDictionaryDetailSearch struct {
+	model.SysDictionaryDetail
+	PageInfo
+}

+ 5 - 5
server/model/request/sys_init.go

@@ -1,9 +1,9 @@
 package request
 
 type InitDB struct {
-	Host     string `json:"host"`
-	Port     string `json:"port"`
-	UserName string `json:"userName" binding:"required"`
-	Password string `json:"password"`
-	DBName   string `json:"dbName" binding:"required"`
+	Host     string `json:"host"`                        // 服务器地址
+	Port     string `json:"port"`                        // 数据库连接端口
+	UserName string `json:"userName" binding:"required"` // 数据库用户名
+	Password string `json:"password"`                    // 数据库密码
+	DBName   string `json:"dbName" binding:"required"`   // 数据库名
 }

+ 1 - 1
server/model/request/sys_menu.go

@@ -5,5 +5,5 @@ import "gin-vue-admin/model"
 // Add menu authority info structure
 type AddMenuAuthorityInfo struct {
 	Menus       []model.SysBaseMenu
-	AuthorityId string
+	AuthorityId string // 角色ID
 }

+ 9 - 9
server/model/request/sys_user.go

@@ -13,21 +13,21 @@ type Register struct {
 
 // User login structure
 type Login struct {
-	Username  string `json:"username"`
-	Password  string `json:"password"`
-	Captcha   string `json:"captcha"`
-	CaptchaId string `json:"captchaId"`
+	Username  string `json:"username"`  // 用户名
+	Password  string `json:"password"`  // 密码
+	Captcha   string `json:"captcha"`   // 验证码
+	CaptchaId string `json:"captchaId"` // 验证码ID
 }
 
 // Modify password structure
 type ChangePasswordStruct struct {
-	Username    string `json:"username"`
-	Password    string `json:"password"`
-	NewPassword string `json:"newPassword"`
+	Username    string `json:"username"`    // 用户名
+	Password    string `json:"password"`    // 密码
+	NewPassword string `json:"newPassword"` // 新密码
 }
 
 // Modify  user's auth structure
 type SetUserAuth struct {
-	UUID        uuid.UUID `json:"uuid"`
-	AuthorityId string    `json:"authorityId"`
+	UUID        uuid.UUID `json:"uuid"`        // 用户UUID
+	AuthorityId string    `json:"authorityId"` // 角色ID
 }

+ 4 - 4
server/model/sys_api.go

@@ -6,8 +6,8 @@ import (
 
 type SysApi struct {
 	global.GVA_MODEL
-	Path        string `json:"path" gorm:"comment:api路径"`
-	Description string `json:"description" gorm:"comment:api中文描述"`
-	ApiGroup    string `json:"apiGroup" gorm:"comment:api组"`
-	Method      string `json:"method" gorm:"default:POST" gorm:"comment:方法"`
+	Path        string `json:"path" gorm:"comment:api路径"`                    // api路径
+	Description string `json:"description" gorm:"comment:api中文描述"`           // api中文描述
+	ApiGroup    string `json:"apiGroup" gorm:"comment:api组"`                 // api组
+	Method      string `json:"method" gorm:"default:POST" gorm:"comment:方法"` // 方法:创建POST(默认)|查看GET|更新PUT|删除DELETE
 }

+ 4 - 4
server/model/sys_authority.go

@@ -8,11 +8,11 @@ type SysAuthority struct {
 	CreatedAt       time.Time
 	UpdatedAt       time.Time
 	DeletedAt       *time.Time     `sql:"index"`
-	AuthorityId     string         `json:"authorityId" gorm:"not null;unique;primary_key;comment:角色ID;size:90"`
-	AuthorityName   string         `json:"authorityName" gorm:"comment:角色名"`
-	ParentId        string         `json:"parentId" gorm:"comment:父角色ID"`
+	AuthorityId     string         `json:"authorityId" gorm:"not null;unique;primary_key;comment:角色ID;size:90"` // 角色ID
+	AuthorityName   string         `json:"authorityName" gorm:"comment:角色名"` // 角色名
+	ParentId        string         `json:"parentId" gorm:"comment:父角色ID"` // 父角色ID
 	DataAuthorityId []SysAuthority `json:"dataAuthorityId" gorm:"many2many:sys_data_authority_id"`
 	Children        []SysAuthority `json:"children" gorm:"-"`
 	SysBaseMenus    []SysBaseMenu  `json:"menus" gorm:"many2many:sys_authority_menus;"`
-	DefaultRouter   string  		`json:"defaultRouter" gorm:"comment:默认菜单;default:dashboard"`
+	DefaultRouter   string         `json:"defaultRouter" gorm:"comment:默认菜单;default:dashboard"` // 默认菜单(默认dashboard)
 }

+ 18 - 18
server/model/sys_auto_code.go

@@ -4,27 +4,27 @@ import "errors"
 
 // 初始版本自动化代码工具
 type AutoCodeStruct struct {
-	StructName         string  `json:"structName"`
-	TableName          string  `json:"tableName"`
-	PackageName        string  `json:"packageName"`
-	Abbreviation       string  `json:"abbreviation"`
-	Description        string  `json:"description"`
-	AutoCreateApiToSql bool    `json:"autoCreateApiToSql"`
-	AutoMoveFile       bool    `json:"autoMoveFile"`
-	Fields             []Field `json:"fields"`
+	StructName         string   `json:"structName"`         // Struct名称
+	TableName          string   `json:"tableName"`          // 表名
+	PackageName        string   `json:"packageName"`        // 文件名称
+	Abbreviation       string   `json:"abbreviation"`       // Struct简称
+	Description        string   `json:"description"`        // Struct中文名称
+	AutoCreateApiToSql bool     `json:"autoCreateApiToSql"` // 是否自动创建api
+	AutoMoveFile       bool     `json:"autoMoveFile"`       // 是否自动移动文件
+	Fields             []*Field `json:"fields"`
 }
 
 type Field struct {
-	FieldName       string `json:"fieldName"`
-	FieldDesc       string `json:"fieldDesc"`
-	FieldType       string `json:"fieldType"`
-	FieldJson       string `json:"fieldJson"`
-	DataType        string `json:"dataType"`
-	DataTypeLong    string `json:"dataTypeLong"`
-	Comment         string `json:"comment"`
-	ColumnName      string `json:"columnName"`
-	FieldSearchType string `json:"fieldSearchType"`
-	DictType        string `json:"dictType"`
+	FieldName       string `json:"fieldName"`       // Field名
+	FieldDesc       string `json:"fieldDesc"`       // 中文名
+	FieldType       string `json:"fieldType"`       // Field数据类型
+	FieldJson       string `json:"fieldJson"`       // FieldJson
+	DataType        string `json:"dataType"`        // 数据库字段类型
+	DataTypeLong    string `json:"dataTypeLong"`    // 数据库字段长度
+	Comment         string `json:"comment"`         // 数据库字段描述
+	ColumnName      string `json:"columnName"`      // 数据库字段
+	FieldSearchType string `json:"fieldSearchType"` // 搜索条件
+	DictType        string `json:"dictType"`        // 字典
 }
 
 var AutoMoveErr error = errors.New("创建代码成功并移动文件成功")

+ 16 - 16
server/model/sys_base_menu.go

@@ -6,31 +6,31 @@ import (
 
 type SysBaseMenu struct {
 	global.GVA_MODEL
-	MenuLevel     uint   `json:"-"`
-	ParentId      string `json:"parentId" gorm:"comment:父菜单ID"`
-	Path          string `json:"path" gorm:"comment:路由path"`
-	Name          string `json:"name" gorm:"comment:路由name"`
-	Hidden        bool   `json:"hidden" gorm:"comment:是否在列表隐藏"`
-	Component     string `json:"component" gorm:"comment:对应前端文件路径"`
-	Sort          int    `json:"sort" gorm:"comment:排序标记"`
-	Meta          `json:"meta" gorm:"comment:附加属性"`
+	MenuLevel     uint                   `json:"-"`
+	ParentId      string                 `json:"parentId" gorm:"comment:父菜单ID"`     // 父菜单ID
+	Path          string                 `json:"path" gorm:"comment:路由path"`        // 路由path
+	Name          string                 `json:"name" gorm:"comment:路由name"`        // 路由name
+	Hidden        bool                   `json:"hidden" gorm:"comment:是否在列表隐藏"`     // 是否在列表隐藏
+	Component     string                 `json:"component" gorm:"comment:对应前端文件路径"` // 对应前端文件路径
+	Sort          int                    `json:"sort" gorm:"comment:排序标记"`          // 排序标记
+	Meta          `json:"meta" gorm:"comment:附加属性"`                                 // 附加属性
 	SysAuthoritys []SysAuthority         `json:"authoritys" gorm:"many2many:sys_authority_menus;"`
 	Children      []SysBaseMenu          `json:"children" gorm:"-"`
 	Parameters    []SysBaseMenuParameter `json:"parameters"`
 }
 
 type Meta struct {
-	KeepAlive   bool   `json:"keepAlive" gorm:"comment:是否缓存"`
-	DefaultMenu bool   `json:"defaultMenu" gorm:"comment:是否是基础路由(开发中)"`
-	Title       string `json:"title" gorm:"comment:菜单名"`
-	Icon        string `json:"icon" gorm:"comment:菜单图标"`
-	CloseTab    bool   `json:"closeTab" gorm:"comment:自动关闭tab"`
+	KeepAlive   bool   `json:"keepAlive" gorm:"comment:是否缓存"`           // 是否缓存
+	DefaultMenu bool   `json:"defaultMenu" gorm:"comment:是否是基础路由(开发中)"` // 是否是基础路由(开发中)
+	Title       string `json:"title" gorm:"comment:菜单名"`                // 菜单名
+	Icon        string `json:"icon" gorm:"comment:菜单图标"`                // 菜单图标
+	CloseTab    bool   `json:"closeTab" gorm:"comment:自动关闭tab"`         // 自动关闭tab
 }
 
 type SysBaseMenuParameter struct {
 	global.GVA_MODEL
 	SysBaseMenuID uint
-	Type          string `json:"type" gorm:"comment:地址栏携带参数为params还是query"`
-	Key           string `json:"key" gorm:"comment:地址栏携带参数的key"`
-	Value         string `json:"value" gorm:"comment:地址栏携带参数的值"`
+	Type          string `json:"type" gorm:"comment:地址栏携带参数为params还是query"` // 地址栏携带参数为params还是query
+	Key           string `json:"key" gorm:"comment:地址栏携带参数的key"`            // 地址栏携带参数的key
+	Value         string `json:"value" gorm:"comment:地址栏携带参数的值"`            // 地址栏携带参数的值
 }

+ 1 - 1
server/model/sys_casbin.go

@@ -1,7 +1,7 @@
 package model
 
 type CasbinModel struct {
-	Ptype       string `json:"ptype" gorm:"column:p_type"`
+	Ptype       string `json:"ptype" gorm:"column:ptype"`
 	AuthorityId string `json:"rolename" gorm:"column:v0"`
 	Path        string `json:"path" gorm:"column:v1"`
 	Method      string `json:"method" gorm:"column:v2"`

+ 4 - 4
server/model/sys_dictionary.go

@@ -8,9 +8,9 @@ import (
 // 如果含有time.Time 请自行import time包
 type SysDictionary struct {
 	global.GVA_MODEL
-	Name                 string                `json:"name" form:"name" gorm:"column:name;comment:字典名(中)"`
-	Type                 string                `json:"type" form:"type" gorm:"column:type;comment:字典名(英)"`
-	Status               *bool                 `json:"status" form:"status" gorm:"column:status;comment:状态"`
-	Desc                 string                `json:"desc" form:"desc" gorm:"column:desc;comment:描述"`
+	Name                 string                `json:"name" form:"name" gorm:"column:name;comment:字典名(中)"`   // 字典名(中)
+	Type                 string                `json:"type" form:"type" gorm:"column:type;comment:字典名(英)"`   // 字典名(英)
+	Status               *bool                 `json:"status" form:"status" gorm:"column:status;comment:状态"` // 状态
+	Desc                 string                `json:"desc" form:"desc" gorm:"column:desc;comment:描述"`       // 描述
 	SysDictionaryDetails []SysDictionaryDetail `json:"sysDictionaryDetails" form:"sysDictionaryDetails"`
 }

+ 5 - 5
server/model/sys_dictionary_detail.go

@@ -8,9 +8,9 @@ import (
 // 如果含有time.Time 请自行import time包
 type SysDictionaryDetail struct {
 	global.GVA_MODEL
-	Label           string `json:"label" form:"label" gorm:"column:label;comment:展示值"`
-	Value           int    `json:"value" form:"value" gorm:"column:value;comment:字典值"`
-	Status          *bool  `json:"status" form:"status" gorm:"column:status;comment:启用状态"`
-	Sort            int    `json:"sort" form:"sort" gorm:"column:sort;comment:排序标记"`
-	SysDictionaryID int    `json:"sysDictionaryID" form:"sysDictionaryID" gorm:"column:sys_dictionary_id;comment:关联标记"`
+	Label           string `json:"label" form:"label" gorm:"column:label;comment:展示值"`                                  // 展示值
+	Value           int    `json:"value" form:"value" gorm:"column:value;comment:字典值"`                                  // 字典值
+	Status          *bool  `json:"status" form:"status" gorm:"column:status;comment:启用状态"`                              // 启用状态
+	Sort            int    `json:"sort" form:"sort" gorm:"column:sort;comment:排序标记"`                                    // 排序标记
+	SysDictionaryID int    `json:"sysDictionaryID" form:"sysDictionaryID" gorm:"column:sys_dictionary_id;comment:关联标记"` // 关联标记
 }

+ 10 - 10
server/model/sys_operation_record.go

@@ -9,15 +9,15 @@ import (
 // 如果含有time.Time 请自行import time包
 type SysOperationRecord struct {
 	global.GVA_MODEL
-	Ip           string        `json:"ip" form:"ip" gorm:"column:ip;comment:请求ip"`
-	Method       string        `json:"method" form:"method" gorm:"column:method;comment:请求方法"`
-	Path         string        `json:"path" form:"path" gorm:"column:path;comment:请求路径"`
-	Status       int           `json:"status" form:"status" gorm:"column:status;comment:请求状态"`
-	Latency      time.Duration `json:"latency" form:"latency" gorm:"column:latency;comment:延迟"`
-	Agent        string        `json:"agent" form:"agent" gorm:"column:agent;comment:代理"`
-	ErrorMessage string        `json:"error_message" form:"error_message" gorm:"column:error_message;comment:错误信息"`
-	Body         string        `json:"body" form:"body" gorm:"type:longtext;column:body;comment:请求Body"`
-	Resp         string        `json:"resp" form:"resp" gorm:"type:longtext;column:resp;comment:响应Body"`
-	UserID       int           `json:"user_id" form:"user_id" gorm:"column:user_id;comment:用户id"`
+	Ip           string        `json:"ip" form:"ip" gorm:"column:ip;comment:请求ip"`                                   // 请求ip
+	Method       string        `json:"method" form:"method" gorm:"column:method;comment:请求方法"`                       // 请求方法
+	Path         string        `json:"path" form:"path" gorm:"column:path;comment:请求路径"`                             // 请求路径
+	Status       int           `json:"status" form:"status" gorm:"column:status;comment:请求状态"`                       // 请求状态
+	Latency      time.Duration `json:"latency" form:"latency" gorm:"column:latency;comment:延迟" swaggertype:"string"` // 延迟
+	Agent        string        `json:"agent" form:"agent" gorm:"column:agent;comment:代理"`                            // 代理
+	ErrorMessage string        `json:"error_message" form:"error_message" gorm:"column:error_message;comment:错误信息"`  // 错误信息
+	Body         string        `json:"body" form:"body" gorm:"type:longtext;column:body;comment:请求Body"`             // 请求Body
+	Resp         string        `json:"resp" form:"resp" gorm:"type:longtext;column:resp;comment:响应Body"`             // 响应Body
+	UserID       int           `json:"user_id" form:"user_id" gorm:"column:user_id;comment:用户id"`                    // 用户id
 	User         SysUser       `json:"user"`
 }

+ 6 - 6
server/model/sys_user.go

@@ -7,11 +7,11 @@ import (
 
 type SysUser struct {
 	global.GVA_MODEL
-	UUID        uuid.UUID    `json:"uuid" gorm:"comment:用户UUID"`
-	Username    string       `json:"userName" gorm:"comment:用户登录名"`
-	Password    string       `json:"-"  gorm:"comment:用户登录密码"`
-	NickName    string       `json:"nickName" gorm:"default:系统用户;comment:用户昵称" `
-	HeaderImg   string       `json:"headerImg" gorm:"default:http://qmplusimg.henrongyi.top/head.png;comment:用户头像"`
+	UUID        uuid.UUID    `json:"uuid" gorm:"comment:用户UUID"`                                                    // 用户UUID
+	Username    string       `json:"userName" gorm:"comment:用户登录名"`                                                 // 用户登录名
+	Password    string       `json:"-"  gorm:"comment:用户登录密码"`                                                      // 用户登录密码
+	NickName    string       `json:"nickName" gorm:"default:系统用户;comment:用户昵称"`                                     // 用户昵称"
+	HeaderImg   string       `json:"headerImg" gorm:"default:http://qmplusimg.henrongyi.top/head.png;comment:用户头像"` // 用户头像
 	Authority   SysAuthority `json:"authority" gorm:"foreignKey:AuthorityId;references:AuthorityId;comment:用户角色"`
-	AuthorityId string       `json:"authorityId" gorm:"default:888;comment:用户角色ID"`
+	AuthorityId string       `json:"authorityId" gorm:"default:888;comment:用户角色ID"` // 用户角色ID
 }

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
server/resource/page/css/index.d8b172cd.css


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
server/resource/page/css/index.f05c41c6.css


+ 1 - 0
server/resource/page/css/parser-example.69e16e51.css

@@ -0,0 +1 @@
+.test-form[data-v-77b1aafa]{margin:15px auto;width:800px;padding:15px}

BIN
server/resource/page/img/logo.e1bc3747.png


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
server/resource/page/index.html


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
server/resource/page/js/chunk-vendors.788511b0.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
server/resource/page/js/chunk-vendors.9ae0d8fb.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
server/resource/page/js/index.94d8e405.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
server/resource/page/js/index.b3720c41.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
server/resource/page/js/parser-example.c1051310.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
server/resource/page/js/preview.7fecf17e.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
server/resource/page/js/preview.d8d06dfd.js


+ 1 - 0
server/resource/page/js/tinymce-example.5a756246.js

@@ -0,0 +1 @@
+(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["tinymce-example"],{a5aa:function(e,t,n){"use strict";n.r(t);var a=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",[n("Tinymce",{attrs:{height:300,placeholder:"在这里输入文字"},model:{value:e.defaultValue,callback:function(t){e.defaultValue=t},expression:"defaultValue"}})],1)},c=[],u=n("31c6"),l={components:{Tinymce:u["a"]},props:{},data:function(){return{defaultValue:"<p>配置文档参阅:http://tinymce.ax-z.cn</p>"}},computed:{},watch:{},created:function(){},mounted:function(){},methods:{}},o=l,i=n("5d22"),d=Object(i["a"])(o,a,c,!1,null,null,null);t["default"]=d.exports}}]);

BIN
server/resource/page/libs/monaco-editor/vs/base/browser/ui/codicons/codicon/codicon.ttf


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 5 - 0
server/resource/page/libs/monaco-editor/vs/base/worker/workerMain.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 6 - 0
server/resource/page/libs/monaco-editor/vs/basic-languages/abap/abap.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 6 - 0
server/resource/page/libs/monaco-editor/vs/basic-languages/apex/apex.js


+ 7 - 0
server/resource/page/libs/monaco-editor/vs/basic-languages/azcli/azcli.js

@@ -0,0 +1,7 @@
+/*!-----------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * monaco-languages version: 2.3.0(57af10ae0184db4e0f7f9a92ff972629c39ccb53)
+ * Released under the MIT license
+ * https://github.com/Microsoft/monaco-languages/blob/master/LICENSE.md
+ *-----------------------------------------------------------------------------*/
+define("vs/basic-languages/azcli/azcli",["require","exports"],(function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.language=t.conf=void 0,t.conf={comments:{lineComment:"#"}},t.language={defaultToken:"keyword",ignoreCase:!0,tokenPostfix:".azcli",str:/[^#\s]/,tokenizer:{root:[{include:"@comment"},[/\s-+@str*\s*/,{cases:{"@eos":{token:"key.identifier",next:"@popall"},"@default":{token:"key.identifier",next:"@type"}}}],[/^-+@str*\s*/,{cases:{"@eos":{token:"key.identifier",next:"@popall"},"@default":{token:"key.identifier",next:"@type"}}}]],type:[{include:"@comment"},[/-+@str*\s*/,{cases:{"@eos":{token:"key.identifier",next:"@popall"},"@default":"key.identifier"}}],[/@str+\s*/,{cases:{"@eos":{token:"string",next:"@popall"},"@default":"string"}}]],comment:[[/#.*$/,{cases:{"@eos":{token:"comment",next:"@popall"}}}]]}}}));

+ 7 - 0
server/resource/page/libs/monaco-editor/vs/basic-languages/bat/bat.js

@@ -0,0 +1,7 @@
+/*!-----------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * monaco-languages version: 2.3.0(57af10ae0184db4e0f7f9a92ff972629c39ccb53)
+ * Released under the MIT license
+ * https://github.com/Microsoft/monaco-languages/blob/master/LICENSE.md
+ *-----------------------------------------------------------------------------*/
+define("vs/basic-languages/bat/bat",["require","exports"],(function(e,s){"use strict";Object.defineProperty(s,"__esModule",{value:!0}),s.language=s.conf=void 0,s.conf={comments:{lineComment:"REM"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'}],surroundingPairs:[{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'}],folding:{markers:{start:new RegExp("^\\s*(::\\s*|REM\\s+)#region"),end:new RegExp("^\\s*(::\\s*|REM\\s+)#endregion")}}},s.language={defaultToken:"",ignoreCase:!0,tokenPostfix:".bat",brackets:[{token:"delimiter.bracket",open:"{",close:"}"},{token:"delimiter.parenthesis",open:"(",close:")"},{token:"delimiter.square",open:"[",close:"]"}],keywords:/call|defined|echo|errorlevel|exist|for|goto|if|pause|set|shift|start|title|not|pushd|popd/,symbols:/[=><!~?&|+\-*\/\^;\.,]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/^(\s*)(rem(?:\s.*|))$/,["","comment"]],[/(\@?)(@keywords)(?!\w)/,[{token:"keyword"},{token:"keyword.$2"}]],[/[ \t\r\n]+/,""],[/setlocal(?!\w)/,"keyword.tag-setlocal"],[/endlocal(?!\w)/,"keyword.tag-setlocal"],[/[a-zA-Z_]\w*/,""],[/:\w*/,"metatag"],[/%[^%]+%/,"variable"],[/%%[\w]+(?!\w)/,"variable"],[/[{}()\[\]]/,"@brackets"],[/@symbols/,"delimiter"],[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float"],[/0[xX][0-9a-fA-F_]*[0-9a-fA-F]/,"number.hex"],[/\d+/,"number"],[/[;,.]/,"delimiter"],[/"/,"string",'@string."'],[/'/,"string","@string.'"]],string:[[/[^\\"'%]+/,{cases:{"@eos":{token:"string",next:"@popall"},"@default":"string"}}],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/%[\w ]+%/,"variable"],[/%%[\w]+(?!\w)/,"variable"],[/["']/,{cases:{"$#==$S2":{token:"string",next:"@pop"},"@default":"string"}}],[/$/,"string","@popall"]]}}}));

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 6 - 0
server/resource/page/libs/monaco-editor/vs/basic-languages/cameligo/cameligo.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 6 - 0
server/resource/page/libs/monaco-editor/vs/basic-languages/clojure/clojure.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 6 - 0
server/resource/page/libs/monaco-editor/vs/basic-languages/coffee/coffee.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 6 - 0
server/resource/page/libs/monaco-editor/vs/basic-languages/cpp/cpp.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 6 - 0
server/resource/page/libs/monaco-editor/vs/basic-languages/csharp/csharp.js


+ 7 - 0
server/resource/page/libs/monaco-editor/vs/basic-languages/csp/csp.js

@@ -0,0 +1,7 @@
+/*!-----------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * monaco-languages version: 2.3.0(57af10ae0184db4e0f7f9a92ff972629c39ccb53)
+ * Released under the MIT license
+ * https://github.com/Microsoft/monaco-languages/blob/master/LICENSE.md
+ *-----------------------------------------------------------------------------*/
+define("vs/basic-languages/csp/csp",["require","exports"],(function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.language=e.conf=void 0,e.conf={brackets:[],autoClosingPairs:[],surroundingPairs:[]},e.language={keywords:[],typeKeywords:[],tokenPostfix:".csp",operators:[],symbols:/[=><!~?:&|+\-*\/\^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/child-src/,"string.quote"],[/connect-src/,"string.quote"],[/default-src/,"string.quote"],[/font-src/,"string.quote"],[/frame-src/,"string.quote"],[/img-src/,"string.quote"],[/manifest-src/,"string.quote"],[/media-src/,"string.quote"],[/object-src/,"string.quote"],[/script-src/,"string.quote"],[/style-src/,"string.quote"],[/worker-src/,"string.quote"],[/base-uri/,"string.quote"],[/plugin-types/,"string.quote"],[/sandbox/,"string.quote"],[/disown-opener/,"string.quote"],[/form-action/,"string.quote"],[/frame-ancestors/,"string.quote"],[/report-uri/,"string.quote"],[/report-to/,"string.quote"],[/upgrade-insecure-requests/,"string.quote"],[/block-all-mixed-content/,"string.quote"],[/require-sri-for/,"string.quote"],[/reflected-xss/,"string.quote"],[/referrer/,"string.quote"],[/policy-uri/,"string.quote"],[/'self'/,"string.quote"],[/'unsafe-inline'/,"string.quote"],[/'unsafe-eval'/,"string.quote"],[/'strict-dynamic'/,"string.quote"],[/'unsafe-hashed-attributes'/,"string.quote"]]}}}));

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 6 - 0
server/resource/page/libs/monaco-editor/vs/basic-languages/css/css.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 6 - 0
server/resource/page/libs/monaco-editor/vs/basic-languages/dart/dart.js


+ 7 - 0
server/resource/page/libs/monaco-editor/vs/basic-languages/dockerfile/dockerfile.js

@@ -0,0 +1,7 @@
+/*!-----------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * monaco-languages version: 2.3.0(57af10ae0184db4e0f7f9a92ff972629c39ccb53)
+ * Released under the MIT license
+ * https://github.com/Microsoft/monaco-languages/blob/master/LICENSE.md
+ *-----------------------------------------------------------------------------*/
+define("vs/basic-languages/dockerfile/dockerfile",["require","exports"],(function(e,o){"use strict";Object.defineProperty(o,"__esModule",{value:!0}),o.language=o.conf=void 0,o.conf={brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},o.language={defaultToken:"",tokenPostfix:".dockerfile",variable:/\${?[\w]+}?/,tokenizer:{root:[{include:"@whitespace"},{include:"@comment"},[/(ONBUILD)(\s+)/,["keyword",""]],[/(ENV)(\s+)([\w]+)/,["keyword","",{token:"variable",next:"@arguments"}]],[/(FROM|MAINTAINER|RUN|EXPOSE|ENV|ADD|ARG|VOLUME|LABEL|USER|WORKDIR|COPY|CMD|STOPSIGNAL|SHELL|HEALTHCHECK|ENTRYPOINT)/,{token:"keyword",next:"@arguments"}]],arguments:[{include:"@whitespace"},{include:"@strings"},[/(@variable)/,{cases:{"@eos":{token:"variable",next:"@popall"},"@default":"variable"}}],[/\\/,{cases:{"@eos":"","@default":""}}],[/./,{cases:{"@eos":{token:"",next:"@popall"},"@default":""}}]],whitespace:[[/\s+/,{cases:{"@eos":{token:"",next:"@popall"},"@default":""}}]],comment:[[/(^#.*$)/,"comment","@popall"]],strings:[[/\\'$/,"","@popall"],[/\\'/,""],[/'$/,"string","@popall"],[/'/,"string","@stringBody"],[/"$/,"string","@popall"],[/"/,"string","@dblStringBody"]],stringBody:[[/[^\\\$']/,{cases:{"@eos":{token:"string",next:"@popall"},"@default":"string"}}],[/\\./,"string.escape"],[/'$/,"string","@popall"],[/'/,"string","@pop"],[/(@variable)/,"variable"],[/\\$/,"string"],[/$/,"string","@popall"]],dblStringBody:[[/[^\\\$"]/,{cases:{"@eos":{token:"string",next:"@popall"},"@default":"string"}}],[/\\./,"string.escape"],[/"$/,"string","@popall"],[/"/,"string","@pop"],[/(@variable)/,"variable"],[/\\$/,"string"],[/$/,"string","@popall"]]}}}));

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 6 - 0
server/resource/page/libs/monaco-editor/vs/basic-languages/ecl/ecl.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 6 - 0
server/resource/page/libs/monaco-editor/vs/basic-languages/fsharp/fsharp.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 6 - 0
server/resource/page/libs/monaco-editor/vs/basic-languages/go/go.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 6 - 0
server/resource/page/libs/monaco-editor/vs/basic-languages/graphql/graphql.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 6 - 0
server/resource/page/libs/monaco-editor/vs/basic-languages/handlebars/handlebars.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 6 - 0
server/resource/page/libs/monaco-editor/vs/basic-languages/hcl/hcl.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 6 - 0
server/resource/page/libs/monaco-editor/vs/basic-languages/html/html.js


+ 7 - 0
server/resource/page/libs/monaco-editor/vs/basic-languages/ini/ini.js

@@ -0,0 +1,7 @@
+/*!-----------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * monaco-languages version: 2.3.0(57af10ae0184db4e0f7f9a92ff972629c39ccb53)
+ * Released under the MIT license
+ * https://github.com/Microsoft/monaco-languages/blob/master/LICENSE.md
+ *-----------------------------------------------------------------------------*/
+define("vs/basic-languages/ini/ini",["require","exports"],(function(e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.language=n.conf=void 0,n.conf={comments:{lineComment:"#"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},n.language={defaultToken:"",tokenPostfix:".ini",escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/^\[[^\]]*\]/,"metatag"],[/(^\w+)(\s*)(\=)/,["key","","delimiter"]],{include:"@whitespace"},[/\d+/,"number"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/"/,"string",'@string."'],[/'/,"string","@string.'"]],whitespace:[[/[ \t\r\n]+/,""],[/^\s*[#;].*$/,"comment"]],string:[[/[^\\"']+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/["']/,{cases:{"$#==$S2":{token:"string",next:"@pop"},"@default":"string"}}]]}}}));

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 6 - 0
server/resource/page/libs/monaco-editor/vs/basic-languages/java/java.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 6 - 0
server/resource/page/libs/monaco-editor/vs/basic-languages/javascript/javascript.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 6 - 0
server/resource/page/libs/monaco-editor/vs/basic-languages/julia/julia.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 6 - 0
server/resource/page/libs/monaco-editor/vs/basic-languages/kotlin/kotlin.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 6 - 0
server/resource/page/libs/monaco-editor/vs/basic-languages/less/less.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 6 - 0
server/resource/page/libs/monaco-editor/vs/basic-languages/lexon/lexon.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 6 - 0
server/resource/page/libs/monaco-editor/vs/basic-languages/lua/lua.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 6 - 0
server/resource/page/libs/monaco-editor/vs/basic-languages/m3/m3.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 6 - 0
server/resource/page/libs/monaco-editor/vs/basic-languages/markdown/markdown.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 6 - 0
server/resource/page/libs/monaco-editor/vs/basic-languages/mips/mips.js


Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä