Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
N
nouiWithSpringMVC
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
gechengyang
nouiWithSpringMVC
Commits
d5776e73
Commit
d5776e73
authored
Aug 05, 2022
by
WeiCong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
第四版
1.分页请求参数优化 2.分页响应数据优化 3.Alias增加缓存机制 4.优化部分底层代码
parent
49da27e1
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
331 additions
and
274 deletions
+331
-274
PreHandle.java
src/main/java/org/sss/module/pojo/PreHandle.java
+12
-10
Alias.java
src/main/java/org/sss/presentation/noui/api/model/Alias.java
+98
-71
AliasFactory.java
...ava/org/sss/presentation/noui/api/model/AliasFactory.java
+26
-0
NoUiRequest.java
...va/org/sss/presentation/noui/api/request/NoUiRequest.java
+7
-0
Result.java
...n/java/org/sss/presentation/noui/api/response/Result.java
+83
-91
ResultUtil.java
...va/org/sss/presentation/noui/api/response/ResultUtil.java
+22
-29
Constants.java
...main/java/org/sss/presentation/noui/common/Constants.java
+1
-0
AbstractCommonController.java
...resentation/noui/controller/AbstractCommonController.java
+38
-38
NoUiPresentationUtil.java
.../org/sss/presentation/noui/util/NoUiPresentationUtil.java
+44
-35
No files found.
src/main/java/org/sss/module/pojo/PreHandle.java
View file @
d5776e73
...
...
@@ -7,10 +7,7 @@ import org.apache.commons.beanutils.MethodUtils;
import
org.hibernate.Session
;
import
org.hibernate.query.Query
;
import
org.hibernate.transform.Transformers
;
import
org.sss.common.model.Argument
;
import
org.sss.common.model.IModule
;
import
org.sss.common.model.IModuleRoot
;
import
org.sss.common.model.IParent
;
import
org.sss.common.model.*
;
import
org.sss.module.hibernate.HibernateUtils
;
import
org.sss.presentation.noui.context.NoUiContext
;
import
org.sss.presentation.noui.util.PropertyUtil
;
...
...
@@ -101,12 +98,7 @@ public class PreHandle {
}
String
grpNam
=
(
String
)
otherParams
[
0
];
String
toTrs
=
(
String
)
otherParams
[
1
];
String
packageName
=
((
AbstractPOJOImpl
)
ctx
.
getSupport
()).
getPackageName
(
toTrs
);
String
className
=
packageName
+
"."
+
toTrs
.
substring
(
0
,
1
).
toUpperCase
()
+
toTrs
.
substring
(
1
);
Class
clazz
=
Class
.
forName
(
AbstractPOJOImpl
.
modulePackageName
+
".Sysmod"
);
IModuleRoot
root
=
(
IModuleRoot
)
ConstructorUtils
.
invokeConstructor
(
Class
.
forName
(
className
),
new
Object
[]{
toTrs
,
(
IModule
)
ConstructorUtils
.
invokeConstructor
(
clazz
,
new
Object
[
0
])}
,
new
Class
[]{
String
.
class
,
IModule
.
class
});
IModuleRoot
root
=
getModuleRoot
(
ctx
,
toTrs
);
IModule
grp
=
(
IModule
)
ctx
.
getSession
().
getBaseObject
(
root
,
grpNam
+
"\\rec"
);
ctx
.
getSupport
().
get
(
grp
,
new
Argument
[]{
new
Argument
(
"inr"
,
paramsMap
.
get
(
"__modelinr"
))});
ctx
.
getError
();
...
...
@@ -153,4 +145,14 @@ public class PreHandle {
session
.
close
();
return
true
;
}
public
static
IModuleRoot
getModuleRoot
(
IContext
ctx
,
String
trnName
)
throws
Exception
{
String
packageName
=
((
AbstractPOJOImpl
)
ctx
.
getSupport
()).
getPackageName
(
trnName
);
String
className
=
packageName
+
"."
+
trnName
.
substring
(
0
,
1
).
toUpperCase
()
+
trnName
.
substring
(
1
);
Class
clazz
=
Class
.
forName
(
AbstractPOJOImpl
.
modulePackageName
+
".Sysmod"
);
IModuleRoot
root
=
(
IModuleRoot
)
ConstructorUtils
.
invokeConstructor
(
Class
.
forName
(
className
),
new
Object
[]{
trnName
,
(
IModule
)
ConstructorUtils
.
invokeConstructor
(
clazz
,
new
Object
[
0
])}
,
new
Class
[]{
String
.
class
,
IModule
.
class
});
return
root
;
}
}
src/main/java/org/sss/presentation/noui/api/model/Alias.java
View file @
d5776e73
package
org
.
sss
.
presentation
.
noui
.
api
.
model
;
import
java.io.IOException
;
import
java.util.HashMap
;
import
java.util.Map
;
import
org.sss.presentation.noui.util.PropertyUtil
;
public
class
Alias
{
private
static
String
PRE
=
"noUiMapping_"
;
private
String
trnName
;
private
String
aliasActionUrl
;
public
String
getAliasActionUrl
()
{
return
aliasActionUrl
;
}
public
void
setAliasActionUrl
(
String
aliasActionUrl
)
{
this
.
aliasActionUrl
=
aliasActionUrl
;
}
private
Map
<
String
,
String
>
rel
;
private
Map
<
String
,
String
>
revertRel
=
new
HashMap
<>();
@SuppressWarnings
(
"unchecked"
)
public
Alias
(
String
mappingUrl
)
{
String
[]
mappingArgs
=
mappingUrl
.
split
(
"/"
);
this
.
trnName
=
mappingArgs
[
mappingArgs
.
length
-
2
];
this
.
aliasActionUrl
=
mappingArgs
[
mappingArgs
.
length
-
1
];
try
{
this
.
rel
=
new
HashMap
<
String
,
String
>((
Map
)
PropertyUtil
.
load
(
PRE
+
trnName
+
".properties"
));
for
(
String
key
:
this
.
rel
.
keySet
())
{
this
.
revertRel
.
put
(
this
.
rel
.
get
(
key
),
key
);
}
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
public
String
getRelPath
(
String
alias
)
{
return
this
.
rel
.
get
(
alias
);
}
public
String
getTrnName
()
{
return
trnName
;
}
public
Map
<
String
,
String
>
getRel
()
{
return
rel
;
}
public
void
setTrnName
(
String
trnName
)
{
this
.
trnName
=
trnName
;
}
public
void
setRel
(
Map
<
String
,
String
>
rel
)
{
this
.
rel
=
rel
;
}
public
Map
<
String
,
String
>
getRevertRel
()
{
return
revertRel
;
}
public
void
setRevertRel
(
Map
<
String
,
String
>
revertRel
)
{
this
.
revertRel
=
revertRel
;
}
}
package
org
.
sss
.
presentation
.
noui
.
api
.
model
;
import
log.Log
;
import
log.LogFactory
;
import
org.sss.common.model.IBaseObject
;
import
org.sss.common.model.IContext
;
import
org.sss.common.model.IModuleList
;
import
org.sss.common.model.IModuleRoot
;
import
org.sss.module.pojo.PreHandle
;
import
org.sss.presentation.noui.util.PropertyUtil
;
import
java.util.HashMap
;
import
java.util.LinkedList
;
import
java.util.List
;
import
java.util.Map
;
public
class
Alias
{
protected
static
final
Log
log
=
LogFactory
.
getLog
(
Alias
.
class
);
private
static
String
PRE
=
"noUiMapping_"
;
private
String
trnName
;
private
String
aliasActionUrl
;
private
Map
<
String
,
String
>
rel
;
private
Map
<
String
,
String
>
revertRel
=
new
HashMap
<>();
private
List
<
String
>
lstPths
=
new
LinkedList
<>();
//集合路径缓存
public
Alias
(
String
mappingUrl
,
IContext
context
)
{
String
[]
mappingArgs
=
mappingUrl
.
split
(
"/"
);
this
.
trnName
=
mappingArgs
[
mappingArgs
.
length
-
2
];
this
.
aliasActionUrl
=
mappingArgs
[
mappingArgs
.
length
-
1
];
try
{
this
.
rel
=
new
HashMap
<
String
,
String
>((
Map
)
PropertyUtil
.
load
(
PRE
+
trnName
+
".properties"
));
IModuleRoot
root
=
PreHandle
.
getModuleRoot
(
context
,
trnName
);
for
(
String
key
:
this
.
rel
.
keySet
())
{
String
pth
=
this
.
rel
.
get
(
key
);
IBaseObject
baseObject
=
context
.
getSession
().
getBaseObject
(
root
,
pth
);
if
(
baseObject
instanceof
IModuleList
)
{
lstPths
.
add
(
pth
);
}
this
.
revertRel
.
put
(
pth
,
key
);
}
}
catch
(
Exception
e
)
{
log
.
error
(
"构建模型映射出现异常:"
+
e
.
getMessage
());
}
}
public
String
getAliasActionUrl
()
{
return
aliasActionUrl
;
}
public
void
setAliasActionUrl
(
String
aliasActionUrl
)
{
this
.
aliasActionUrl
=
aliasActionUrl
;
}
public
String
getRelPath
(
String
alias
)
{
return
this
.
rel
.
get
(
alias
);
}
public
String
getTrnName
()
{
return
trnName
;
}
public
void
setTrnName
(
String
trnName
)
{
this
.
trnName
=
trnName
;
}
public
Map
<
String
,
String
>
getRel
()
{
return
rel
;
}
public
void
setRel
(
Map
<
String
,
String
>
rel
)
{
this
.
rel
=
rel
;
}
public
Map
<
String
,
String
>
getRevertRel
()
{
return
revertRel
;
}
public
void
setRevertRel
(
Map
<
String
,
String
>
revertRel
)
{
this
.
revertRel
=
revertRel
;
}
public
String
getPrimaryLstPth
()
{
if
(
lstPths
.
isEmpty
())
{
return
null
;
}
else
{
return
lstPths
.
get
(
0
);
}
}
public
boolean
isSingleLst
()
{
if
(
lstPths
.
isEmpty
())
{
return
false
;
}
else
{
return
lstPths
.
size
()
==
1
;
}
}
}
src/main/java/org/sss/presentation/noui/api/model/AliasFactory.java
0 → 100644
View file @
d5776e73
package
org
.
sss
.
presentation
.
noui
.
api
.
model
;
import
org.sss.common.model.IContext
;
import
java.util.Map
;
import
java.util.concurrent.ConcurrentHashMap
;
/**
* Alias工厂,支持缓存
*/
public
class
AliasFactory
{
private
static
Map
<
String
,
Alias
>
cache
=
new
ConcurrentHashMap
<>();
/**
* 构建服务请求模型映射别名对象(以mappingUrl进行缓存)
*/
public
static
Alias
getAlias
(
String
mappingUrl
,
IContext
context
)
{
Alias
alias
=
cache
.
get
(
mappingUrl
);
if
(
alias
!=
null
)
{
return
alias
;
}
alias
=
new
Alias
(
mappingUrl
,
context
);
cache
.
put
(
mappingUrl
,
alias
);
return
alias
;
}
}
src/main/java/org/sss/presentation/noui/api/request/NoUiRequest.java
View file @
d5776e73
...
...
@@ -27,6 +27,7 @@ public class NoUiRequest {
private
String
trnName
;
private
String
cid
;
private
String
oid
;
private
boolean
isSelByPagination
;
public
NoUiRequest
()
{
...
...
@@ -85,6 +86,8 @@ public class NoUiRequest {
}
if
(
this
.
paginationMap
==
null
)
{
this
.
paginationMap
=
new
HashMap
<>();
}
else
{
isSelByPagination
=
true
;
}
if
(
this
.
headMap
==
null
)
{
this
.
headMap
=
new
HashMap
<>();
...
...
@@ -203,4 +206,8 @@ public class NoUiRequest {
public
void
setOid
(
String
oid
)
{
this
.
oid
=
oid
;
}
public
boolean
isSelByPagination
()
{
return
isSelByPagination
;
}
}
src/main/java/org/sss/presentation/noui/api/response/Result.java
View file @
d5776e73
package
org
.
sss
.
presentation
.
noui
.
api
.
response
;
import
java.util.Map
;
public
class
Result
{
private
String
retcod
;
private
String
retmsg
;
private
Map
<
String
,
Object
>
error
;
// 错误信息
private
Map
<
String
,
Object
>
codetable
;
private
Object
pagination
;
private
Object
data
;
private
String
verison
;
private
static
final
String
EMPTY
=
""
;
public
String
getVerison
()
{
return
verison
;
}
public
void
setVerison
(
String
verison
)
{
this
.
verison
=
verison
;
}
public
Result
(
String
retcod
,
String
retmsg
,
Object
data
)
{
this
(
retcod
,
retmsg
,
data
,
EMPTY
);
}
public
Result
(
String
retcod
,
String
retmsg
,
Object
data
,
String
verison
)
{
this
.
retcod
=
retcod
;
this
.
retmsg
=
retmsg
;
this
.
data
=
data
;
this
.
verison
=
verison
;
}
public
Result
(
String
retcod
,
String
retmsg
,
Map
<
String
,
Object
>
error
,
Map
<
String
,
Object
>
codetable
,
Object
data
,
String
verison
)
{
this
.
retcod
=
retcod
;
this
.
retmsg
=
retmsg
;
this
.
error
=
error
;
this
.
codetable
=
codetable
;
this
.
data
=
data
;
this
.
verison
=
verison
;
}
public
String
getRetcod
()
{
return
retcod
;
}
public
String
getRetmsg
()
{
return
retmsg
;
}
public
void
setRetcod
(
String
retcod
)
{
this
.
retcod
=
retcod
;
}
public
void
setRetmsg
(
String
retmsg
)
{
this
.
retmsg
=
retmsg
;
}
public
Object
getData
()
{
return
data
;
}
public
void
setData
(
Object
data
)
{
this
.
data
=
data
;
}
public
Map
<
String
,
Object
>
getError
()
{
return
error
;
}
public
Map
<
String
,
Object
>
getCodetable
()
{
return
codetable
;
}
public
void
setError
(
Map
<
String
,
Object
>
error
)
{
this
.
error
=
error
;
}
public
void
setCodetable
(
Map
<
String
,
Object
>
codetable
)
{
this
.
codetable
=
codetable
;
}
public
Object
getPagination
()
{
return
pagination
;
}
public
void
setPagination
(
Object
pagination
)
{
this
.
pagination
=
pagination
;
}
}
package
org
.
sss
.
presentation
.
noui
.
api
.
response
;
import
java.util.Map
;
public
class
Result
{
private
String
retcod
;
private
String
retmsg
;
private
Map
<
String
,
Object
>
error
;
// 错误信息
private
Map
<
String
,
Object
>
codetable
;
private
Object
data
;
private
String
verison
;
private
static
final
String
EMPTY
=
""
;
public
String
getVerison
()
{
return
verison
;
}
public
void
setVerison
(
String
verison
)
{
this
.
verison
=
verison
;
}
public
Result
(
String
retcod
,
String
retmsg
,
Object
data
)
{
this
(
retcod
,
retmsg
,
data
,
EMPTY
);
}
public
Result
(
String
retcod
,
String
retmsg
,
Object
data
,
String
verison
)
{
this
.
retcod
=
retcod
;
this
.
retmsg
=
retmsg
;
this
.
data
=
data
;
this
.
verison
=
verison
;
}
public
Result
(
String
retcod
,
String
retmsg
,
Map
<
String
,
Object
>
error
,
Map
<
String
,
Object
>
codetable
,
Object
data
,
String
verison
)
{
this
.
retcod
=
retcod
;
this
.
retmsg
=
retmsg
;
this
.
error
=
error
;
this
.
codetable
=
codetable
;
this
.
data
=
data
;
this
.
verison
=
verison
;
}
public
String
getRetcod
()
{
return
retcod
;
}
public
String
getRetmsg
()
{
return
retmsg
;
}
public
void
setRetcod
(
String
retcod
)
{
this
.
retcod
=
retcod
;
}
public
void
setRetmsg
(
String
retmsg
)
{
this
.
retmsg
=
retmsg
;
}
public
Object
getData
()
{
return
data
;
}
public
void
setData
(
Object
data
)
{
this
.
data
=
data
;
}
public
Map
<
String
,
Object
>
getError
()
{
return
error
;
}
public
Map
<
String
,
Object
>
getCodetable
()
{
return
codetable
;
}
public
void
setError
(
Map
<
String
,
Object
>
error
)
{
this
.
error
=
error
;
}
public
void
setCodetable
(
Map
<
String
,
Object
>
codetable
)
{
this
.
codetable
=
codetable
;
}
}
src/main/java/org/sss/presentation/noui/api/response/ResultUtil.java
View file @
d5776e73
package
org
.
sss
.
presentation
.
noui
.
api
.
response
;
import
java.util.Map
;
public
class
ResultUtil
{
final
static
String
DEFAULT_VERSION
=
"DEFAULT_VERSION"
;
public
static
Result
result
(
String
retcod
,
String
retmsg
,
Object
data
,
String
version
)
{
return
new
Result
(
retcod
,
retmsg
,
data
,
version
);
}
public
static
Result
result
(
String
retcod
,
String
retmsg
,
Map
<
String
,
Object
>
data
,
Map
<
String
,
Object
>
error
,
Map
<
String
,
Object
>
codetable
,
String
version
)
{
return
new
Result
(
retcod
,
retmsg
,
error
,
codetable
,
data
,
version
);
}
public
static
Result
result
(
String
retcod
,
String
retmsg
,
Map
<
String
,
Object
>
data
,
Map
<
String
,
Object
>
paginationData
,
Map
<
String
,
Object
>
error
,
Map
<
String
,
Object
>
codetable
,
String
version
)
{
Result
result
=
new
Result
(
retcod
,
retmsg
,
error
,
codetable
,
data
,
version
);
if
(!
paginationData
.
isEmpty
())
result
.
setPagination
(
paginationData
);
return
result
;
}
public
static
Result
result
(
String
retcod
,
String
retmsg
,
Object
data
)
{
return
new
Result
(
retcod
,
retmsg
,
data
,
DEFAULT_VERSION
);
}
public
static
Result
result
(
String
retcod
,
String
retmsg
,
Map
<
String
,
Object
>
data
,
Map
<
String
,
Object
>
error
,
Map
<
String
,
Object
>
codetable
)
{
return
new
Result
(
retcod
,
retmsg
,
error
,
codetable
,
data
,
DEFAULT_VERSION
);
}
}
package
org
.
sss
.
presentation
.
noui
.
api
.
response
;
import
java.util.Map
;
public
class
ResultUtil
{
final
static
String
DEFAULT_VERSION
=
"DEFAULT_VERSION"
;
public
static
Result
result
(
String
retcod
,
String
retmsg
,
Object
data
,
String
version
)
{
return
new
Result
(
retcod
,
retmsg
,
data
,
version
);
}
public
static
Result
result
(
String
retcod
,
String
retmsg
,
Map
<
String
,
Object
>
data
,
Map
<
String
,
Object
>
error
,
Map
<
String
,
Object
>
codetable
,
String
version
)
{
return
new
Result
(
retcod
,
retmsg
,
error
,
codetable
,
data
,
version
);
}
public
static
Result
result
(
String
retcod
,
String
retmsg
,
Object
data
)
{
return
new
Result
(
retcod
,
retmsg
,
data
,
DEFAULT_VERSION
);
}
public
static
Result
result
(
String
retcod
,
String
retmsg
,
Map
<
String
,
Object
>
data
,
Map
<
String
,
Object
>
error
,
Map
<
String
,
Object
>
codetable
)
{
return
new
Result
(
retcod
,
retmsg
,
error
,
codetable
,
data
,
DEFAULT_VERSION
);
}
}
src/main/java/org/sss/presentation/noui/common/Constants.java
View file @
d5776e73
...
...
@@ -26,6 +26,7 @@ public class Constants {
public
static
final
String
PAGINATION_INDEX
=
"index"
;
public
static
final
String
PAGINATION_PAGESIZE
=
"pageSize"
;
public
static
final
String
PAGINATION_TOTAL
=
"total"
;
public
static
final
String
SIGNLE_LST
=
"__lst"
;
//光大e结算新增常量
public
static
final
String
CIFNO
=
"cifno"
;
...
...
src/main/java/org/sss/presentation/noui/controller/AbstractCommonController.java
View file @
d5776e73
...
...
@@ -13,6 +13,7 @@ import org.sss.module.pojo.PreHandle;
import
org.sss.presentation.noui.api.exception.ExitTransactionException
;
import
org.sss.presentation.noui.api.exception.NoUiException
;
import
org.sss.presentation.noui.api.model.Alias
;
import
org.sss.presentation.noui.api.model.AliasFactory
;
import
org.sss.presentation.noui.api.request.NoUiRequest
;
import
org.sss.presentation.noui.api.response.ErrorCodes
;
import
org.sss.presentation.noui.api.response.NoUiVersion
;
...
...
@@ -60,17 +61,11 @@ public abstract class AbstractCommonController {
NoUiRequest
noUiRequest
=
null
;
try
{
noUiRequest
=
new
NoUiRequest
(
request
,
mappingUrl
,
dataMap
);
Alias
alias
=
new
Alias
(
mappingUrl
);
String
trnName
=
alias
.
getTrnName
();
putTxInfo
(
alias
,
mappingUrl
);
//记录交易信息
Map
<
String
,
?>
paramsMap
=
noUiRequest
.
getParamsMap
();
context
=
NoUiContextManager
.
createNoUiContext
(
noUiRequest
);
Alias
alias
=
AliasFactory
.
getAlias
(
mappingUrl
,
context
);
String
trnName
=
alias
.
getTrnName
();
putTxInfo
(
alias
,
mappingUrl
);
//记录交易信息
if
(
PreHandle
.
needPreHandle
(
trnName
,
paramsMap
))
{
PreHandle
.
preHandle
(
trnName
,
paramsMap
,
context
);
}
...
...
@@ -178,8 +173,7 @@ public abstract class AbstractCommonController {
loginInfo
.
setSysmod
(
sysmodBytes
);
EhcacheUtils
.
set
(
StringUtil
.
userUniqueId
(
noUiRequest
),
loginInfo
);
}
Map
<
String
,
Object
>
paginationData
=
new
HashMap
<>();
Map
<
String
,
Object
>
afterReturnData
=
handleReturnData
(
eventType
,
context
,
noUiRequest
,
alias
,
paginationData
);
Map
<
String
,
Object
>
afterReturnData
=
handleReturnData
(
eventType
,
context
,
noUiRequest
,
alias
);
//数据安全性拦截-篡改数据加密
if
(
DataSecurityUtil
.
isSafeMode
()
&&
noUiRequest
.
isSecurity
())
{
if
(
DataSecurityUtil
.
needEncrypt
(
noUiRequest
.
getReqUrl
()))
{
...
...
@@ -194,7 +188,7 @@ public abstract class AbstractCommonController {
}
}
ret
=
ResultUtil
.
result
(
NoUiPresentationUtil
.
retCode
(
context
),
NoUiPresentationUtil
.
retMsg
(
context
),
afterReturnData
,
paginationData
,
ret
=
ResultUtil
.
result
(
NoUiPresentationUtil
.
retCode
(
context
),
NoUiPresentationUtil
.
retMsg
(
context
),
afterReturnData
,
NoUiPresentationUtil
.
handleErrorReturnData
(
context
,
alias
),
NoUiPresentationUtil
.
handleCodeTableReturnData
(
context
,
alias
),
noUiVersion
.
getVersion
());
}
catch
(
Throwable
e
)
{
if
(
e
.
getCause
()
instanceof
ExitTransactionException
)
{
...
...
@@ -233,20 +227,27 @@ public abstract class AbstractCommonController {
return
baseObject
;
}
private
void
putModuleListPagination
(
String
aliasKey
,
Map
<
String
,
Object
>
paginationMap
,
IModuleList
moduleList
)
{
//没有做分页
if
(
moduleList
.
getPageSize
()
==
0
)
return
;
int
total
=
moduleList
.
fullSize
();
int
index
=
moduleList
.
getPage
();
Map
<
String
,
Integer
>
map
=
new
HashMap
<>();
map
.
put
(
"total"
,
total
);
map
.
put
(
"index"
,
index
);
paginationMap
.
put
(
aliasKey
,
map
);
private
void
doHandleReturnDataForModuleList
(
Alias
alias
,
String
aliasKey
,
Map
<
String
,
Object
>
dataMap
,
IModuleList
moduleList
,
List
<
Map
>
lst
,
NoUiRequest
noUiRequest
)
{
Map
<
String
,
Object
>
item
=
new
HashMap
<>();
//查询数据
item
.
put
(
Constants
.
DATA
,
lst
);
if
(
noUiRequest
.
isSelByPagination
())
{
//分页信息
int
total
=
moduleList
.
fullSize
();
int
index
=
moduleList
.
getPage
();
Map
<
String
,
Object
>
pagination
=
new
HashMap
<>();
pagination
.
put
(
Constants
.
PAGINATION_TOTAL
,
total
);
pagination
.
put
(
Constants
.
PAGINATION_INDEX
,
index
);
item
.
put
(
Constants
.
PAGINATION
,
pagination
);
}
if
(
alias
.
isSingleLst
())
{
dataMap
.
put
(
Constants
.
SIGNLE_LST
,
item
);
}
else
{
dataMap
.
put
(
aliasKey
,
item
);
}
}
private
Map
<
String
,
Object
>
handleReturnData
(
String
eventType
,
NoUiContext
context
,
NoUiRequest
noUiRequest
,
Alias
alias
,
Map
<
String
,
Object
>
paginationMap
)
{
private
Map
<
String
,
Object
>
handleReturnData
(
String
eventType
,
NoUiContext
context
,
NoUiRequest
noUiRequest
,
Alias
alias
)
{
Map
<
String
,
Object
>
data
=
new
HashMap
<
String
,
Object
>();
// 初始化事件
if
(
eventType
.
equals
(
INIT
))
{
...
...
@@ -256,10 +257,7 @@ public abstract class AbstractCommonController {
}
String
realPath
=
alias
.
getRelPath
(
aliasKey
);
IBaseObject
baseObject
=
context
.
getSession
().
getBaseObject
(
context
.
getRoot
(),
realPath
);
if
(
baseObject
instanceof
IModuleList
)
{
putModuleListPagination
(
aliasKey
,
paginationMap
,
(
IModuleList
)
baseObject
);
}
data
.
put
(
aliasKey
,
NoUiPresentationUtil
.
handIBaseObject
(
context
,
baseObject
,
realPath
));
doHandleReturnData
(
baseObject
,
aliasKey
,
realPath
,
context
,
alias
,
data
);
}
return
data
;
}
...
...
@@ -288,11 +286,7 @@ public abstract class AbstractCommonController {
if
(
aliasKey
==
null
)
{
continue
;
}
if
(
val
instanceof
IModuleList
)
{
putModuleListPagination
(
aliasKey
,
paginationMap
,
(
IModuleList
)
val
);
aliasPath
=
alias
.
getRel
().
get
(
aliasPath
);
}
data
.
put
(
aliasKey
,
NoUiPresentationUtil
.
handIBaseObject
(
context
,
val
,
aliasPath
));
doHandleReturnData
(
val
,
aliasKey
,
aliasPath
,
context
,
alias
,
data
);
containsKeys
.
add
(
modifyEntry
.
getKey
());
}
...
...
@@ -306,13 +300,19 @@ public abstract class AbstractCommonController {
continue
;
}
Object
baseObject
=
modifyMap
.
get
(
key
);
if
(
baseObject
instanceof
IModuleList
)
{
putModuleListPagination
(
key
,
paginationMap
,
(
IModuleList
)
baseObject
);
}
data
.
put
(
key
,
NoUiPresentationUtil
.
handIBaseObject
(
context
,
baseObject
,
key
));
doHandleReturnData
(
baseObject
,
key
,
key
,
context
,
alias
,
data
);
}
}
return
data
;
}
private
void
doHandleReturnData
(
Object
val
,
String
aliasKey
,
String
aliasPath
,
NoUiContext
context
,
Alias
alias
,
Map
<
String
,
Object
>
data
)
{
if
(
val
instanceof
IModuleList
)
{
aliasPath
=
alias
.
getRel
().
get
(
aliasPath
);
List
<
Map
>
lst
=
(
List
<
Map
>)
NoUiPresentationUtil
.
handIBaseObject
(
context
,
val
,
aliasPath
);
doHandleReturnDataForModuleList
(
alias
,
aliasKey
,
data
,
(
IModuleList
)
val
,
lst
,
context
.
getNoUiRequest
());
}
else
{
data
.
put
(
aliasKey
,
NoUiPresentationUtil
.
handIBaseObject
(
context
,
val
,
aliasPath
));
}
}
}
src/main/java/org/sss/presentation/noui/util/NoUiPresentationUtil.java
View file @
d5776e73
...
...
@@ -4,11 +4,13 @@ import log.Log;
import
log.LogFactory
;
import
org.apache.commons.io.IOUtils
;
import
org.apache.commons.lang.StringUtils
;
import
org.springframework.util.Assert
;
import
org.sss.common.impl.StreamImpl
;
import
org.sss.common.model.*
;
import
org.sss.module.pojo.AbstractPOJOModuleSession
;
import
org.sss.presentation.noui.api.exception.NoUiException
;
import
org.sss.presentation.noui.api.model.Alias
;
import
org.sss.presentation.noui.api.model.AliasFactory
;
import
org.sss.presentation.noui.api.request.NoUiRequest
;
import
org.sss.presentation.noui.api.response.ErrorCodes
;
import
org.sss.presentation.noui.cache.AbstractCache
;
...
...
@@ -31,10 +33,12 @@ public class NoUiPresentationUtil {
Map
<
String
,
?>
dataMap
=
request
.
getDataMap
();
for
(
String
aliasKey
:
dataMap
.
keySet
())
{
if
(
aliasKey
.
startsWith
(
Constants
.
MAPPING_PRE
))
{
//忽略具有事件的字段
continue
;
}
String
url
=
alias
.
getRelPath
(
aliasKey
);
if
(
StringUtils
.
isEmpty
(
url
))
{
//忽略没有映射具体字段的配置
continue
;
}
...
...
@@ -49,10 +53,6 @@ public class NoUiPresentationUtil {
if
(
baseObject
instanceof
IDatafield
<?>)
{
IDatafield
<
Object
>
dataField
=
(
IDatafield
<
Object
>)
baseObject
;
handleDatafield
(
context
,
dataField
,
value
);
// dataField.invokeDefaultRules(context);
// dataField.invokeCheckRules(context);
// dataField.invokeEventRules(context,
// EventType.ON_CHANGE, null, 0);
}
if
(
baseObject
instanceof
IModuleList
<?>
&&
value
instanceof
List
<?>)
{
IModuleList
<
IModule
>
moduleList
=
(
IModuleList
<
IModule
>)
baseObject
;
...
...
@@ -60,8 +60,9 @@ public class NoUiPresentationUtil {
List
<
Map
<
String
,
Object
>>
valueList
=
(
List
<
Map
<
String
,
Object
>>)
value
;
for
(
Map
<
String
,
Object
>
m
:
valueList
)
{
IModule
module
=
moduleList
.
add
();
for
(
Map
.
Entry
<
String
,
Object
>
entry
:
m
.
entrySet
())
for
(
Map
.
Entry
<
String
,
Object
>
entry
:
m
.
entrySet
())
{
handleDatafield
(
context
,
(
IDatafield
<
Object
>)
module
.
get
(
obfuscationPath
(
entry
.
getKey
())),
entry
.
getValue
());
}
}
}
}
...
...
@@ -72,33 +73,47 @@ public class NoUiPresentationUtil {
}
}
//处理分页信息
Map
<
String
,
?>
paginationMap
=
request
.
getPaginationMap
();
for
(
String
aliasKey
:
paginationMap
.
keySet
())
{
String
url
=
alias
.
getRelPath
(
aliasKey
);
if
(
StringUtils
.
isEmpty
(
url
))
{
url
=
aliasKey
;
if
(
paginationMap
.
containsKey
(
Constants
.
PAGINATION_INDEX
)
&&
paginationMap
.
containsKey
(
Constants
.
PAGINATION_PAGESIZE
))
{
String
primaryLstPth
=
alias
.
getPrimaryLstPth
();
Assert
.
hasText
(
primaryLstPth
,
alias
.
getAliasActionUrl
()
+
"请求的list模型路径未知"
);
IBaseObject
baseObject
=
context
.
getSession
().
getBaseObject
(
context
.
getRoot
(),
primaryLstPth
);
if
(
null
==
baseObject
)
{
throw
new
NoUiException
(
"not found url :"
+
primaryLstPth
);
}
IBaseObject
baseObject
=
null
;
try
{
baseObject
=
context
.
getSession
().
getBaseObject
(
context
.
getRoot
(),
url
);
if
(
null
==
baseObject
)
{
throw
new
NoUiException
(
"not found url :"
+
url
+
" ,alias name is:"
+
aliasKey
);
if
(!(
baseObject
instanceof
IModuleList
))
{
throw
new
NoUiException
(
primaryLstPth
+
" is not a moduleList"
);
}
IModuleList
moduleList
=
(
IModuleList
)
baseObject
;
HashMap
<
String
,
Integer
>
tmp
=
new
HashMap
<
String
,
Integer
>();
tmp
.
put
(
Constants
.
PAGINATION_INDEX
,
Integer
.
parseInt
(
paginationMap
.
get
(
Constants
.
PAGINATION_INDEX
)
+
""
));
tmp
.
put
(
Constants
.
PAGINATION_PAGESIZE
,
Integer
.
parseInt
(
paginationMap
.
get
(
Constants
.
PAGINATION_PAGESIZE
)
+
""
));
putPaginationCache
(
tmp
,
moduleList
);
}
else
{
for
(
String
aliasKey
:
paginationMap
.
keySet
())
{
String
url
=
alias
.
getRelPath
(
aliasKey
);
if
(
StringUtils
.
isEmpty
(
url
))
{
url
=
aliasKey
;
}
IBaseObject
baseObject
=
null
;
try
{
baseObject
=
context
.
getSession
().
getBaseObject
(
context
.
getRoot
(),
url
);
if
(
null
==
baseObject
)
{
throw
new
NoUiException
(
"not found url :"
+
url
+
" ,alias name is:"
+
aliasKey
);
}
if
(!(
baseObject
instanceof
IModuleList
))
throw
new
NoUiException
(
url
+
" is not a moduleList"
);
//处理分页信息
IModuleList
moduleList
=
(
IModuleList
)
baseObject
;
Map
<
String
,
Integer
>
paginationItem
=
(
Map
<
String
,
Integer
>)
paginationMap
.
get
(
aliasKey
);
putPaginationCache
(
paginationItem
,
moduleList
);
}
catch
(
Exception
e
)
{
log
.
error
(
"Pagination command error"
,
e
);
throw
new
NoUiException
(
"Pagination command error"
,
e
);
}
if
(!(
baseObject
instanceof
IModuleList
))
throw
new
NoUiException
(
url
+
" is not a moduleList"
);
//处理分页信息
IModuleList
moduleList
=
(
IModuleList
)
baseObject
;
Map
<
String
,
Integer
>
paginationItem
=
(
Map
<
String
,
Integer
>)
paginationMap
.
get
(
aliasKey
);
putPaginationCache
(
paginationItem
,
moduleList
);
}
catch
(
Exception
e
)
{
log
.
error
(
"Pagination command error"
,
e
);
throw
new
NoUiException
(
"Pagination command error"
,
e
);
}
}
}
private
static
void
putPaginationCache
(
Map
<
String
,
Integer
>
paginationItem
,
IModuleList
moduleList
)
{
...
...
@@ -116,11 +131,6 @@ public class NoUiPresentationUtil {
Class
<?>
dataType
=
dataField
.
getDataType
();
if
(
dataType
.
equals
(
String
.
class
))
{
String
valStr
=
value
.
toString
();
// if ("true".equalsIgnoreCase(valStr.trim()))
// dataField.setValue("X");
// else if ("false".equalsIgnoreCase(valStr.trim()))
// dataField.setValue("");
// else
dataField
.
setValue
(
valStr
);
return
;
}
...
...
@@ -275,7 +285,7 @@ public class NoUiPresentationUtil {
if
(
val
==
null
)
return
null
;
if
((
val
instanceof
IModuleList
))
{
List
list
=
new
ArrayList
();
List
<
Map
>
list
=
new
ArrayList
();
IModuleList
moduleList
=
(
IModuleList
)
val
;
boolean
isAll
=
true
;
if
(!
StringUtil
.
isEmpty
(
path
))
{
...
...
@@ -288,7 +298,6 @@ public class NoUiPresentationUtil {
Collection
<
IDatafield
>
datafields
=
module
.
getDatafields
();
for
(
IDatafield
datafield
:
datafields
)
{
String
dataFieldName
=
obfuscationPath
(
datafield
.
getName
());
map
.
put
(
dataFieldName
,
handle
(
datafield
.
getValue
(),
datafield
));
}
}
else
{
...
...
@@ -316,7 +325,7 @@ public class NoUiPresentationUtil {
public
static
Map
<
String
,
Object
>
getWholeAliasData
(
IContext
context
,
String
mappingUrl
)
{
Map
<
String
,
Object
>
data
=
new
HashMap
<
String
,
Object
>();
Alias
alias
=
new
Alias
(
mappingUrl
);
Alias
alias
=
AliasFactory
.
getAlias
(
mappingUrl
,
context
);
for
(
String
aliasKey
:
alias
.
getRel
().
keySet
())
{
if
(
aliasKey
.
startsWith
(
Constants
.
MAPPING_PRE
))
{
continue
;
...
...
@@ -391,7 +400,7 @@ public class NoUiPresentationUtil {
//混淆路径,算法:偏移 头4 尾7
public
static
String
obfuscationPath
(
String
str
)
{
/*if(NoUiUtils.fieldencode){
String btw_str = str.substring(1,str.length()-1);
String btw_str = str.substring(1,str.length()-1);
String head = change(str.charAt(0),4);
String tail = change(str.charAt(str.length()-1),7);
return head + btw_str + tail;
...
...
Write
Preview
Markdown
is supported
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