Skip to content

Commit 2d3b039

Browse files
author
pixel
committed
Merge branch 'gva_gormv2_dev' of https://github.com/flipped-aurora/gin-vue-admin into develop
2 parents 864c468 + f936029 commit 2d3b039

File tree

11 files changed

+490
-195
lines changed

11 files changed

+490
-195
lines changed

server/config.yaml

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

6465
# local configuration
6566
local:

server/config/gorm.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +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"`
1213
}

server/initialize/gorm.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,12 @@ func GormMysql() *gorm.DB {
7373

7474
// gormConfig 根据配置决定是否开启日志
7575
func gormConfig(mod bool) *gorm.Config {
76+
if global.GVA_CONFIG.Mysql.LogZap {
77+
return &gorm.Config{
78+
Logger: Default.LogMode(logger.Info),
79+
DisableForeignKeyConstraintWhenMigrating: true,
80+
}
81+
}
7682
if mod {
7783
return &gorm.Config{
7884
Logger: logger.Default.LogMode(logger.Info),

server/initialize/logger.go

Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
package initialize
2+
3+
import (
4+
"context"
5+
"fmt"
6+
"gin-vue-admin/global"
7+
"go.uber.org/zap"
8+
"gorm.io/gorm/logger"
9+
"gorm.io/gorm/utils"
10+
"io/ioutil"
11+
"log"
12+
"os"
13+
"time"
14+
)
15+
16+
var (
17+
Discard = New(log.New(ioutil.Discard, "", log.LstdFlags), GormConfig{})
18+
Default = New(log.New(os.Stdout, "\r\n", log.LstdFlags), GormConfig{
19+
SlowThreshold: 200 * time.Millisecond,
20+
LogLevel: logger.Warn,
21+
Colorful: true,
22+
})
23+
Recorder = traceRecorder{Interface: Default, BeginAt: time.Now()}
24+
)
25+
26+
type traceRecorder struct {
27+
logger.Interface
28+
BeginAt time.Time
29+
SQL string
30+
RowsAffected int64
31+
Err error
32+
}
33+
34+
func New(writer Writer, config GormConfig) logger.Interface {
35+
var (
36+
infoStr = "%s\n[info] "
37+
warnStr = "%s\n[warn] "
38+
errStr = "%s\n[error] "
39+
traceStr = "%s\n[%.3fms] [rows:%v] %s"
40+
traceWarnStr = "%s %s\n[%.3fms] [rows:%v] %s"
41+
traceErrStr = "%s %s\n[%.3fms] [rows:%v] %s"
42+
)
43+
44+
if config.Colorful {
45+
infoStr = logger.Green + "%s\n" + logger.Reset + logger.Green + "[info] " + logger.Reset
46+
warnStr = logger.BlueBold + "%s\n" + logger.Reset + logger.Magenta + "[warn] " + logger.Reset
47+
errStr = logger.Magenta + "%s\n" + logger.Reset + logger.Red + "[error] " + logger.Reset
48+
traceStr = logger.Green + "%s\n" + logger.Reset + logger.Yellow + "[%.3fms] " + logger.BlueBold + "[rows:%v]" + logger.Reset + " %s"
49+
traceWarnStr = logger.Green + "%s " + logger.Yellow + "%s\n" + logger.Reset + logger.RedBold + "[%.3fms] " + logger.Yellow + "[rows:%v]" + logger.Magenta + " %s" + logger.Reset
50+
traceErrStr = logger.RedBold + "%s " + logger.MagentaBold + "%s\n" + logger.Reset + logger.Yellow + "[%.3fms] " + logger.BlueBold + "[rows:%v]" + logger.Reset + " %s"
51+
}
52+
53+
return &GormLogger{
54+
Writer: writer,
55+
GormConfig: config,
56+
infoStr: infoStr,
57+
warnStr: warnStr,
58+
errStr: errStr,
59+
traceStr: traceStr,
60+
traceWarnStr: traceWarnStr,
61+
traceErrStr: traceErrStr,
62+
}
63+
}
64+
65+
// Writer log writer interface
66+
type Writer interface {
67+
Printf(string, ...interface{})
68+
}
69+
70+
type GormConfig struct {
71+
SlowThreshold time.Duration
72+
Colorful bool
73+
LogLevel logger.LogLevel
74+
}
75+
76+
type GormLogger struct {
77+
Writer
78+
GormConfig
79+
infoStr, warnStr, errStr string
80+
traceStr, traceErrStr, traceWarnStr string
81+
}
82+
83+
func (g *GormLogger) LogMode(level logger.LogLevel) logger.Interface {
84+
newLogger := *g
85+
newLogger.LogLevel = level
86+
return &newLogger
87+
}
88+
89+
func (g *GormLogger) Info(ctx context.Context, message string, data ...interface{}) {
90+
if g.LogLevel >= logger.Info {
91+
g.Printf(g.infoStr+message, append([]interface{}{utils.FileWithLineNum()}, data...)...)
92+
}
93+
}
94+
95+
func (g *GormLogger) Warn(ctx context.Context, message string, data ...interface{}) {
96+
if g.LogLevel >= logger.Warn {
97+
g.Printf(g.warnStr+message, append([]interface{}{utils.FileWithLineNum()}, data...)...)
98+
}
99+
}
100+
101+
func (g *GormLogger) Error(ctx context.Context, message string, data ...interface{}) {
102+
if g.LogLevel >= logger.Error {
103+
g.Printf(g.errStr+message, append([]interface{}{utils.FileWithLineNum()}, data...)...)
104+
}
105+
}
106+
107+
func (g *GormLogger) Trace(ctx context.Context, begin time.Time, fc func() (string, int64), err error) {
108+
if g.LogLevel > 0 {
109+
elapsed := time.Since(begin)
110+
switch {
111+
case err != nil && g.LogLevel >= logger.Error:
112+
sql, rows := fc()
113+
if rows == -1 {
114+
g.Printf(g.traceErrStr, utils.FileWithLineNum(), err, float64(elapsed.Nanoseconds())/1e6, "-", sql)
115+
} else {
116+
g.Printf(g.traceErrStr, utils.FileWithLineNum(), err, float64(elapsed.Nanoseconds())/1e6, rows, sql)
117+
}
118+
case elapsed > g.SlowThreshold && g.SlowThreshold != 0 && g.LogLevel >= logger.Warn:
119+
sql, rows := fc()
120+
slowLog := fmt.Sprintf("SLOW SQL >= %v", g.SlowThreshold)
121+
if rows == -1 {
122+
g.Printf(g.traceWarnStr, utils.FileWithLineNum(), slowLog, float64(elapsed.Nanoseconds())/1e6, "-", sql)
123+
} else {
124+
g.Printf(g.traceWarnStr, utils.FileWithLineNum(), slowLog, float64(elapsed.Nanoseconds())/1e6, rows, sql)
125+
}
126+
case g.LogLevel >= logger.Info:
127+
sql, rows := fc()
128+
if rows == -1 {
129+
g.Printf(g.traceStr, utils.FileWithLineNum(), float64(elapsed.Nanoseconds())/1e6, "-", sql)
130+
} else {
131+
g.Printf(g.traceStr, utils.FileWithLineNum(), float64(elapsed.Nanoseconds())/1e6, rows, sql)
132+
}
133+
}
134+
}
135+
}
136+
137+
func (g *GormLogger) Printf(message string, data ...interface{}) {
138+
switch len(data) {
139+
case 0:
140+
global.GVA_LOG.Info(message)
141+
case 1:
142+
global.GVA_LOG.Info("gorm", zap.Any("src", data[0]))
143+
case 2:
144+
global.GVA_LOG.Info("gorm", zap.Any("src", data[0]), zap.Any("duration", data[1]))
145+
case 3:
146+
global.GVA_LOG.Info("gorm", zap.Any("src", data[0]), zap.Any("duration", data[1]), zap.Any("rows", data[2]))
147+
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]))
149+
}
150+
}

web/src/App.vue

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ export default {
1515
// 引入初始化样式
1616
@import '@/style/main.scss';
1717
@import '@/style/base.scss';
18+
@import '@/style/mobile.scss';
1819
#app {
1920
background: #eee;
2021
height: 100vh;

web/src/style/basics.scss

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,3 +32,6 @@ $color-table-tbody:#595959;
3232
$color-table-thead:#262626;
3333
// dashboard
3434
$height-car:68px;
35+
// mobile
36+
$padding-xs: 5px;
37+
$margin-xs: 5px;

web/src/style/main.scss

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1204,6 +1204,14 @@ $mainHight: 100vh;
12041204
top: 0;
12051205
box-sizing: border-box;
12061206
z-index: 999;
1207+
>.el-row{
1208+
padding: 0;
1209+
.el-col-lg-14{
1210+
height: 60px;
1211+
}
1212+
}
1213+
1214+
12071215
}
12081216

12091217

@@ -1387,14 +1395,14 @@ $mainHight: 100vh;
13871395

13881396
.car-left {
13891397
height: $height-car;
1390-
width: 70%;
1391-
float: left;
1398+
// width: 70%;
1399+
// float: left;
13921400
}
13931401

13941402
.car-right {
13951403
height: $height-car;
1396-
width: 29%;
1397-
float: left;
1404+
// width: 29%;
1405+
// float: left;
13981406

13991407
.flow,
14001408
.user-number,

web/src/style/mobile.scss

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
2+
@import '@/style/basics.scss';
3+
@media screen and (min-width: 320px)and (max-width: 750px){
4+
.el-header{
5+
padding: 0 $padding-xs;
6+
}
7+
.layout-cont {
8+
.main-cont{
9+
.breadcrumb{
10+
padding: 0 $padding-xs;
11+
}
12+
}
13+
}
14+
.layout-cont{
15+
.right-box{
16+
margin-right: $margin-xs;
17+
}
18+
}
19+
.search-component{
20+
width: 30px;
21+
}
22+
.screenfull{
23+
width: 26px;
24+
text-align: center;
25+
}
26+
.el-main{
27+
.admin-box{
28+
margin-left: 0;
29+
margin-right: 0;
30+
}
31+
.big.admin-box{
32+
padding: 0 0 15px 0;
33+
}
34+
.big {
35+
.bottom {
36+
.chart-player{
37+
height: auto!important;
38+
margin-bottom: 15px;
39+
}
40+
.todoapp{
41+
background-color: #fff;
42+
padding-bottom: 10px;
43+
}
44+
}
45+
}
46+
}
47+
48+
.card .car-left,
49+
.card .car-right{
50+
width: 100%;
51+
height: 100%;
52+
}
53+
.card{
54+
padding-left: $padding-xs;
55+
padding-right: $padding-xs;
56+
57+
}
58+
.card {
59+
.text{
60+
width: 100%;
61+
h4{
62+
white-space: break-spaces;
63+
}
64+
}
65+
}
66+
.shadow{
67+
margin-left: 5px;
68+
margin-right: 5px;
69+
.grid-content{
70+
margin-bottom: 10px;
71+
padding: 0;
72+
}
73+
}
74+
.el-dialog{
75+
width: 90%;
76+
}
77+
.el-transfer{
78+
.el-transfer-panel{
79+
width: 40%;
80+
display: inline-block;
81+
}
82+
.el-transfer__buttons{
83+
padding: 0 5px;
84+
display: inline-block;
85+
}
86+
87+
}
88+
89+
}

0 commit comments

Comments
 (0)