diff --git a/server/api/v1/sys_user.go b/server/api/v1/sys_user.go
index c018af9e..69dc34f9 100644
--- a/server/api/v1/sys_user.go
+++ b/server/api/v1/sys_user.go
@@ -240,7 +240,7 @@ func DeleteUser(c *gin.Context) {
func SetUserInfo(c *gin.Context) {
var user model.SysUser
_ = c.ShouldBindJSON(&user)
- if err := utils.Verify(user, utils.SetUserVerify); err != nil {
+ if err := utils.Verify(user, utils.IdVerify); err != nil {
response.FailWithMessage(err.Error(), c)
return
}
diff --git a/server/config.yaml b/server/config.yaml
index 1dbf4436..df7f9cf1 100644
--- a/server/config.yaml
+++ b/server/config.yaml
@@ -60,7 +60,7 @@ mysql:
max-idle-conns: 10
max-open-conns: 100
log-mode: false
- log-zap: false
+ log-zap: ""
# local configuration
local:
diff --git a/server/config/gorm.go b/server/config/gorm.go
index 1888d4c8..eb08c770 100644
--- a/server/config/gorm.go
+++ b/server/config/gorm.go
@@ -9,5 +9,5 @@ type Mysql struct {
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"`
- LogZap bool `mapstructure:"log-zap" json:"logZap" yaml:"log-zap"`
+ LogZap string `mapstructure:"log-zap" json:"logZap" yaml:"log-zap"`
}
diff --git a/server/initialize/gorm.go b/server/initialize/gorm.go
index 8b87d253..07cbda00 100644
--- a/server/initialize/gorm.go
+++ b/server/initialize/gorm.go
@@ -10,7 +10,11 @@ import (
"os"
)
-// Gorm 初始化数据库并产生数据库全局变量
+//@author: SliverHorn
+//@function: Gorm
+//@description: 初始化数据库并产生数据库全局变量
+//@return: *gorm.DB
+
func Gorm() *gorm.DB {
switch global.GVA_CONFIG.System.DbType {
case "mysql":
@@ -20,7 +24,12 @@ func Gorm() *gorm.DB {
}
}
-// MysqlTables 注册数据库表专用
+// MysqlTables
+//@author: SliverHorn
+//@function: MysqlTables
+//@description: 注册数据库表专用
+//@param: db *gorm.DB
+
func MysqlTables(db *gorm.DB) {
err := db.AutoMigrate(
model.SysUser{},
@@ -52,7 +61,12 @@ func MysqlTables(db *gorm.DB) {
global.GVA_LOG.Info("register table success")
}
-// GormMysql 初始化Mysql数据库
+//
+//@author: SliverHorn
+//@function: GormMysql
+//@description: 初始化Mysql数据库
+//@return: *gorm.DB
+
func GormMysql() *gorm.DB {
m := global.GVA_CONFIG.Mysql
dsn := m.Username + ":" + m.Password + "@tcp(" + m.Path + ")/" + m.Dbname + "?" + m.Config
@@ -76,23 +90,45 @@ func GormMysql() *gorm.DB {
}
}
-// gormConfig 根据配置决定是否开启日志
+//@author: SliverHorn
+//@function: gormConfig
+//@description: 根据配置决定是否开启日志
+//@param: mod bool
+//@return: *gorm.Config
+
func gormConfig(mod bool) *gorm.Config {
- if global.GVA_CONFIG.Mysql.LogZap {
+ switch global.GVA_CONFIG.Mysql.LogZap {
+ case "Silent":
+ return &gorm.Config{
+ Logger: Default.LogMode(logger.Silent),
+ DisableForeignKeyConstraintWhenMigrating: true,
+ }
+ case "Error":
+ return &gorm.Config{
+ Logger: Default.LogMode(logger.Error),
+ DisableForeignKeyConstraintWhenMigrating: true,
+ }
+ case "Warn":
+ return &gorm.Config{
+ Logger: Default.LogMode(logger.Warn),
+ DisableForeignKeyConstraintWhenMigrating: true,
+ }
+ case "Info":
return &gorm.Config{
Logger: Default.LogMode(logger.Info),
DisableForeignKeyConstraintWhenMigrating: true,
}
- }
- if mod {
- return &gorm.Config{
- Logger: logger.Default.LogMode(logger.Info),
- DisableForeignKeyConstraintWhenMigrating: true,
- }
- } else {
- return &gorm.Config{
- Logger: logger.Default.LogMode(logger.Silent),
- DisableForeignKeyConstraintWhenMigrating: true,
+ default:
+ if mod {
+ return &gorm.Config{
+ Logger: logger.Default.LogMode(logger.Info),
+ DisableForeignKeyConstraintWhenMigrating: true,
+ }
+ } else {
+ return &gorm.Config{
+ Logger: logger.Default.LogMode(logger.Silent),
+ DisableForeignKeyConstraintWhenMigrating: true,
+ }
}
}
}
diff --git a/server/initialize/logger.go b/server/initialize/logger.go
index a736a7d5..5da2ecf3 100644
--- a/server/initialize/logger.go
+++ b/server/initialize/logger.go
@@ -14,8 +14,8 @@ import (
)
var (
- Discard = New(log.New(ioutil.Discard, "", log.LstdFlags), GormConfig{})
- Default = New(log.New(os.Stdout, "\r\n", log.LstdFlags), GormConfig{
+ Discard = New(log.New(ioutil.Discard, "", log.LstdFlags), log.New(ioutil.Discard, "", log.LstdFlags), GormConfig{})
+ Default = New(log.New(os.Stdout, "\r\n", log.LstdFlags), log.New(os.Stdout, "\r\n", log.LstdFlags), GormConfig{
SlowThreshold: 200 * time.Millisecond,
LogLevel: logger.Warn,
Colorful: true,
@@ -31,7 +31,7 @@ type traceRecorder struct {
Err error
}
-func New(writer Writer, config GormConfig) logger.Interface {
+func New(writer Writer, gormWriter logger.Writer, config GormConfig) logger.Interface {
var (
infoStr = "%s\n[info] "
warnStr = "%s\n[warn] "
@@ -52,6 +52,7 @@ func New(writer Writer, config GormConfig) logger.Interface {
return &GormLogger{
Writer: writer,
+ gormWriter: gormWriter,
GormConfig: config,
infoStr: infoStr,
warnStr: warnStr,
@@ -75,6 +76,7 @@ type GormConfig struct {
type GormLogger struct {
Writer
+ gormWriter logger.Writer
GormConfig
infoStr, warnStr, errStr string
traceStr, traceErrStr, traceWarnStr string
@@ -135,16 +137,31 @@ func (g *GormLogger) Trace(ctx context.Context, begin time.Time, fc func() (stri
}
func (g *GormLogger) Printf(message string, data ...interface{}) {
+ if global.GVA_CONFIG.Mysql.LogZap == "Info" && !global.GVA_CONFIG.Mysql.LogMode {
+ switch len(data) {
+ case 0:
+ global.GVA_LOG.Info(message)
+ case 1:
+ global.GVA_LOG.Info("gorm", zap.Any("src", data[0]))
+ case 2:
+ global.GVA_LOG.Info("gorm", zap.Any("src", data[0]), zap.Any("duration", data[1]))
+ case 3:
+ global.GVA_LOG.Info("gorm", zap.Any("src", data[0]), zap.Any("duration", data[1]), zap.Any("rows", data[2]))
+ case 4:
+ global.GVA_LOG.Info("gorm", zap.Any("src", data[0]), zap.Any("duration", data[1]), zap.Any("rows", data[2]), zap.Any("sql", data[3]))
+ }
+ return
+ }
switch len(data) {
case 0:
- global.GVA_LOG.Info(message)
+ g.gormWriter.Printf(message, "")
case 1:
- global.GVA_LOG.Info("gorm", zap.Any("src", data[0]))
+ g.gormWriter.Printf(message, data[0].(string))
case 2:
- global.GVA_LOG.Info("gorm", zap.Any("src", data[0]), zap.Any("duration", data[1]))
+ g.gormWriter.Printf(message, data[0].(string), data[1].(float64))
case 3:
- global.GVA_LOG.Info("gorm", zap.Any("src", data[0]), zap.Any("duration", data[1]), zap.Any("rows", data[2]))
+ g.gormWriter.Printf(message, data[0].(string), data[1].(float64), data[2].(string))
case 4:
- global.GVA_LOG.Info("gorm", zap.Any("src", data[0]), zap.Any("duration", data[1]), zap.Any("rows", data[2]), zap.Any("sql", data[3]))
+ g.gormWriter.Printf(message, data[0].(string), data[1].(float64), data[2].(string), data[3].(string))
}
}
diff --git a/server/utils/cmd_Task.go b/server/utils/cmd_Task.go
index 06454da0..708be715 100644
--- a/server/utils/cmd_Task.go
+++ b/server/utils/cmd_Task.go
@@ -73,17 +73,12 @@ func newT(f func(chan struct{}) error) *T {
//@description: 添加任务
func (t *T) AddTask() {
- if len(t.ch) == 1 {
- return
- }
- t.Lock()
- defer t.Unlock()
- if len(t.ch) == 1 {
+ select {
+ case t.ch <- struct{}{}:
+ default:
// 代表已经有任务了
// 直接丢弃这次任务
- return
}
- t.ch <- struct{}{}
}
//@author: [songzhibin97](https://github.com/songzhibin97)
diff --git a/server/utils/verify.go b/server/utils/verify.go
index 8332291f..9e5796f7 100644
--- a/server/utils/verify.go
+++ b/server/utils/verify.go
@@ -6,12 +6,10 @@ var (
MenuVerify = Rules{"Path": {NotEmpty()}, "ParentId": {NotEmpty()}, "Name": {NotEmpty()}, "Component": {NotEmpty()}, "Sort": {Ge("0")}}
MenuMetaVerify = Rules{"Title": {NotEmpty()}}
LoginVerify = Rules{"CaptchaId": {NotEmpty()}, "Captcha": {NotEmpty()}, "Username": {NotEmpty()}, "Password": {NotEmpty()}}
- SetUserVerify = Rules{"ID": {NotEmpty()}, "Username": {NotEmpty()}, "NickName": {NotEmpty()}, "HeaderImg": {NotEmpty()}}
RegisterVerify = Rules{"Username": {NotEmpty()}, "NickName": {NotEmpty()}, "Password": {NotEmpty()}, "AuthorityId": {NotEmpty()}}
PageInfoVerify = Rules{"Page": {NotEmpty()}, "PageSize": {NotEmpty()}}
CustomerVerify = Rules{"CustomerName": {NotEmpty()}, "CustomerPhoneData": {NotEmpty()}}
AutoCodeVerify = Rules{"Abbreviation": {NotEmpty()}, "StructName": {NotEmpty()}, "PackageName": {NotEmpty()}, "Fields": {NotEmpty()}}
- WorkFlowVerify = Rules{"WorkflowNickName": {NotEmpty()}, "WorkflowName": {NotEmpty()}, "WorkflowDescription": {NotEmpty()}, "WorkflowStepInfo": {NotEmpty()}}
AuthorityVerify = Rules{"AuthorityId": {NotEmpty()}, "AuthorityName": {NotEmpty()}, "ParentId": {NotEmpty()}}
AuthorityIdVerify = Rules{"AuthorityId": {NotEmpty()}}
OldAuthorityVerify = Rules{"OldAuthorityId": {NotEmpty()}}
diff --git a/web/src/components/upload/image.vue b/web/src/components/upload/image.vue
index c5c9d92e..47479df5 100644
--- a/web/src/components/upload/image.vue
+++ b/web/src/components/upload/image.vue
@@ -13,18 +13,20 @@
-
+