Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
jinli gu
Eladmin
Commits
fd9fb2a6
"vscode:/vscode.git/clone" did not exist on "e2be2ff63c7b67731b5d4c6dceb6aebbf1db4cae"
Commit
fd9fb2a6
authored
Nov 01, 2019
by
dqjdda
Browse files
Merge branch '2.3dev'
parents
7895e547
1839ef8d
Changes
227
Hide whitespace changes
Inline
Side-by-side
eladmin-common/src/main/java/me/zhengjie/utils/ElAdminConstant.java
View file @
fd9fb2a6
...
@@ -14,7 +14,7 @@ public class ElAdminConstant {
...
@@ -14,7 +14,7 @@ public class ElAdminConstant {
/**
/**
* 用于IP定位转换
* 用于IP定位转换
*/
*/
public
static
final
String
REGION
=
"内网IP|内网IP"
;
static
final
String
REGION
=
"内网IP|内网IP"
;
/**
/**
* 常用接口
* 常用接口
...
...
eladmin-common/src/main/java/me/zhengjie/utils/EncryptUtils.java
View file @
fd9fb2a6
...
@@ -6,6 +6,7 @@ import javax.crypto.SecretKey;
...
@@ -6,6 +6,7 @@ import javax.crypto.SecretKey;
import
javax.crypto.SecretKeyFactory
;
import
javax.crypto.SecretKeyFactory
;
import
javax.crypto.spec.DESKeySpec
;
import
javax.crypto.spec.DESKeySpec
;
import
javax.crypto.spec.IvParameterSpec
;
import
javax.crypto.spec.IvParameterSpec
;
import
java.nio.charset.StandardCharsets
;
/**
/**
* 加密
* 加密
...
@@ -18,32 +19,29 @@ public class EncryptUtils {
...
@@ -18,32 +19,29 @@ public class EncryptUtils {
/**
/**
* 对称加密
* 对称加密
* @param source
* @return
* @throws Exception
*/
*/
public
static
String
desEncrypt
(
String
source
)
throws
Exception
{
public
static
String
desEncrypt
(
String
source
)
throws
Exception
{
if
(
source
==
null
||
source
.
length
()
==
0
){
if
(
source
==
null
||
source
.
length
()
==
0
){
return
null
;
return
null
;
}
}
Cipher
cipher
=
Cipher
.
getInstance
(
"DES/CBC/PKCS5Padding"
);
Cipher
cipher
=
Cipher
.
getInstance
(
"DES/CBC/PKCS5Padding"
);
DESKeySpec
desKeySpec
=
new
DESKeySpec
(
strKey
.
getBytes
(
"UTF-8"
));
DESKeySpec
desKeySpec
=
new
DESKeySpec
(
strKey
.
getBytes
(
StandardCharsets
.
UTF_8
));
SecretKeyFactory
keyFactory
=
SecretKeyFactory
.
getInstance
(
"DES"
);
SecretKeyFactory
keyFactory
=
SecretKeyFactory
.
getInstance
(
"DES"
);
SecretKey
secretKey
=
keyFactory
.
generateSecret
(
desKeySpec
);
SecretKey
secretKey
=
keyFactory
.
generateSecret
(
desKeySpec
);
IvParameterSpec
iv
=
new
IvParameterSpec
(
strParam
.
getBytes
(
"UTF-8"
));
IvParameterSpec
iv
=
new
IvParameterSpec
(
strParam
.
getBytes
(
StandardCharsets
.
UTF_8
));
cipher
.
init
(
Cipher
.
ENCRYPT_MODE
,
secretKey
,
iv
);
cipher
.
init
(
Cipher
.
ENCRYPT_MODE
,
secretKey
,
iv
);
return
byte2hex
(
return
byte2hex
(
cipher
.
doFinal
(
source
.
getBytes
(
"UTF-8"
))).
toUpperCase
();
cipher
.
doFinal
(
source
.
getBytes
(
StandardCharsets
.
UTF_8
))).
toUpperCase
();
}
}
p
ublic
static
String
byte2hex
(
byte
[]
inStr
)
{
p
rivate
static
String
byte2hex
(
byte
[]
inStr
)
{
String
stmp
;
String
stmp
;
StringBu
ff
er
out
=
new
StringBu
ff
er
(
inStr
.
length
*
2
);
StringBu
ild
er
out
=
new
StringBu
ild
er
(
inStr
.
length
*
2
);
for
(
int
n
=
0
;
n
<
inStr
.
length
;
n
++
)
{
for
(
byte
b
:
inStr
)
{
stmp
=
Integer
.
toHexString
(
inStr
[
n
]
&
0xFF
);
stmp
=
Integer
.
toHexString
(
b
&
0xFF
);
if
(
stmp
.
length
()
==
1
)
{
if
(
stmp
.
length
()
==
1
)
{
// 如果是0至F的单位字符串,则添加0
// 如果是0至F的单位字符串,则添加0
out
.
append
(
"0"
+
stmp
);
out
.
append
(
"0"
).
append
(
stmp
);
}
else
{
}
else
{
out
.
append
(
stmp
);
out
.
append
(
stmp
);
}
}
...
@@ -51,8 +49,7 @@ public class EncryptUtils {
...
@@ -51,8 +49,7 @@ public class EncryptUtils {
return
out
.
toString
();
return
out
.
toString
();
}
}
private
static
byte
[]
hex2byte
(
byte
[]
b
)
{
public
static
byte
[]
hex2byte
(
byte
[]
b
)
{
if
((
b
.
length
%
2
)
!=
0
){
if
((
b
.
length
%
2
)
!=
0
){
throw
new
IllegalArgumentException
(
"长度不是偶数"
);
throw
new
IllegalArgumentException
(
"长度不是偶数"
);
}
}
...
@@ -66,9 +63,6 @@ public class EncryptUtils {
...
@@ -66,9 +63,6 @@ public class EncryptUtils {
/**
/**
* 对称解密
* 对称解密
* @param source
* @return
* @throws Exception
*/
*/
public
static
String
desDecrypt
(
String
source
)
throws
Exception
{
public
static
String
desDecrypt
(
String
source
)
throws
Exception
{
if
(
source
==
null
||
source
.
length
()
==
0
){
if
(
source
==
null
||
source
.
length
()
==
0
){
...
@@ -76,10 +70,10 @@ public class EncryptUtils {
...
@@ -76,10 +70,10 @@ public class EncryptUtils {
}
}
byte
[]
src
=
hex2byte
(
source
.
getBytes
());
byte
[]
src
=
hex2byte
(
source
.
getBytes
());
Cipher
cipher
=
Cipher
.
getInstance
(
"DES/CBC/PKCS5Padding"
);
Cipher
cipher
=
Cipher
.
getInstance
(
"DES/CBC/PKCS5Padding"
);
DESKeySpec
desKeySpec
=
new
DESKeySpec
(
strKey
.
getBytes
(
"UTF-8"
));
DESKeySpec
desKeySpec
=
new
DESKeySpec
(
strKey
.
getBytes
(
StandardCharsets
.
UTF_8
));
SecretKeyFactory
keyFactory
=
SecretKeyFactory
.
getInstance
(
"DES"
);
SecretKeyFactory
keyFactory
=
SecretKeyFactory
.
getInstance
(
"DES"
);
SecretKey
secretKey
=
keyFactory
.
generateSecret
(
desKeySpec
);
SecretKey
secretKey
=
keyFactory
.
generateSecret
(
desKeySpec
);
IvParameterSpec
iv
=
new
IvParameterSpec
(
strParam
.
getBytes
(
"UTF-8"
));
IvParameterSpec
iv
=
new
IvParameterSpec
(
strParam
.
getBytes
(
StandardCharsets
.
UTF_8
));
cipher
.
init
(
Cipher
.
DECRYPT_MODE
,
secretKey
,
iv
);
cipher
.
init
(
Cipher
.
DECRYPT_MODE
,
secretKey
,
iv
);
byte
[]
retByte
=
cipher
.
doFinal
(
src
);
byte
[]
retByte
=
cipher
.
doFinal
(
src
);
return
new
String
(
retByte
);
return
new
String
(
retByte
);
...
@@ -87,8 +81,6 @@ public class EncryptUtils {
...
@@ -87,8 +81,6 @@ public class EncryptUtils {
/**
/**
* 密码加密
* 密码加密
* @param password
* @return
*/
*/
public
static
String
encryptPassword
(
String
password
){
public
static
String
encryptPassword
(
String
password
){
return
DigestUtils
.
md5DigestAsHex
(
password
.
getBytes
());
return
DigestUtils
.
md5DigestAsHex
(
password
.
getBytes
());
...
...
eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java
View file @
fd9fb2a6
...
@@ -11,6 +11,7 @@ import javax.activation.MimetypesFileTypeMap;
...
@@ -11,6 +11,7 @@ import javax.activation.MimetypesFileTypeMap;
import
javax.servlet.ServletOutputStream
;
import
javax.servlet.ServletOutputStream
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.*
;
import
java.io.*
;
import
java.security.MessageDigest
;
import
java.text.DecimalFormat
;
import
java.text.DecimalFormat
;
import
java.text.SimpleDateFormat
;
import
java.text.SimpleDateFormat
;
import
java.util.Date
;
import
java.util.Date
;
...
@@ -44,8 +45,6 @@ public class FileUtil extends cn.hutool.core.io.FileUtil {
...
@@ -44,8 +45,6 @@ public class FileUtil extends cn.hutool.core.io.FileUtil {
/**
/**
* MultipartFile转File
* MultipartFile转File
* @param multipartFile
* @return
*/
*/
public
static
File
toFile
(
MultipartFile
multipartFile
){
public
static
File
toFile
(
MultipartFile
multipartFile
){
// 获取文件名
// 获取文件名
...
@@ -65,21 +64,7 @@ public class FileUtil extends cn.hutool.core.io.FileUtil {
...
@@ -65,21 +64,7 @@ public class FileUtil extends cn.hutool.core.io.FileUtil {
}
}
/**
/**
* 删除
* 获取文件扩展名,不带 .
* @param files
*/
public
static
void
deleteFile
(
File
...
files
)
{
for
(
File
file
:
files
)
{
if
(
file
.
exists
())
{
file
.
delete
();
}
}
}
/**
* 获取文件扩展名
* @param filename
* @return
*/
*/
public
static
String
getExtensionName
(
String
filename
)
{
public
static
String
getExtensionName
(
String
filename
)
{
if
((
filename
!=
null
)
&&
(
filename
.
length
()
>
0
))
{
if
((
filename
!=
null
)
&&
(
filename
.
length
()
>
0
))
{
...
@@ -93,8 +78,6 @@ public class FileUtil extends cn.hutool.core.io.FileUtil {
...
@@ -93,8 +78,6 @@ public class FileUtil extends cn.hutool.core.io.FileUtil {
/**
/**
* Java文件操作 获取不带扩展名的文件名
* Java文件操作 获取不带扩展名的文件名
* @param filename
* @return
*/
*/
public
static
String
getFileNameNoEx
(
String
filename
)
{
public
static
String
getFileNameNoEx
(
String
filename
)
{
if
((
filename
!=
null
)
&&
(
filename
.
length
()
>
0
))
{
if
((
filename
!=
null
)
&&
(
filename
.
length
()
>
0
))
{
...
@@ -108,11 +91,9 @@ public class FileUtil extends cn.hutool.core.io.FileUtil {
...
@@ -108,11 +91,9 @@ public class FileUtil extends cn.hutool.core.io.FileUtil {
/**
/**
* 文件大小转换
* 文件大小转换
* @param size
* @return
*/
*/
public
static
String
getSize
(
long
size
){
public
static
String
getSize
(
long
size
){
String
resultSize
=
""
;
String
resultSize
;
if
(
size
/
GB
>=
1
)
{
if
(
size
/
GB
>=
1
)
{
//如果当前Byte的值大于等于1GB
//如果当前Byte的值大于等于1GB
resultSize
=
DF
.
format
(
size
/
(
float
)
GB
)
+
"GB "
;
resultSize
=
DF
.
format
(
size
/
(
float
)
GB
)
+
"GB "
;
...
@@ -130,18 +111,14 @@ public class FileUtil extends cn.hutool.core.io.FileUtil {
...
@@ -130,18 +111,14 @@ public class FileUtil extends cn.hutool.core.io.FileUtil {
/**
/**
* inputStream 转 File
* inputStream 转 File
* @param ins
* @param name
* @return
* @throws Exception
*/
*/
public
static
File
inputStreamToFile
(
InputStream
ins
,
String
name
)
throws
Exception
{
static
File
inputStreamToFile
(
InputStream
ins
,
String
name
)
throws
Exception
{
File
file
=
new
File
(
System
.
getProperty
(
"java.io.tmpdir"
)
+
File
.
separator
+
name
);
File
file
=
new
File
(
System
.
getProperty
(
"java.io.tmpdir"
)
+
File
.
separator
+
name
);
if
(
file
.
exists
())
{
if
(
file
.
exists
())
{
return
file
;
return
file
;
}
}
OutputStream
os
=
new
FileOutputStream
(
file
);
OutputStream
os
=
new
FileOutputStream
(
file
);
int
bytesRead
=
0
;
int
bytesRead
;
byte
[]
buffer
=
new
byte
[
8192
];
byte
[]
buffer
=
new
byte
[
8192
];
while
((
bytesRead
=
ins
.
read
(
buffer
,
0
,
8192
))
!=
-
1
)
{
while
((
bytesRead
=
ins
.
read
(
buffer
,
0
,
8192
))
!=
-
1
)
{
os
.
write
(
buffer
,
0
,
bytesRead
);
os
.
write
(
buffer
,
0
,
bytesRead
);
...
@@ -153,10 +130,6 @@ public class FileUtil extends cn.hutool.core.io.FileUtil {
...
@@ -153,10 +130,6 @@ public class FileUtil extends cn.hutool.core.io.FileUtil {
/**
/**
* 将文件名解析成文件的上传路径
* 将文件名解析成文件的上传路径
*
* @param file
* @param filePath
* @return 上传到服务器的文件名
*/
*/
public
static
File
upload
(
MultipartFile
file
,
String
filePath
)
{
public
static
File
upload
(
MultipartFile
file
,
String
filePath
)
{
Date
date
=
new
Date
();
Date
date
=
new
Date
();
...
@@ -170,10 +143,10 @@ public class FileUtil extends cn.hutool.core.io.FileUtil {
...
@@ -170,10 +143,10 @@ public class FileUtil extends cn.hutool.core.io.FileUtil {
File
dest
=
new
File
(
path
);
File
dest
=
new
File
(
path
);
// 检测是否存在目录
// 检测是否存在目录
if
(!
dest
.
getParentFile
().
exists
())
{
if
(!
dest
.
getParentFile
().
exists
())
{
dest
.
getParentFile
().
mkdirs
();
// 新建文件夹
dest
.
getParentFile
().
mkdirs
();
}
}
String
d
=
dest
.
getPath
();
// 文件写入
file
.
transferTo
(
dest
);
// 文件写入
file
.
transferTo
(
dest
);
return
dest
;
return
dest
;
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
e
.
printStackTrace
();
...
@@ -183,20 +156,16 @@ public class FileUtil extends cn.hutool.core.io.FileUtil {
...
@@ -183,20 +156,16 @@ public class FileUtil extends cn.hutool.core.io.FileUtil {
public
static
String
fileToBase64
(
File
file
)
throws
Exception
{
public
static
String
fileToBase64
(
File
file
)
throws
Exception
{
FileInputStream
inputFile
=
new
FileInputStream
(
file
);
FileInputStream
inputFile
=
new
FileInputStream
(
file
);
String
base64
=
null
;
String
base64
;
byte
[]
buffer
=
new
byte
[(
int
)
file
.
length
()];
byte
[]
buffer
=
new
byte
[(
int
)
file
.
length
()];
inputFile
.
read
(
buffer
);
inputFile
.
read
(
buffer
);
inputFile
.
close
();
inputFile
.
close
();
base64
=
new
Base64
().
encode
(
buffer
);
base64
=
Base64
.
encode
(
buffer
);
String
encoded
=
base64
.
replaceAll
(
"[\\s*\t\n\r]"
,
""
);
return
base64
.
replaceAll
(
"[\\s*\t\n\r]"
,
""
);
return
encoded
;
}
}
/**
/**
* 导出excel
* 导出excel
* @param list
* @return
* @throws Exception
*/
*/
public
static
void
downloadExcel
(
List
<
Map
<
String
,
Object
>>
list
,
HttpServletResponse
response
)
throws
IOException
{
public
static
void
downloadExcel
(
List
<
Map
<
String
,
Object
>>
list
,
HttpServletResponse
response
)
throws
IOException
{
String
tempPath
=
System
.
getProperty
(
"java.io.tmpdir"
)
+
IdUtil
.
fastSimpleUUID
()
+
".xlsx"
;
String
tempPath
=
System
.
getProperty
(
"java.io.tmpdir"
)
+
IdUtil
.
fastSimpleUUID
()
+
".xlsx"
;
...
@@ -217,28 +186,91 @@ public class FileUtil extends cn.hutool.core.io.FileUtil {
...
@@ -217,28 +186,91 @@ public class FileUtil extends cn.hutool.core.io.FileUtil {
}
}
public
static
String
getFileType
(
String
type
)
{
public
static
String
getFileType
(
String
type
)
{
String
documents
=
"txt doc pdf ppt pps xlsx xls"
;
String
documents
=
"txt doc pdf ppt pps xlsx xls
docx
"
;
String
music
=
"mp3 wav wma mpa ram ra aac aif m4a"
;
String
music
=
"mp3 wav wma mpa ram ra aac aif m4a"
;
String
video
=
"avi mpg mpe mpeg asf wmv mov qt rm mp4 flv m4v webm ogv ogg"
;
String
video
=
"avi mpg mpe mpeg asf wmv mov qt rm mp4 flv m4v webm ogv ogg"
;
String
image
=
"bmp dib pcp dif wmf gif jpg tif eps psd cdr iff tga pcd mpt png jpeg"
;
String
image
=
"bmp dib pcp dif wmf gif jpg tif eps psd cdr iff tga pcd mpt png jpeg"
;
if
(
image
.
indexOf
(
type
)
!=
-
1
){
if
(
image
.
contains
(
type
)
){
return
"图片"
;
return
"图片"
;
}
else
if
(
documents
.
indexOf
(
type
)
!=
-
1
){
}
else
if
(
documents
.
contains
(
type
)
){
return
"文档"
;
return
"文档"
;
}
else
if
(
music
.
indexOf
(
type
)
!=
-
1
){
}
else
if
(
music
.
contains
(
type
)
){
return
"音乐"
;
return
"音乐"
;
}
else
if
(
video
.
indexOf
(
type
)
!=
-
1
){
}
else
if
(
video
.
contains
(
type
)
){
return
"视频"
;
return
"视频"
;
}
else
return
"其他"
;
}
else
{
return
"其他"
;
}
}
}
public
static
String
getFileTypeByMimeType
(
String
type
)
{
public
static
String
getFileTypeByMimeType
(
String
type
)
{
String
mimeType
=
new
MimetypesFileTypeMap
().
getContentType
(
"."
+
type
);
String
mimeType
=
new
MimetypesFileTypeMap
().
getContentType
(
"."
+
type
);
return
mimeType
.
split
(
"
\\
/"
)[
0
];
return
mimeType
.
split
(
"/"
)[
0
];
}
}
public
static
void
checkSize
(
long
maxSize
,
long
size
)
{
public
static
void
checkSize
(
long
maxSize
,
long
size
)
{
if
(
size
>
(
maxSize
*
1024
*
1024
)){
if
(
size
>
(
maxSize
*
1024
*
1024
)){
throw
new
BadRequestException
(
"文件超出规定大小"
);
throw
new
BadRequestException
(
"文件超出规定大小"
);
}
}
}
}
/**
* 判断两个文件是否相同
*/
public
static
boolean
check
(
File
file1
,
File
file2
)
{
String
img1Md5
=
getMd5
(
file1
);
String
img2Md5
=
getMd5
(
file2
);
return
img1Md5
.
equals
(
img2Md5
);
}
/**
* 判断两个文件是否相同
*/
public
static
boolean
check
(
String
file1Md5
,
String
file2Md5
)
{
return
file1Md5
.
equals
(
file2Md5
);
}
private
static
byte
[]
getByte
(
File
file
)
{
// 得到文件长度
byte
[]
b
=
new
byte
[(
int
)
file
.
length
()];
try
{
InputStream
in
=
new
FileInputStream
(
file
);
try
{
in
.
read
(
b
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
catch
(
FileNotFoundException
e
)
{
e
.
printStackTrace
();
return
null
;
}
return
b
;
}
private
static
String
getMd5
(
byte
[]
bytes
)
{
// 16进制字符
char
[]
hexDigits
=
{
'0'
,
'1'
,
'2'
,
'3'
,
'4'
,
'5'
,
'6'
,
'7'
,
'8'
,
'9'
,
'a'
,
'b'
,
'c'
,
'd'
,
'e'
,
'f'
};
try
{
MessageDigest
mdTemp
=
MessageDigest
.
getInstance
(
"MD5"
);
mdTemp
.
update
(
bytes
);
byte
[]
md
=
mdTemp
.
digest
();
int
j
=
md
.
length
;
char
[]
str
=
new
char
[
j
*
2
];
int
k
=
0
;
// 移位 输出字符串
for
(
byte
byte0
:
md
)
{
str
[
k
++]
=
hexDigits
[
byte0
>>>
4
&
0xf
];
str
[
k
++]
=
hexDigits
[
byte0
&
0xf
];
}
return
new
String
(
str
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
null
;
}
public
static
String
getMd5
(
File
file
)
{
return
getMd5
(
getByte
(
file
));
}
}
}
eladmin-common/src/main/java/me/zhengjie/utils/PageUtil.java
View file @
fd9fb2a6
...
@@ -12,10 +12,6 @@ public class PageUtil extends cn.hutool.core.util.PageUtil {
...
@@ -12,10 +12,6 @@ public class PageUtil extends cn.hutool.core.util.PageUtil {
/**
/**
* List 分页
* List 分页
* @param page
* @param size
* @param list
* @return
*/
*/
public
static
List
toPage
(
int
page
,
int
size
,
List
list
)
{
public
static
List
toPage
(
int
page
,
int
size
,
List
list
)
{
int
fromIndex
=
page
*
size
;
int
fromIndex
=
page
*
size
;
...
@@ -32,10 +28,8 @@ public class PageUtil extends cn.hutool.core.util.PageUtil {
...
@@ -32,10 +28,8 @@ public class PageUtil extends cn.hutool.core.util.PageUtil {
/**
/**
* Page 数据处理,预防redis反序列化报错
* Page 数据处理,预防redis反序列化报错
* @param page
* @return
*/
*/
public
static
Map
toPage
(
Page
page
)
{
public
static
Map
<
String
,
Object
>
toPage
(
Page
page
)
{
Map
<
String
,
Object
>
map
=
new
LinkedHashMap
<>(
2
);
Map
<
String
,
Object
>
map
=
new
LinkedHashMap
<>(
2
);
map
.
put
(
"content"
,
page
.
getContent
());
map
.
put
(
"content"
,
page
.
getContent
());
map
.
put
(
"totalElements"
,
page
.
getTotalElements
());
map
.
put
(
"totalElements"
,
page
.
getTotalElements
());
...
@@ -43,11 +37,9 @@ public class PageUtil extends cn.hutool.core.util.PageUtil {
...
@@ -43,11 +37,9 @@ public class PageUtil extends cn.hutool.core.util.PageUtil {
}
}
/**
/**
* @param object
* 自定义分页
* @param totalElements
* @return
*/
*/
public
static
Map
toPage
(
Object
object
,
Object
totalElements
)
{
public
static
Map
<
String
,
Object
>
toPage
(
Object
object
,
Object
totalElements
)
{
Map
<
String
,
Object
>
map
=
new
LinkedHashMap
<>(
2
);
Map
<
String
,
Object
>
map
=
new
LinkedHashMap
<>(
2
);
map
.
put
(
"content"
,
object
);
map
.
put
(
"content"
,
object
);
map
.
put
(
"totalElements"
,
totalElements
);
map
.
put
(
"totalElements"
,
totalElements
);
...
...
eladmin-common/src/main/java/me/zhengjie/utils/QueryHelp.java
View file @
fd9fb2a6
...
@@ -15,18 +15,12 @@ import java.util.*;
...
@@ -15,18 +15,12 @@ import java.util.*;
@Slf4j
@Slf4j
public
class
QueryHelp
{
public
class
QueryHelp
{
/**
* @描述 : 转换为Predicate
* @作者 : Dong ZhaoYang
* @日期 : 2017/8/7
* @时间 : 17:25
*/
@SuppressWarnings
(
"unchecked"
)
@SuppressWarnings
(
"unchecked"
)
public
static
<
R
,
Q
>
Predicate
getPredicate
(
Root
<
R
>
root
,
Q
query
,
CriteriaBuilder
cb
)
{
public
static
<
R
,
Q
>
Predicate
getPredicate
(
Root
<
R
>
root
,
Q
query
,
CriteriaBuilder
cb
)
{
List
<
Predicate
>
list
=
new
ArrayList
<>();
List
<
Predicate
>
list
=
new
ArrayList
<>();
if
(
query
==
null
){
if
(
query
==
null
){
return
cb
.
and
(
list
.
toArray
(
new
Predicate
[
list
.
size
()
]));
return
cb
.
and
(
list
.
toArray
(
new
Predicate
[
0
]));
}
}
try
{
try
{
List
<
Field
>
fields
=
getAllFields
(
query
.
getClass
(),
new
ArrayList
<>());
List
<
Field
>
fields
=
getAllFields
(
query
.
getClass
(),
new
ArrayList
<>());
...
@@ -62,19 +56,20 @@ public class QueryHelp {
...
@@ -62,19 +56,20 @@ public class QueryHelp {
for
(
String
name
:
joinNames
)
{
for
(
String
name
:
joinNames
)
{
switch
(
q
.
join
())
{
switch
(
q
.
join
())
{
case
LEFT:
case
LEFT:
if
(
ObjectUtil
.
isNot
Empty
(
join
)){
if
(
ObjectUtil
.
isNot
Null
(
join
)){
join
=
join
.
join
(
name
,
JoinType
.
LEFT
);
join
=
join
.
join
(
name
,
JoinType
.
LEFT
);
}
else
{
}
else
{
join
=
root
.
join
(
name
,
JoinType
.
LEFT
);
join
=
root
.
join
(
name
,
JoinType
.
LEFT
);
}
}
break
;
break
;
case
RIGHT:
case
RIGHT:
if
(
ObjectUtil
.
isNot
Empty
(
join
)){
if
(
ObjectUtil
.
isNot
Null
(
join
)){
join
=
join
.
join
(
name
,
JoinType
.
RIGHT
);
join
=
join
.
join
(
name
,
JoinType
.
RIGHT
);
}
else
{
}
else
{
join
=
root
.
join
(
name
,
JoinType
.
RIGHT
);
join
=
root
.
join
(
name
,
JoinType
.
RIGHT
);
}
}
break
;
break
;
default
:
break
;
}
}
}
}
}
}
...
@@ -111,6 +106,7 @@ public class QueryHelp {
...
@@ -111,6 +106,7 @@ public class QueryHelp {
list
.
add
(
getExpression
(
attributeName
,
join
,
root
).
in
((
Collection
<
Long
>)
val
));
list
.
add
(
getExpression
(
attributeName
,
join
,
root
).
in
((
Collection
<
Long
>)
val
));
}
}
break
;
break
;
default
:
break
;
}
}
}
}
field
.
setAccessible
(
accessible
);
field
.
setAccessible
(
accessible
);
...
@@ -118,7 +114,8 @@ public class QueryHelp {
...
@@ -118,7 +114,8 @@ public class QueryHelp {
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
log
.
error
(
e
.
getMessage
(),
e
);
log
.
error
(
e
.
getMessage
(),
e
);
}
}
return
cb
.
and
(
list
.
toArray
(
new
Predicate
[
list
.
size
()]));
int
size
=
list
.
size
();
return
cb
.
and
(
list
.
toArray
(
new
Predicate
[
size
]));
}
}
@SuppressWarnings
(
"unchecked"
)
@SuppressWarnings
(
"unchecked"
)
...
@@ -130,21 +127,19 @@ public class QueryHelp {
...
@@ -130,21 +127,19 @@ public class QueryHelp {
}
}
}
}
@SuppressWarnings
(
"unchecked"
)
private
static
boolean
isBlank
(
final
CharSequence
cs
)
{
public
static
boolean
isBlank
(
final
CharSequence
cs
)
{
int
strLen
;
int
strLen
;
if
(
cs
==
null
||
(
strLen
=
cs
.
length
())
==
0
)
{
if
(
cs
==
null
||
(
strLen
=
cs
.
length
())
==
0
)
{
return
true
;
return
true
;
}
}
for
(
int
i
=
0
;
i
<
strLen
;
i
++)
{
for
(
int
i
=
0
;
i
<
strLen
;
i
++)
{
if
(
Character
.
isWhitespace
(
cs
.
charAt
(
i
))
==
false
)
{
if
(
!
Character
.
isWhitespace
(
cs
.
charAt
(
i
)))
{
return
false
;
return
false
;
}
}
}
}
return
true
;
return
true
;
}
}
@SuppressWarnings
(
"unchecked"
)
private
static
List
<
Field
>
getAllFields
(
Class
clazz
,
List
<
Field
>
fields
)
{
private
static
List
<
Field
>
getAllFields
(
Class
clazz
,
List
<
Field
>
fields
)
{
if
(
clazz
!=
null
)
{
if
(
clazz
!=
null
)
{
fields
.
addAll
(
Arrays
.
asList
(
clazz
.
getDeclaredFields
()));
fields
.
addAll
(
Arrays
.
asList
(
clazz
.
getDeclaredFields
()));
...
...
eladmin-common/src/main/java/me/zhengjie/utils/RequestHolder.java
View file @
fd9fb2a6
...
@@ -3,6 +3,7 @@ package me.zhengjie.utils;
...
@@ -3,6 +3,7 @@ package me.zhengjie.utils;
import
org.springframework.web.context.request.RequestContextHolder
;
import
org.springframework.web.context.request.RequestContextHolder
;
import
org.springframework.web.context.request.ServletRequestAttributes
;
import
org.springframework.web.context.request.ServletRequestAttributes
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletRequest
;
import
java.util.Objects
;
/**
/**
* 获取 HttpServletRequest
* 获取 HttpServletRequest
...
@@ -12,6 +13,6 @@ import javax.servlet.http.HttpServletRequest;
...
@@ -12,6 +13,6 @@ import javax.servlet.http.HttpServletRequest;
public
class
RequestHolder
{
public
class
RequestHolder
{
public
static
HttpServletRequest
getHttpServletRequest
()
{
public
static
HttpServletRequest
getHttpServletRequest
()
{
return
((
ServletRequestAttributes
)
RequestContextHolder
.
getRequestAttributes
()).
getRequest
();
return
((
ServletRequestAttributes
)
Objects
.
requireNonNull
(
RequestContextHolder
.
getRequestAttributes
())
)
.
getRequest
();
}
}
}
}
eladmin-common/src/main/java/me/zhengjie/utils/SecurityUtils.java
View file @
fd9fb2a6
...
@@ -13,7 +13,7 @@ import org.springframework.security.core.userdetails.UserDetails;
...
@@ -13,7 +13,7 @@ import org.springframework.security.core.userdetails.UserDetails;
public
class
SecurityUtils
{
public
class
SecurityUtils
{
public
static
UserDetails
getUserDetails
()
{
public
static
UserDetails
getUserDetails
()
{
UserDetails
userDetails
=
null
;
UserDetails
userDetails
;
try
{
try
{
userDetails
=
(
UserDetails
)
org
.
springframework
.
security
.
core
.
context
.
SecurityContextHolder
.
getContext
().
getAuthentication
().
getPrincipal
();
userDetails
=
(
UserDetails
)
org
.
springframework
.
security
.
core
.
context
.
SecurityContextHolder
.
getContext
().
getAuthentication
().
getPrincipal
();
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
...
@@ -28,8 +28,7 @@ public class SecurityUtils {
...
@@ -28,8 +28,7 @@ public class SecurityUtils {
*/
*/
public
static
String
getUsername
(){
public
static
String
getUsername
(){
Object
obj
=
getUserDetails
();
Object
obj
=
getUserDetails
();
JSONObject
json
=
new
JSONObject
(
obj
);
return
new
JSONObject
(
obj
).
get
(
"username"
,
String
.
class
);
return
json
.
get
(
"username"
,
String
.
class
);
}
}
/**
/**
...
@@ -38,7 +37,6 @@ public class SecurityUtils {
...
@@ -38,7 +37,6 @@ public class SecurityUtils {
*/
*/
public
static
Long
getUserId
(){
public
static
Long
getUserId
(){
Object
obj
=
getUserDetails
();
Object
obj
=
getUserDetails
();
JSONObject
json
=
new
JSONObject
(
obj
);
return
new
JSONObject
(
obj
).
get
(
"id"
,
Long
.
class
);
return
json
.
get
(
"id"
,
Long
.
class
);
}
}
}
}
eladmin-common/src/main/java/me/zhengjie/utils/SpringContextHolder.java
View file @
fd9fb2a6
...
@@ -7,7 +7,7 @@ import org.springframework.context.ApplicationContext;
...
@@ -7,7 +7,7 @@ import org.springframework.context.ApplicationContext;
import
org.springframework.context.ApplicationContextAware
;
import
org.springframework.context.ApplicationContextAware
;
/**
/**
* @author
* @author
Jie
* @date 2019-01-07
* @date 2019-01-07
*/
*/
@Slf4j
@Slf4j
...
@@ -15,17 +15,10 @@ public class SpringContextHolder implements ApplicationContextAware, DisposableB
...
@@ -15,17 +15,10 @@ public class SpringContextHolder implements ApplicationContextAware, DisposableB
private
static
ApplicationContext
applicationContext
=
null
;
private
static
ApplicationContext
applicationContext
=
null
;
/**
* 取得存储在静态变量中的ApplicationContext.
*/
public
static
ApplicationContext
getApplicationContext
()
{
assertContextInjected
();
return
applicationContext
;
}
/**
/**
* 从静态变量applicationContext中取得Bean, 自动转型为所赋值对象的类型.
* 从静态变量applicationContext中取得Bean, 自动转型为所赋值对象的类型.
*/
*/
@SuppressWarnings
(
"unchecked"
)
public
static
<
T
>
T
getBean
(
String
name
)
{
public
static
<
T
>
T
getBean
(
String
name
)
{
assertContextInjected
();
assertContextInjected
();
return
(
T
)
applicationContext
.
getBean
(
name
);
return
(
T
)
applicationContext
.
getBean
(
name
);
...
@@ -52,14 +45,14 @@ public class SpringContextHolder implements ApplicationContextAware, DisposableB
...
@@ -52,14 +45,14 @@ public class SpringContextHolder implements ApplicationContextAware, DisposableB
/**
/**
* 清除SpringContextHolder中的ApplicationContext为Null.
* 清除SpringContextHolder中的ApplicationContext为Null.
*/
*/
p
ublic
static
void
clearHolder
()
{
p
rivate
static
void
clearHolder
()
{
log
.
debug
(
"清除SpringContextHolder中的ApplicationContext:"
log
.
debug
(
"清除SpringContextHolder中的ApplicationContext:"
+
applicationContext
);
+
applicationContext
);
applicationContext
=
null
;
applicationContext
=
null
;
}
}
@Override
@Override
public
void
destroy
()
throws
Exception
{
public
void
destroy
(){
SpringContextHolder
.
clearHolder
();
SpringContextHolder
.
clearHolder
();
}
}
...
...
eladmin-common/src/main/java/me/zhengjie/utils/StringUtils.java
View file @
fd9fb2a6
package
me.zhengjie.utils
;
package
me.zhengjie.utils
;
import
cn.hutool.core.io.resource.ClassPathResource
;
import
cn.hutool.core.io.resource.ClassPathResource
;
import
eu.bitwalker.useragentutils.Browser
;
import
eu.bitwalker.useragentutils.UserAgent
;
import
org.lionsoul.ip2region.DataBlock
;
import
org.lionsoul.ip2region.DataBlock
;
import
org.lionsoul.ip2region.DbConfig
;
import
org.lionsoul.ip2region.DbConfig
;
import
org.lionsoul.ip2region.DbSearcher
;
import
org.lionsoul.ip2region.DbSearcher
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletRequest
;
import
java.io.File
;
import
java.io.File
;
import
java.io.UnsupportedEncodingException
;
import
java.lang.reflect.Method
;
import
java.lang.reflect.Method
;
import
java.net.InetAddress
;
import
java.net.UnknownHostException
;
import
java.util.Calendar
;
import
java.util.Calendar
;
import
java.util.Date
;
import
java.util.Date
;
...
@@ -18,25 +20,6 @@ import java.util.Date;
...
@@ -18,25 +20,6 @@ import java.util.Date;
public
class
StringUtils
extends
org
.
apache
.
commons
.
lang3
.
StringUtils
{
public
class
StringUtils
extends
org
.
apache
.
commons
.
lang3
.
StringUtils
{
private
static
final
char
SEPARATOR
=
'_'
;
private
static
final
char
SEPARATOR
=
'_'
;
private
static
final
String
CHARSET_NAME
=
"UTF-8"
;
/**
* 是否包含字符串
*
* @param str 验证字符串
* @param strs 字符串组
* @return 包含返回true
*/
public
static
boolean
inString
(
String
str
,
String
...
strs
)
{
if
(
str
!=
null
)
{
for
(
String
s
:
strs
)
{
if
(
str
.
equals
(
trim
(
s
)))
{
return
true
;
}
}
}
return
false
;
}
/**
/**
* 驼峰命名法工具
* 驼峰命名法工具
...
@@ -92,7 +75,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils {
...
@@ -92,7 +75,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils {
* toCapitalizeCamelCase("hello_world") == "HelloWorld"
* toCapitalizeCamelCase("hello_world") == "HelloWorld"
* toUnderScoreCase("helloWorld") = "hello_world"
* toUnderScoreCase("helloWorld") = "hello_world"
*/
*/
public
static
String
toUnderScoreCase
(
String
s
)
{
static
String
toUnderScoreCase
(
String
s
)
{
if
(
s
==
null
)
{
if
(
s
==
null
)
{
return
null
;
return
null
;
}
}
...
@@ -125,53 +108,45 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils {
...
@@ -125,53 +108,45 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils {
/**
/**
* 获取ip地址
* 获取ip地址
* @param request
* @return
*/
*/
public
static
String
getI
P
(
HttpServletRequest
request
)
{
public
static
String
getI
p
(
HttpServletRequest
request
)
{
String
ip
=
request
.
getHeader
(
"x-forwarded-for"
);
String
ip
=
request
.
getHeader
(
"x-forwarded-for"
);
if
(
ip
==
null
||
ip
.
length
()
==
0
||
"unknown"
.
equalsIgnoreCase
(
ip
))
{
if
(
ip
==
null
||
ip
.
length
()
==
0
||
"unknown"
.
equalsIgnoreCase
(
ip
))
{
ip
=
request
.
getHeader
(
"Proxy-Client-IP"
);
ip
=
request
.
getHeader
(
"Proxy-Client-IP"
);
}
}
if
(
ip
==
null
||
ip
.
length
()
==
0
||
"unknown"
.
equalsIgnoreCase
(
ip
))
{
if
(
ip
==
null
||
ip
.
length
()
==
0
||
"unknown"
.
equalsIgnoreCase
(
ip
))
{
ip
=
request
.
getHeader
(
"WL-Proxy-Client-IP"
);
ip
=
request
.
getHeader
(
"WL-Proxy-Client-IP"
);
}
}
if
(
ip
==
null
||
ip
.
length
()
==
0
||
"unknown"
.
equalsIgnoreCase
(
ip
))
{
if
(
ip
==
null
||
ip
.
length
()
==
0
||
"unknown"
.
equalsIgnoreCase
(
ip
))
{
ip
=
request
.
getRemoteAddr
();
ip
=
request
.
getRemoteAddr
();
}
}
String
[]
ips
=
ip
.
split
(
","
);
if
(
ip
.
contains
(
","
))
{
return
"0:0:0:0:0:0:0:1"
.
equals
(
ips
[
0
])?
"127.0.0.1"
:
ips
[
0
];
ip
=
ip
.
split
(
","
)[
0
];
}
if
(
"127.0.0.1"
.
equals
(
ip
))
{
// 获取本机真正的ip地址
try
{
ip
=
InetAddress
.
getLocalHost
().
getHostAddress
();
}
catch
(
UnknownHostException
e
)
{
e
.
printStackTrace
();
}
}
return
ip
;
}
}
/**
/**
* 根据ip获取详细地址
* 根据ip获取详细地址
* @param ip
* @return
*/
*/
public
static
String
getCityInfo
(
String
ip
)
{
public
static
String
getCityInfo
(
String
ip
)
{
try
{
try
{
String
path
=
"ip2region/ip2region.db"
;
String
path
=
"ip2region/ip2region.db"
;
String
name
=
"ip2region.db"
;
String
name
=
"ip2region.db"
;
int
algorithm
=
DbSearcher
.
BTREE_ALGORITHM
;
DbConfig
config
=
new
DbConfig
();
DbConfig
config
=
new
DbConfig
();
File
file
=
FileUtil
.
inputStreamToFile
(
new
ClassPathResource
(
path
).
getStream
(),
name
);
File
file
=
FileUtil
.
inputStreamToFile
(
new
ClassPathResource
(
path
).
getStream
(),
name
);
DbSearcher
searcher
=
new
DbSearcher
(
config
,
file
.
getPath
());
DbSearcher
searcher
=
new
DbSearcher
(
config
,
file
.
getPath
());
Method
method
=
null
;
Method
method
;
switch
(
algorithm
)
{
method
=
searcher
.
getClass
().
getMethod
(
"btreeSearch"
,
String
.
class
);
case
DbSearcher
.
BTREE_ALGORITHM
:
DataBlock
dataBlock
;
method
=
searcher
.
getClass
().
getMethod
(
"btreeSearch"
,
String
.
class
);
break
;
case
DbSearcher
.
BINARY_ALGORITHM
:
method
=
searcher
.
getClass
().
getMethod
(
"binarySearch"
,
String
.
class
);
break
;
case
DbSearcher
.
MEMORY_ALGORITYM
:
method
=
searcher
.
getClass
().
getMethod
(
"memorySearch"
,
String
.
class
);
break
;
default
:
method
=
searcher
.
getClass
().
getMethod
(
"memorySearch"
,
String
.
class
);
break
;
}
DataBlock
dataBlock
=
null
;
dataBlock
=
(
DataBlock
)
method
.
invoke
(
searcher
,
ip
);
dataBlock
=
(
DataBlock
)
method
.
invoke
(
searcher
,
ip
);
String
address
=
dataBlock
.
getRegion
().
replace
(
"0|"
,
""
);
String
address
=
dataBlock
.
getRegion
().
replace
(
"0|"
,
""
);
if
(
address
.
charAt
(
address
.
length
()-
1
)
==
'|'
){
if
(
address
.
charAt
(
address
.
length
()-
1
)
==
'|'
){
...
@@ -184,6 +159,12 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils {
...
@@ -184,6 +159,12 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils {
return
""
;
return
""
;
}
}
public
static
String
getBrowser
(
HttpServletRequest
request
){
UserAgent
userAgent
=
UserAgent
.
parseUserAgentString
(
request
.
getHeader
(
"User-Agent"
));
Browser
browser
=
userAgent
.
getBrowser
();
return
browser
.
getName
();
}
/**
/**
* 获得当天是周几
* 获得当天是周几
*/
*/
...
...
eladmin-common/src/main/java/me/zhengjie/utils/ThrowableUtil.java
View file @
fd9fb2a6
...
@@ -2,30 +2,23 @@ package me.zhengjie.utils;
...
@@ -2,30 +2,23 @@ package me.zhengjie.utils;
import
me.zhengjie.exception.BadRequestException
;
import
me.zhengjie.exception.BadRequestException
;
import
org.hibernate.exception.ConstraintViolationException
;
import
org.hibernate.exception.ConstraintViolationException
;
import
java.io.PrintWriter
;
import
java.io.PrintWriter
;
import
java.io.StringWriter
;
import
java.io.StringWriter
;
/**
/**
* 异常工具
* 异常工具
2019-01-06
* @author Zheng Jie
* @author Zheng Jie
* @date 2019-01-06
*/
*/
public
class
ThrowableUtil
{
public
class
ThrowableUtil
{
/**
/**
* 获取堆栈信息
* 获取堆栈信息
* @param throwable
* @return
*/
*/
public
static
String
getStackTrace
(
Throwable
throwable
){
public
static
String
getStackTrace
(
Throwable
throwable
){
StringWriter
sw
=
new
StringWriter
();
StringWriter
sw
=
new
StringWriter
();
PrintWriter
pw
=
new
PrintWriter
(
sw
);
try
(
PrintWriter
pw
=
new
PrintWriter
(
sw
))
{
try
{
throwable
.
printStackTrace
(
pw
);
throwable
.
printStackTrace
(
pw
);
return
sw
.
toString
();
return
sw
.
toString
();
}
finally
{
pw
.
close
();
}
}
}
}
...
@@ -34,9 +27,10 @@ public class ThrowableUtil {
...
@@ -34,9 +27,10 @@ public class ThrowableUtil {
while
((
t
!=
null
)
&&
!(
t
instanceof
ConstraintViolationException
))
{
while
((
t
!=
null
)
&&
!(
t
instanceof
ConstraintViolationException
))
{
t
=
t
.
getCause
();
t
=
t
.
getCause
();
}
}
if
(
t
instanceof
ConstraintViolationException
)
{
if
(
t
!=
null
)
{
throw
new
BadRequestException
(
msg
);
throw
new
BadRequestException
(
msg
);
}
}
assert
false
;
throw
new
BadRequestException
(
"删除失败:"
+
t
.
getMessage
());
throw
new
BadRequestException
(
"删除失败:"
+
t
.
getMessage
());
}
}
}
}
eladmin-common/src/main/java/me/zhengjie/utils/TranslatorUtil.java
View file @
fd9fb2a6
package
me.zhengjie.utils
;
package
me.zhengjie.utils
;
import
cn.hutool.json.JSONArray
;
import
cn.hutool.json.JSONArray
;
import
lombok.var
;
import
java.io.BufferedReader
;
import
java.io.BufferedReader
;
import
java.io.InputStreamReader
;
import
java.io.InputStreamReader
;
import
java.net.HttpURLConnection
;
import
java.net.HttpURLConnection
;
...
@@ -26,7 +24,7 @@ public class TranslatorUtil {
...
@@ -26,7 +24,7 @@ public class TranslatorUtil {
BufferedReader
in
=
new
BufferedReader
(
BufferedReader
in
=
new
BufferedReader
(
new
InputStreamReader
(
con
.
getInputStream
()));
new
InputStreamReader
(
con
.
getInputStream
()));
String
inputLine
;
String
inputLine
;
StringBu
ff
er
response
=
new
StringBu
ff
er
();
StringBu
ild
er
response
=
new
StringBu
ild
er
();
while
((
inputLine
=
in
.
readLine
())
!=
null
)
{
while
((
inputLine
=
in
.
readLine
())
!=
null
)
{
response
.
append
(
inputLine
);
response
.
append
(
inputLine
);
...
@@ -38,15 +36,12 @@ public class TranslatorUtil {
...
@@ -38,15 +36,12 @@ public class TranslatorUtil {
}
}
}
}
private
static
String
parseResult
(
String
inputJson
)
throws
Exception
{
private
static
String
parseResult
(
String
inputJson
){
JSONArray
jsonArray
=
new
JSONArray
(
inputJson
);
JSONArray
jsonArray2
=
(
JSONArray
)
new
JSONArray
(
inputJson
).
get
(
0
);
JSONArray
jsonArray2
=
(
JSONArray
)
jsonArray
.
get
(
0
);
StringBuilder
result
=
new
StringBuilder
();
String
result
=
""
;
for
(
Object
o
:
jsonArray2
)
{
result
.
append
(((
JSONArray
)
o
).
get
(
0
).
toString
());
for
(
var
i
=
0
;
i
<
jsonArray2
.
size
();
i
++){
result
+=
((
JSONArray
)
jsonArray2
.
get
(
i
)).
get
(
0
).
toString
();
}
}
return
result
;
return
result
.
toString
()
;
}
}
}
}
eladmin-common/src/main/java/me/zhengjie/utils/ValidationUtil.java
View file @
fd9fb2a6
package
me.zhengjie.utils
;
package
me.zhengjie.utils
;
import
cn.hutool.core.util.ObjectUtil
;
import
me.zhengjie.exception.BadRequestException
;
import
me.zhengjie.exception.BadRequestException
;
import
java.util.Optional
;
/**
/**
* 验证工具
* 验证工具
...
@@ -12,27 +12,22 @@ public class ValidationUtil{
...
@@ -12,27 +12,22 @@ public class ValidationUtil{
/**
/**
* 验证空
* 验证空
* @param optional
*/
*/
public
static
void
isNull
(
Optional
optional
,
String
entity
,
String
parameter
,
Object
value
){
public
static
void
isNull
(
Object
obj
,
String
entity
,
String
parameter
,
Object
value
){
if
(!
optional
.
isPresent
()){
if
(
ObjectUtil
.
isNull
(
obj
)){
String
msg
=
entity
String
msg
=
entity
+
" 不存在: "
+
parameter
+
" is "
+
value
;
+
" 不存在 "
+
"{ "
+
parameter
+
":"
+
value
.
toString
()
+
" }"
;
throw
new
BadRequestException
(
msg
);
throw
new
BadRequestException
(
msg
);
}
}
}
}
/**
/**
* 验证是否为邮箱
* 验证是否为邮箱
* @param string
* @return
*/
*/
public
static
boolean
isEmail
(
String
string
)
{
public
static
boolean
isEmail
(
String
string
)
{
if
(
string
==
null
){
if
(
string
==
null
){
return
false
;
return
false
;
}
}
String
regEx1
=
"^([a-z0-9A-Z]+[-|
\\
.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$"
;
String
regEx1
=
"^([a-z0-9A-Z]+[-|.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$"
;
return
string
.
matches
(
regEx1
);
return
string
.
matches
(
regEx1
);
}
}
}
}
eladmin-common/src/test/java/me/zhengjie/utils/StringUtilsTest.java
View file @
fd9fb2a6
...
@@ -11,12 +11,6 @@ import static org.junit.Assert.*;
...
@@ -11,12 +11,6 @@ import static org.junit.Assert.*;
public
class
StringUtilsTest
{
public
class
StringUtilsTest
{
@Test
public
void
testInString
()
{
assertTrue
(
inString
(
"?"
,
"?"
));
assertFalse
(
inString
(
"?"
,
new
String
[]{}));
}
@Test
@Test
public
void
testToCamelCase
()
{
public
void
testToCamelCase
()
{
assertNull
(
toCamelCase
(
null
));
assertNull
(
toCamelCase
(
null
));
...
@@ -44,6 +38,6 @@ public class StringUtilsTest {
...
@@ -44,6 +38,6 @@ public class StringUtilsTest {
@Test
@Test
public
void
testGetIP
()
{
public
void
testGetIP
()
{
assertEquals
(
"127.0.0.1"
,
getI
P
(
new
MockHttpServletRequest
()));
assertEquals
(
"127.0.0.1"
,
getI
p
(
new
MockHttpServletRequest
()));
}
}
}
}
\ No newline at end of file
eladmin-generator/pom.xml
View file @
fd9fb2a6
...
@@ -5,7 +5,7 @@
...
@@ -5,7 +5,7 @@
<parent>
<parent>
<artifactId>
eladmin
</artifactId>
<artifactId>
eladmin
</artifactId>
<groupId>
me.zhengjie
</groupId>
<groupId>
me.zhengjie
</groupId>
<version>
2.
2
</version>
<version>
2.
3
</version>
</parent>
</parent>
<modelVersion>
4.0.0
</modelVersion>
<modelVersion>
4.0.0
</modelVersion>
...
@@ -20,7 +20,7 @@
...
@@ -20,7 +20,7 @@
<dependency>
<dependency>
<groupId>
me.zhengjie
</groupId>
<groupId>
me.zhengjie
</groupId>
<artifactId>
eladmin-common
</artifactId>
<artifactId>
eladmin-common
</artifactId>
<version>
2.
2
</version>
<version>
2.
3
</version>
</dependency>
</dependency>
<!--模板引擎-->
<!--模板引擎-->
...
...
eladmin-generator/src/main/java/me/zhengjie/domain/GenConfig.java
View file @
fd9fb2a6
...
@@ -16,26 +16,26 @@ public class GenConfig {
...
@@ -16,26 +16,26 @@ public class GenConfig {
@Id
@Id
private
Long
id
;
private
Long
id
;
/
**
包路径
**/
/
/
包路径
private
String
pack
;
private
String
pack
;
/
**
模块名
**/
/
/
模块名
@Column
(
name
=
"module_name"
)
@Column
(
name
=
"module_name"
)
private
String
moduleName
;
private
String
moduleName
;
/
**
前端文件路径
**/
/
/
前端文件路径
private
String
path
;
private
String
path
;
/
**
前端文件路径
**/
/
/
前端文件路径
@Column
(
name
=
"api_path"
)
@Column
(
name
=
"api_path"
)
private
String
apiPath
;
private
String
apiPath
;
/
**
作者
**/
/
/
作者
private
String
author
;
private
String
author
;
/
**
表前缀
**/
/
/
表前缀
private
String
prefix
;
private
String
prefix
;
/
**
是否覆盖
**/
/
/
是否覆盖
private
Boolean
cover
;
private
Boolean
cover
;
}
}
eladmin-generator/src/main/java/me/zhengjie/domain/vo/ColumnInfo.java
View file @
fd9fb2a6
...
@@ -14,27 +14,27 @@ import lombok.NoArgsConstructor;
...
@@ -14,27 +14,27 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor
@NoArgsConstructor
public
class
ColumnInfo
{
public
class
ColumnInfo
{
/
**
数据库字段名称
**/
/
/
数据库字段名称
private
Object
columnName
;
private
Object
columnName
;
/
**
允许空值
**/
/
/
允许空值
private
Object
isNullable
;
private
Object
isNullable
;
/
**
数据库字段类型
**/
/
/
数据库字段类型
private
Object
columnType
;
private
Object
columnType
;
/
**
数据库字段注释
**/
/
/
数据库字段注释
private
Object
columnComment
;
private
Object
columnComment
;
/
**
数据库字段键类型
**/
/
/
数据库字段键类型
private
Object
columnKey
;
private
Object
columnKey
;
/
**
额外的参数
**/
/
/
额外的参数
private
Object
extra
;
private
Object
extra
;
/
**
查询 1:模糊 2:精确
**/
/
/
查询 1:模糊 2:精确
private
String
columnQuery
;
private
String
columnQuery
;
/
**
是否在列表显示
**/
/
/
是否在列表显示
private
String
columnShow
;
private
String
columnShow
;
}
}
eladmin-generator/src/main/java/me/zhengjie/domain/vo/TableInfo.java
View file @
fd9fb2a6
...
@@ -14,10 +14,10 @@ import lombok.NoArgsConstructor;
...
@@ -14,10 +14,10 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor
@NoArgsConstructor
public
class
TableInfo
{
public
class
TableInfo
{
/
**
表名称
**/
/
/
表名称
private
Object
tableName
;
private
Object
tableName
;
/
**
创建日期
**/
/
/
创建日期
private
Object
createTime
;
private
Object
createTime
;
// 数据库引擎
// 数据库引擎
...
...
eladmin-generator/src/main/java/me/zhengjie/rest/GenConfigController.java
View file @
fd9fb2a6
package
me.zhengjie.rest
;
package
me.zhengjie.rest
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
me.zhengjie.domain.GenConfig
;
import
me.zhengjie.domain.GenConfig
;
import
me.zhengjie.service.GenConfigService
;
import
me.zhengjie.service.GenConfigService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.validation.annotation.Validated
;
...
@@ -13,23 +14,25 @@ import org.springframework.web.bind.annotation.*;
...
@@ -13,23 +14,25 @@ import org.springframework.web.bind.annotation.*;
* @date 2019-01-14
* @date 2019-01-14
*/
*/
@RestController
@RestController
@RequestMapping
(
"api"
)
@RequestMapping
(
"/api/genConfig"
)
@Api
(
tags
=
"系统:代码生成器配置管理"
)
public
class
GenConfigController
{
public
class
GenConfigController
{
@Autowired
private
final
GenConfigService
genConfigService
;
private
GenConfigService
genConfigService
;
/**
public
GenConfigController
(
GenConfigService
genConfigService
)
{
* 查询生成器配置
this
.
genConfigService
=
genConfigService
;
* @return
}
*/
@GetMapping
(
value
=
"/genConfig"
)
@ApiOperation
(
"查询"
)
@GetMapping
public
ResponseEntity
get
(){
public
ResponseEntity
get
(){
return
new
ResponseEntity
(
genConfigService
.
find
(),
HttpStatus
.
OK
);
return
new
ResponseEntity
<>
(
genConfigService
.
find
(),
HttpStatus
.
OK
);
}
}
@PutMapping
(
value
=
"/genConfig"
)
@ApiOperation
(
"修改"
)
@PutMapping
public
ResponseEntity
emailConfig
(
@Validated
@RequestBody
GenConfig
genConfig
){
public
ResponseEntity
emailConfig
(
@Validated
@RequestBody
GenConfig
genConfig
){
return
new
ResponseEntity
(
genConfigService
.
update
(
genConfig
),
HttpStatus
.
OK
);
return
new
ResponseEntity
<>
(
genConfigService
.
update
(
genConfig
),
HttpStatus
.
OK
);
}
}
}
}
eladmin-generator/src/main/java/me/zhengjie/rest/GeneratorController.java
View file @
fd9fb2a6
package
me.zhengjie.rest
;
package
me.zhengjie.rest
;
import
cn.hutool.core.util.PageUtil
;
import
cn.hutool.core.util.PageUtil
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
me.zhengjie.domain.vo.ColumnInfo
;
import
me.zhengjie.domain.vo.ColumnInfo
;
import
me.zhengjie.exception.BadRequestException
;
import
me.zhengjie.exception.BadRequestException
;
import
me.zhengjie.service.GenConfigService
;
import
me.zhengjie.service.GenConfigService
;
import
me.zhengjie.service.GeneratorService
;
import
me.zhengjie.service.GeneratorService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.http.ResponseEntity
;
...
@@ -17,49 +18,39 @@ import java.util.List;
...
@@ -17,49 +18,39 @@ import java.util.List;
* @date 2019-01-02
* @date 2019-01-02
*/
*/
@RestController
@RestController
@RequestMapping
(
"api"
)
@RequestMapping
(
"/api/generator"
)
@Api
(
tags
=
"系统:代码生成管理"
)
public
class
GeneratorController
{
public
class
GeneratorController
{
@Autowired
private
final
GeneratorService
generatorService
;
private
GeneratorService
generatorService
;
@Autowired
private
final
GenConfigService
genConfigService
;
private
GenConfigService
genConfigService
;
@Value
(
"${generator.enabled}"
)
@Value
(
"${generator.enabled}"
)
private
Boolean
generatorEnabled
;
private
Boolean
generatorEnabled
;
/**
public
GeneratorController
(
GeneratorService
generatorService
,
GenConfigService
genConfigService
)
{
* 查询数据库元数据
this
.
generatorService
=
generatorService
;
* @param name
this
.
genConfigService
=
genConfigService
;
* @param page
}
* @param size
* @return
@ApiOperation
(
"查询数据库元数据"
)
*/
@GetMapping
(
value
=
"/tables"
)
@GetMapping
(
value
=
"/generator/tables"
)
public
ResponseEntity
getTables
(
@RequestParam
(
defaultValue
=
""
)
String
name
,
public
ResponseEntity
getTables
(
@RequestParam
(
defaultValue
=
""
)
String
name
,
@RequestParam
(
defaultValue
=
"0"
)
Integer
page
,
@RequestParam
(
defaultValue
=
"0"
)
Integer
page
,
@RequestParam
(
defaultValue
=
"10"
)
Integer
size
){
@RequestParam
(
defaultValue
=
"10"
)
Integer
size
){
int
[]
startEnd
=
PageUtil
.
transToStartEnd
(
page
+
1
,
size
);
int
[]
startEnd
=
PageUtil
.
transToStartEnd
(
page
+
1
,
size
);
return
new
ResponseEntity
(
generatorService
.
getTables
(
name
,
startEnd
),
HttpStatus
.
OK
);
return
new
ResponseEntity
<>
(
generatorService
.
getTables
(
name
,
startEnd
),
HttpStatus
.
OK
);
}
}
/**
@ApiOperation
(
"查询表内元数据"
)
* 查询表内元数据
@GetMapping
(
value
=
"/columns"
)
* @param tableName
* @return
*/
@GetMapping
(
value
=
"/generator/columns"
)
public
ResponseEntity
getTables
(
@RequestParam
String
tableName
){
public
ResponseEntity
getTables
(
@RequestParam
String
tableName
){
return
new
ResponseEntity
(
generatorService
.
getColumns
(
tableName
),
HttpStatus
.
OK
);
return
new
ResponseEntity
<>
(
generatorService
.
getColumns
(
tableName
),
HttpStatus
.
OK
);
}
}
/**
@ApiOperation
(
"生成代码"
)
* 生成代码
@PostMapping
* @param columnInfos
* @return
*/
@PostMapping
(
value
=
"/generator"
)
public
ResponseEntity
generator
(
@RequestBody
List
<
ColumnInfo
>
columnInfos
,
@RequestParam
String
tableName
){
public
ResponseEntity
generator
(
@RequestBody
List
<
ColumnInfo
>
columnInfos
,
@RequestParam
String
tableName
){
if
(!
generatorEnabled
){
if
(!
generatorEnabled
){
throw
new
BadRequestException
(
"此环境不允许生成代码!"
);
throw
new
BadRequestException
(
"此环境不允许生成代码!"
);
...
...
eladmin-generator/src/main/java/me/zhengjie/service/GenConfigService.java
View file @
fd9fb2a6
package
me.zhengjie.service
;
package
me.zhengjie.service
;
import
me.zhengjie.domain.GenConfig
;
import
me.zhengjie.domain.GenConfig
;
import
org.springframework.cache.annotation.CacheConfig
;
import
org.springframework.cache.annotation.CacheEvict
;
import
org.springframework.cache.annotation.CachePut
;
import
org.springframework.cache.annotation.Cacheable
;
/**
/**
* @author Zheng Jie
* @author Zheng Jie
* @date 2019-01-14
* @date 2019-01-14
*/
*/
@CacheConfig
(
cacheNames
=
"genConfig"
)
public
interface
GenConfigService
{
public
interface
GenConfigService
{
/**
* find
* @return
*/
@Cacheable
(
key
=
"'1'"
)
GenConfig
find
();
GenConfig
find
();
/**
* update
* @param genConfig
* @return
*/
@CacheEvict
(
allEntries
=
true
)
GenConfig
update
(
GenConfig
genConfig
);
GenConfig
update
(
GenConfig
genConfig
);
}
}
Prev
1
2
3
4
5
6
…
12
Next
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment