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
"eladmin-system/vscode:/vscode.git/clone" did not exist on "3cde757b32bdd5e4092ba6c11dfa7b89a319c166"
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;
...
@@ -2,9 +2,11 @@ package com.ibeetl.admin.core.entity;
import
java.util.Date
;
import
java.util.Date
;
import
java.util.List
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
import
javax.validation.constraints.NotNull
;
import
lombok.Data
;
import
org.beetl.sql.core.annotatoin.AssignID
;
import
org.beetl.sql.core.annotatoin.AssignID
;
import
org.beetl.sql.core.annotatoin.AutoID
;
import
org.beetl.sql.core.annotatoin.AutoID
;
import
org.beetl.sql.core.annotatoin.SeqID
;
import
org.beetl.sql.core.annotatoin.SeqID
;
...
@@ -18,6 +20,7 @@ import com.ibeetl.admin.core.util.ValidateConfig;
...
@@ -18,6 +20,7 @@ import com.ibeetl.admin.core.util.ValidateConfig;
*
*
* @author : xiandafu
* @author : xiandafu
*/
*/
@Data
public
class
CoreDict
extends
BaseEntity
{
public
class
CoreDict
extends
BaseEntity
{
@NotNull
(
message
=
"ID不能为空"
,
groups
=
ValidateConfig
.
UPDATE
.
class
)
@NotNull
(
message
=
"ID不能为空"
,
groups
=
ValidateConfig
.
UPDATE
.
class
)
...
@@ -47,90 +50,7 @@ public class CoreDict extends BaseEntity {
...
@@ -47,90 +50,7 @@ public class CoreDict extends BaseEntity {
private
Long
parent
;
// 父Id
private
Long
parent
;
// 父Id
private
String
remark
;
// 备注
private
String
remark
;
// 备注
public
Long
getId
()
{
private
List
<
CoreDict
>
children
;
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
;
}
public
interface
TypeListView
{}
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;
...
@@ -2,9 +2,11 @@ package com.ibeetl.admin.core.entity;
import
java.util.Date
;
import
java.util.Date
;
import
java.util.List
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
import
javax.validation.constraints.NotNull
;
import
lombok.Data
;
import
org.beetl.sql.core.annotatoin.AutoID
;
import
org.beetl.sql.core.annotatoin.AutoID
;
import
org.beetl.sql.core.annotatoin.SeqID
;
import
org.beetl.sql.core.annotatoin.SeqID
;
...
@@ -17,6 +19,7 @@ import com.ibeetl.admin.core.util.enums.CoreDictType;
...
@@ -17,6 +19,7 @@ import com.ibeetl.admin.core.util.enums.CoreDictType;
* 机构对象, 有母公司,一个系统只有一个母公司,多个集团,集团下可以有多个公司,子公司,部门。如果系统不符合这个设定,需要修改· <br>
* 机构对象, 有母公司,一个系统只有一个母公司,多个集团,集团下可以有多个公司,子公司,部门。如果系统不符合这个设定,需要修改· <br>
* 映射了上级机构,可以通过org.parentOrg.xxx取上级机构的属性
* 映射了上级机构,可以通过org.parentOrg.xxx取上级机构的属性
*/
*/
@Data
public
class
CoreOrg
extends
BaseEntity
{
public
class
CoreOrg
extends
BaseEntity
{
// 自增id
// 自增id
...
@@ -48,59 +51,5 @@ public class CoreOrg extends BaseEntity {
...
@@ -48,59 +51,5 @@ public class CoreOrg extends BaseEntity {
@NotBlank
(
message
=
"组织类型不能为空"
,
groups
=
ValidateConfig
.
class
)
@NotBlank
(
message
=
"组织类型不能为空"
,
groups
=
ValidateConfig
.
class
)
private
String
type
;
private
String
type
;
public
Long
getId
()
{
private
List
<
CoreOrg
>
chidren
;
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
;
}
}
}
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/entity/CoreUser.java
View file @
98b55b93
package
com.ibeetl.admin.core.entity
;
package
com.ibeetl.admin.core.entity
;
import
com.ibeetl.admin.core.annotation.ElColumn
;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
com.ibeetl.admin.core.util.enums.ElColumnType
;
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.JobTypeEnum
;
import
com.ibeetl.admin.core.util.enums.StateTypeEnum
;
import
com.ibeetl.admin.core.util.enums.StateTypeEnum
;
import
java.util.Date
;
import
java.util.Date
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
import
javax.validation.constraints.NotNull
;
import
javax.validation.constraints.Null
;
import
lombok.Data
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
org.beetl.sql.core.annotatoin.AutoID
;
import
org.beetl.sql.core.annotatoin.AutoID
;
import
org.beetl.sql.core.annotatoin.SeqID
;
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
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
public
class
CoreUser
extends
BaseEntity
{
public
class
CoreUser
extends
BaseEntity
{
@NotNull
(
message
=
"ID不能为空"
,
groups
=
ValidateConfig
.
UPDATE
.
class
)
@NotNull
(
message
=
"ID不能为空"
,
groups
=
ValidateConfig
.
UPDATE
.
class
)
...
@@ -38,13 +34,16 @@ public class CoreUser extends BaseEntity {
...
@@ -38,13 +34,16 @@ public class CoreUser extends BaseEntity {
// 登录名,编号
// 登录名,编号
@NotBlank
(
message
=
"用户编号不能为空"
,
groups
=
ValidateConfig
.
ADD
.
class
)
@NotBlank
(
message
=
"用户编号不能为空"
,
groups
=
ValidateConfig
.
ADD
.
class
)
@Null
(
message
=
"用户编号不能为空"
,
groups
=
ValidateConfig
.
UPDATE
.
class
)
@
Not
Null
(
message
=
"用户编号不能为空"
,
groups
=
ValidateConfig
.
UPDATE
.
class
)
private
String
code
;
private
String
code
;
// 用户姓名
// 用户姓名
@NotBlank
(
message
=
"用户名不能为空"
)
@NotBlank
(
message
=
"用户名不能为空"
)
private
String
name
;
private
String
name
;
/** 机构 */
private
CoreOrg
org
;
/*机构id*/
/*机构id*/
private
Long
orgId
;
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
;
package
com.ibeetl.admin.core.entity
;
import
java.util.List
;
import
lombok.Data
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.NoArgsConstructor
;
/** 前端级联器的数据格式类 */
/**
element-ui
前端级联器的数据格式类 */
@Data
@Data
@NoArgsConstructor
@NoArgsConstructor
public
class
ElCascaderData
{
public
class
ElCascaderData
{
private
Object
id
;
private
Object
id
;
private
String
label
;
private
String
label
;
private
Object
value
;
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
;
package
com.ibeetl.admin.core.file
;
import
java.io.OutputStream
;
public
abstract
class
PersistFileItem
extends
FileItem
{
public
abstract
class
PersistFileItem
extends
FileItem
{
protected
Long
id
;
protected
Long
id
;
protected
Long
userId
;
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
;
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
cn.hutool.core.util.StrUtil
;
import
com.ibeetl.admin.core.web.JsonResult
;
import
com.ibeetl.admin.core.web.JsonResult
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
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.mapper.internal.LambdaQueryAmi
;
import
org.beetl.sql.core.query.LambdaQuery
;
import
org.beetl.sql.core.query.LambdaQuery
;
import
org.beetl.sql.core.query.Query
;
import
org.beetl.sql.core.query.Query
;
...
@@ -19,6 +25,7 @@ import org.springframework.transaction.annotation.Transactional;
...
@@ -19,6 +25,7 @@ import org.springframework.transaction.annotation.Transactional;
import
com.ibeetl.admin.core.dao.CoreDictDao
;
import
com.ibeetl.admin.core.dao.CoreDictDao
;
import
com.ibeetl.admin.core.entity.CoreDict
;
import
com.ibeetl.admin.core.entity.CoreDict
;
import
com.ibeetl.admin.core.util.enums.DelFlagEnum
;
import
com.ibeetl.admin.core.util.enums.DelFlagEnum
;
import
org.springframework.validation.annotation.Validated
;
/**
/**
* 描述: 字典 service,包含常规字典和级联字典的操作。
* 描述: 字典 service,包含常规字典和级联字典的操作。
...
@@ -98,6 +105,82 @@ public class CoreDictService extends CoreBaseService<CoreDict> {
...
@@ -98,6 +105,82 @@ public class CoreDictService extends CoreBaseService<CoreDict> {
return
null
;
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导入*/
/*通过名字反向查找数据字典,通常用于excel导入*/
public
Map
<
String
,
CoreDict
>
mapDictByName
(
String
type
)
{
public
Map
<
String
,
CoreDict
>
mapDictByName
(
String
type
)
{
List
<
CoreDict
>
list
=
self
.
findAllByType
(
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 {
...
@@ -52,12 +52,17 @@ public class CorePlatformService {
// 菜单树,组织机构树,功能树缓存标记
// 菜单树,组织机构树,功能树缓存标记
public
static
final
String
MENU_TREE_CACHE
=
"cache:core:menuTree"
;
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_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
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_TYPE
=
"cache:core:dictType"
;
public
static
final
String
DICT_CACHE_VALUE
=
"cache:core:dictValue"
;
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_SAME_LEVEL
=
"cache:core:ditcSameLevel"
;
public
static
final
String
DICT_CACHE_CHILDREN
=
"cache:core:dictChildren"
;
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_ACCESS_CACHE
=
"cache:core:userFunctionAccess"
;
public
static
final
String
USER_FUNCTION_CHIDREN_CACHE
=
"ccache:core:functionChildren"
;
public
static
final
String
USER_FUNCTION_CHIDREN_CACHE
=
"ccache:core:functionChildren"
;
public
static
final
String
FUNCTION_CACHE
=
"cache:core:function"
;
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
;
package
com.ibeetl.admin.core.util.enums
;
import
cn.hutool.core.util.EnumUtil
;
/**
/**
* Interface DictTypeEnum ... 描述:只是一个标记接口,任何一个字典枚举类都要实现该接口<br>
* Interface DictTypeEnum ... 描述:只是一个标记接口,任何一个字典枚举类都要实现该接口<br>
* 主要用于Jackson序列化处理
* 主要用于Jackson序列化处理
*
*
* @author Truma Created on 2020/1/12
* @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
;
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
;
import
org.beetl.sql.core.annotatoin.EnumMapping
;
@EnumMapping
(
"value"
)
@EnumMapping
(
"value"
)
public
enum
JobTypeEnum
implements
DictTypeEnum
{
public
enum
JobTypeEnum
implements
DictTypeEnum
<
JobTypeEnum
>
{
MANAGER
(
"管理岗位"
,
"JT_01"
,
"job_type"
),
MANAGER
(
"管理岗位"
,
"JT_01"
,
"job_type"
),
TECHNOLOGY
(
"技术岗位"
,
"JT_02"
,
"job_type"
),
TECHNOLOGY
(
"技术岗位"
,
"JT_02"
,
"job_type"
),
BOARD_OF_DIRECTORS
(
"董事会"
,
"JT_S_01"
,
"job_sub_managment_type"
),
BOARD_OF_DIRECTORS
(
"董事会"
,
"JT_S_01"
,
"job_sub_managment_type"
),
...
@@ -29,6 +31,7 @@ public enum JobTypeEnum implements DictTypeEnum {
...
@@ -29,6 +31,7 @@ public enum JobTypeEnum implements DictTypeEnum {
this
.
name
=
name
;
this
.
name
=
name
;
}
}
@JsonValue
public
String
getValue
()
{
public
String
getValue
()
{
return
value
;
return
value
;
}
}
...
@@ -44,4 +47,16 @@ public enum JobTypeEnum implements DictTypeEnum {
...
@@ -44,4 +47,16 @@ public enum JobTypeEnum implements DictTypeEnum {
public
void
setType
(
String
type
)
{
public
void
setType
(
String
type
)
{
this
.
type
=
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
;
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
;
import
org.beetl.sql.core.annotatoin.EnumMapping
;
@EnumMapping
(
"value"
)
@EnumMapping
(
"value"
)
public
enum
StateTypeEnum
implements
DictTypeEnum
{
public
enum
StateTypeEnum
implements
DictTypeEnum
<
StateTypeEnum
>
{
S0
(
"禁用"
,
"S0"
,
"user_state"
),
S0
(
"禁用"
,
"S0"
,
"user_state"
),
S1
(
"启用"
,
"S1"
,
"job_type"
);
S1
(
"启用"
,
"S1"
,
"job_type"
);
...
@@ -25,6 +27,7 @@ public enum StateTypeEnum implements DictTypeEnum {
...
@@ -25,6 +27,7 @@ public enum StateTypeEnum implements DictTypeEnum {
this
.
name
=
name
;
this
.
name
=
name
;
}
}
@JsonValue
public
String
getValue
()
{
public
String
getValue
()
{
return
value
;
return
value
;
}
}
...
@@ -40,4 +43,16 @@ public enum StateTypeEnum implements DictTypeEnum {
...
@@ -40,4 +43,16 @@ public enum StateTypeEnum implements DictTypeEnum {
public
void
setType
(
String
type
)
{
public
void
setType
(
String
type
)
{
this
.
type
=
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;
...
@@ -7,13 +7,15 @@ import java.net.URLEncoder;
import
javax.servlet.http.HttpServletResponse
;
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.apache.commons.logging.LogFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.PostMapping
;
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.RequestParam
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
org.springframework.web.multipart.MultipartFile
;
import
org.springframework.web.multipart.MultipartFile
;
...
@@ -26,16 +28,27 @@ import com.ibeetl.admin.core.file.FileService;
...
@@ -26,16 +28,27 @@ import com.ibeetl.admin.core.file.FileService;
import
com.ibeetl.admin.core.service.CorePlatformService
;
import
com.ibeetl.admin.core.service.CorePlatformService
;
import
com.ibeetl.admin.core.util.FileUtil
;
import
com.ibeetl.admin.core.util.FileUtil
;
/**
* Class FileSystemContorller : <br/>
* 描述:业务中有关文件的上传,下载。<br/>
* TODO 待改动计划:
* 改成加上MD5验证,减少重复文件的io
* 补上文件表中有关文件属性(大小,类型,)的信息
* 补上文件上传的临时状态,避免上传文件却中断业务逻辑,产生无用数据以及文件
* @author 一日看尽长安花
* Updated on 2020/3/8
*/
@Slf4j
@Controller
@Controller
@RequestMapping
(
"/core/file"
)
public
class
FileSystemContorller
{
public
class
FileSystemContorller
{
private
final
Log
log
=
LogFactory
.
getLog
(
this
.
getClass
());
@Autowired
CorePlatformService
platformService
;
@Autowired
CorePlatformService
platformService
;
private
static
final
String
MODEL
=
"/core/file"
;
@Autowired
FileService
fileService
;
/*附件类操作*/
/*附件类操作*/
@PostMapping
(
MODEL
+
"/uploadAttachment.json"
)
@PostMapping
(
"/uploadAttachment.json"
)
@ResponseBody
@ResponseBody
public
JsonResult
uploadFile
(
public
JsonResult
uploadFile
(
@RequestParam
(
"file"
)
MultipartFile
file
,
String
batchFileUUID
,
String
bizType
,
String
bizId
)
@RequestParam
(
"file"
)
MultipartFile
file
,
String
batchFileUUID
,
String
bizType
,
String
bizId
)
...
@@ -59,14 +72,14 @@ public class FileSystemContorller {
...
@@ -59,14 +72,14 @@ public class FileSystemContorller {
return
JsonResult
.
success
(
fileItem
);
return
JsonResult
.
success
(
fileItem
);
}
}
@PostMapping
(
MODEL
+
"/deleteAttachment.json"
)
@PostMapping
(
"/deleteAttachment.json"
)
@ResponseBody
@ResponseBody
public
JsonResult
deleteFile
(
Long
fileId
,
String
batchFileUUID
)
throws
IOException
{
public
JsonResult
deleteFile
(
Long
fileId
,
String
batchFileUUID
)
throws
IOException
{
fileService
.
removeFile
(
fileId
,
batchFileUUID
);
fileService
.
removeFile
(
fileId
,
batchFileUUID
);
return
JsonResult
.
success
();
return
JsonResult
.
success
();
}
}
@GetMapping
(
MODEL
+
"/download/{fileId}/{batchFileUUID}/{name}"
)
@GetMapping
(
"/download/{fileId}/{batchFileUUID}/{name}"
)
public
ModelAndView
download
(
public
ModelAndView
download
(
HttpServletResponse
response
,
@PathVariable
Long
fileId
,
@PathVariable
String
batchFileUUID
)
HttpServletResponse
response
,
@PathVariable
Long
fileId
,
@PathVariable
String
batchFileUUID
)
throws
IOException
{
throws
IOException
{
...
@@ -80,9 +93,7 @@ public class FileSystemContorller {
...
@@ -80,9 +93,7 @@ public class FileSystemContorller {
/*execl 导入导出*/
/*execl 导入导出*/
@Autowired
FileService
fileService
;
@GetMapping
(
"/get.do"
)
@GetMapping
(
MODEL
+
"/get.do"
)
public
ModelAndView
index
(
HttpServletResponse
response
,
String
id
)
throws
IOException
{
public
ModelAndView
index
(
HttpServletResponse
response
,
String
id
)
throws
IOException
{
String
path
=
id
;
String
path
=
id
;
response
.
setContentType
(
"text/html; charset = UTF-8"
);
response
.
setContentType
(
"text/html; charset = UTF-8"
);
...
@@ -97,7 +108,7 @@ public class FileSystemContorller {
...
@@ -97,7 +108,7 @@ public class FileSystemContorller {
return
null
;
return
null
;
}
}
@GetMapping
(
MODEL
+
"/downloadTemplate.do"
)
@GetMapping
(
"/downloadTemplate.do"
)
public
ModelAndView
dowloadTemplate
(
HttpServletResponse
response
,
String
path
)
public
ModelAndView
dowloadTemplate
(
HttpServletResponse
response
,
String
path
)
throws
IOException
{
throws
IOException
{
response
.
setContentType
(
"text/html; charset = UTF-8"
);
response
.
setContentType
(
"text/html; charset = UTF-8"
);
...
@@ -117,7 +128,7 @@ public class FileSystemContorller {
...
@@ -117,7 +128,7 @@ public class FileSystemContorller {
return
null
;
return
null
;
}
}
@GetMapping
(
MODEL
+
"/simpleUpload.do"
)
@GetMapping
(
"/simpleUpload.do"
)
public
ModelAndView
simpleUploadPage
(
String
uploadUrl
,
String
templatePath
,
String
fileType
)
public
ModelAndView
simpleUploadPage
(
String
uploadUrl
,
String
templatePath
,
String
fileType
)
throws
IOException
{
throws
IOException
{
ModelAndView
view
=
new
ModelAndView
(
"/common/simpleUpload.html"
);
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