Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
F
fgqyxxlr
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
yaru
fgqyxxlr
Commits
5d0e3a70
Commit
5d0e3a70
authored
Jul 12, 2018
by
RuoYi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修复热部署转换问题
parent
9ff86133
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
151 additions
and
15 deletions
+151
-15
src/main/java/com/ruoyi/common/utils/bean/BeanUtils.java
+141
-0
src/main/java/com/ruoyi/common/utils/security/ShiroUtils.java
+5
-1
src/main/java/com/ruoyi/project/monitor/job/util/ScheduleJob.java
+2
-12
src/main/resources/application.yml
+2
-1
src/main/resources/templates/index.html
+1
-1
No files found.
src/main/java/com/ruoyi/common/utils/bean/BeanUtils.java
0 → 100644
View file @
5d0e3a70
package
com
.
ruoyi
.
common
.
utils
.
bean
;
import
java.lang.reflect.Method
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.regex.Matcher
;
import
java.util.regex.Pattern
;
import
com.ruoyi.project.system.dept.domain.Dept
;
import
com.ruoyi.project.system.user.domain.User
;
/**
* Bean 工具类
*
* @author ruoyi
*/
public
class
BeanUtils
{
/** Bean方法名中属性名开始的下标 */
private
static
final
int
BEAN_METHOD_PROP_INDEX
=
3
;
/** * 匹配getter方法的正则表达式 */
private
static
final
Pattern
GET_PATTERN
=
Pattern
.
compile
(
"get(\\p{javaUpperCase}\\w*)"
);
/** * 匹配setter方法的正则表达式 */
private
static
final
Pattern
SET_PATTERN
=
Pattern
.
compile
(
"set(\\p{javaUpperCase}\\w*)"
);
/**
* Bean属性复制工具方法。
*
* @param dest 目标对象
* @param src 源对象
*/
public
static
void
copyBeanProp
(
Object
dest
,
Object
src
)
{
List
<
Method
>
destSetters
=
getSetterMethods
(
dest
);
List
<
Method
>
srcGetters
=
getGetterMethods
(
src
);
try
{
for
(
Method
setter
:
destSetters
)
{
for
(
Method
getter
:
srcGetters
)
{
if
(
isMethodPropEquals
(
setter
.
getName
(),
getter
.
getName
())
&&
setter
.
getParameterTypes
()[
0
].
equals
(
getter
.
getReturnType
()))
{
setter
.
invoke
(
dest
,
getter
.
invoke
(
src
));
}
}
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
/**
* 获取对象的setter方法。
*
* @param obj 对象
* @return 对象的setter方法列表
*/
public
static
List
<
Method
>
getSetterMethods
(
Object
obj
)
{
// setter方法列表
List
<
Method
>
setterMethods
=
new
ArrayList
<
Method
>();
// 获取所有方法
Method
[]
methods
=
obj
.
getClass
().
getMethods
();
// 查找setter方法
for
(
Method
method
:
methods
)
{
Matcher
m
=
SET_PATTERN
.
matcher
(
method
.
getName
());
if
(
m
.
matches
()
&&
(
method
.
getParameterTypes
().
length
==
1
))
{
setterMethods
.
add
(
method
);
}
}
// 返回setter方法列表
return
setterMethods
;
}
/**
* 获取对象的getter方法。
*
* @param obj 对象
* @return 对象的getter方法列表
*/
public
static
List
<
Method
>
getGetterMethods
(
Object
obj
)
{
// getter方法列表
List
<
Method
>
getterMethods
=
new
ArrayList
<
Method
>();
// 获取所有方法
Method
[]
methods
=
obj
.
getClass
().
getMethods
();
// 查找getter方法
for
(
Method
method
:
methods
)
{
Matcher
m
=
GET_PATTERN
.
matcher
(
method
.
getName
());
if
(
m
.
matches
()
&&
(
method
.
getParameterTypes
().
length
==
0
))
{
getterMethods
.
add
(
method
);
}
}
// 返回getter方法列表
return
getterMethods
;
}
/**
* 检查Bean方法名中的属性名是否相等。<br>
* 如getName()和setName()属性名一样,getName()和setAge()属性名不一样。
*
* @param m1 方法名1
* @param m2 方法名2
* @return 属性名一样返回true,否则返回false
*/
public
static
boolean
isMethodPropEquals
(
String
m1
,
String
m2
)
{
return
m1
.
substring
(
BEAN_METHOD_PROP_INDEX
).
equals
(
m2
.
substring
(
BEAN_METHOD_PROP_INDEX
));
}
public
static
void
main
(
String
[]
args
)
{
User
user
=
new
User
();
User
zhen
=
new
User
();
zhen
.
setUserName
(
"测试名称"
);
Dept
dept
=
new
Dept
();
dept
.
setDeptId
(
11L
);
dept
.
setDeptName
(
"测试部门"
);
zhen
.
setDept
(
dept
);
BeanUtils
.
copyBeanProp
(
user
,
zhen
);
System
.
out
.
println
(
user
.
getDept
().
getDeptName
());
}
}
src/main/java/com/ruoyi/common/utils/security/ShiroUtils.java
View file @
5d0e3a70
...
...
@@ -6,6 +6,8 @@ import org.apache.shiro.session.Session;
import
org.apache.shiro.subject.PrincipalCollection
;
import
org.apache.shiro.subject.SimplePrincipalCollection
;
import
org.apache.shiro.subject.Subject
;
import
com.ruoyi.common.utils.bean.BeanUtils
;
import
com.ruoyi.framework.shiro.realm.UserRealm
;
import
com.ruoyi.project.system.user.domain.User
;
...
...
@@ -34,7 +36,9 @@ public class ShiroUtils
public
static
User
getUser
()
{
return
(
User
)
getSubjct
().
getPrincipal
();
User
user
=
new
User
();
BeanUtils
.
copyBeanProp
(
user
,
getSubjct
().
getPrincipal
());
return
user
;
}
public
static
void
setUser
(
User
user
)
...
...
src/main/java/com/ruoyi/project/monitor/job/util/ScheduleJob.java
View file @
5d0e3a70
...
...
@@ -4,8 +4,6 @@ import java.util.Date;
import
java.util.concurrent.ExecutorService
;
import
java.util.concurrent.Executors
;
import
java.util.concurrent.Future
;
import
org.apache.commons.beanutils.PropertyUtils
;
import
org.quartz.JobDataMap
;
import
org.quartz.JobExecutionContext
;
import
org.quartz.JobExecutionException
;
import
org.slf4j.Logger
;
...
...
@@ -13,6 +11,7 @@ import org.slf4j.LoggerFactory;
import
org.springframework.scheduling.quartz.QuartzJobBean
;
import
com.ruoyi.common.constant.Constants
;
import
com.ruoyi.common.constant.ScheduleConstants
;
import
com.ruoyi.common.utils.bean.BeanUtils
;
import
com.ruoyi.common.utils.spring.SpringUtils
;
import
com.ruoyi.project.monitor.job.domain.Job
;
import
com.ruoyi.project.monitor.job.domain.JobLog
;
...
...
@@ -33,17 +32,8 @@ public class ScheduleJob extends QuartzJobBean
@Override
protected
void
executeInternal
(
JobExecutionContext
context
)
throws
JobExecutionException
{
// Job job = (Job) context.getMergedJobDataMap().get(ScheduleConstants.JOB_PARAM_KEY);
JobDataMap
jobDataMap
=
context
.
getMergedJobDataMap
();
Job
job
=
new
Job
();
try
{
PropertyUtils
.
copyProperties
(
job
,
jobDataMap
.
get
(
ScheduleConstants
.
JOB_PARAM_KEY
));
}
catch
(
Exception
e
)
{
log
.
error
(
"copyProperties执行异常 - :"
,
e
);
}
BeanUtils
.
copyBeanProp
(
job
,
context
.
getMergedJobDataMap
().
get
(
ScheduleConstants
.
JOB_PARAM_KEY
));
IJobLogService
jobLogService
=
(
IJobLogService
)
SpringUtils
.
getBean
(
IJobLogService
.
class
);
...
...
src/main/resources/application.yml
View file @
5d0e3a70
...
...
@@ -42,7 +42,8 @@ spring:
max-request-size
:
30Mb
devtools
:
restart
:
enabled
:
true
#禁用devtools模块的热部署功能
enabled
:
true
# MyBatis
mybatis
:
# 搜索指定包别名
...
...
src/main/resources/templates/index.html
View file @
5d0e3a70
...
...
@@ -35,7 +35,7 @@
<img
th:src=
"(${user.avatar} == '') ? '/img/profile.jpg' : '/profile/' + ${user.avatar}"
alt=
"image"
class=
"img-circle"
height=
"60"
width=
"60"
/></span>
<a
data-toggle=
"dropdown"
class=
"dropdown-toggle"
href=
"#"
>
<span
class=
"clear"
><span
class=
"block m-t-xs"
><strong
class=
"font-bold"
>
[[${user.userName}]]
</strong></span>
<span
class=
"text-muted text-xs block"
><span>
[[${user.dept.deptName}]]
</span>
<b
class=
"caret"
></b></span>
</span>
</a>
<span
class=
"text-muted text-xs block"
><span
th:if=
"${not #strings.isEmpty(user.dept)}"
>
[[${user.dept.deptName}]]
</span>
<b
class=
"caret"
></b></span>
</span>
</a>
<ul
class=
"dropdown-menu animated fadeInRight m-t-xs"
>
<li><a
class=
"menuItem"
th:href=
"@{/system/user/profile}"
>
个人信息
</a></li>
<li
class=
"divider"
></li>
...
...
Write
Preview
Markdown
is supported
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