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
Springboot Plus
Commits
321361c9
Commit
321361c9
authored
Feb 21, 2018
by
xiandafu
Browse files
init
parent
2971e3f1
Changes
449
Hide whitespace changes
Inline
Side-by-side
admin-core/src/main/java/com/ibeetl/admin/core/rbac/AccessType.java
0 → 100644
View file @
321361c9
package
com.ibeetl.admin.core.rbac
;
/**
* 数据权限算法结果
* @author xiandafu
*
*/
public
enum
AccessType
{
OnlyUser
(
1
),
OnlyOrg
(
2
),
AllOrg
(
3
),
NoneOrg
(
4
);
private
int
value
;
AccessType
(
int
value
)
{
this
.
value
=
value
;
}
}
admin-core/src/main/java/com/ibeetl/admin/core/rbac/DataAccess.java
0 → 100644
View file @
321361c9
package
com.ibeetl.admin.core.rbac
;
import
com.ibeetl.admin.core.service.CorePlatformService
;
/**
* 数据权限接口类
* @author Administrator
*
*/
public
interface
DataAccess
{
DataAccessResullt
getOrg
(
Long
userId
,
Long
orgId
);
String
getName
();
Integer
getType
();
}
admin-core/src/main/java/com/ibeetl/admin/core/rbac/DataAccessFactory.java
0 → 100644
View file @
321361c9
package
com.ibeetl.admin.core.rbac
;
import
java.util.ArrayList
;
import
java.util.List
;
import
com.ibeetl.admin.core.rbac.tree.OrgItem
;
public
interface
DataAccessFactory
{
/**
* 得到数去访问权限
* @param type
* @return
*/
public
DataAccess
getDataAccess
(
Integer
type
);
/**
* 得到用户能看到得到组织机构树,比如,用户只能看到公司级别的组织机构树。
* DefaultDataAccessFactory 默认实现了能看到所在公司(集团,母公司)的组织机构树
* @param OrgItem
* @return
*/
public
OrgItem
getUserOrgTree
(
OrgItem
item
)
;
public
List
<
DataAccess
>
all
();
}
admin-core/src/main/java/com/ibeetl/admin/core/rbac/DataAccessResullt.java
0 → 100644
View file @
321361c9
package
com.ibeetl.admin.core.rbac
;
import
java.util.List
;
/**
* 通过DataAccess 得出跟查询相关的用户或者组织机构列表
* @author lijiazhi
*
*/
public
class
DataAccessResullt
{
private
List
<
Long
>
userIds
;
private
List
<
Long
>
orgIds
;
//1 结果仅仅包含用户, 2 ,结果仅仅包含组织机构 3 结果匹配所有组织结构 4 结果不匹配任何组织机构
private
AccessType
status
;
public
List
<
Long
>
getUserIds
()
{
return
userIds
;
}
public
void
setUserIds
(
List
<
Long
>
userIds
)
{
this
.
userIds
=
userIds
;
}
public
List
<
Long
>
getOrgIds
()
{
return
orgIds
;
}
public
void
setOrgIds
(
List
<
Long
>
orgIds
)
{
this
.
orgIds
=
orgIds
;
}
public
AccessType
getStatus
()
{
return
status
;
}
public
void
setStatus
(
AccessType
status
)
{
this
.
status
=
status
;
}
}
admin-core/src/main/java/com/ibeetl/admin/core/rbac/UserLoginInfo.java
0 → 100644
View file @
321361c9
package
com.ibeetl.admin.core.rbac
;
import
java.util.ArrayList
;
import
java.util.List
;
import
com.fasterxml.jackson.annotation.JsonView
;
import
com.ibeetl.admin.core.entity.CoreOrg
;
import
com.ibeetl.admin.core.entity.CoreUser
;
public
class
UserLoginInfo
{
//用户所在机构
List
<
CoreOrg
>
orgs
=
new
ArrayList
<
CoreOrg
>();
//用户信息
CoreUser
user
;
//用户默认登录机构
CoreOrg
currentOrg
=
null
;
public
List
<
CoreOrg
>
getOrgs
()
{
return
orgs
;
}
public
void
setOrgs
(
List
<
CoreOrg
>
orgs
)
{
this
.
orgs
=
orgs
;
}
public
CoreUser
getUser
()
{
return
user
;
}
public
void
setUser
(
CoreUser
user
)
{
this
.
user
=
user
;
}
public
CoreOrg
getCurrentOrg
()
{
return
currentOrg
;
}
public
void
setCurrentOrg
(
CoreOrg
currentOrg
)
{
this
.
currentOrg
=
currentOrg
;
}
}
admin-core/src/main/java/com/ibeetl/admin/core/rbac/da/AllGroupAccess.java
0 → 100644
View file @
321361c9
package
com.ibeetl.admin.core.rbac.da
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.List
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
com.ibeetl.admin.core.entity.CoreOrg
;
import
com.ibeetl.admin.core.rbac.AccessType
;
import
com.ibeetl.admin.core.rbac.DataAccess
;
import
com.ibeetl.admin.core.rbac.DataAccessResullt
;
import
com.ibeetl.admin.core.rbac.tree.OrgItem
;
import
com.ibeetl.admin.core.service.CorePlatformService
;
/**
* 所有机构
* @author lijiazhi
*
*/
@Component
public
class
AllGroupAccess
implements
DataAccess
{
@Autowired
CorePlatformService
platformService
;
@Override
public
DataAccessResullt
getOrg
(
Long
userId
,
Long
orgId
)
{
DataAccessResullt
ret
=
new
DataAccessResullt
();
ret
.
setStatus
(
AccessType
.
AllOrg
);
return
ret
;
}
@Override
public
String
getName
()
{
return
"所有机构"
;
}
@Override
public
Integer
getType
()
{
return
5
;
}
}
admin-core/src/main/java/com/ibeetl/admin/core/rbac/da/DefaultDataAccessFactory.java
0 → 100644
View file @
321361c9
package
com.ibeetl.admin.core.rbac.da
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
org.springframework.context.ApplicationContext
;
import
com.ibeetl.admin.core.rbac.DataAccess
;
import
com.ibeetl.admin.core.rbac.DataAccessFactory
;
import
com.ibeetl.admin.core.rbac.tree.OrgItem
;
/**
* 系统提供的数据访问权限设置,适合大多数情况。如果只是小型公司,只需要配置数据字典组织机构类型和数据访问类型为系统默认的子集即可
*
* @author xiandafu
*
*/
public
class
DefaultDataAccessFactory
implements
DataAccessFactory
{
public
static
final
String
GROUP_TYPE
=
"ORGT0"
;
// 集团
public
static
final
String
COMPANY_TYPE
=
"ORGT1"
;
// 公司
public
static
final
String
DEPARTMENT_TYPE
=
"ORGT2"
;
// 部门
public
static
final
String
TEAM_TYPE
=
"ORGT3"
;
//小组
public
static
final
String
PARENT_CORP_TYPE
=
"ORGT99"
;
// 母公司
protected
Map
<
Integer
,
DataAccess
>
map
=
new
HashMap
<
Integer
,
DataAccess
>
();
protected
ApplicationContext
applicationContext
;
public
DefaultDataAccessFactory
(
ApplicationContext
applicationContext
)
{
this
.
applicationContext
=
applicationContext
;
DataAccess
da1
=
applicationContext
.
getBean
(
OwnerDataAccess
.
class
);
DataAccess
da2
=
applicationContext
.
getBean
(
SameCompanyAllDataAccess
.
class
);
DataAccess
da3
=
applicationContext
.
getBean
(
SameOrgDataAccess
.
class
);
DataAccess
da4
=
applicationContext
.
getBean
(
SameDeparmentAllDataAccess
.
class
);
DataAccess
da5
=
applicationContext
.
getBean
(
AllGroupAccess
.
class
);
DataAccess
da6
=
applicationContext
.
getBean
(
GroupDataAccess
.
class
);
DataAccess
da7
=
applicationContext
.
getBean
(
ParentCorpDataAccess
.
class
);
DataAccess
da8
=
applicationContext
.
getBean
(
GroupOnlyDataAccess
.
class
);
this
.
addDataAccessType
(
da1
);
this
.
addDataAccessType
(
da2
);
this
.
addDataAccessType
(
da3
);
this
.
addDataAccessType
(
da4
);
this
.
addDataAccessType
(
da5
);
this
.
addDataAccessType
(
da6
);
this
.
addDataAccessType
(
da6
);
this
.
addDataAccessType
(
da7
);
this
.
addDataAccessType
(
da8
);
}
public
DataAccess
getDataAccess
(
Integer
type
){
return
map
.
get
(
type
);
}
public
List
<
DataAccess
>
all
(){
return
new
ArrayList
<
DataAccess
>(
map
.
values
());
}
public
void
addDataAccessType
(
DataAccess
da
){
if
(
da
.
getType
()>
255
){
throw
new
RuntimeException
(
"数据权限类型支持1-255"
);
}
map
.
put
(
da
.
getType
(),
da
);
}
@Override
public
OrgItem
getUserOrgTree
(
OrgItem
item
)
{
while
(
item
!=
null
)
{
String
orgType
=
item
.
getOrg
().
getType
();
if
(
orgType
.
equals
(
COMPANY_TYPE
)||
orgType
.
equals
(
PARENT_CORP_TYPE
)||
orgType
.
equals
(
GROUP_TYPE
))
{
return
item
;
}
}
return
null
;
}
}
admin-core/src/main/java/com/ibeetl/admin/core/rbac/da/GroupDataAccess.java
0 → 100644
View file @
321361c9
package
com.ibeetl.admin.core.rbac.da
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.List
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
com.ibeetl.admin.core.entity.CoreOrg
;
import
com.ibeetl.admin.core.rbac.AccessType
;
import
com.ibeetl.admin.core.rbac.DataAccess
;
import
com.ibeetl.admin.core.rbac.DataAccessResullt
;
import
com.ibeetl.admin.core.rbac.tree.OrgItem
;
import
com.ibeetl.admin.core.service.CorePlatformService
;
/**
* 集团公司所有
* @author lijiazhi
*
*/
@Component
public
class
GroupDataAccess
implements
DataAccess
{
@Autowired
CorePlatformService
platformService
;
@Override
public
DataAccessResullt
getOrg
(
Long
userId
,
Long
orgId
)
{
OrgItem
root
=
platformService
.
buildOrg
();
OrgItem
company
=
root
.
findChild
(
orgId
);
OrgItem
group
=
root
.
findParentOrgItem
(
DefaultDataAccessFactory
.
GROUP_TYPE
);
List
<
OrgItem
>
all
=
group
.
findAllChildOrgItem
();
List
<
Long
>
list
=
new
ArrayList
<
Long
>(
all
.
size
());
for
(
OrgItem
org:
all
){
list
.
add
(
org
.
getId
());
}
DataAccessResullt
ret
=
new
DataAccessResullt
();
ret
.
setStatus
(
AccessType
.
OnlyOrg
);
ret
.
setOrgIds
(
list
);
return
ret
;
}
@Override
public
String
getName
()
{
return
"集团下所有"
;
}
@Override
public
Integer
getType
()
{
return
6
;
}
}
admin-core/src/main/java/com/ibeetl/admin/core/rbac/da/GroupOnlyDataAccess.java
0 → 100644
View file @
321361c9
package
com.ibeetl.admin.core.rbac.da
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.List
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
com.ibeetl.admin.core.entity.CoreOrg
;
import
com.ibeetl.admin.core.rbac.AccessType
;
import
com.ibeetl.admin.core.rbac.DataAccess
;
import
com.ibeetl.admin.core.rbac.DataAccessResullt
;
import
com.ibeetl.admin.core.rbac.tree.OrgItem
;
import
com.ibeetl.admin.core.service.CorePlatformService
;
/**
* 集团公司所有,但不包含集团下的公司,仅仅集团职能部门
* @author lijiazhi
*
*/
@Component
public
class
GroupOnlyDataAccess
implements
DataAccess
{
@Autowired
CorePlatformService
platformService
;
@Override
public
DataAccessResullt
getOrg
(
Long
userId
,
Long
orgId
)
{
OrgItem
root
=
platformService
.
buildOrg
();
OrgItem
company
=
root
.
findChild
(
orgId
);
OrgItem
group
=
root
.
findParentOrgItem
(
DefaultDataAccessFactory
.
GROUP_TYPE
);
//排除集团下的所有公司
List
<
OrgItem
>
all
=
group
.
findAllChildOrgItem
(
null
,
DefaultDataAccessFactory
.
COMPANY_TYPE
);
List
<
Long
>
list
=
new
ArrayList
<
Long
>(
all
.
size
());
for
(
OrgItem
org:
all
){
list
.
add
(
org
.
getId
());
}
DataAccessResullt
ret
=
new
DataAccessResullt
();
ret
.
setStatus
(
AccessType
.
OnlyOrg
);
ret
.
setOrgIds
(
list
);
return
ret
;
}
@Override
public
String
getName
()
{
return
"仅集团部门"
;
}
@Override
public
Integer
getType
()
{
return
8
;
}
}
admin-core/src/main/java/com/ibeetl/admin/core/rbac/da/OwnerDataAccess.java
0 → 100644
View file @
321361c9
package
com.ibeetl.admin.core.rbac.da
;
import
java.util.Arrays
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
com.ibeetl.admin.core.rbac.AccessType
;
import
com.ibeetl.admin.core.rbac.DataAccess
;
import
com.ibeetl.admin.core.rbac.DataAccessResullt
;
import
com.ibeetl.admin.core.service.CorePlatformService
;
/**
* 只查看自己
* @author lijiazhi
*
*/
@Component
public
class
OwnerDataAccess
implements
DataAccess
{
@Autowired
CorePlatformService
platformService
;
@Override
public
DataAccessResullt
getOrg
(
Long
userId
,
Long
orgId
)
{
DataAccessResullt
ret
=
new
DataAccessResullt
();
ret
.
setStatus
(
AccessType
.
OnlyUser
);
ret
.
setUserIds
(
Arrays
.
asList
(
userId
));
return
ret
;
}
@Override
public
String
getName
()
{
return
"只查看自己"
;
}
@Override
public
Integer
getType
()
{
return
1
;
}
}
admin-core/src/main/java/com/ibeetl/admin/core/rbac/da/ParentCorpDataAccess.java
0 → 100644
View file @
321361c9
package
com.ibeetl.admin.core.rbac.da
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.List
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
com.ibeetl.admin.core.entity.CoreOrg
;
import
com.ibeetl.admin.core.rbac.AccessType
;
import
com.ibeetl.admin.core.rbac.DataAccess
;
import
com.ibeetl.admin.core.rbac.DataAccessResullt
;
import
com.ibeetl.admin.core.rbac.tree.OrgItem
;
import
com.ibeetl.admin.core.service.CorePlatformService
;
/**
* 母公司所有
* @author lijiazhi
*
*/
@Component
public
class
ParentCorpDataAccess
implements
DataAccess
{
@Autowired
CorePlatformService
platformService
;
@Override
public
DataAccessResullt
getOrg
(
Long
userId
,
Long
orgId
)
{
OrgItem
root
=
platformService
.
buildOrg
();
OrgItem
company
=
root
.
findAllChildOrgItem
(
DefaultDataAccessFactory
.
PARENT_CORP_TYPE
).
get
(
0
);
List
<
OrgItem
>
all
=
company
.
findAllChildOrgItem
();
List
<
Long
>
list
=
new
ArrayList
<
Long
>(
all
.
size
());
for
(
OrgItem
org:
all
){
list
.
add
(
org
.
getId
());
}
DataAccessResullt
ret
=
new
DataAccessResullt
();
ret
.
setStatus
(
AccessType
.
OnlyOrg
);
ret
.
setOrgIds
(
list
);
return
ret
;
}
@Override
public
String
getName
()
{
return
"母公司"
;
}
@Override
public
Integer
getType
()
{
return
7
;
}
}
admin-core/src/main/java/com/ibeetl/admin/core/rbac/da/SameCompanyAllDataAccess.java
0 → 100644
View file @
321361c9
package
com.ibeetl.admin.core.rbac.da
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.Collections
;
import
java.util.List
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
com.ibeetl.admin.core.entity.CoreOrg
;
import
com.ibeetl.admin.core.rbac.AccessType
;
import
com.ibeetl.admin.core.rbac.DataAccess
;
import
com.ibeetl.admin.core.rbac.DataAccessResullt
;
import
com.ibeetl.admin.core.rbac.tree.OrgItem
;
import
com.ibeetl.admin.core.service.CorePlatformService
;
/**
* 同公司下所有
* @author lijiazhi
*
*/
@Component
public
class
SameCompanyAllDataAccess
implements
DataAccess
{
@Autowired
CorePlatformService
platformService
;
@Override
public
DataAccessResullt
getOrg
(
Long
userId
,
Long
orgId
)
{
DataAccessResullt
ret
=
new
DataAccessResullt
();
ret
.
setStatus
(
AccessType
.
OnlyOrg
);
OrgItem
item
=
platformService
.
getCurrentOrgItem
();
OrgItem
company
=
item
.
findParentOrgItem
(
DefaultDataAccessFactory
.
COMPANY_TYPE
);
if
(
company
==
null
){
ret
.
setOrgIds
(
Collections
.
EMPTY_LIST
);
return
ret
;
}
List
<
OrgItem
>
all
=
company
.
findAllChildOrgItem
(
null
,
DefaultDataAccessFactory
.
COMPANY_TYPE
);
all
.
add
(
company
);
List
<
Long
>
list
=
new
ArrayList
<
Long
>(
all
.
size
());
for
(
OrgItem
org:
all
){
list
.
add
(
org
.
getId
());
}
ret
.
setOrgIds
(
list
);
return
ret
;
}
@Override
public
String
getName
()
{
return
"查看同公司(不含子公司)"
;
}
@Override
public
Integer
getType
()
{
return
2
;
}
}
admin-core/src/main/java/com/ibeetl/admin/core/rbac/da/SameDeparmentAllDataAccess.java
0 → 100644
View file @
321361c9
package
com.ibeetl.admin.core.rbac.da
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.Collections
;
import
java.util.List
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
com.ibeetl.admin.core.entity.CoreOrg
;
import
com.ibeetl.admin.core.rbac.AccessType
;
import
com.ibeetl.admin.core.rbac.DataAccess
;
import
com.ibeetl.admin.core.rbac.DataAccessResullt
;
import
com.ibeetl.admin.core.rbac.tree.OrgItem
;
import
com.ibeetl.admin.core.service.CorePlatformService
;
/**
* 同部门下所有
* @author lijiazhi
*
*/
@Component
public
class
SameDeparmentAllDataAccess
implements
DataAccess
{
@Autowired
CorePlatformService
platformService
;
@Override
public
DataAccessResullt
getOrg
(
Long
userId
,
Long
orgId
)
{
DataAccessResullt
ret
=
new
DataAccessResullt
();
ret
.
setStatus
(
AccessType
.
OnlyOrg
);
OrgItem
item
=
platformService
.
getCurrentOrgItem
();
OrgItem
dept
=
item
.
findParentOrgItem
(
DefaultDataAccessFactory
.
DEPARTMENT_TYPE
);
if
(
dept
==
null
){
ret
.
setOrgIds
(
Collections
.
EMPTY_LIST
);
return
ret
;
}
List
<
OrgItem
>
all
=
dept
.
findAllChildOrgItem
(
null
);
all
.
add
(
dept
);
List
<
Long
>
list
=
new
ArrayList
<
Long
>(
all
.
size
());
for
(
OrgItem
org:
all
){
list
.
add
(
org
.
getId
());
}
ret
.
setOrgIds
(
list
);
return
ret
;
}
@Override
public
String
getName
()
{
return
"部门和子部门下所有"
;
}
@Override
public
Integer
getType
()
{
return
4
;
}
}
admin-core/src/main/java/com/ibeetl/admin/core/rbac/da/SameOrgDataAccess.java
0 → 100644
View file @
321361c9
package
com.ibeetl.admin.core.rbac.da
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.List
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
com.ibeetl.admin.core.entity.CoreOrg
;
import
com.ibeetl.admin.core.rbac.AccessType
;
import
com.ibeetl.admin.core.rbac.DataAccess
;
import
com.ibeetl.admin.core.rbac.DataAccessResullt
;
import
com.ibeetl.admin.core.rbac.tree.OrgItem
;
import
com.ibeetl.admin.core.service.CorePlatformService
;
/**
* 同机构
* @author lijiazhi
*
*/
@Component
public
class
SameOrgDataAccess
implements
DataAccess
{
@Autowired
CorePlatformService
platformService
;
@Override
public
DataAccessResullt
getOrg
(
Long
userId
,
Long
orgId
)
{
DataAccessResullt
ret
=
new
DataAccessResullt
();
ret
.
setStatus
(
AccessType
.
OnlyOrg
);
ret
.
setOrgIds
(
Arrays
.
asList
(
orgId
));
return
ret
;
}
@Override
public
String
getName
()
{
return
"同结构"
;
}
@Override
public
Integer
getType
()
{
return
3
;
}
}
admin-core/src/main/java/com/ibeetl/admin/core/rbac/tree/FunctionItem.java
0 → 100644
View file @
321361c9
package
com.ibeetl.admin.core.rbac.tree
;
import
java.util.ArrayList
;
import
java.util.LinkedList
;
import
java.util.List
;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
com.ibeetl.admin.core.entity.CoreFunction
;
public
class
FunctionItem
implements
TreeItem
{
CoreFunction
sysFunction
=
null
;
List
<
FunctionItem
>
children
=
new
ArrayList
<>();
@JsonIgnore
FunctionItem
parent
=
null
;
String
name
;
public
FunctionItem
(
CoreFunction
sysFunction
){
this
.
sysFunction
=
sysFunction
;
this
.
name
=
sysFunction
!=
null
?
sysFunction
.
getName
():
null
;
}
public
void
setParent
(
FunctionItem
parent
){
this
.
parent
=
parent
;
parent
.
children
.
add
(
this
);
}
public
List
<
FunctionItem
>
getChildren
(){
return
this
.
children
;
}
public
Long
getId
(){
return
sysFunction
.
getId
();
}
public
CoreFunction
getData
(){
return
this
.
sysFunction
;
}
/**
* 查找某个指定的子功能
* @param functionId
* @return
*/
public
FunctionItem
findChild
(
long
functionId
){
if
(
sysFunction
.
getId
()==
functionId
){
return
this
;
}
for
(
FunctionItem
item:
children
){
FunctionItem
find
=
item
.
findChild
(
functionId
);
if
(
find
!=
null
){
return
find
;
}
}
return
null
;
}
/**
* 查找所有的子功能
* @return
*/
public
List
<
FunctionItem
>
findAllItem
(){
List
<
FunctionItem
>
all
=
new
LinkedList
<>();
findAllChildItem
(
all
,
this
);
return
all
;
}
public
List
<
Long
>
findAllChildrenId
(){
List
<
FunctionItem
>
items
=
findAllItem
();
List
<
Long
>
children
=
new
ArrayList
<
Long
>();
for
(
FunctionItem
item:
items
){
children
.
add
(
item
.
getId
());
}
return
children
;
}
private
void
findAllChildItem
(
List
<
FunctionItem
>
all
,
FunctionItem
parent
){
for
(
FunctionItem
item:
parent
.
children
){
all
.
add
(
item
);
findAllChildItem
(
all
,
item
);
}
}
@Override
public
int
hashCode
()
{
final
int
prime
=
31
;
int
result
=
1
;
result
=
prime
*
result
+
((
sysFunction
==
null
)
?
0
:
sysFunction
.
hashCode
());
return
result
;
}
@Override
public
boolean
equals
(
Object
obj
)
{
if
(
this
==
obj
)
return
true
;
if
(
obj
==
null
)
return
false
;
if
(
getClass
()
!=
obj
.
getClass
())
return
false
;
FunctionItem
other
=
(
FunctionItem
)
obj
;
if
(
sysFunction
==
null
)
{
if
(
other
.
sysFunction
!=
null
)
return
false
;
}
else
if
(!
sysFunction
.
equals
(
other
.
sysFunction
))
return
false
;
return
true
;
}
@Override
public
String
toString
()
{
return
"MenuItem [sysFunction="
+
sysFunction
.
getName
()
+
","
+
this
.
children
.
size
()+
"]"
;
}
@Override
public
String
getName
()
{
return
sysFunction
==
null
?
""
:
sysFunction
.
getName
();
}
}
admin-core/src/main/java/com/ibeetl/admin/core/rbac/tree/MenuItem.java
0 → 100644
View file @
321361c9
package
com.ibeetl.admin.core.rbac.tree
;
import
java.util.ArrayList
;
import
java.util.Iterator
;
import
java.util.LinkedList
;
import
java.util.List
;
import
java.util.Set
;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
com.ibeetl.admin.core.entity.CoreMenu
;
public
class
MenuItem
implements
TreeItem
{
CoreMenu
sysMenu
=
null
;
List
<
MenuItem
>
children
=
new
ArrayList
<
MenuItem
>();
@JsonIgnore
MenuItem
parent
=
null
;
String
name
;
public
MenuItem
(
CoreMenu
sysMenu
){
this
.
sysMenu
=
sysMenu
;
this
.
name
=
sysMenu
!=
null
?
sysMenu
.
getName
():
null
;
}
public
void
setParent
(
MenuItem
parent
){
this
.
parent
=
parent
;
parent
.
children
.
add
(
this
);
}
public
List
<
MenuItem
>
getChildren
(){
return
this
.
children
;
}
public
Long
getId
(){
return
sysMenu
.
getId
();
}
public
CoreMenu
getData
(){
return
this
.
sysMenu
;
}
public
void
filter
(
Set
<
Long
>
allows
){
Iterator
<
MenuItem
>
it
=
this
.
children
.
iterator
();
while
(
it
.
hasNext
()){
MenuItem
item
=
it
.
next
();
if
(
item
.
getChildren
().
size
()==
0
&&!
allows
.
contains
(
item
.
getData
().
getId
())){
it
.
remove
();
}
if
(
item
.
getChildren
().
size
()!=
0
){
item
.
filter
(
allows
);
if
(
item
.
getChildren
().
size
()==
0
){
it
.
remove
();
}
}
}
}
/**
* 查找某个指定的子功能
* @param functionId
* @return
*/
public
MenuItem
findChild
(
Long
menuId
){
if
(
sysMenu
.
getId
().
equals
(
menuId
)){
return
this
;
}
for
(
MenuItem
item:
children
){
MenuItem
find
=
item
.
findChild
(
menuId
);
if
(
find
!=
null
){
return
find
;
}
}
return
null
;
}
/**
* 查找所有的子菜单
* @return
*/
public
List
<
MenuItem
>
findAllItem
(){
List
<
MenuItem
>
all
=
new
LinkedList
<>();
findAllChildItem
(
all
,
this
);
return
all
;
}
private
void
findAllChildItem
(
List
<
MenuItem
>
all
,
MenuItem
parent
){
for
(
MenuItem
item:
parent
.
children
){
all
.
add
(
item
);
findAllChildItem
(
all
,
item
);
}
}
@Override
public
int
hashCode
()
{
final
int
prime
=
31
;
int
result
=
1
;
result
=
prime
*
result
+
((
sysMenu
==
null
)
?
0
:
sysMenu
.
hashCode
());
return
result
;
}
@Override
public
boolean
equals
(
Object
obj
)
{
if
(
this
==
obj
)
return
true
;
if
(
obj
==
null
)
return
false
;
if
(
getClass
()
!=
obj
.
getClass
())
return
false
;
MenuItem
other
=
(
MenuItem
)
obj
;
if
(
sysMenu
==
null
)
{
if
(
other
.
sysMenu
!=
null
)
return
false
;
}
else
if
(!
sysMenu
.
equals
(
other
.
sysMenu
))
return
false
;
return
true
;
}
public
MenuItem
getParent
()
{
return
parent
;
}
@Override
public
String
toString
()
{
return
"MenuItem [sysMenu="
+
sysMenu
.
getName
()
+
","
+
this
.
children
.
size
()+
"]"
;
}
@Override
public
String
getName
()
{
return
this
.
name
;
}
}
admin-core/src/main/java/com/ibeetl/admin/core/rbac/tree/OrgItem.java
0 → 100644
View file @
321361c9
package
com.ibeetl.admin.core.rbac.tree
;
import
java.util.ArrayList
;
import
java.util.LinkedList
;
import
java.util.List
;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
com.ibeetl.admin.core.entity.CoreOrg
;
public
class
OrgItem
implements
TreeItem
{
private
Long
id
;
private
CoreOrg
org
;
@JsonIgnore
private
OrgItem
parent
;
private
List
<
OrgItem
>
children
=
new
ArrayList
<>();
private
String
name
;
public
OrgItem
(
CoreOrg
org
){
this
.
id
=
org
.
getId
();
this
.
org
=
org
;
this
.
name
=
org
!=
null
?
org
.
getName
():
null
;
}
public
OrgItem
findChild
(
Long
orgId
){
if
(
id
.
equals
(
orgId
)){
return
this
;
}
for
(
OrgItem
item:
children
){
OrgItem
find
=
item
.
findChild
(
orgId
);
if
(
find
!=
null
){
return
find
;
}
}
return
null
;
}
public
OrgItem
findParentOrgItem
(
String
type
){
if
(
this
.
org
.
getType
().
equals
(
type
)){
return
this
;
}
OrgItem
parent
=
this
;
while
((
parent
=
parent
.
getParent
())!=
null
){
if
(
parent
.
getId
()!=
0
&&
parent
.
org
.
getType
().
equals
(
type
)){
return
parent
;
}
}
return
null
;
}
/** 查询所有符合条件的的组织机构
* @param type 参考SysOrg,type=0 获取所有子机构
* @return
*/
public
List
<
OrgItem
>
findAllChildOrgItem
(
String
type
){
return
findAllChildOrgItem
(
type
,
null
);
}
/**
* 取得当前机构的所有子机构
* @return
*/
public
List
<
Long
>
findAllChildrenId
(){
List
<
OrgItem
>
items
=
findAllChildOrgItem
(
null
);
List
<
Long
>
children
=
new
ArrayList
<
Long
>();
for
(
OrgItem
item:
items
){
children
.
add
(
item
.
getId
());
}
return
children
;
}
/** 查询下级所期望的机构,但不查询breakType 指定的机构
* @param type 期望机构,0代表所有 ,1 集团 2 公司 等
* @param breakType 不希望出现的机构
* @return
*/
public
List
<
OrgItem
>
findAllChildOrgItem
(
String
type
,
String
breakType
){
List
<
OrgItem
>
all
=
new
LinkedList
<>();
findChildOrgItem
(
all
,
this
,
type
,
breakType
);
return
all
;
}
public
List
<
OrgItem
>
findAllChildOrgItem
(){
return
this
.
findAllChildOrgItem
(
null
,
null
);
}
private
void
findChildOrgItem
(
List
<
OrgItem
>
all
,
OrgItem
parent
,
String
type
,
String
breakType
){
for
(
OrgItem
item:
parent
.
children
){
if
(
item
.
org
.
getType
().
equals
(
breakType
)){
continue
;
}
if
(
type
==
null
||
type
.
equals
(
item
.
org
.
getType
())){
all
.
add
(
item
);
}
findChildOrgItem
(
all
,
item
,
type
,
breakType
);
}
}
@Override
public
int
hashCode
()
{
final
int
prime
=
31
;
int
result
=
1
;
result
=
prime
*
result
+
((
id
==
null
)
?
0
:
id
.
hashCode
());
return
result
;
}
@Override
public
boolean
equals
(
Object
obj
)
{
if
(
this
==
obj
)
return
true
;
if
(
obj
==
null
)
return
false
;
if
(
getClass
()
!=
obj
.
getClass
())
return
false
;
OrgItem
other
=
(
OrgItem
)
obj
;
if
(
id
==
null
)
{
if
(
other
.
id
!=
null
)
return
false
;
}
else
if
(!
id
.
equals
(
other
.
id
))
return
false
;
return
true
;
}
public
Long
getId
()
{
return
id
;
}
public
void
setId
(
Long
id
)
{
this
.
id
=
id
;
}
public
CoreOrg
getOrg
()
{
return
org
;
}
public
void
setOrg
(
CoreOrg
org
)
{
this
.
org
=
org
;
}
public
OrgItem
getParent
()
{
return
parent
;
}
public
void
setParent
(
OrgItem
parent
)
{
this
.
parent
=
parent
;
this
.
parent
.
children
.
add
(
this
);
}
public
List
<
OrgItem
>
getChildren
()
{
return
children
;
}
public
void
setChildren
(
List
<
OrgItem
>
children
)
{
this
.
children
=
children
;
}
@Override
public
String
getName
()
{
return
this
.
name
;
}
}
admin-core/src/main/java/com/ibeetl/admin/core/rbac/tree/TreeItem.java
0 → 100644
View file @
321361c9
package
com.ibeetl.admin.core.rbac.tree
;
import
java.util.List
;
/**
* 菜单,功能点,组织机构等跟树有关的结构的接口
* @author lijiazhi
*
*/
public
interface
TreeItem
extends
java
.
io
.
Serializable
{
public
String
getName
();
public
Long
getId
();
public
List
getChildren
();
}
admin-core/src/main/java/com/ibeetl/admin/core/service/BaseService.java
0 → 100644
View file @
321361c9
package
com.ibeetl.admin.core.service
;
import
java.lang.reflect.Field
;
import
java.lang.reflect.ParameterizedType
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map.Entry
;
import
org.beetl.sql.core.SQLManager
;
import
org.beetl.sql.core.TailBean
;
import
org.beetl.sql.core.db.KeyHolder
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
com.ibeetl.admin.core.annotation.Dict
;
import
com.ibeetl.admin.core.util.DictUtil
;
import
com.ibeetl.admin.core.util.FieldDict
;
import
com.ibeetl.admin.core.util.PlatformException
;
import
com.ibeetl.admin.core.util.enums.DelFlagEnum
;
/**
* 描述:
* @author : xiandafu
*/
public
class
BaseService
<
T
>
{
@Autowired
protected
DictUtil
dictUtil
;
@Autowired
protected
SQLManager
sqlManager
;
/**
* 根据id查询对象,如果主键ID不存在
* @param id
* @return
*/
public
T
queryById
(
Object
id
)
{
T
t
=
sqlManager
.
single
(
getCurrentEntityClassz
(),
id
);
queryEntityAfter
((
Object
)
t
);
return
t
;
}
/**
* 根据id查询
* @param classz 返回的对象类型
* @param id 主键id
* @return
*/
public
T
queryById
(
Class
<
T
>
classz
,
Object
id
)
{
T
t
=
sqlManager
.
unique
(
classz
,
id
);
queryEntityAfter
((
Object
)
t
);
return
t
;
}
/**
* 新增一条数据
* @param model 实体类
* @return
*/
public
boolean
save
(
T
model
)
{
return
sqlManager
.
insert
(
model
,
true
)
>
0
;
}
/**
* 删除数据(一般为逻辑删除,更新del_flag字段为1)
* @param ids
* @return
*/
public
boolean
deleteById
(
List
<
Long
>
ids
)
{
if
(
ids
==
null
||
ids
.
isEmpty
())
{
throw
new
PlatformException
(
"删除数据ID不能为空"
);
}
for
(
Long
id
:
ids
)
{
}
List
<
Object
>
list
=
new
ArrayList
<>();
for
(
Long
id
:
ids
)
{
Map
map
=
new
HashMap
();
// always id,delFlag for pojo
map
.
put
(
"id"
,
id
);
map
.
put
(
"delFlag"
,
DelFlagEnum
.
DELETED
.
getValue
());
list
.
add
(
map
);
}
int
[]
count
=
sqlManager
.
updateBatchTemplateById
(
getCurrentEntityClassz
(),
list
);
int
successCount
=
0
;
for
(
int
successFlag
:
count
)
{
successCount
+=
successFlag
;
}
return
successCount
==
ids
.
size
();
}
public
boolean
deleteById
(
Long
id
)
{
Map
map
=
new
HashMap
();
// always id,delFlag for pojo
map
.
put
(
"id"
,
id
);
map
.
put
(
"delFlag"
,
DelFlagEnum
.
DELETED
.
getValue
());
int
ret
=
sqlManager
.
updateTemplateById
(
getCurrentEntityClassz
(),
map
);
return
ret
==
1
;
}
/**
* 根据id删除数据
* @param id 主键值
* @return
*/
public
int
forceDelete
(
Long
id
)
{
return
sqlManager
.
deleteById
(
getCurrentEntityClassz
(),
id
);
}
/**
* 根据id删除数据
* @param id 主键值
* @return
*/
public
int
forceDelete
(
Class
<
T
>
classz
,
Long
id
)
{
return
sqlManager
.
deleteById
(
classz
,
id
);
}
/**
* 更新,只更新不为空的字段
* @param model
* @return
*/
public
boolean
updateTemplate
(
T
model
)
{
return
sqlManager
.
updateTemplateById
(
model
)>
0
;
}
/**
* 更新所有字段
* @param model
* @return
*/
public
boolean
update
(
T
model
)
{
return
sqlManager
.
updateById
(
model
)
>
0
;
}
/**
* 获取当前注入泛型T的类型
* @return 具体类型
*/
@SuppressWarnings
(
"unchecked"
)
private
Class
<
T
>
getCurrentEntityClassz
()
{
return
(
Class
<
T
>)
((
ParameterizedType
)
getClass
().
getGenericSuperclass
()).
getActualTypeArguments
()[
0
];
}
public
void
queryListAfter
(
List
list
,
FieldDict
[]
more
){
for
(
Object
bean
:
list
)
{
queryEntityAfter
(
bean
,
more
);
}
}
public
void
queryEntityAfter
(
Object
bean
){
this
.
queryEntityAfter
(
bean
,
null
);
}
public
void
queryListAfter
(
List
list
)
{
for
(
Object
bean
:
list
)
{
queryEntityAfter
(
bean
);
}
}
public
void
queryEntityAfter
(
Object
bean
,
FieldDict
[]
more
)
{
if
(
bean
==
null
)
{
return
;
}
if
(!(
bean
instanceof
TailBean
)){
throw
new
PlatformException
(
"指定的pojo"
+
bean
.
getClass
()+
" 不能获取数据字典,需要继承TailBean"
);
}
TailBean
ext
=
(
TailBean
)
bean
;
Field
[]
fields
=
ext
.
getClass
().
getDeclaredFields
();
for
(
Field
field
:
fields
)
{
if
(
field
.
isAnnotationPresent
(
Dict
.
class
))
{
field
.
setAccessible
(
true
);
Dict
dict
=
field
.
getAnnotation
(
Dict
.
class
);
try
{
String
display
=
""
;
Object
fieldValue
=
field
.
get
(
ext
);
if
(
fieldValue
!=
null
)
{
display
=
dictUtil
.
getDictName
(
fieldValue
.
toString
());
}
ext
.
set
(
field
.
getName
()
+
dict
.
suffix
(),
display
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
}
if
(
more
==
null
){
return
;
}
for
(
FieldDict
desc:
more
){
Object
fieldValue
=
ext
.
get
(
desc
.
getField
());
String
display
=
""
;
if
(
fieldValue
!=
null
)
{
display
=
dictUtil
.
getDictName
(
fieldValue
.
toString
());
}
ext
.
set
(
desc
.
getDisplayField
(),
display
);
}
}
}
admin-core/src/main/java/com/ibeetl/admin/core/service/CoreAuditService.java
0 → 100644
View file @
321361c9
package
com.ibeetl.admin.core.service
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
com.ibeetl.admin.core.dao.CoreAuditDao
;
import
com.ibeetl.admin.core.entity.CoreAudit
;
@Service
@Transactional
public
class
CoreAuditService
extends
BaseService
<
CoreAudit
>
{
@Autowired
private
CoreAuditDao
sysAuditDao
;
}
\ No newline at end of file
Prev
1
…
7
8
9
10
11
12
13
14
15
…
23
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