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
143d37ee
Commit
143d37ee
authored
Nov 27, 2021
by
trumansdo
Browse files
更换至beetlsql3最新版本
parent
398a4c6b
Changes
170
Hide whitespace changes
Inline
Side-by-side
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/service/CoreDictService.java
View file @
143d37ee
package
com.ibeetl.admin.core.service
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.lang.Snowflake
;
import
cn.hutool.core.util.IdUtil
;
import
cn.hutool.core.util.StrUtil
;
import
com.ibeetl.admin.core.web.JsonResult
;
import
com.ibeetl.admin.core.dao.CoreDictDao
;
import
com.ibeetl.admin.core.entity.CoreDict
;
import
com.ibeetl.admin.core.util.enums.DelFlagEnum
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Optional
;
import
javax.validation.constraints.NotBlank
;
import
org.beetl.sql.core.mapper.internal.LambdaQueryAmi
;
import
org.beetl.sql.core.query.LambdaQuery
;
import
org.beetl.sql.core.query.Query
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.cache.annotation.Cacheable
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
com.ibeetl.admin.core.dao.CoreDictDao
;
import
com.ibeetl.admin.core.entity.CoreDict
;
import
com.ibeetl.admin.core.util.enums.DelFlagEnum
;
import
org.springframework.validation.annotation.Validated
;
/**
...
...
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/service/CorePlatformService.java
View file @
143d37ee
package
com.ibeetl.admin.core.service
;
import
static
com
.
ibeetl
.
admin
.
core
.
util
.
HttpRequestLocal
.
ACCESS_CURRENT_ORG
;
import
static
com
.
ibeetl
.
admin
.
core
.
util
.
HttpRequestLocal
.
ACCESS_CURRENT_USER
;
import
static
com
.
ibeetl
.
admin
.
core
.
util
.
HttpRequestLocal
.
ACCESS_USER_ORGS
;
import
com.ibeetl.admin.core.dao.CoreFunctionDao
;
import
com.ibeetl.admin.core.dao.CoreMenuDao
;
...
...
@@ -20,7 +17,7 @@ import com.ibeetl.admin.core.rbac.tree.FunctionItem;
import
com.ibeetl.admin.core.rbac.tree.MenuItem
;
import
com.ibeetl.admin.core.rbac.tree.OrgItem
;
import
com.ibeetl.admin.core.util.FunctionBuildUtil
;
import
com.ibeetl.admin.core.util.
Http
RequestLocal
;
import
com.ibeetl.admin.core.util.Request
ContextThread
Local
;
import
com.ibeetl.admin.core.util.MenuBuildUtil
;
import
com.ibeetl.admin.core.util.OrgBuildUtil
;
import
com.ibeetl.admin.core.util.PlatformException
;
...
...
@@ -34,6 +31,8 @@ import java.util.Set;
import
javax.annotation.PostConstruct
;
import
org.beetl.sql.core.SQLManager
;
import
org.beetl.sql.core.engine.SQLPlaceholderST
;
import
org.beetl.sql.core.engine.template.BeetlTemplateEngine
;
import
org.beetl.sql.core.engine.template.SQLTemplateEngine
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.cache.annotation.CacheEvict
;
import
org.springframework.cache.annotation.Cacheable
;
...
...
@@ -88,9 +87,6 @@ public class CorePlatformService {
public
static
final
String
ACCESS_SUPPER_ADMIN
=
"admin"
;
@Autowired
HttpRequestLocal
httpRequestLocal
;
@Autowired
CoreRoleFunctionDao
roleFunctionDao
;
...
...
@@ -129,15 +125,21 @@ public class CorePlatformService {
public
void
init
()
{
SQLPlaceholderST
.
textFunList
.
add
(
"function"
);
// sql语句里带有此函数来判断数据权限
sqlManager
.
getBeetl
().
getGroupTemplate
().
registerFunction
(
"function"
,
dataAccessFunction
);
sqlManager
.
getBeetl
().
getGroupTemplate
().
registerFunction
(
"nextDay"
,
new
NextDayFunction
());
SQLTemplateEngine
sqlTemplateEngine
=
sqlManager
.
getSqlTemplateEngine
();
if
(
sqlTemplateEngine
instanceof
BeetlTemplateEngine
)
{
BeetlTemplateEngine
beetlTemplateEngine
=
(
BeetlTemplateEngine
)
sqlTemplateEngine
;
// sql语句里带有此函数来判断数据权限
beetlTemplateEngine
.
getBeetl
().
getGroupTemplate
()
.
registerFunction
(
"function"
,
dataAccessFunction
);
beetlTemplateEngine
.
getBeetl
().
getGroupTemplate
()
.
registerFunction
(
"nextDay"
,
new
NextDayFunction
());
}
}
public
CoreUser
getCurrentUser
()
{
checkSession
();
CoreUser
user
=
(
CoreUser
)
HttpRequestLocal
.
getSessionValue
(
ACCESS_CURRENT_USER
);
CoreUser
user
=
RequestContextThreadLocal
.
getCurrentUser
(
);
return
user
;
}
...
...
@@ -146,7 +148,7 @@ public class CorePlatformService {
List
<
CoreOrg
>
orgs
=
this
.
getCurrentOrgs
();
for
(
CoreOrg
org
:
orgs
)
{
if
(
org
.
getId
().
equals
(
orgId
))
{
Http
Request
Local
.
setSessionValue
(
ACCESS_CURRENT_ORG
,
org
);
Request
ContextThreadLocal
.
setCurrentOrg
(
org
);
}
}
}
...
...
@@ -154,38 +156,31 @@ public class CorePlatformService {
public
Long
getCurrentOrgId
()
{
checkSession
();
CoreOrg
org
=
(
CoreOrg
)
HttpRequestLocal
.
getSessionValue
(
ACCESS_CURRENT_ORG
);
CoreOrg
org
=
RequestContextThreadLocal
.
getCurrentOrg
(
);
return
org
.
getId
();
}
public
CoreOrg
getCurrentOrg
()
{
checkSession
();
CoreOrg
org
=
(
CoreOrg
)
HttpRequestLocal
.
getSessionValue
(
ACCESS_CURRENT_ORG
);
CoreOrg
org
=
RequestContextThreadLocal
.
getCurrentOrg
(
);
return
org
;
}
public
List
<
CoreOrg
>
getCurrentOrgs
()
{
List
<
CoreOrg
>
orgs
=
(
Li
st
<
Co
reOrg
>)
HttpRequestLocal
.
getSessionValue
(
ACCESS_USER_ORGS
);
List
<
CoreOrg
>
orgs
=
Reque
stCo
ntextThreadLocal
.
getUserOrgs
(
);
return
orgs
;
}
protected
void
checkSession
()
{
CoreOrg
org
=
(
CoreOrg
)
HttpRequestLocal
.
getSessionValue
(
ACCESS_CURRENT_ORG
);
CoreOrg
org
=
RequestContextThreadLocal
.
getCurrentOrg
(
);
if
(
org
==
null
)
{
throw
new
PlatformException
(
"会话过期,重新登录"
);
}
}
public
void
setLoginUser
(
CoreUser
user
,
CoreOrg
currentOrg
,
List
<
CoreOrg
>
orgs
)
{
HttpRequestLocal
.
setSessionValue
(
ACCESS_CURRENT_USER
,
user
);
HttpRequestLocal
.
setSessionValue
(
ACCESS_CURRENT_ORG
,
currentOrg
);
HttpRequestLocal
.
setSessionValue
(
ACCESS_USER_ORGS
,
orgs
);
}
public
MenuItem
getMenuItem
(
long
userId
,
long
orgId
)
{
CoreUser
user
=
this
.
sysUserDao
.
unique
(
userId
);
...
...
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/service/CoreRoleService.java
View file @
143d37ee
package
com.ibeetl.admin.core.service
;
import
cn.hutool.core.lang.Assert
;
import
com.ibeetl.admin.core.dao.CoreRoleDao
;
import
com.ibeetl.admin.core.entity.CoreRole
;
import
java.util.List
;
import
java.util.Objects
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.beetl.sql.core.query.Query
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
...
...
@@ -19,19 +22,25 @@ import org.springframework.transaction.annotation.Transactional;
@Transactional
public
class
CoreRoleService
extends
CoreBaseService
<
CoreRole
>
{
@Autowired
private
CoreRoleDao
roleDao
;
@Autowired
private
CoreRoleDao
roleDao
;
/**
*
* @param type : R0 操作角色;R1 是工作流角色
*
* @param type
* : R0 操作角色;R1 是工作流角色
* @author 一日看尽长安花
*/
public
List
<
CoreRole
>
getAllRoles
(
String
type
)
{
return
roleDao
.
getSQLManager
()
.
lambdaQuery
(
CoreRole
.
class
)
.
andEq
(
CoreRole:
:
getType
,
Query
.
filterEmpty
(
type
))
.
select
();
}
public
List
<
CoreRole
>
getRoles
(
Long
userId
)
{
Assert
.
notNull
(
userId
,
"用户角色不能为空"
);
return
roleDao
.
geRoles
(
userId
);
}
}
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/service/CoreUserService.java
View file @
143d37ee
...
...
@@ -5,17 +5,15 @@ import com.ibeetl.admin.core.dao.CoreOrgDao;
import
com.ibeetl.admin.core.dao.CoreUserDao
;
import
com.ibeetl.admin.core.dao.SQLManagerBaseDao
;
import
com.ibeetl.admin.core.entity.CoreOrg
;
import
com.ibeetl.admin.core.entity.CoreRole
;
import
com.ibeetl.admin.core.entity.CoreUser
;
import
com.ibeetl.admin.core.rbac.UserLoginInfo
;
import
com.ibeetl.admin.core.service.param.CoreUserParam
;
import
com.ibeetl.admin.core.util.PlatformException
;
import
com.ibeetl.admin.core.util.enums.DelFlagEnum
;
import
com.ibeetl.admin.core.util.enums.GeneralStateEnum
;
import
com.ibeetl.admin.core.util.enums.StateTypeEnum
;
import
java.util.List
;
import
java.util.Optional
;
import
javax.validation.constraints.NotNull
;
import
org.beetl.sql.core.engine.PageQuery
;
import
org.beetl.sql.core.page.PageResult
;
import
org.beetl.sql.core.query.Query
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
...
...
@@ -24,15 +22,23 @@ import org.springframework.transaction.annotation.Transactional;
@Service
@Transactional
public
class
CoreUserService
extends
CoreBaseService
{
@Autowired
CoreUserDao
userDao
;
@Autowired
CoreOrgDao
orgDao
;
@Autowired
CoreUserDao
userDao
;
@Autowired
PasswordEncryptService
passwordEncryptService
;
@Autowired
CoreOrgDao
orgDao
;
@Autowired
CoreRoleService
roleService
;
@Autowired
SQLManagerBaseDao
sqlManagerBaseDao
;
@Autowired
PasswordEncryptService
passwordEncryptService
;
@Autowired
SQLManagerBaseDao
sqlManagerBaseDao
;
public
UserLoginInfo
login
(
String
userName
,
String
password
)
{
CoreUser
user
=
userDao
.
createLambdaQuery
()
...
...
@@ -53,10 +59,14 @@ public class CoreUserService extends CoreBaseService {
UserLoginInfo
loginInfo
=
new
UserLoginInfo
();
loginInfo
.
setOrgs
(
orgs
);
loginInfo
.
setUser
(
user
);
List
<
CoreRole
>
roles
=
roleService
.
getRoles
(
user
.
getId
());
loginInfo
.
setRoles
(
roles
);
return
loginInfo
;
}
public
List
<
CoreOrg
>
getUserOrg
(
long
userId
,
long
orgId
)
{
List
<
CoreOrg
>
orgs
=
orgDao
.
queryOrgByUser
(
userId
);
if
(
orgs
.
isEmpty
())
{
// 没有赋值任何角色,默认给一个所在部门
...
...
@@ -71,8 +81,9 @@ public class CoreUserService extends CoreBaseService {
return
userDao
.
getUserByRole
(
role
);
}
public
PageQuery
<
CoreUser
>
getAllUsers
(
CoreUserParam
coreUserParam
)
{
PageQuery
<
CoreUser
>
pageQuery
=
public
PageResult
<
CoreUser
>
getAllUsers
(
CoreUserParam
coreUserParam
)
{
PageResult
<
CoreUser
>
pageResult
=
sqlManagerBaseDao
.
getSQLManager
()
.
lambdaQuery
(
CoreUser
.
class
)
...
...
@@ -84,28 +95,34 @@ public class CoreUserService extends CoreBaseService {
.
andEq
(
CoreUser:
:
getJobType1
,
Query
.
filterNull
(
coreUserParam
.
getJobType1
()))
.
andEq
(
CoreUser:
:
getState
,
Query
.
filterNull
(
coreUserParam
.
getState
()))
.
page
(
coreUserParam
.
getPage
(),
coreUserParam
.
getLimit
());
return
page
Query
;
return
page
Result
;
}
public
CoreUser
getUserByCode
(
String
userName
)
{
CoreUser
user
=
new
CoreUser
();
user
.
setCode
(
userName
);
return
userDao
.
templateOne
(
user
);
}
public
void
update
(
CoreUser
user
)
{
userDao
.
updateById
(
user
);
}
public
CoreOrg
getOrgById
(
Long
orgId
)
{
return
orgDao
.
unique
(
orgId
);
}
public
CoreUser
getUserById
(
Long
userId
)
{
return
userDao
.
unique
(
userId
);
}
public
List
<
String
>
getOrgCode
(
List
<
Long
>
orgIds
)
{
return
orgDao
.
queryAllOrgCode
(
orgIds
);
}
}
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/service/RoleRoutesElService.java
View file @
143d37ee
package
com.ibeetl.admin.core.service
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.
convert.Conv
ert
;
import
cn.hutool.core.
lang.Ass
ert
;
import
com.ibeetl.admin.core.dao.CoreFunctionDao
;
import
com.ibeetl.admin.core.dao.CoreRoleDao
;
import
com.ibeetl.admin.core.entity.CoreRoute
;
import
com.ibeetl.admin.core.entity.CoreUserRole
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.
Map
;
import
java.util.
Objects
;
import
java.util.stream.Collectors
;
import
javax.validation.constraints.NotNull
;
import
lombok.extern.slf4j.Slf4j
;
...
...
@@ -21,11 +21,14 @@ import org.springframework.transaction.annotation.Transactional;
@Transactional
public
class
RoleRoutesElService
{
@Autowired
private
CoreFunctionDao
coreFunctionDao
;
@Autowired
private
CoreFunctionDao
coreFunctionDao
;
@Autowired
private
CoreRoleDao
coreRoleDao
;
@Autowired
private
CoreRoleDao
coreRoleDao
;
public
List
<
Long
>
getAllRoleIds
(
Long
userId
,
Long
orgId
)
{
return
coreRoleDao
.
getSQLManager
().
lambdaQuery
(
CoreUserRole
.
class
).
andEq
(
"user_id"
,
userId
)
.
andEq
(
"org_id"
,
orgId
).
select
(
Long
.
class
,
"role_id"
).
stream
()
.
distinct
()
...
...
@@ -33,54 +36,40 @@ public class RoleRoutesElService {
}
/**
*
* 前端路由映射表中单个路由映射全部具有的信息:
*
{ <br/>
*
"path": "/profile", <br/>
*
"component": "Layout", <br/>
*
"redirect": "/profile/index", <br/>
*
"hidden": true, <br/>
*
"alwaysShow": true, <br/>
*
"name": "router-name", <br/>
*
"meta": { <br/>
*
"noCache": true, <br/>
*
"affix": true, <br/>
*
"breadcrumb": false, <br/>
*
"activeMenu": "/example/list" <br/>
*
}, <br/>
*
"children": [] <br/>
*
} <br/>
* { <br/>
* "path": "/profile", <br/>
* "component": "Layout", <br/>
* "redirect": "/profile/index", <br/>
* "hidden": true, <br/>
* "alwaysShow": true, <br/>
* "name": "router-name", <br/>
* "meta": { <br/>
* "noCache": true, <br/>
* "affix": true, <br/>
* "breadcrumb": false, <br/>
* "activeMenu": "/example/list" <br/>
* }, <br/>
* "children": [] <br/>
* } <br/>
* 后端路由表中单个路由应该具有的信息: <br/>
*
{ <br/>
*
"path": "/profile", <br/>
*
"name": "router-name", <br/>
*
"meta": { <br/>
*
"title": "Profile", <br/>
*
"roles": ["admin", "editor"], <br/>
*
"icon": "user" <br/>
*
}, <br/>
*
"children": [] <br/>
*
} <br/>
* { <br/>
* "path": "/profile", <br/>
* "name": "router-name", <br/>
* "meta": { <br/>
* "title": "Profile", <br/>
* "roles": ["admin", "editor"], <br/>
* "icon": "user" <br/>
* }, <br/>
* "children": [] <br/>
* } <br/>
*
* @return 路由表格式
* */
public
List
<
CoreRoute
>
getRoutes
()
{
List
<
CoreRoute
>
routesList
=
coreFunctionDao
.
getAllRoutes
();
/*Map<Long, List<Long>> roleIdList =
routesList.stream()
.collect(
Collectors.groupingBy(
CoreRoute::getId,
Collectors.mapping(
coreRoute -> Convert.toLong(coreRoute.getTails().get("roleId")),
Collectors.toList())));
routesList = routesList.stream().distinct().sorted().collect(Collectors.toList());
for (CoreRoute coreRoute : routesList) {
coreRoute
.getMeta()
.getRoles()
.addAll(CollUtil.<Long>removeNull(roleIdList.get(coreRoute.getId())));
}*/
*/
public
List
<
CoreRoute
>
getRoutes
(
List
<
Long
>
roleIds
)
{
Assert
.
notEmpty
(
roleIds
,
"角色id不能为空"
);
List
<
CoreRoute
>
routesList
=
coreFunctionDao
.
getAllRoutes
(
roleIds
);
CoreRoute
root
=
new
CoreRoute
();
root
.
setId
(
0L
);
buildRoutesTree
(
root
,
routesList
);
...
...
@@ -89,12 +78,9 @@ public class RoleRoutesElService {
/**
* 深度优先算法递归构建路由表
*
* @param root
* @param allRoutes
* @return
*/
private
void
buildRoutesTree
(
CoreRoute
root
,
@NotNull
List
<
CoreRoute
>
allRoutes
)
{
if
(
CollUtil
.
isEmpty
(
allRoutes
))
{
return
;
}
...
...
@@ -110,4 +96,5 @@ public class RoleRoutesElService {
buildRoutesTree
(
rootChildrenList
.
get
(
i
),
allRoutes
);
}
}
}
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/service/param/CoreUserParam.java
View file @
143d37ee
...
...
@@ -5,7 +5,6 @@ import com.ibeetl.admin.core.util.enums.StateTypeEnum;
import
com.ibeetl.admin.core.web.query.PageParam
;
import
java.util.Date
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
@Data
public
class
CoreUserParam
extends
PageParam
{
...
...
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/util/AnnotationUtil.java
View file @
143d37ee
package
com.ibeetl.admin.core.util
;
import
org.springframework.core.annotation.AnnotationUtils
;
import
java.lang.annotation.Annotation
;
import
java.lang.reflect.Field
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
import
org.springframework.core.annotation.AnnotationUtils
;
/**
* 描述: 获取注解的值
...
...
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/util/ClassLoaderUtil.java
View file @
143d37ee
package
com.ibeetl.admin.core.util
;
import
com.ibeetl.admin.core.conf.RbacAnnotationConfig
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
com.ibeetl.admin.core.conf.RbacAnnotationConfig
;
public
class
ClassLoaderUtil
{
private
ClassLoaderUtil
()
{}
...
...
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/util/FileDownloadUtil.java
View file @
143d37ee
...
...
@@ -2,7 +2,6 @@ package com.ibeetl.admin.core.util;
import
java.io.IOException
;
import
java.io.OutputStream
;
import
javax.servlet.http.HttpServletResponse
;
public
class
FileDownloadUtil
{
...
...
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/util/FileUtil.java
View file @
143d37ee
package
com.ibeetl.admin.core.util
;
import
java.io.FileInputStream
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.io.OutputStream
;
...
...
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/util/FormFieldException.java
View file @
143d37ee
...
...
@@ -2,7 +2,6 @@ package com.ibeetl.admin.core.util;
import
java.util.ArrayList
;
import
java.util.List
;
import
org.springframework.validation.FieldError
;
public
class
FormFieldException
extends
PlatformException
{
...
...
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/util/FunctionBuildUtil.java
View file @
143d37ee
package
com.ibeetl.admin.core.util
;
import
java.util.ArrayList
;
import
java.util.List
;
import
com.ibeetl.admin.core.entity.CoreFunction
;
import
com.ibeetl.admin.core.rbac.tree.FunctionItem
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* 创建一个功能树,用于前端选择
...
...
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/util/MenuBuildUtil.java
View file @
143d37ee
package
com.ibeetl.admin.core.util
;
import
com.ibeetl.admin.core.entity.CoreMenu
;
import
com.ibeetl.admin.core.rbac.tree.MenuItem
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.Comparator
;
import
java.util.List
;
import
com.ibeetl.admin.core.entity.CoreMenu
;
import
com.ibeetl.admin.core.rbac.tree.MenuItem
;
public
class
MenuBuildUtil
{
private
MenuBuildUtil
()
{}
...
...
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/util/OrgBuildUtil.java
View file @
143d37ee
package
com.ibeetl.admin.core.util
;
import
java.util.ArrayList
;
import
java.util.List
;
import
com.ibeetl.admin.core.entity.CoreOrg
;
import
com.ibeetl.admin.core.rbac.tree.OrgItem
;
import
java.util.ArrayList
;
import
java.util.List
;
public
class
OrgBuildUtil
{
private
OrgBuildUtil
()
{}
...
...
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/util/
Http
RequestLocal.java
→
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/util/Request
ContextThread
Local.java
View file @
143d37ee
...
...
@@ -3,85 +3,140 @@ package com.ibeetl.admin.core.util;
import
cn.hutool.core.convert.Convert
;
import
cn.hutool.core.lang.Assert
;
import
cn.hutool.core.util.StrUtil
;
import
com.github.benmanes.caffeine.cache.Cache
;
import
com.github.benmanes.caffeine.cache.Caffeine
;
import
com.ibeetl.admin.core.conf.SpringWebMvcConfigurer
;
import
com.ibeetl.admin.core.entity.CoreOrg
;
import
com.ibeetl.admin.core.entity.CoreRole
;
import
com.ibeetl.admin.core.entity.CoreUser
;
import
com.ibeetl.admin.core.rbac.UserLoginInfo
;
import
java.net.InetAddress
;
import
java.net.UnknownHostException
;
import
java.util.Arrays
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Objects
;
import
java.util.concurrent.TimeUnit
;
import
java.util.stream.Collectors
;
import
javax.servlet.http.Cookie
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpSession
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.http.HttpHeaders
;
import
org.springframework.stereotype.Component
;
import
com.ibeetl.admin.core.conf.SpringWebMvcConfigurer
;
/**
* 保留用户会话,以方便在业务代码任何地方调用 {@link SpringWebMvcConfigurer}
*
* @author lijiazhi
*/
@Component
public
final
class
HttpRequestLocal
{
/*当前用户会话*/
public
static
final
String
ACCESS_CURRENT_USER
=
"core:user"
;
@Slf4j
public
final
class
RequestContextThreadLocal
{
/*当前请求*/
private
static
final
String
ACCESS_CURRENT_REQUEST
=
"request"
;
/*当前用户*/
private
static
final
String
ACCESS_CURRENT_USER
=
"core:user"
;
/*当前登录用户所在部门*/
public
static
final
String
ACCESS_CURRENT_ORG
=
"core:currentOrg"
;
private
static
final
String
ACCESS_CURRENT_ORG
=
"core:currentOrg"
;
/*用户可选部门*/
public
static
final
String
ACCESS_USER_ORGS
=
"core:orgs"
;
private
static
final
String
ACCESS_USER_ORGS
=
"core:orgs"
;
/*用户角色*/
private
static
final
String
ACCESS_USER_ROLES
=
"core:roles"
;
private
static
final
ThreadLocal
<
Map
<
String
,
Object
>>
CONTEXT
=
ThreadLocal
.
withInitial
(
HashMap:
:
new
);
private
static
final
Cache
<
Object
,
UserLoginInfo
>
CACHE
=
Caffeine
.
newBuilder
().
maximumSize
(
100
)
.
expireAfterAccess
(
10
,
TimeUnit
.
MINUTES
).
recordStats
().
build
();
p
ublic
HttpRequest
Local
()
{
}
p
rivate
RequestContextThread
Local
()
{
private
static
final
ThreadLocal
<
HttpServletRequest
>
requests
=
ThreadLocal
.
withInitial
(()
->
null
);
}
public
static
void
setUserRoles
(
List
<
CoreRole
>
roles
)
{
CONTEXT
.
get
().
put
(
ACCESS_USER_ROLES
,
roles
);
}
public
static
List
<
CoreRole
>
getUserRoles
()
{
public
static
void
setAccessCurrentOrg
(
CoreOrg
org
)
{
getHttpSession
().
setAttribute
(
ACCESS_CURRENT_ORG
,
org
);
return
Convert
.
toList
(
CoreRole
.
class
,
CONTEXT
.
get
().
get
(
ACCESS_USER_ROLES
));
}
public
static
CoreOrg
getAccessCurrentOrg
()
{
return
(
CoreOrg
)
getHttpSession
().
getAttribute
(
ACCESS_CURRENT_ORG
);
public
static
List
<
Long
>
getUserRoleIds
()
{
return
Convert
.
toList
(
CoreRole
.
class
,
CONTEXT
.
get
().
get
(
ACCESS_USER_ROLES
)).
stream
()
.
map
(
CoreRole:
:
getId
).
collect
(
Collectors
.
toList
());
}
public
static
void
setAccessUserOrgs
(
List
<
CoreOrg
>
orgs
)
{
getHttpSession
().
setAttribute
(
ACCESS_USER_ORGS
,
orgs
);
public
static
void
setCurrentOrg
(
CoreOrg
org
)
{
CONTEXT
.
get
().
put
(
ACCESS_CURRENT_ORG
,
org
);
}
public
static
List
<
CoreOrg
>
getAccessUserOrgs
()
{
return
Convert
.
toList
(
CoreOrg
.
class
,
getHttpSession
().
getAttribute
(
ACCESS_USER_ORGS
));
public
static
CoreOrg
getCurrentOrg
()
{
return
(
CoreOrg
)
CONTEXT
.
get
().
get
(
ACCESS_CURRENT_ORG
);
}
public
static
void
setAccessCurrentUser
(
CoreUser
user
)
{
getHttpSession
().
setAttribute
(
ACCESS_CURRENT_USER
,
user
);
public
static
void
setUserOrgs
(
List
<
CoreOrg
>
orgs
)
{
CONTEXT
.
get
().
put
(
ACCESS_USER_ORGS
,
orgs
);
}
public
static
CoreUser
getAccessCurrentUser
()
{
return
(
CoreUser
)
getHttpSession
().
getAttribute
(
ACCESS_CURRENT_USER
);
public
static
List
<
CoreOrg
>
getUserOrgs
()
{
return
Convert
.
toList
(
CoreOrg
.
class
,
CONTEXT
.
get
().
get
(
ACCESS_USER_ORGS
));
}
public
static
void
setLoginerInfo
(
CoreUser
user
,
CoreOrg
org
,
List
<
CoreOrg
>
orgs
)
{
setAccessCurrentUser
(
user
);
setAccessCurrentOrg
(
org
);
setAccessUserOrgs
(
orgs
);
getHttpSession
().
setAttribute
(
"clientIP"
,
getIpAddr
(
get
()));
public
static
void
setCurrentUser
(
CoreUser
user
)
{
CONTEXT
.
get
().
put
(
ACCESS_CURRENT_USER
,
user
);
}
public
static
CoreUser
getCurrentUser
()
{
return
(
CoreUser
)
CONTEXT
.
get
().
get
(
ACCESS_CURRENT_USER
);
}
public
static
void
setLoginerInfo
(
UserLoginInfo
loginerInfo
)
{
CACHE
.
put
(
loginerInfo
.
getUser
().
getId
(),
loginerInfo
);
setCurrentUser
(
loginerInfo
.
getUser
());
setCurrentOrg
(
loginerInfo
.
getCurrentOrg
());
setUserOrgs
(
loginerInfo
.
getOrgs
());
setUserRoles
(
loginerInfo
.
getRoles
());
}
public
static
void
reset
(
Object
uid
)
{
UserLoginInfo
loginerInfo
=
CACHE
.
getIfPresent
(
Convert
.
toLong
(
uid
,
null
));
if
(
Objects
.
isNull
(
loginerInfo
))
{
return
;
}
setLoginerInfo
(
loginerInfo
);
}
public
static
void
clearAllSession
()
{
getHttpSession
().
removeAttribute
(
ACCESS_CURRENT_USER
);
getHttpSession
().
removeAttribute
(
ACCESS_CURRENT_ORG
);
getHttpSession
().
removeAttribute
(
ACCESS_USER_ORGS
);
}
public
static
void
destory
()
{
requests
.
remove
();
CONTEXT
.
get
().
clear
();
CONTEXT
.
remove
();
}
public
static
Cookie
getCookieByName
(
String
cookieName
)
{
public
static
Cookie
getCookie
(
String
cookieName
)
{
Assert
.
notNull
(
cookieName
);
Cookie
[]
cookies
=
get
().
getCookies
();
Cookie
[]
cookies
=
get
Request
().
getCookies
();
return
Arrays
.
stream
(
cookies
)
.
filter
(
cookie
->
StrUtil
.
equals
(
cookie
.
getName
(),
cookieName
))
.
findFirst
()
...
...
@@ -89,54 +144,52 @@ public final class HttpRequestLocal {
}
public
static
Object
getSessionValue
(
String
attr
)
{
return
getHttpSession
().
getAttribute
(
attr
);
return
getSession
().
getAttribute
(
attr
);
}
public
static
void
setSessionValue
(
String
attr
,
Object
obj
)
{
get
().
getSession
().
setAttribute
(
attr
,
obj
);
}
public
static
String
getAuthorization
()
{
return
get
().
getHeader
(
HttpHeaders
.
AUTHORIZATION
);
getRequest
().
getSession
().
setAttribute
(
attr
,
obj
);
}
public
static
Object
getRequestValue
(
String
attr
)
{
return
get
().
getAttribute
(
attr
);
}
public
static
String
getAuthorization
()
{
public
static
void
setRequestValue
(
String
attr
,
Object
obj
)
{
get
().
setAttribute
(
attr
,
obj
);
return
getRequest
().
getHeader
(
HttpHeaders
.
AUTHORIZATION
);
}
/** @return 请求的uri,域名与参数之间的那部分 */
public
static
String
getRequestURI
()
{
return
get
().
getRequestURI
();
public
static
String
getRequestUri
()
{
return
getRequest
().
getRequestURI
();
}
/** @return 获取客户端ip */
public
static
String
getRequestIP
()
{
return
getIpAddr
(
get
());
public
static
String
getRequestIp
()
{
return
getIpAddr
(
getRequest
());
}
public
static
void
set
(
HttpServletRequest
request
)
{
requests
.
set
(
request
);
public
static
void
setRequest
(
HttpServletRequest
request
)
{
CONTEXT
.
get
().
put
(
ACCESS_CURRENT_REQUEST
,
request
);
}
public
static
HttpServletRequest
get
()
{
return
requests
.
get
();
private
static
HttpServletRequest
getRequest
()
{
return
(
HttpServletRequest
)
CONTEXT
.
get
().
get
(
ACCESS_CURRENT_REQUEST
);
}
public
static
HttpSession
getHttpSession
()
{
return
get
().
getSession
();
public
static
HttpSession
getSession
()
{
return
getRequest
().
getSession
();
}
/**
* 获取当前网络ip
*
* @param request
* @return
*/
public
static
String
getIpAddr
(
HttpServletRequest
request
)
{
String
ipAddress
=
request
.
getHeader
(
"x-forwarded-for"
);
if
(
ipAddress
==
null
||
ipAddress
.
length
()
==
0
||
"unknown"
.
equalsIgnoreCase
(
ipAddress
))
{
ipAddress
=
request
.
getHeader
(
"Proxy-Client-IP"
);
...
...
@@ -165,4 +218,5 @@ public final class HttpRequestLocal {
}
return
ipAddress
;
}
}
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/util/Tool.java
View file @
143d37ee
package
com.ibeetl.admin.core.util
;
import
org.apache.commons.lang3.time.DateUtils
;
import
java.text.ParseException
;
import
java.util.Date
;
import
org.apache.commons.lang3.time.DateUtils
;
/**
* 常用工具类方法
...
...
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/util/beetl/DataAccessFunction.java
View file @
143d37ee
package
com.ibeetl.admin.core.util.beetl
;
import
com.ibeetl.admin.core.entity.CoreRoleFunction
;
import
com.ibeetl.admin.core.entity.CoreUser
;
import
com.ibeetl.admin.core.rbac.DataAccess
;
import
com.ibeetl.admin.core.rbac.DataAccessFactory
;
import
com.ibeetl.admin.core.rbac.DataAccessResullt
;
import
com.ibeetl.admin.core.service.CorePlatformService
;
import
com.ibeetl.admin.core.util.FunctionLocal
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
org.apache.commons.logging.Log
;
import
org.apache.commons.logging.LogFactory
;
import
org.beetl.core.Context
;
...
...
@@ -12,14 +18,6 @@ import org.beetl.sql.core.engine.SQLParameter;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
com.ibeetl.admin.core.entity.CoreRoleFunction
;
import
com.ibeetl.admin.core.entity.CoreUser
;
import
com.ibeetl.admin.core.rbac.DataAccess
;
import
com.ibeetl.admin.core.rbac.DataAccessFactory
;
import
com.ibeetl.admin.core.rbac.DataAccessResullt
;
import
com.ibeetl.admin.core.service.CorePlatformService
;
import
com.ibeetl.admin.core.util.FunctionLocal
;
/**
* 数据权限拼sql,配合DataAccessFactory
*
...
...
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/util/beetl/DictQueryFunction.java
View file @
143d37ee
package
com.ibeetl.admin.core.util.beetl
;
import
com.ibeetl.admin.core.entity.CoreDict
;
import
com.ibeetl.admin.core.service.CoreDictService
;
import
java.util.List
;
import
org.beetl.core.Function
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
com.ibeetl.admin.core.entity.CoreDict
;
import
com.ibeetl.admin.core.service.CoreDictService
;
@Component
public
class
DictQueryFunction
{
...
...
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/util/beetl/FileFunction.java
View file @
143d37ee
package
com.ibeetl.admin.core.util.beetl
;
import
com.ibeetl.admin.core.file.FileItem
;
import
com.ibeetl.admin.core.file.FileService
;
import
java.util.Collections
;
import
java.util.List
;
import
org.apache.commons.lang3.StringUtils
;
import
org.beetl.core.Context
;
import
org.beetl.core.Function
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
com.ibeetl.admin.core.file.FileItem
;
import
com.ibeetl.admin.core.file.FileService
;
@Component
public
class
FileFunction
implements
Function
{
...
...
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/util/beetl/FunAccessUrlFunction.java
View file @
143d37ee
package
com.ibeetl.admin.core.util.beetl
;
import
com.ibeetl.admin.core.rbac.tree.FunctionItem
;
import
com.ibeetl.admin.core.service.CorePlatformService
;
import
org.beetl.core.Context
;
import
org.beetl.core.Function
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
com.ibeetl.admin.core.rbac.tree.FunctionItem
;
import
com.ibeetl.admin.core.service.CorePlatformService
;
/** 通过functionId获取AccessUrl,从缓存中获取 */
@Component
public
class
FunAccessUrlFunction
implements
Function
{
...
...
Prev
1
…
3
4
5
6
7
8
9
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