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
"jetbrains:/idea/checkout/git" did not exist on "a43711acf47c98a7689fb1135ce8b8eeeff58380"
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