Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
飞一样的人
gin-vue-admin
提交
5d27f133
G
gin-vue-admin
项目概览
飞一样的人
/
gin-vue-admin
与 Fork 源项目一致
Fork自
FLIPPED-AURORA / gin-vue-admin
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
gin-vue-admin
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
5d27f133
编写于
2月 11, 2021
作者:
S
songzhibin97
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
抽出重复的内容优化PreviewTemp和CreateTemp
上级
457e9bb2
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
57 addition
and
86 deletion
+57
-86
server/service/sys_auto_code.go
server/service/sys_auto_code.go
+57
-86
未找到文件。
server/service/sys_auto_code.go
浏览文件 @
5d27f133
...
@@ -16,6 +16,11 @@ import (
...
@@ -16,6 +16,11 @@ import (
"gorm.io/gorm"
"gorm.io/gorm"
)
)
const
(
autoPath
=
"autoCode/"
basePath
=
"resource/template"
)
type
tplData
struct
{
type
tplData
struct
{
template
*
template
.
Template
template
*
template
.
Template
locationPath
string
locationPath
string
...
@@ -30,50 +35,10 @@ type tplData struct {
...
@@ -30,50 +35,10 @@ type tplData struct {
//@return: map[string]string, error
//@return: map[string]string, error
func
PreviewTemp
(
autoCode
model
.
AutoCodeStruct
)
(
map
[
string
]
string
,
error
)
{
func
PreviewTemp
(
autoCode
model
.
AutoCodeStruct
)
(
map
[
string
]
string
,
error
)
{
basePath
:=
"resource/template"
dataList
,
_
,
needMkdir
,
err
:=
getNeedList
(
&
autoCode
)
// 获取 basePath 文件夹下所有tpl文件
tplFileList
,
err
:=
GetAllTplFile
(
basePath
,
nil
)
if
err
!=
nil
{
return
nil
,
err
}
dataList
:=
make
([]
tplData
,
0
,
len
(
tplFileList
))
fileList
:=
make
([]
string
,
0
,
len
(
tplFileList
))
needMkdir
:=
make
([]
string
,
0
,
len
(
tplFileList
))
// 当文件夹下存在多个tpl文件时,改为map更合理
// 根据文件路径生成 tplData 结构体,待填充数据
for
_
,
value
:=
range
tplFileList
{
dataList
=
append
(
dataList
,
tplData
{
locationPath
:
value
})
}
// 生成 *Template, 填充 template 字段
for
index
,
value
:=
range
dataList
{
dataList
[
index
]
.
template
,
err
=
template
.
ParseFiles
(
value
.
locationPath
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
}
// 生成文件路径,填充 autoCodePath 字段,readme.txt.tpl不符合规则,需要特殊处理
// resource/template/web/api.js.tpl -> autoCode/web/autoCode.PackageName/api/autoCode.PackageName.js
// resource/template/readme.txt.tpl -> autoCode/readme.txt
autoPath
:=
"autoCode/"
for
index
,
value
:=
range
dataList
{
trimBase
:=
strings
.
TrimPrefix
(
value
.
locationPath
,
basePath
+
"/"
)
if
trimBase
==
"readme.txt.tpl"
{
dataList
[
index
]
.
autoCodePath
=
autoPath
+
"readme.txt"
continue
}
if
lastSeparator
:=
strings
.
LastIndex
(
trimBase
,
"/"
);
lastSeparator
!=
-
1
{
origFileName
:=
strings
.
TrimSuffix
(
trimBase
[
lastSeparator
+
1
:
],
".tpl"
)
firstDot
:=
strings
.
Index
(
origFileName
,
"."
)
if
firstDot
!=
-
1
{
dataList
[
index
]
.
autoCodePath
=
filepath
.
Join
(
autoPath
,
trimBase
[
:
lastSeparator
],
autoCode
.
PackageName
,
origFileName
[
:
firstDot
],
autoCode
.
PackageName
+
origFileName
[
firstDot
:
])
}
}
if
lastSeparator
:=
strings
.
LastIndex
(
dataList
[
index
]
.
autoCodePath
,
string
(
os
.
PathSeparator
));
lastSeparator
!=
-
1
{
needMkdir
=
append
(
needMkdir
,
dataList
[
index
]
.
autoCodePath
[
:
lastSeparator
])
}
}
// 写入文件前,先创建文件夹
// 写入文件前,先创建文件夹
if
err
=
utils
.
CreateDir
(
needMkdir
...
);
err
!=
nil
{
if
err
=
utils
.
CreateDir
(
needMkdir
...
);
err
!=
nil
{
...
@@ -89,7 +54,6 @@ func PreviewTemp(autoCode model.AutoCodeStruct) (map[string]string, error) {
...
@@ -89,7 +54,6 @@ func PreviewTemp(autoCode model.AutoCodeStruct) (map[string]string, error) {
if
ext
=
filepath
.
Ext
(
value
.
autoCodePath
);
ext
==
".txt"
{
if
ext
=
filepath
.
Ext
(
value
.
autoCodePath
);
ext
==
".txt"
{
continue
continue
}
}
fileList
=
append
(
fileList
,
value
.
autoCodePath
)
f
,
err
:=
os
.
OpenFile
(
value
.
autoCodePath
,
os
.
O_CREATE
|
os
.
O_WRONLY
,
0755
)
f
,
err
:=
os
.
OpenFile
(
value
.
autoCodePath
,
os
.
O_CREATE
|
os
.
O_WRONLY
,
0755
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
...
@@ -133,52 +97,10 @@ func PreviewTemp(autoCode model.AutoCodeStruct) (map[string]string, error) {
...
@@ -133,52 +97,10 @@ func PreviewTemp(autoCode model.AutoCodeStruct) (map[string]string, error) {
//@return: error
//@return: error
func
CreateTemp
(
autoCode
model
.
AutoCodeStruct
)
(
err
error
)
{
func
CreateTemp
(
autoCode
model
.
AutoCodeStruct
)
(
err
error
)
{
basePath
:=
"resource/template"
dataList
,
fileList
,
needMkdir
,
err
:=
getNeedList
(
&
autoCode
)
// 获取 basePath 文件夹下所有tpl文件
tplFileList
,
err
:=
GetAllTplFile
(
basePath
,
nil
)
if
err
!=
nil
{
if
err
!=
nil
{
return
err
return
err
}
}
dataList
:=
make
([]
tplData
,
0
,
len
(
tplFileList
))
fileList
:=
make
([]
string
,
0
,
len
(
tplFileList
))
needMkdir
:=
make
([]
string
,
0
,
len
(
tplFileList
))
// 当文件夹下存在多个tpl文件时,改为map更合理
// 根据文件路径生成 tplData 结构体,待填充数据
for
_
,
value
:=
range
tplFileList
{
dataList
=
append
(
dataList
,
tplData
{
locationPath
:
value
})
}
// 生成 *Template, 填充 template 字段
for
index
,
value
:=
range
dataList
{
dataList
[
index
]
.
template
,
err
=
template
.
ParseFiles
(
value
.
locationPath
)
if
err
!=
nil
{
return
err
}
}
// 生成文件路径,填充 autoCodePath 字段,readme.txt.tpl不符合规则,需要特殊处理
// resource/template/web/api.js.tpl -> autoCode/web/autoCode.PackageName/api/autoCode.PackageName.js
// resource/template/readme.txt.tpl -> autoCode/readme.txt
autoPath
:=
"autoCode/"
for
index
,
value
:=
range
dataList
{
trimBase
:=
strings
.
TrimPrefix
(
value
.
locationPath
,
basePath
+
"/"
)
if
trimBase
==
"readme.txt.tpl"
{
dataList
[
index
]
.
autoCodePath
=
autoPath
+
"readme.txt"
continue
}
if
lastSeparator
:=
strings
.
LastIndex
(
trimBase
,
"/"
);
lastSeparator
!=
-
1
{
origFileName
:=
strings
.
TrimSuffix
(
trimBase
[
lastSeparator
+
1
:
],
".tpl"
)
firstDot
:=
strings
.
Index
(
origFileName
,
"."
)
if
firstDot
!=
-
1
{
dataList
[
index
]
.
autoCodePath
=
filepath
.
Join
(
autoPath
,
trimBase
[
:
lastSeparator
],
autoCode
.
PackageName
,
origFileName
[
:
firstDot
],
autoCode
.
PackageName
+
origFileName
[
firstDot
:
])
}
}
if
lastSeparator
:=
strings
.
LastIndex
(
dataList
[
index
]
.
autoCodePath
,
string
(
os
.
PathSeparator
));
lastSeparator
!=
-
1
{
needMkdir
=
append
(
needMkdir
,
dataList
[
index
]
.
autoCodePath
[
:
lastSeparator
])
}
}
// 写入文件前,先创建文件夹
// 写入文件前,先创建文件夹
if
err
=
utils
.
CreateDir
(
needMkdir
...
);
err
!=
nil
{
if
err
=
utils
.
CreateDir
(
needMkdir
...
);
err
!=
nil
{
return
err
return
err
...
@@ -186,7 +108,6 @@ func CreateTemp(autoCode model.AutoCodeStruct) (err error) {
...
@@ -186,7 +108,6 @@ func CreateTemp(autoCode model.AutoCodeStruct) (err error) {
// 生成文件
// 生成文件
for
_
,
value
:=
range
dataList
{
for
_
,
value
:=
range
dataList
{
fileList
=
append
(
fileList
,
value
.
autoCodePath
)
f
,
err
:=
os
.
OpenFile
(
value
.
autoCodePath
,
os
.
O_CREATE
|
os
.
O_WRONLY
,
0755
)
f
,
err
:=
os
.
OpenFile
(
value
.
autoCodePath
,
os
.
O_CREATE
|
os
.
O_WRONLY
,
0755
)
if
err
!=
nil
{
if
err
!=
nil
{
return
err
return
err
...
@@ -379,3 +300,53 @@ func AutoCreateApi(a *model.AutoCodeStruct) (err error) {
...
@@ -379,3 +300,53 @@ func AutoCreateApi(a *model.AutoCodeStruct) (err error) {
})
})
return
err
return
err
}
}
func
getNeedList
(
autoCode
*
model
.
AutoCodeStruct
)
(
dataList
[]
tplData
,
fileList
[]
string
,
needMkdir
[]
string
,
err
error
)
{
// 获取 basePath 文件夹下所有tpl文件
tplFileList
,
err
:=
GetAllTplFile
(
basePath
,
nil
)
if
err
!=
nil
{
return
nil
,
nil
,
nil
,
err
}
dataList
=
make
([]
tplData
,
0
,
len
(
tplFileList
))
fileList
=
make
([]
string
,
0
,
len
(
tplFileList
))
needMkdir
=
make
([]
string
,
0
,
len
(
tplFileList
))
// 当文件夹下存在多个tpl文件时,改为map更合理
// 根据文件路径生成 tplData 结构体,待填充数据
for
_
,
value
:=
range
tplFileList
{
dataList
=
append
(
dataList
,
tplData
{
locationPath
:
value
})
}
// 生成 *Template, 填充 template 字段
for
index
,
value
:=
range
dataList
{
dataList
[
index
]
.
template
,
err
=
template
.
ParseFiles
(
value
.
locationPath
)
if
err
!=
nil
{
return
nil
,
nil
,
nil
,
err
}
}
// 生成文件路径,填充 autoCodePath 字段,readme.txt.tpl不符合规则,需要特殊处理
// resource/template/web/api.js.tpl -> autoCode/web/autoCode.PackageName/api/autoCode.PackageName.js
// resource/template/readme.txt.tpl -> autoCode/readme.txt
autoPath
:=
"autoCode/"
for
index
,
value
:=
range
dataList
{
trimBase
:=
strings
.
TrimPrefix
(
value
.
locationPath
,
basePath
+
"/"
)
if
trimBase
==
"readme.txt.tpl"
{
dataList
[
index
]
.
autoCodePath
=
autoPath
+
"readme.txt"
continue
}
if
lastSeparator
:=
strings
.
LastIndex
(
trimBase
,
"/"
);
lastSeparator
!=
-
1
{
origFileName
:=
strings
.
TrimSuffix
(
trimBase
[
lastSeparator
+
1
:
],
".tpl"
)
firstDot
:=
strings
.
Index
(
origFileName
,
"."
)
if
firstDot
!=
-
1
{
dataList
[
index
]
.
autoCodePath
=
filepath
.
Join
(
autoPath
,
trimBase
[
:
lastSeparator
],
autoCode
.
PackageName
,
origFileName
[
:
firstDot
],
autoCode
.
PackageName
+
origFileName
[
firstDot
:
])
}
}
if
lastSeparator
:=
strings
.
LastIndex
(
dataList
[
index
]
.
autoCodePath
,
string
(
os
.
PathSeparator
));
lastSeparator
!=
-
1
{
needMkdir
=
append
(
needMkdir
,
dataList
[
index
]
.
autoCodePath
[
:
lastSeparator
])
}
}
for
_
,
value
:=
range
dataList
{
fileList
=
append
(
fileList
,
value
.
autoCodePath
)
}
return
dataList
,
fileList
,
needMkdir
,
err
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录