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
98b55b93
Commit
98b55b93
authored
Mar 11, 2020
by
trumansdo
Browse files
测试98 after emitting copyplugin 问题
parent
aa115e88
Changes
35
Hide whitespace changes
Inline
Side-by-side
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/conf/springmvc/interceptor/SessionInterceptor.java
0 → 100644
View file @
98b55b93
package
com.ibeetl.admin.core.conf.springmvc.interceptor
;
import
com.ibeetl.admin.core.service.CoreUserService
;
import
com.ibeetl.admin.core.util.HttpRequestLocal
;
import
com.ibeetl.admin.core.util.JoseJwtUtil
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
org.springframework.http.HttpHeaders
;
import
org.springframework.web.servlet.HandlerInterceptor
;
public
class
SessionInterceptor
implements
HandlerInterceptor
{
CoreUserService
userService
;
public
SessionInterceptor
(
CoreUserService
userService
)
{
this
.
userService
=
userService
;
}
@Override
public
boolean
preHandle
(
HttpServletRequest
request
,
HttpServletResponse
response
,
Object
handler
)
{
String
token
=
HttpRequestLocal
.
getAuthorization
();
boolean
isExpiration
=
JoseJwtUtil
.
verifyJwtJson
(
token
);
if
(
isExpiration
)
{
/*验证失败,无效jwt*/
return
false
;
}
else
{
token
=
JoseJwtUtil
.
refreshIssuedAtTime
(
token
);
response
.
setHeader
(
HttpHeaders
.
AUTHORIZATION
,
token
);
}
return
true
;
}
}
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/conf/springmvc/resolve/RequestBodyPlusProcessor.java
0 → 100644
View file @
98b55b93
package
com.ibeetl.admin.core.conf.springmvc.resolve
;
import
cn.hutool.core.util.ClassUtil
;
import
cn.hutool.core.util.ReflectUtil
;
import
cn.hutool.core.util.StrUtil
;
import
cn.hutool.core.util.TypeUtil
;
import
cn.hutool.json.JSON
;
import
cn.hutool.json.JSONArray
;
import
cn.hutool.json.JSONObject
;
import
cn.hutool.json.JSONUtil
;
import
com.ibeetl.admin.core.annotation.RequestBodyPlus
;
import
java.io.IOException
;
import
java.lang.reflect.Type
;
import
java.util.List
;
import
java.util.Map
;
import
javax.servlet.http.HttpServletRequest
;
import
org.springframework.core.MethodParameter
;
import
org.springframework.http.HttpHeaders
;
import
org.springframework.http.MediaType
;
import
org.springframework.http.converter.HttpMessageConverter
;
import
org.springframework.http.converter.StringHttpMessageConverter
;
import
org.springframework.http.server.ServletServerHttpRequest
;
import
org.springframework.util.Assert
;
import
org.springframework.web.bind.support.WebDataBinderFactory
;
import
org.springframework.web.context.request.NativeWebRequest
;
import
org.springframework.web.method.support.ModelAndViewContainer
;
import
org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor
;
/** 自定义SpringMVC的controller方法的参数注解 {@link RequestBodyPlus} 的注入解析, 用json path 的方式注入json请求的参数 */
public
class
RequestBodyPlusProcessor
extends
AbstractMessageConverterMethodProcessor
{
private
static
final
ThreadLocal
<
String
>
bodyLocal
=
ThreadLocal
.
withInitial
(()
->
"{}"
);
public
RequestBodyPlusProcessor
(
List
<
HttpMessageConverter
<?>>
converters
)
{
super
(
converters
);
}
@Override
public
boolean
supportsParameter
(
MethodParameter
parameter
)
{
return
parameter
.
hasParameterAnnotation
(
RequestBodyPlus
.
class
);
}
@Override
public
Object
resolveArgument
(
MethodParameter
parameter
,
ModelAndViewContainer
mavContainer
,
NativeWebRequest
webRequest
,
WebDataBinderFactory
binderFactory
)
throws
Exception
{
parameter
=
parameter
.
nestedIfOptional
();
/*非json请求过滤*/
Class
<?>
parameterClass
=
parameter
.
getNestedParameterType
();
if
(!
StrUtil
.
containsAny
(
webRequest
.
getHeader
(
HttpHeaders
.
CONTENT_TYPE
),
MediaType
.
APPLICATION_JSON_VALUE
))
{
return
ReflectUtil
.
newInstanceIfPossible
(
parameterClass
);
}
HttpServletRequest
servletRequest
=
webRequest
.
getNativeRequest
(
HttpServletRequest
.
class
);
Assert
.
state
(
servletRequest
!=
null
,
"No HttpServletRequest"
);
ServletServerHttpRequest
inputMessage
=
new
ServletServerHttpRequest
(
servletRequest
);
StringHttpMessageConverter
stringHttpMessageConverter
=
new
StringHttpMessageConverter
();
String
jsonBody
;
try
{
String
readBody
=
stringHttpMessageConverter
.
read
(
String
.
class
,
inputMessage
);
/*每一个参数的注入都会读取一次输入流,但是request的输入流不可重复读,所以需要保持下来*/
if
(
StrUtil
.
isBlank
(
readBody
))
{
jsonBody
=
bodyLocal
.
get
();
}
else
{
bodyLocal
.
set
(
readBody
);
jsonBody
=
bodyLocal
.
get
();
}
}
catch
(
IOException
e
)
{
logger
.
error
(
"Can't read request body by input stream : {}"
,
e
);
jsonBody
=
bodyLocal
.
get
();
}
RequestBodyPlus
requestBodyPlus
=
parameter
.
getParameterAnnotation
(
RequestBodyPlus
.
class
);
JSON
json
=
JSONUtil
.
parse
(
jsonBody
);
Object
parseVal
=
json
.
getByPath
(
requestBodyPlus
.
value
(),
parameterClass
);
if
(
parseVal
instanceof
Map
)
{
JSONObject
jsonObject
=
JSONUtil
.
parseObj
(
parseVal
);
parseVal
=
JSONUtil
.
toBean
(
jsonObject
,
parameter
.
getNestedGenericParameterType
(),
true
);
}
else
if
(
parseVal
instanceof
List
)
{
JSONArray
jsonArray
=
JSONUtil
.
parseArray
(
parseVal
);
Type
parameterType
=
TypeUtil
.
getTypeArgument
(
parameter
.
getNestedGenericParameterType
());
Class
parameterTypeClass
=
null
==
parameterType
?
Object
.
class
:
ClassUtil
.
loadClass
(
parameterType
.
getTypeName
());
parseVal
=
JSONUtil
.
toList
(
jsonArray
,
parameterTypeClass
);
}
return
parseVal
;
}
@Override
public
boolean
supportsReturnType
(
MethodParameter
returnType
)
{
return
false
;
}
@Override
public
void
handleReturnValue
(
Object
returnValue
,
MethodParameter
returnType
,
ModelAndViewContainer
mavContainer
,
NativeWebRequest
webRequest
)
{}
}
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/conf/springmvc/resolve/UnderlineToCamelArgumentResolver.java
0 → 100644
View file @
98b55b93
package
com.ibeetl.admin.core.conf.springmvc.resolve
;
import
cn.hutool.core.util.ReflectUtil
;
import
cn.hutool.core.util.StrUtil
;
import
com.ibeetl.admin.core.util.enums.DictTypeEnum
;
import
java.util.Iterator
;
import
org.springframework.beans.BeanWrapper
;
import
org.springframework.beans.BeansException
;
import
org.springframework.beans.PropertyAccessorFactory
;
import
org.springframework.core.MethodParameter
;
import
org.springframework.web.bind.support.WebDataBinderFactory
;
import
org.springframework.web.context.request.NativeWebRequest
;
import
org.springframework.web.method.support.HandlerMethodArgumentResolver
;
import
org.springframework.web.method.support.ModelAndViewContainer
;
/**
* Class UnderlineToCamelArgumentResolver : <br>
* 描述:处理请求参数的命名由下划线等转驼峰命名。<br>
* 但是与另一个{@link DictTypeEnum} 枚举处理有冲突,所以交给前端处理命名转换
*
* @author 一日看尽长安花 Created on 2020/2/2
*/
public
class
UnderlineToCamelArgumentResolver
implements
HandlerMethodArgumentResolver
{
@Override
public
boolean
supportsParameter
(
MethodParameter
methodParameter
)
{
return
true
;
}
@Override
public
Object
resolveArgument
(
MethodParameter
parameter
,
ModelAndViewContainer
container
,
NativeWebRequest
webRequest
,
WebDataBinderFactory
binderFactory
)
{
return
handleParameterNames
(
parameter
,
webRequest
);
}
private
Object
handleParameterNames
(
MethodParameter
parameter
,
NativeWebRequest
webRequest
)
{
Object
obj
=
ReflectUtil
.
newInstanceIfPossible
(
parameter
.
getParameterType
());
BeanWrapper
wrapper
=
PropertyAccessorFactory
.
forBeanPropertyAccess
(
obj
);
Iterator
<
String
>
paramNames
=
webRequest
.
getParameterNames
();
while
(
paramNames
.
hasNext
())
{
String
paramName
=
paramNames
.
next
();
Object
o
=
webRequest
.
getParameter
(
paramName
);
try
{
wrapper
.
setPropertyValue
(
StrUtil
.
toCamelCase
(
paramName
),
o
);
}
catch
(
BeansException
e
)
{
}
}
return
obj
;
}
}
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/entity/CoreDict.java
View file @
98b55b93
...
...
@@ -2,9 +2,11 @@ package com.ibeetl.admin.core.entity;
import
java.util.Date
;
import
java.util.List
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
import
lombok.Data
;
import
org.beetl.sql.core.annotatoin.AssignID
;
import
org.beetl.sql.core.annotatoin.AutoID
;
import
org.beetl.sql.core.annotatoin.SeqID
;
...
...
@@ -18,6 +20,7 @@ import com.ibeetl.admin.core.util.ValidateConfig;
*
* @author : xiandafu
*/
@Data
public
class
CoreDict
extends
BaseEntity
{
@NotNull
(
message
=
"ID不能为空"
,
groups
=
ValidateConfig
.
UPDATE
.
class
)
...
...
@@ -47,90 +50,7 @@ public class CoreDict extends BaseEntity {
private
Long
parent
;
// 父Id
private
String
remark
;
// 备注
public
Long
getId
()
{
return
id
;
}
public
void
setId
(
Long
id
)
{
this
.
id
=
id
;
}
public
String
getType
()
{
return
type
;
}
public
void
setType
(
String
type
)
{
this
.
type
=
type
;
}
public
String
getTypeName
()
{
return
typeName
;
}
public
void
setTypeName
(
String
typeName
)
{
this
.
typeName
=
typeName
;
}
public
String
getValue
()
{
return
value
;
}
public
void
setValue
(
String
value
)
{
this
.
value
=
value
;
}
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
public
Integer
getSort
()
{
return
sort
;
}
public
void
setSort
(
Integer
sort
)
{
this
.
sort
=
sort
;
}
public
Long
getParent
()
{
return
parent
;
}
public
void
setParent
(
Long
parent
)
{
this
.
parent
=
parent
;
}
public
String
getRemark
()
{
return
remark
;
}
public
void
setRemark
(
String
remark
)
{
this
.
remark
=
remark
;
}
public
Integer
getDelFlag
()
{
return
delFlag
;
}
public
void
setDelFlag
(
Integer
delFlag
)
{
this
.
delFlag
=
delFlag
;
}
public
Date
getCreateTime
()
{
return
createTime
;
}
public
void
setCreateTime
(
Date
createTime
)
{
this
.
createTime
=
createTime
;
}
private
List
<
CoreDict
>
children
;
public
interface
TypeListView
{}
@Override
public
String
toString
()
{
return
"CoreDict [value="
+
value
+
", type="
+
type
+
", name="
+
name
+
"]"
;
}
}
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/entity/CoreOrg.java
View file @
98b55b93
...
...
@@ -2,9 +2,11 @@ package com.ibeetl.admin.core.entity;
import
java.util.Date
;
import
java.util.List
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
import
lombok.Data
;
import
org.beetl.sql.core.annotatoin.AutoID
;
import
org.beetl.sql.core.annotatoin.SeqID
;
...
...
@@ -17,6 +19,7 @@ import com.ibeetl.admin.core.util.enums.CoreDictType;
* 机构对象, 有母公司,一个系统只有一个母公司,多个集团,集团下可以有多个公司,子公司,部门。如果系统不符合这个设定,需要修改· <br>
* 映射了上级机构,可以通过org.parentOrg.xxx取上级机构的属性
*/
@Data
public
class
CoreOrg
extends
BaseEntity
{
// 自增id
...
...
@@ -48,59 +51,5 @@ public class CoreOrg extends BaseEntity {
@NotBlank
(
message
=
"组织类型不能为空"
,
groups
=
ValidateConfig
.
class
)
private
String
type
;
public
Long
getId
()
{
return
id
;
}
public
void
setId
(
Long
id
)
{
this
.
id
=
id
;
}
public
String
getCode
()
{
return
code
;
}
public
void
setCode
(
String
code
)
{
this
.
code
=
code
;
}
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
public
Long
getParentOrgId
()
{
return
parentOrgId
;
}
public
void
setParentOrgId
(
Long
parentOrgId
)
{
this
.
parentOrgId
=
parentOrgId
;
}
public
String
getType
()
{
return
type
;
}
public
void
setType
(
String
type
)
{
this
.
type
=
type
;
}
public
Integer
getDelFlag
()
{
return
delFlag
;
}
public
void
setDelFlag
(
Integer
delFlag
)
{
this
.
delFlag
=
delFlag
;
}
public
Date
getCreateTime
()
{
return
createTime
;
}
public
void
setCreateTime
(
Date
createTime
)
{
this
.
createTime
=
createTime
;
}
private
List
<
CoreOrg
>
chidren
;
}
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/entity/CoreUser.java
View file @
98b55b93
package
com.ibeetl.admin.core.entity
;
import
com.ibeetl.admin.core.annotation.ElColumn
;
import
com.ibeetl.admin.core.util.enums.ElColumnType
;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
com.ibeetl.admin.core.annotation.Dict
;
import
com.ibeetl.admin.core.util.ValidateConfig
;
import
com.ibeetl.admin.core.util.enums.CoreDictType
;
import
com.ibeetl.admin.core.util.enums.JobTypeEnum
;
import
com.ibeetl.admin.core.util.enums.StateTypeEnum
;
import
java.util.Date
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
import
javax.validation.constraints.Null
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
org.beetl.sql.core.annotatoin.AutoID
;
import
org.beetl.sql.core.annotatoin.SeqID
;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
com.ibeetl.admin.core.annotation.Dict
;
import
com.ibeetl.admin.core.util.ValidateConfig
;
import
com.ibeetl.admin.core.util.enums.CoreDictType
;
/*
* 用户实体
*
*/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
public
class
CoreUser
extends
BaseEntity
{
@NotNull
(
message
=
"ID不能为空"
,
groups
=
ValidateConfig
.
UPDATE
.
class
)
...
...
@@ -38,13 +34,16 @@ public class CoreUser extends BaseEntity {
// 登录名,编号
@NotBlank
(
message
=
"用户编号不能为空"
,
groups
=
ValidateConfig
.
ADD
.
class
)
@Null
(
message
=
"用户编号不能为空"
,
groups
=
ValidateConfig
.
UPDATE
.
class
)
@
Not
Null
(
message
=
"用户编号不能为空"
,
groups
=
ValidateConfig
.
UPDATE
.
class
)
private
String
code
;
// 用户姓名
@NotBlank
(
message
=
"用户名不能为空"
)
private
String
name
;
/** 机构 */
private
CoreOrg
org
;
/*机构id*/
private
Long
orgId
;
...
...
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/entity/ElCascaderData.java
View file @
98b55b93
package
com.ibeetl.admin.core.entity
;
import
java.util.List
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/** 前端级联器的数据格式类 */
/**
element-ui
前端级联器的数据格式类 */
@Data
@NoArgsConstructor
public
class
ElCascaderData
{
private
Object
id
;
private
String
label
;
private
Object
value
;
private
List
<
ElCascaderData
>
children
;
}
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/file/PersistFileItem.java
View file @
98b55b93
package
com.ibeetl.admin.core.file
;
import
java.io.OutputStream
;
public
abstract
class
PersistFileItem
extends
FileItem
{
protected
Long
id
;
protected
Long
userId
;
...
...
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/service/CoreDictService.java
View file @
98b55b93
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
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
;
...
...
@@ -19,6 +25,7 @@ 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
;
/**
* 描述: 字典 service,包含常规字典和级联字典的操作。
...
...
@@ -98,6 +105,82 @@ public class CoreDictService extends CoreBaseService<CoreDict> {
return
null
;
}
/**
* 将数据库中所有字典构建成一个树集。方便前端某些树组件快速获取数据.
*
* @author 一日看尽长安花
* @return List<CoreDict>
*/
@Cacheable
(
value
=
CorePlatformService
.
DICT_CACHE_TREE_LIST
)
public
List
<
CoreDict
>
allCoreDictsTree
()
{
List
<
CoreDict
>
coreDictList
=
dictDao
.
createLambdaQuery
().
andEq
(
CoreDict:
:
getDelFlag
,
DelFlagEnum
.
NORMAL
).
select
();
CoreDict
virtualRoot
=
new
CoreDict
();
virtualRoot
.
setId
(
0L
);
buildListTree
(
virtualRoot
,
coreDictList
);
return
virtualRoot
.
getChildren
();
}
private
void
buildListTree
(
CoreDict
parentDict
,
List
<
CoreDict
>
coreDictList
)
{
long
parentId
=
parentDict
.
getId
();
List
<
CoreDict
>
currentLevelDict
=
new
ArrayList
<>();
List
<
CoreDict
>
dels
=
new
ArrayList
<>();
for
(
CoreDict
coreDict
:
coreDictList
)
{
if
(
coreDict
.
getParent
()
==
null
||
coreDict
.
getParent
()
==
parentId
)
{
currentLevelDict
.
add
(
coreDict
);
dels
.
add
(
coreDict
);
}
}
parentDict
.
setChildren
(
currentLevelDict
);
coreDictList
.
removeAll
(
dels
);
for
(
CoreDict
nextLevelParent
:
currentLevelDict
)
{
buildListTree
(
nextLevelParent
,
coreDictList
);
}
}
/**
* Method findChildrenNodes sets the ${FIELD_NAME} of this CoreDictService object.
*
* <p>在一个完整的字典树里,找到指定的字典子树
*
* @param parentId 要搜寻字典列表的父id,根级的父id为null或者0
* @param type 要搜寻的字典类型
* @author 一日看尽长安花
* @return List<CoreDict>
*/
@Validated
@Cacheable
(
value
=
CorePlatformService
.
DICT_CACHE_TREE_CHILDREN
)
public
List
<
CoreDict
>
findChildrenNodes
(
Long
parentId
,
@NotBlank
String
type
)
{
parentId
=
parentId
==
null
?
0L
:
parentId
;
List
<
CoreDict
>
allDictTreeList
=
self
.
allCoreDictsTree
();
return
breadthSearchChildrenNodes
(
allDictTreeList
,
parentId
,
type
);
}
private
List
<
CoreDict
>
breadthSearchChildrenNodes
(
List
<
CoreDict
>
searchDicts
,
Long
parentId
,
@NotBlank
String
type
)
{
List
<
CoreDict
>
_resultDicts
=
new
ArrayList
<>();
for
(
CoreDict
dict
:
searchDicts
)
{
String
dictType
=
dict
.
getType
();
Long
parent
=
Optional
.
ofNullable
(
dict
.
getParent
()).
orElse
(
0L
);
if
(
parentId
.
equals
(
parent
)
&&
type
.
equals
(
dictType
))
{
_resultDicts
.
add
(
dict
);
}
}
if
(
_resultDicts
.
isEmpty
())
{
for
(
CoreDict
dict
:
searchDicts
)
{
List
<
CoreDict
>
dictChildren
=
dict
.
getChildren
();
_resultDicts
=
breadthSearchChildrenNodes
(
dictChildren
,
parentId
,
type
);
if
(!
_resultDicts
.
isEmpty
())
{
break
;
}
}
}
return
_resultDicts
;
}
/*通过名字反向查找数据字典,通常用于excel导入*/
public
Map
<
String
,
CoreDict
>
mapDictByName
(
String
type
)
{
List
<
CoreDict
>
list
=
self
.
findAllByType
(
type
);
...
...
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/service/CoreOrgService.java
0 → 100644
View file @
98b55b93
package
com.ibeetl.admin.core.service
;
import
com.ibeetl.admin.core.dao.CoreOrgDao
;
import
com.ibeetl.admin.core.entity.CoreOrg
;
import
com.ibeetl.admin.core.util.enums.DelFlagEnum
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Optional
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
@Service
public
class
CoreOrgService
{
@Autowired
CoreOrgDao
coreOrgDao
;
@Autowired
CoreOrgService
self
;
// @Cacheable(value = CorePlatformService.ORG_CACHE_TREE_LIST)
public
List
<
CoreOrg
>
allCoreOrgsTree
()
{
List
<
CoreOrg
>
coreOrgList
=
coreOrgDao
.
createLambdaQuery
().
andEq
(
CoreOrg:
:
getDelFlag
,
DelFlagEnum
.
NORMAL
).
select
();
CoreOrg
virtualRoot
=
new
CoreOrg
();
virtualRoot
.
setId
(
0L
);
buildListTree
(
virtualRoot
,
coreOrgList
);
return
virtualRoot
.
getChidren
();
}
private
void
buildListTree
(
CoreOrg
parentOrg
,
List
<
CoreOrg
>
coreOrgs
)
{
Long
parentId
=
parentOrg
.
getId
();
List
<
CoreOrg
>
currentLevelOrgs
=
new
ArrayList
<>();
List
<
CoreOrg
>
dels
=
new
ArrayList
<>();
for
(
CoreOrg
coreOrg
:
coreOrgs
)
{
Long
tempId
=
Optional
.
ofNullable
(
coreOrg
.
getParentOrgId
()).
orElse
(
0L
);
if
(
tempId
.
equals
(
parentId
))
{
currentLevelOrgs
.
add
(
coreOrg
);
dels
.
add
(
coreOrg
);
}
}
parentOrg
.
setChidren
(
currentLevelOrgs
);
coreOrgs
.
removeAll
(
dels
);
for
(
CoreOrg
nextLevelParent
:
currentLevelOrgs
)
{
buildListTree
(
nextLevelParent
,
coreOrgs
);
}
}
// @Cacheable(value = CorePlatformService.ORG_CACHE_TREE_CHILDREN)
public
List
<
CoreOrg
>
findChildrenNodes
(
Long
parentId
)
{
parentId
=
parentId
==
null
?
0L
:
parentId
;
List
<
CoreOrg
>
allDictTreeList
=
self
.
allCoreOrgsTree
();
return
breadthSearchChildrenNodes
(
allDictTreeList
,
parentId
);
}
private
List
<
CoreOrg
>
breadthSearchChildrenNodes
(
List
<
CoreOrg
>
searchOrgs
,
Long
parentId
)
{
List
<
CoreOrg
>
_resultOrgs
=
new
ArrayList
<>();
for
(
CoreOrg
org
:
searchOrgs
)
{
Long
parent
=
Optional
.
ofNullable
(
org
.
getParentOrgId
()).
orElse
(
0L
);
if
(
parentId
.
equals
(
parent
))
{
_resultOrgs
.
add
(
org
);
}
}
if
(
_resultOrgs
.
isEmpty
())
{
for
(
CoreOrg
org
:
searchOrgs
)
{
List
<
CoreOrg
>
dictChildren
=
org
.
getChidren
();
_resultOrgs
=
breadthSearchChildrenNodes
(
dictChildren
,
parentId
);
if
(!
_resultOrgs
.
isEmpty
())
{
break
;
}
}
}
return
_resultOrgs
;
}
}
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/service/CorePlatformService.java
View file @
98b55b93
...
...
@@ -52,12 +52,17 @@ public class CorePlatformService {
// 菜单树,组织机构树,功能树缓存标记
public
static
final
String
MENU_TREE_CACHE
=
"cache:core:menuTree"
;
public
static
final
String
ORG_TREE_CACHE
=
"cache:core:orgTree"
;
public
static
final
String
ORG_CACHE_TREE_CHILDREN
=
"cache:core:orgTreeChildrens"
;
public
static
final
String
ORG_CACHE_TREE_LIST
=
"cache:core:orgTreeList"
;
public
static
final
String
FUNCTION_TREE_CACHE
=
"cache:core:functionTree"
;
// 字典列表
public
static
final
String
DICT_CACHE_TREE_CHILDREN
=
"cache:core:dictTreeChildrens"
;
public
static
final
String
DICT_CACHE_TREE_LIST
=
"cache:core:dictTreeList"
;
public
static
final
String
DICT_CACHE_TYPE
=
"cache:core:dictType"
;
public
static
final
String
DICT_CACHE_VALUE
=
"cache:core:dictValue"
;
public
static
final
String
DICT_CACHE_SAME_LEVEL
=
"cache:core:ditcSameLevel"
;
public
static
final
String
DICT_CACHE_CHILDREN
=
"cache:core:dictChildren"
;
public
static
final
String
USER_FUNCTION_ACCESS_CACHE
=
"cache:core:userFunctionAccess"
;
public
static
final
String
USER_FUNCTION_CHIDREN_CACHE
=
"ccache:core:functionChildren"
;
public
static
final
String
FUNCTION_CACHE
=
"cache:core:function"
;
...
...
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/util/enums/DictTypeEnum.java
View file @
98b55b93
package
com.ibeetl.admin.core.util.enums
;
import
cn.hutool.core.util.EnumUtil
;
/**
* Interface DictTypeEnum ... 描述:只是一个标记接口,任何一个字典枚举类都要实现该接口<br>
* 主要用于Jackson序列化处理
*
* @author Truma Created on 2020/1/12
*/
public
interface
DictTypeEnum
{}
public
interface
DictTypeEnum
<
T
>
{
String
getValue
();
T
findEnum
(
String
value
);
}
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/util/enums/JobTypeEnum.java
View file @
98b55b93
package
com.ibeetl.admin.core.util.enums
;
import
com.fasterxml.jackson.annotation.JsonCreator
;
import
com.fasterxml.jackson.annotation.JsonValue
;
import
org.beetl.sql.core.annotatoin.EnumMapping
;
@EnumMapping
(
"value"
)
public
enum
JobTypeEnum
implements
DictTypeEnum
{
public
enum
JobTypeEnum
implements
DictTypeEnum
<
JobTypeEnum
>
{
MANAGER
(
"管理岗位"
,
"JT_01"
,
"job_type"
),
TECHNOLOGY
(
"技术岗位"
,
"JT_02"
,
"job_type"
),
BOARD_OF_DIRECTORS
(
"董事会"
,
"JT_S_01"
,
"job_sub_managment_type"
),
...
...
@@ -29,6 +31,7 @@ public enum JobTypeEnum implements DictTypeEnum {
this
.
name
=
name
;
}
@JsonValue
public
String
getValue
()
{
return
value
;
}
...
...
@@ -44,4 +47,16 @@ public enum JobTypeEnum implements DictTypeEnum {
public
void
setType
(
String
type
)
{
this
.
type
=
type
;
}
@JsonCreator
@Override
public
JobTypeEnum
findEnum
(
String
value
)
{
JobTypeEnum
[]
values
=
values
();
for
(
JobTypeEnum
typeEnum
:
values
)
{
if
(
typeEnum
.
value
.
equals
(
value
))
{
return
typeEnum
;
}
}
return
null
;
}
}
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/util/enums/StateTypeEnum.java
View file @
98b55b93
package
com.ibeetl.admin.core.util.enums
;
import
com.fasterxml.jackson.annotation.JsonCreator
;
import
com.fasterxml.jackson.annotation.JsonValue
;
import
org.beetl.sql.core.annotatoin.EnumMapping
;
@EnumMapping
(
"value"
)
public
enum
StateTypeEnum
implements
DictTypeEnum
{
public
enum
StateTypeEnum
implements
DictTypeEnum
<
StateTypeEnum
>
{
S0
(
"禁用"
,
"S0"
,
"user_state"
),
S1
(
"启用"
,
"S1"
,
"job_type"
);
...
...
@@ -25,6 +27,7 @@ public enum StateTypeEnum implements DictTypeEnum {
this
.
name
=
name
;
}
@JsonValue
public
String
getValue
()
{
return
value
;
}
...
...
@@ -40,4 +43,16 @@ public enum StateTypeEnum implements DictTypeEnum {
public
void
setType
(
String
type
)
{
this
.
type
=
type
;
}
@JsonCreator
@Override
public
StateTypeEnum
findEnum
(
String
value
)
{
StateTypeEnum
[]
values
=
values
();
for
(
StateTypeEnum
typeEnum
:
values
)
{
if
(
typeEnum
.
value
.
equals
(
value
))
{
return
typeEnum
;
}
}
return
null
;
}
}
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/web/FileSystemContorller.java
View file @
98b55b93
...
...
@@ -7,13 +7,15 @@ import java.net.URLEncoder;
import
javax.servlet.http.HttpServletResponse
;
import
org.apache.commons.logging.Log
;
import
lombok.extern.java.Log
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.logging.LogFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
org.springframework.web.multipart.MultipartFile
;
...
...
@@ -26,16 +28,27 @@ import com.ibeetl.admin.core.file.FileService;
import
com.ibeetl.admin.core.service.CorePlatformService
;
import
com.ibeetl.admin.core.util.FileUtil
;
/**
* Class FileSystemContorller : <br/>
* 描述:业务中有关文件的上传,下载。<br/>
* TODO 待改动计划:
* 改成加上MD5验证,减少重复文件的io
* 补上文件表中有关文件属性(大小,类型,)的信息
* 补上文件上传的临时状态,避免上传文件却中断业务逻辑,产生无用数据以及文件
* @author 一日看尽长安花
* Updated on 2020/3/8
*/
@Slf4j
@Controller
@RequestMapping
(
"/core/file"
)
public
class
FileSystemContorller
{
private
final
Log
log
=
LogFactory
.
getLog
(
this
.
getClass
());
@Autowired
CorePlatformService
platformService
;
private
static
final
String
MODEL
=
"/core/file"
;
@Autowired
FileService
fileService
;
/*附件类操作*/
@PostMapping
(
MODEL
+
"/uploadAttachment.json"
)
@PostMapping
(
"/uploadAttachment.json"
)
@ResponseBody
public
JsonResult
uploadFile
(
@RequestParam
(
"file"
)
MultipartFile
file
,
String
batchFileUUID
,
String
bizType
,
String
bizId
)
...
...
@@ -59,14 +72,14 @@ public class FileSystemContorller {
return
JsonResult
.
success
(
fileItem
);
}
@PostMapping
(
MODEL
+
"/deleteAttachment.json"
)
@PostMapping
(
"/deleteAttachment.json"
)
@ResponseBody
public
JsonResult
deleteFile
(
Long
fileId
,
String
batchFileUUID
)
throws
IOException
{
fileService
.
removeFile
(
fileId
,
batchFileUUID
);
return
JsonResult
.
success
();
}
@GetMapping
(
MODEL
+
"/download/{fileId}/{batchFileUUID}/{name}"
)
@GetMapping
(
"/download/{fileId}/{batchFileUUID}/{name}"
)
public
ModelAndView
download
(
HttpServletResponse
response
,
@PathVariable
Long
fileId
,
@PathVariable
String
batchFileUUID
)
throws
IOException
{
...
...
@@ -80,9 +93,7 @@ public class FileSystemContorller {
/*execl 导入导出*/
@Autowired
FileService
fileService
;
@GetMapping
(
MODEL
+
"/get.do"
)
@GetMapping
(
"/get.do"
)
public
ModelAndView
index
(
HttpServletResponse
response
,
String
id
)
throws
IOException
{
String
path
=
id
;
response
.
setContentType
(
"text/html; charset = UTF-8"
);
...
...
@@ -97,7 +108,7 @@ public class FileSystemContorller {
return
null
;
}
@GetMapping
(
MODEL
+
"/downloadTemplate.do"
)
@GetMapping
(
"/downloadTemplate.do"
)
public
ModelAndView
dowloadTemplate
(
HttpServletResponse
response
,
String
path
)
throws
IOException
{
response
.
setContentType
(
"text/html; charset = UTF-8"
);
...
...
@@ -117,7 +128,7 @@ public class FileSystemContorller {
return
null
;
}
@GetMapping
(
MODEL
+
"/simpleUpload.do"
)
@GetMapping
(
"/simpleUpload.do"
)
public
ModelAndView
simpleUploadPage
(
String
uploadUrl
,
String
templatePath
,
String
fileType
)
throws
IOException
{
ModelAndView
view
=
new
ModelAndView
(
"/common/simpleUpload.html"
);
...
...
Prev
1
2
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