Skip to content

Commit 9f6c8f5

Browse files
author
pixel
committed
Merge branch 'gva_gormv2_dev' of https://github.com/flipped-aurora/gin-vue-admin into gva_gormv2_dev
2 parents 9a4667f + 338d81e commit 9f6c8f5

File tree

10 files changed

+102
-35
lines changed

10 files changed

+102
-35
lines changed

server/api/v1/sys_user.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ func DeleteUser(c *gin.Context) {
240240
func SetUserInfo(c *gin.Context) {
241241
var user model.SysUser
242242
_ = c.ShouldBindJSON(&user)
243-
if err := utils.Verify(user, utils.SetUserVerify); err != nil {
243+
if err := utils.Verify(user, utils.IdVerify); err != nil {
244244
response.FailWithMessage(err.Error(), c)
245245
return
246246
}

server/config.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ mysql:
6060
max-idle-conns: 10
6161
max-open-conns: 100
6262
log-mode: false
63-
log-zap: false
63+
log-zap: ""
6464

6565
# local configuration
6666
local:

server/config/gorm.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,5 @@ type Mysql struct {
99
MaxIdleConns int `mapstructure:"max-idle-conns" json:"maxIdleConns" yaml:"max-idle-conns"`
1010
MaxOpenConns int `mapstructure:"max-open-conns" json:"maxOpenConns" yaml:"max-open-conns"`
1111
LogMode bool `mapstructure:"log-mode" json:"logMode" yaml:"log-mode"`
12-
LogZap bool `mapstructure:"log-zap" json:"logZap" yaml:"log-zap"`
12+
LogZap string `mapstructure:"log-zap" json:"logZap" yaml:"log-zap"`
1313
}

server/initialize/gorm.go

Lines changed: 47 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,11 @@ import (
1010
"os"
1111
)
1212

13-
// Gorm 初始化数据库并产生数据库全局变量
13+
//@author: SliverHorn
14+
//@function: Gorm
15+
//@description: 初始化数据库并产生数据库全局变量
16+
//@return: *gorm.DB
17+
1418
func Gorm() *gorm.DB {
1519
switch global.GVA_CONFIG.System.DbType {
1620
case "mysql":
@@ -20,7 +24,12 @@ func Gorm() *gorm.DB {
2024
}
2125
}
2226

23-
// MysqlTables 注册数据库表专用
27+
// MysqlTables
28+
//@author: SliverHorn
29+
//@function: MysqlTables
30+
//@description: 注册数据库表专用
31+
//@param: db *gorm.DB
32+
2433
func MysqlTables(db *gorm.DB) {
2534
err := db.AutoMigrate(
2635
model.SysUser{},
@@ -52,7 +61,12 @@ func MysqlTables(db *gorm.DB) {
5261
global.GVA_LOG.Info("register table success")
5362
}
5463

55-
// GormMysql 初始化Mysql数据库
64+
//
65+
//@author: SliverHorn
66+
//@function: GormMysql
67+
//@description: 初始化Mysql数据库
68+
//@return: *gorm.DB
69+
5670
func GormMysql() *gorm.DB {
5771
m := global.GVA_CONFIG.Mysql
5872
dsn := m.Username + ":" + m.Password + "@tcp(" + m.Path + ")/" + m.Dbname + "?" + m.Config
@@ -76,23 +90,45 @@ func GormMysql() *gorm.DB {
7690
}
7791
}
7892

79-
// gormConfig 根据配置决定是否开启日志
93+
//@author: SliverHorn
94+
//@function: gormConfig
95+
//@description: 根据配置决定是否开启日志
96+
//@param: mod bool
97+
//@return: *gorm.Config
98+
8099
func gormConfig(mod bool) *gorm.Config {
81-
if global.GVA_CONFIG.Mysql.LogZap {
100+
switch global.GVA_CONFIG.Mysql.LogZap {
101+
case "Silent":
82102
return &gorm.Config{
83-
Logger: Default.LogMode(logger.Info),
103+
Logger: Default.LogMode(logger.Silent),
84104
DisableForeignKeyConstraintWhenMigrating: true,
85105
}
86-
}
87-
if mod {
106+
case "Error":
88107
return &gorm.Config{
89-
Logger: logger.Default.LogMode(logger.Info),
108+
Logger: Default.LogMode(logger.Error),
90109
DisableForeignKeyConstraintWhenMigrating: true,
91110
}
92-
} else {
111+
case "Warn":
93112
return &gorm.Config{
94-
Logger: logger.Default.LogMode(logger.Silent),
113+
Logger: Default.LogMode(logger.Warn),
95114
DisableForeignKeyConstraintWhenMigrating: true,
96115
}
116+
case "Info":
117+
return &gorm.Config{
118+
Logger: Default.LogMode(logger.Info),
119+
DisableForeignKeyConstraintWhenMigrating: true,
120+
}
121+
default:
122+
if mod {
123+
return &gorm.Config{
124+
Logger: logger.Default.LogMode(logger.Info),
125+
DisableForeignKeyConstraintWhenMigrating: true,
126+
}
127+
} else {
128+
return &gorm.Config{
129+
Logger: logger.Default.LogMode(logger.Silent),
130+
DisableForeignKeyConstraintWhenMigrating: true,
131+
}
132+
}
97133
}
98134
}

server/initialize/logger.go

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ import (
1414
)
1515

1616
var (
17-
Discard = New(log.New(ioutil.Discard, "", log.LstdFlags), GormConfig{})
18-
Default = New(log.New(os.Stdout, "\r\n", log.LstdFlags), GormConfig{
17+
Discard = New(log.New(ioutil.Discard, "", log.LstdFlags), log.New(ioutil.Discard, "", log.LstdFlags), GormConfig{})
18+
Default = New(log.New(os.Stdout, "\r\n", log.LstdFlags), log.New(os.Stdout, "\r\n", log.LstdFlags), GormConfig{
1919
SlowThreshold: 200 * time.Millisecond,
2020
LogLevel: logger.Warn,
2121
Colorful: true,
@@ -31,7 +31,7 @@ type traceRecorder struct {
3131
Err error
3232
}
3333

34-
func New(writer Writer, config GormConfig) logger.Interface {
34+
func New(writer Writer, gormWriter logger.Writer, config GormConfig) logger.Interface {
3535
var (
3636
infoStr = "%s\n[info] "
3737
warnStr = "%s\n[warn] "
@@ -52,6 +52,7 @@ func New(writer Writer, config GormConfig) logger.Interface {
5252

5353
return &GormLogger{
5454
Writer: writer,
55+
gormWriter: gormWriter,
5556
GormConfig: config,
5657
infoStr: infoStr,
5758
warnStr: warnStr,
@@ -75,6 +76,7 @@ type GormConfig struct {
7576

7677
type GormLogger struct {
7778
Writer
79+
gormWriter logger.Writer
7880
GormConfig
7981
infoStr, warnStr, errStr string
8082
traceStr, traceErrStr, traceWarnStr string
@@ -135,16 +137,31 @@ func (g *GormLogger) Trace(ctx context.Context, begin time.Time, fc func() (stri
135137
}
136138

137139
func (g *GormLogger) Printf(message string, data ...interface{}) {
140+
if global.GVA_CONFIG.Mysql.LogZap == "Info" && !global.GVA_CONFIG.Mysql.LogMode {
141+
switch len(data) {
142+
case 0:
143+
global.GVA_LOG.Info(message)
144+
case 1:
145+
global.GVA_LOG.Info("gorm", zap.Any("src", data[0]))
146+
case 2:
147+
global.GVA_LOG.Info("gorm", zap.Any("src", data[0]), zap.Any("duration", data[1]))
148+
case 3:
149+
global.GVA_LOG.Info("gorm", zap.Any("src", data[0]), zap.Any("duration", data[1]), zap.Any("rows", data[2]))
150+
case 4:
151+
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]))
152+
}
153+
return
154+
}
138155
switch len(data) {
139156
case 0:
140-
global.GVA_LOG.Info(message)
157+
g.gormWriter.Printf(message, "")
141158
case 1:
142-
global.GVA_LOG.Info("gorm", zap.Any("src", data[0]))
159+
g.gormWriter.Printf(message, data[0].(string))
143160
case 2:
144-
global.GVA_LOG.Info("gorm", zap.Any("src", data[0]), zap.Any("duration", data[1]))
161+
g.gormWriter.Printf(message, data[0].(string), data[1].(float64))
145162
case 3:
146-
global.GVA_LOG.Info("gorm", zap.Any("src", data[0]), zap.Any("duration", data[1]), zap.Any("rows", data[2]))
163+
g.gormWriter.Printf(message, data[0].(string), data[1].(float64), data[2].(string))
147164
case 4:
148-
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]))
165+
g.gormWriter.Printf(message, data[0].(string), data[1].(float64), data[2].(string), data[3].(string))
149166
}
150167
}

server/utils/cmd_Task.go

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -73,17 +73,12 @@ func newT(f func(chan struct{}) error) *T {
7373
//@description: 添加任务
7474

7575
func (t *T) AddTask() {
76-
if len(t.ch) == 1 {
77-
return
78-
}
79-
t.Lock()
80-
defer t.Unlock()
81-
if len(t.ch) == 1 {
76+
select {
77+
case t.ch <- struct{}{}:
78+
default:
8279
// 代表已经有任务了
8380
// 直接丢弃这次任务
84-
return
8581
}
86-
t.ch <- struct{}{}
8782
}
8883

8984
//@author: [songzhibin97](https://github.com/songzhibin97)

server/utils/verify.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,10 @@ var (
66
MenuVerify = Rules{"Path": {NotEmpty()}, "ParentId": {NotEmpty()}, "Name": {NotEmpty()}, "Component": {NotEmpty()}, "Sort": {Ge("0")}}
77
MenuMetaVerify = Rules{"Title": {NotEmpty()}}
88
LoginVerify = Rules{"CaptchaId": {NotEmpty()}, "Captcha": {NotEmpty()}, "Username": {NotEmpty()}, "Password": {NotEmpty()}}
9-
SetUserVerify = Rules{"ID": {NotEmpty()}, "Username": {NotEmpty()}, "NickName": {NotEmpty()}, "HeaderImg": {NotEmpty()}}
109
RegisterVerify = Rules{"Username": {NotEmpty()}, "NickName": {NotEmpty()}, "Password": {NotEmpty()}, "AuthorityId": {NotEmpty()}}
1110
PageInfoVerify = Rules{"Page": {NotEmpty()}, "PageSize": {NotEmpty()}}
1211
CustomerVerify = Rules{"CustomerName": {NotEmpty()}, "CustomerPhoneData": {NotEmpty()}}
1312
AutoCodeVerify = Rules{"Abbreviation": {NotEmpty()}, "StructName": {NotEmpty()}, "PackageName": {NotEmpty()}, "Fields": {NotEmpty()}}
14-
WorkFlowVerify = Rules{"WorkflowNickName": {NotEmpty()}, "WorkflowName": {NotEmpty()}, "WorkflowDescription": {NotEmpty()}, "WorkflowStepInfo": {NotEmpty()}}
1513
AuthorityVerify = Rules{"AuthorityId": {NotEmpty()}, "AuthorityName": {NotEmpty()}, "ParentId": {NotEmpty()}}
1614
AuthorityIdVerify = Rules{"AuthorityId": {NotEmpty()}}
1715
OldAuthorityVerify = Rules{"OldAuthorityId": {NotEmpty()}}

web/src/components/upload/image.vue

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,20 @@
1313
<el-upload
1414
class="image-uploader"
1515
:action="`${path}/fileUploadAndDownload/upload`"
16+
:headers="{ 'x-token': token }"
1617
:show-file-list="false"
1718
:on-success="handleImageSuccess"
1819
:before-upload="beforeImageUpload"
1920
:multiple="false"
2021
>
21-
<img v-if="imageUrl" :src="imageUrl" class="image" />
22+
<img v-if="imageUrl" :src="path + imageUrl" class="image" />
2223
<i v-else class="el-icon-plus image-uploader-icon"></i>
2324
</el-upload>
2425
</div>
2526
</template>
2627
<script>
2728
const path = process.env.VUE_APP_BASE_API;
29+
import { mapGetters } from "vuex";
2830
import ImageCompress from "@/utils/image.js";
2931
export default {
3032
name: "upload-image",
@@ -51,6 +53,9 @@ export default {
5153
path: path,
5254
};
5355
},
56+
computed: {
57+
...mapGetters("user", ["userInfo", "token"]),
58+
},
5459
methods: {
5560
beforeImageUpload(file) {
5661
let isRightSize = file.size / 1024 < this.fileSize;
@@ -97,4 +102,4 @@ export default {
97102
height: 178px;
98103
display: block;
99104
}
100-
</style>
105+
</style>

web/src/utils/stringFun.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,14 @@ export const toUpperCase = (str) => {
77
}
88
}
99

10+
export const toLowerCase = (str) => {
11+
if (str[0]) {
12+
return str.replace(str[0], str[0].toLowerCase())
13+
} else {
14+
return ""
15+
}
16+
}
17+
1018
// 驼峰转换下划线
1119
export const toSQLLine = (str) => {
1220
if (str == "ID") return "ID"

web/src/view/systemTools/autoCode/component/fieldDialog.vue

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@
1212
<el-col :span="6">
1313
<el-input v-model="dialogMiddle.fieldName" autocomplete="off"></el-input>
1414
</el-col>
15+
<el-col :offset="1" :span="2">
16+
<el-button @click="autoFill">自动填充</el-button>
17+
</el-col>
1518
</el-form-item>
1619
<el-form-item label="Field中文名" prop="fieldDesc">
1720
<el-col :span="6">
@@ -103,6 +106,7 @@
103106
</template>
104107
<script>
105108
import { getDict } from "@/utils/dictionary";
109+
import { toSQLLine , toLowerCase } from "@/utils/stringFun.js";
106110
import { getSysDictionaryList } from "@/api/sysDictionary";
107111
export default {
108112
name: "FieldDialog",
@@ -183,6 +187,10 @@ export default {
183187
};
184188
},
185189
methods: {
190+
autoFill(){
191+
this.dialogMiddle.fieldJson = toLowerCase(this.dialogMiddle.fieldName)
192+
this.dialogMiddle.columnName = toSQLLine(this.dialogMiddle.fieldJson)
193+
},
186194
async getDbfdOptions() {
187195
this.dialogMiddle.dataType = ""
188196
this.dialogMiddle.dataTypeLong = ""
@@ -201,7 +209,7 @@ export default {
201209
});
202210
203211
this.dictOptions = dictRes.data.list
204-
}
212+
},
205213
};
206214
</script>
207215
<style lang="scss">

0 commit comments

Comments
 (0)