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
49f3e590
"src/git@ustchcs.com:gujinli1118/MCMS.git" did not exist on "f6184c03f1857a524f0a246371e85f7d6fd694c3"
Commit
49f3e590
authored
Jan 06, 2019
by
郑杰
Browse files
代码优化,异常日志保存堆栈信息
parent
1ec10e3d
Changes
11
Hide whitespace changes
Inline
Side-by-side
pom.xml
View file @
49f3e590
...
@@ -60,6 +60,12 @@
...
@@ -60,6 +60,12 @@
<groupId>
org.springframework.boot
</groupId>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-websocket
</artifactId>
<artifactId>
spring-boot-starter-websocket
</artifactId>
</dependency>
</dependency>
<!--模板引擎-->
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-freemarker
</artifactId>
</dependency>
<!--Spring boot end-->
<!--Spring boot end-->
<!--jedis-->
<!--jedis-->
...
@@ -175,6 +181,18 @@
...
@@ -175,6 +181,18 @@
<version>
3.1.0
</version>
<version>
3.1.0
</version>
</dependency>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-configuration/commons-configuration -->
<dependency>
<groupId>
commons-configuration
</groupId>
<artifactId>
commons-configuration
</artifactId>
<version>
1.9
</version>
</dependency>
<!-- quartz -->
<dependency>
<groupId>
org.quartz-scheduler
</groupId>
<artifactId>
quartz
</artifactId>
</dependency>
</dependencies>
</dependencies>
<repositories>
<repositories>
...
...
src/main/java/me/zhengjie/AppRun.java
View file @
49f3e590
...
@@ -11,7 +11,6 @@ import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBr
...
@@ -11,7 +11,6 @@ import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBr
* @date 2018/11/15 9:20:19
* @date 2018/11/15 9:20:19
*/
*/
@SpringBootApplication
@SpringBootApplication
//开启定时任务
@EnableScheduling
@EnableScheduling
@EnableTransactionManagement
@EnableTransactionManagement
@EnableWebSocketMessageBroker
@EnableWebSocketMessageBroker
...
...
src/main/java/me/zhengjie/common/aop/log/LogAspect.java
View file @
49f3e590
...
@@ -2,6 +2,7 @@ package me.zhengjie.common.aop.log;
...
@@ -2,6 +2,7 @@ package me.zhengjie.common.aop.log;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
me.zhengjie.common.exception.BadRequestException
;
import
me.zhengjie.common.exception.BadRequestException
;
import
me.zhengjie.common.utils.ThrowableUtil
;
import
me.zhengjie.monitor.domain.Logging
;
import
me.zhengjie.monitor.domain.Logging
;
import
me.zhengjie.monitor.service.LoggingService
;
import
me.zhengjie.monitor.service.LoggingService
;
import
org.aspectj.lang.JoinPoint
;
import
org.aspectj.lang.JoinPoint
;
...
@@ -66,7 +67,7 @@ public class LogAspect {
...
@@ -66,7 +67,7 @@ public class LogAspect {
@AfterThrowing
(
pointcut
=
"logPointcut()"
,
throwing
=
"e"
)
@AfterThrowing
(
pointcut
=
"logPointcut()"
,
throwing
=
"e"
)
public
void
logAfterThrowing
(
JoinPoint
joinPoint
,
Throwable
e
)
{
public
void
logAfterThrowing
(
JoinPoint
joinPoint
,
Throwable
e
)
{
Logging
logging
=
new
Logging
(
"ERROR"
,
System
.
currentTimeMillis
()
-
currentTime
);
Logging
logging
=
new
Logging
(
"ERROR"
,
System
.
currentTimeMillis
()
-
currentTime
);
logging
.
setExceptionDetail
(
e
.
getMessag
e
());
logging
.
setExceptionDetail
(
ThrowableUtil
.
getStackTrac
e
(
e
));
loggingService
.
save
((
ProceedingJoinPoint
)
joinPoint
,
logging
);
loggingService
.
save
((
ProceedingJoinPoint
)
joinPoint
,
logging
);
}
}
}
}
src/main/java/me/zhengjie/common/exception/handler/GlobalExceptionHandler.java
View file @
49f3e590
...
@@ -4,14 +4,13 @@ import lombok.extern.slf4j.Slf4j;
...
@@ -4,14 +4,13 @@ import lombok.extern.slf4j.Slf4j;
import
me.zhengjie.common.exception.BadRequestException
;
import
me.zhengjie.common.exception.BadRequestException
;
import
me.zhengjie.common.exception.EntityExistException
;
import
me.zhengjie.common.exception.EntityExistException
;
import
me.zhengjie.common.exception.EntityNotFoundException
;
import
me.zhengjie.common.exception.EntityNotFoundException
;
import
me.zhengjie.common.utils.ThrowableUtil
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.security.access.AccessDeniedException
;
import
org.springframework.security.access.AccessDeniedException
;
import
org.springframework.web.bind.MethodArgumentNotValidException
;
import
org.springframework.web.bind.MethodArgumentNotValidException
;
import
org.springframework.web.bind.annotation.ExceptionHandler
;
import
org.springframework.web.bind.annotation.ExceptionHandler
;
import
org.springframework.web.bind.annotation.RestControllerAdvice
;
import
org.springframework.web.bind.annotation.RestControllerAdvice
;
import
java.io.PrintWriter
;
import
java.io.StringWriter
;
import
static
org
.
springframework
.
http
.
HttpStatus
.
BAD_REQUEST
;
import
static
org
.
springframework
.
http
.
HttpStatus
.
BAD_REQUEST
;
import
static
org
.
springframework
.
http
.
HttpStatus
.
FORBIDDEN
;
import
static
org
.
springframework
.
http
.
HttpStatus
.
FORBIDDEN
;
import
static
org
.
springframework
.
http
.
HttpStatus
.
NOT_FOUND
;
import
static
org
.
springframework
.
http
.
HttpStatus
.
NOT_FOUND
;
...
@@ -32,7 +31,7 @@ public class GlobalExceptionHandler {
...
@@ -32,7 +31,7 @@ public class GlobalExceptionHandler {
@ExceptionHandler
(
Exception
.
class
)
@ExceptionHandler
(
Exception
.
class
)
public
ResponseEntity
handleException
(
Exception
e
){
public
ResponseEntity
handleException
(
Exception
e
){
// 打印堆栈信息
// 打印堆栈信息
log
.
error
(
getStackTrace
(
e
));
log
.
error
(
ThrowableUtil
.
getStackTrace
(
e
));
ApiError
apiError
=
new
ApiError
(
BAD_REQUEST
.
value
(),
e
.
getMessage
());
ApiError
apiError
=
new
ApiError
(
BAD_REQUEST
.
value
(),
e
.
getMessage
());
return
buildResponseEntity
(
apiError
);
return
buildResponseEntity
(
apiError
);
}
}
...
@@ -45,7 +44,7 @@ public class GlobalExceptionHandler {
...
@@ -45,7 +44,7 @@ public class GlobalExceptionHandler {
@ExceptionHandler
(
AccessDeniedException
.
class
)
@ExceptionHandler
(
AccessDeniedException
.
class
)
public
ResponseEntity
handleAccessDeniedException
(
AccessDeniedException
e
){
public
ResponseEntity
handleAccessDeniedException
(
AccessDeniedException
e
){
// 打印堆栈信息
// 打印堆栈信息
log
.
error
(
getStackTrace
(
e
));
log
.
error
(
ThrowableUtil
.
getStackTrace
(
e
));
ApiError
apiError
=
new
ApiError
(
FORBIDDEN
.
value
(),
e
.
getMessage
());
ApiError
apiError
=
new
ApiError
(
FORBIDDEN
.
value
(),
e
.
getMessage
());
return
buildResponseEntity
(
apiError
);
return
buildResponseEntity
(
apiError
);
}
}
...
@@ -58,7 +57,7 @@ public class GlobalExceptionHandler {
...
@@ -58,7 +57,7 @@ public class GlobalExceptionHandler {
@ExceptionHandler
(
value
=
BadRequestException
.
class
)
@ExceptionHandler
(
value
=
BadRequestException
.
class
)
public
ResponseEntity
<
ApiError
>
badRequestException
(
BadRequestException
e
)
{
public
ResponseEntity
<
ApiError
>
badRequestException
(
BadRequestException
e
)
{
// 打印堆栈信息
// 打印堆栈信息
log
.
error
(
getStackTrace
(
e
));
log
.
error
(
ThrowableUtil
.
getStackTrace
(
e
));
ApiError
apiError
=
new
ApiError
(
e
.
getStatus
(),
e
.
getMessage
());
ApiError
apiError
=
new
ApiError
(
e
.
getStatus
(),
e
.
getMessage
());
return
buildResponseEntity
(
apiError
);
return
buildResponseEntity
(
apiError
);
}
}
...
@@ -71,7 +70,7 @@ public class GlobalExceptionHandler {
...
@@ -71,7 +70,7 @@ public class GlobalExceptionHandler {
@ExceptionHandler
(
value
=
EntityExistException
.
class
)
@ExceptionHandler
(
value
=
EntityExistException
.
class
)
public
ResponseEntity
<
ApiError
>
entityExistException
(
EntityExistException
e
)
{
public
ResponseEntity
<
ApiError
>
entityExistException
(
EntityExistException
e
)
{
// 打印堆栈信息
// 打印堆栈信息
log
.
error
(
getStackTrace
(
e
));
log
.
error
(
ThrowableUtil
.
getStackTrace
(
e
));
ApiError
apiError
=
new
ApiError
(
BAD_REQUEST
.
value
(),
e
.
getMessage
());
ApiError
apiError
=
new
ApiError
(
BAD_REQUEST
.
value
(),
e
.
getMessage
());
return
buildResponseEntity
(
apiError
);
return
buildResponseEntity
(
apiError
);
}
}
...
@@ -84,7 +83,7 @@ public class GlobalExceptionHandler {
...
@@ -84,7 +83,7 @@ public class GlobalExceptionHandler {
@ExceptionHandler
(
value
=
EntityNotFoundException
.
class
)
@ExceptionHandler
(
value
=
EntityNotFoundException
.
class
)
public
ResponseEntity
<
ApiError
>
entityNotFoundException
(
EntityNotFoundException
e
)
{
public
ResponseEntity
<
ApiError
>
entityNotFoundException
(
EntityNotFoundException
e
)
{
// 打印堆栈信息
// 打印堆栈信息
log
.
error
(
getStackTrace
(
e
));
log
.
error
(
ThrowableUtil
.
getStackTrace
(
e
));
ApiError
apiError
=
new
ApiError
(
NOT_FOUND
.
value
(),
e
.
getMessage
());
ApiError
apiError
=
new
ApiError
(
NOT_FOUND
.
value
(),
e
.
getMessage
());
return
buildResponseEntity
(
apiError
);
return
buildResponseEntity
(
apiError
);
}
}
...
@@ -97,7 +96,7 @@ public class GlobalExceptionHandler {
...
@@ -97,7 +96,7 @@ public class GlobalExceptionHandler {
@ExceptionHandler
(
MethodArgumentNotValidException
.
class
)
@ExceptionHandler
(
MethodArgumentNotValidException
.
class
)
public
ResponseEntity
<
ApiError
>
handleMethodArgumentNotValidException
(
MethodArgumentNotValidException
e
){
public
ResponseEntity
<
ApiError
>
handleMethodArgumentNotValidException
(
MethodArgumentNotValidException
e
){
// 打印堆栈信息
// 打印堆栈信息
log
.
error
(
getStackTrace
(
e
));
log
.
error
(
ThrowableUtil
.
getStackTrace
(
e
));
String
[]
str
=
e
.
getBindingResult
().
getAllErrors
().
get
(
0
).
getCodes
()[
1
].
split
(
"\\."
);
String
[]
str
=
e
.
getBindingResult
().
getAllErrors
().
get
(
0
).
getCodes
()[
1
].
split
(
"\\."
);
StringBuffer
msg
=
new
StringBuffer
(
str
[
1
]+
":"
);
StringBuffer
msg
=
new
StringBuffer
(
str
[
1
]+
":"
);
msg
.
append
(
e
.
getBindingResult
().
getAllErrors
().
get
(
0
).
getDefaultMessage
());
msg
.
append
(
e
.
getBindingResult
().
getAllErrors
().
get
(
0
).
getDefaultMessage
());
...
@@ -113,21 +112,4 @@ public class GlobalExceptionHandler {
...
@@ -113,21 +112,4 @@ public class GlobalExceptionHandler {
private
ResponseEntity
<
ApiError
>
buildResponseEntity
(
ApiError
apiError
)
{
private
ResponseEntity
<
ApiError
>
buildResponseEntity
(
ApiError
apiError
)
{
return
new
ResponseEntity
(
apiError
,
HttpStatus
.
valueOf
(
apiError
.
getStatus
()));
return
new
ResponseEntity
(
apiError
,
HttpStatus
.
valueOf
(
apiError
.
getStatus
()));
}
}
/**
* 获取堆栈信息
* @param throwable
* @return
*/
private
String
getStackTrace
(
Throwable
throwable
)
{
StringWriter
sw
=
new
StringWriter
();
PrintWriter
pw
=
new
PrintWriter
(
sw
);
try
{
throwable
.
printStackTrace
(
pw
);
return
"\n"
+
sw
.
toString
();
}
finally
{
pw
.
close
();
}
}
}
}
src/main/java/me/zhengjie/common/utils/FtlUtil.java
0 → 100644
View file @
49f3e590
package
me.zhengjie.common.utils
;
import
freemarker.template.Configuration
;
import
java.io.FileOutputStream
;
/**
* @author jie
* @date 2019-01-03
*/
public
class
FtlUtil
{
private
static
Configuration
configuration
;
private
static
FileOutputStream
fileOut
=
null
;
static
{
configuration
=
new
Configuration
(
Configuration
.
VERSION_2_3_28
);
configuration
.
setDefaultEncoding
(
"UTF-8"
);
configuration
.
setClassForTemplateLoading
(
FtlUtil
.
class
,
"/template/generator"
);
configuration
.
setClassForTemplateLoading
(
FtlUtil
.
class
,
"/template/email"
);
}
public
static
Configuration
getConfig
(){
return
configuration
;
}
}
src/main/java/me/zhengjie/common/utils/StringUtils.java
0 → 100644
View file @
49f3e590
package
me.zhengjie.common.utils
;
import
java.io.File
;
import
java.io.IOException
;
import
java.io.UnsupportedEncodingException
;
import
org.springframework.core.io.DefaultResourceLoader
;
/**
* 字符串工具类, 继承org.apache.commons.lang3.StringUtils类
*/
public
class
StringUtils
extends
org
.
apache
.
commons
.
lang3
.
StringUtils
{
private
static
final
char
SEPARATOR
=
'_'
;
private
static
final
String
CHARSET_NAME
=
"UTF-8"
;
/**
* 转换为字节数组
*
* @param str
* @return
*/
public
static
byte
[]
getBytes
(
String
str
)
{
if
(
str
!=
null
)
{
try
{
return
str
.
getBytes
(
CHARSET_NAME
);
}
catch
(
UnsupportedEncodingException
e
)
{
return
null
;
}
}
else
{
return
null
;
}
}
/**
* 转换为字节数组
*
* @param bytes
* @return
*/
public
static
String
toString
(
byte
[]
bytes
)
{
try
{
return
new
String
(
bytes
,
CHARSET_NAME
);
}
catch
(
UnsupportedEncodingException
e
)
{
return
EMPTY
;
}
}
/**
* 是否包含字符串
*
* @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
;
}
/**
* 转换为Double类型
*/
public
static
Double
toDouble
(
Object
val
)
{
if
(
val
==
null
)
{
return
0
D
;
}
try
{
return
Double
.
valueOf
(
trim
(
val
.
toString
()));
}
catch
(
Exception
e
)
{
return
0
D
;
}
}
/**
* 转换为Float类型
*/
public
static
Float
toFloat
(
Object
val
)
{
return
toDouble
(
val
).
floatValue
();
}
/**
* 转换为Long类型
*/
public
static
Long
toLong
(
Object
val
)
{
return
toDouble
(
val
).
longValue
();
}
/**
* 转换为Integer类型
*/
public
static
Integer
toInteger
(
Object
val
)
{
return
toLong
(
val
).
intValue
();
}
/**
* 驼峰命名法工具
*
* @return toCamelCase(" hello_world ") == "helloWorld"
* toCapitalizeCamelCase("hello_world") == "HelloWorld"
* toUnderScoreCase("helloWorld") = "hello_world"
*/
public
static
String
toCamelCase
(
String
s
)
{
if
(
s
==
null
)
{
return
null
;
}
s
=
s
.
toLowerCase
();
StringBuilder
sb
=
new
StringBuilder
(
s
.
length
());
boolean
upperCase
=
false
;
for
(
int
i
=
0
;
i
<
s
.
length
();
i
++)
{
char
c
=
s
.
charAt
(
i
);
if
(
c
==
SEPARATOR
)
{
upperCase
=
true
;
}
else
if
(
upperCase
)
{
sb
.
append
(
Character
.
toUpperCase
(
c
));
upperCase
=
false
;
}
else
{
sb
.
append
(
c
);
}
}
return
sb
.
toString
();
}
/**
* 驼峰命名法工具
*
* @return toCamelCase(" hello_world ") == "helloWorld"
* toCapitalizeCamelCase("hello_world") == "HelloWorld"
* toUnderScoreCase("helloWorld") = "hello_world"
*/
public
static
String
toCapitalizeCamelCase
(
String
s
)
{
if
(
s
==
null
)
{
return
null
;
}
s
=
toCamelCase
(
s
);
return
s
.
substring
(
0
,
1
).
toUpperCase
()
+
s
.
substring
(
1
);
}
/**
* 驼峰命名法工具
*
* @return toCamelCase(" hello_world ") == "helloWorld"
* toCapitalizeCamelCase("hello_world") == "HelloWorld"
* toUnderScoreCase("helloWorld") = "hello_world"
*/
public
static
String
toUnderScoreCase
(
String
s
)
{
if
(
s
==
null
)
{
return
null
;
}
StringBuilder
sb
=
new
StringBuilder
();
boolean
upperCase
=
false
;
for
(
int
i
=
0
;
i
<
s
.
length
();
i
++)
{
char
c
=
s
.
charAt
(
i
);
boolean
nextUpperCase
=
true
;
if
(
i
<
(
s
.
length
()
-
1
))
{
nextUpperCase
=
Character
.
isUpperCase
(
s
.
charAt
(
i
+
1
));
}
if
((
i
>
0
)
&&
Character
.
isUpperCase
(
c
))
{
if
(!
upperCase
||
!
nextUpperCase
)
{
sb
.
append
(
SEPARATOR
);
}
upperCase
=
true
;
}
else
{
upperCase
=
false
;
}
sb
.
append
(
Character
.
toLowerCase
(
c
));
}
return
sb
.
toString
();
}
/**
* 获取工程路径
*
* @return
*/
public
static
String
getProjectPath
()
{
String
projectPath
=
""
;
try
{
File
file
=
new
DefaultResourceLoader
().
getResource
(
""
).
getFile
();
if
(
file
!=
null
)
{
while
(
true
)
{
File
f
=
new
File
(
file
.
getPath
()
+
File
.
separator
+
"src"
+
File
.
separator
+
"main"
);
if
(
f
==
null
||
f
.
exists
())
{
break
;
}
if
(
file
.
getParentFile
()
!=
null
)
{
file
=
file
.
getParentFile
();
}
else
{
break
;
}
}
projectPath
=
file
.
toString
();
}
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
return
projectPath
;
}
}
\ No newline at end of file
src/main/java/me/zhengjie/common/utils/ThrowableUtil.java
0 → 100644
View file @
49f3e590
package
me.zhengjie.common.utils
;
import
java.io.PrintWriter
;
import
java.io.StringWriter
;
/**
* 异常工具
* @author jie
* @date 2019-01-06
*/
public
class
ThrowableUtil
{
/**
* 获取堆栈信息
* @param throwable
* @return
*/
public
static
String
getStackTrace
(
Throwable
throwable
){
StringWriter
sw
=
new
StringWriter
();
PrintWriter
pw
=
new
PrintWriter
(
sw
);
try
{
throwable
.
printStackTrace
(
pw
);
return
"\n"
+
sw
.
toString
();
}
finally
{
pw
.
close
();
}
}
}
src/main/java/me/zhengjie/monitor/domain/Logging.java
View file @
49f3e590
...
@@ -38,7 +38,7 @@ public class Logging {
...
@@ -38,7 +38,7 @@ public class Logging {
/**
/**
* 参数
* 参数
*/
*/
@Column
(
length
=
1500
)
@Column
(
columnDefinition
=
"text"
)
private
String
params
;
private
String
params
;
/**
/**
...
@@ -59,7 +59,7 @@ public class Logging {
...
@@ -59,7 +59,7 @@ public class Logging {
/**
/**
* 异常详细
* 异常详细
*/
*/
@Column
(
length
=
1500
)
@Column
(
columnDefinition
=
"text"
)
private
String
exceptionDetail
;
private
String
exceptionDetail
;
/**
/**
...
...
src/main/java/me/zhengjie/monitor/repository/LoggingRepository.java
View file @
49f3e590
...
@@ -6,8 +6,6 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
...
@@ -6,8 +6,6 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import
org.springframework.data.jpa.repository.Query
;
import
org.springframework.data.jpa.repository.Query
;
import
org.springframework.stereotype.Repository
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
/**
/**
* @author jie
* @author jie
* @date 2018-11-24
* @date 2018-11-24
...
@@ -21,6 +19,6 @@ public interface LoggingRepository extends JpaRepository<Logging,Long>, JpaSpeci
...
@@ -21,6 +19,6 @@ public interface LoggingRepository extends JpaRepository<Logging,Long>, JpaSpeci
* @param date2
* @param date2
* @return
* @return
*/
*/
@Query
(
value
=
"select count(*) FROM (select
*
FROM log where createTime between ?1 and ?2 GROUP BY requestIp) as s"
,
nativeQuery
=
true
)
@Query
(
value
=
"select count(*) FROM (select
requestIp
FROM log where createTime between ?1 and ?2 GROUP BY requestIp) as s"
,
nativeQuery
=
true
)
Long
findIp
(
String
date1
,
String
date2
);
Long
findIp
(
String
date1
,
String
date2
);
}
}
src/main/java/me/zhengjie/monitor/service/impl/LoggingServiceImpl.java
View file @
49f3e590
...
@@ -83,9 +83,7 @@ public class LoggingServiceImpl implements LoggingService {
...
@@ -83,9 +83,7 @@ public class LoggingServiceImpl implements LoggingService {
username
=
user
.
getUsername
();
username
=
user
.
getUsername
();
}
}
if
(
params
.
length
()
>
1000
){
logging
.
setMethod
(
methodName
);
params
=
params
.
substring
(
0
,
999
);
}
logging
.
setUsername
(
username
);
logging
.
setUsername
(
username
);
logging
.
setParams
(
params
+
" }"
);
logging
.
setParams
(
params
+
" }"
);
loggingRepository
.
save
(
logging
);
loggingRepository
.
save
(
logging
);
...
...
src/main/java/me/zhengjie/system/service/impl/MenuServiceImpl.java
View file @
49f3e590
...
@@ -101,9 +101,13 @@ public class MenuServiceImpl implements MenuService {
...
@@ -101,9 +101,13 @@ public class MenuServiceImpl implements MenuService {
List
<
Map
<
String
,
Object
>>
list
=
new
LinkedList
<>();
List
<
Map
<
String
,
Object
>>
list
=
new
LinkedList
<>();
menus
.
forEach
(
menu
->
{
menus
.
forEach
(
menu
->
{
if
(
menu
!=
null
){
if
(
menu
!=
null
){
List
<
Menu
>
menuList
=
menuRepository
.
findByPid
(
menu
.
getId
());
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"id"
,
menu
.
getId
());
map
.
put
(
"id"
,
menu
.
getId
());
map
.
put
(
"label"
,
menu
.
getName
());
map
.
put
(
"label"
,
menu
.
getName
());
if
(
menuList
!=
null
&&
menuList
.
size
()!=
0
){
map
.
put
(
"children"
,
getMenuTree
(
menuList
));
}
list
.
add
(
map
);
list
.
add
(
map
);
}
}
}
}
...
...
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