Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
fuyue82
o2oa
提交
156e88a4
o2oa
项目概览
fuyue82
/
o2oa
与 Fork 源项目一致
Fork自
浙江兰德纵横网络技术股份有限公司 / o2oa
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
o2oa
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
156e88a4
编写于
4月 14, 2020
作者:
liyi_hz2008
提交者:
liyi_hz2008
4月 14, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
CMS增加定时重新计算和维护Review权限信息的功能(临时解决方案)
上级
5210bf89
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
287 addition
and
9 deletion
+287
-9
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/ThisApplication.java
...main/java/com/x/cms/assemble/control/ThisApplication.java
+5
-4
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/ActionApplication.java
...a/com/x/cms/assemble/control/jaxrs/ActionApplication.java
+2
-0
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/CmsJaxrsCipherFilter.java
...om/x/cms/assemble/control/jaxrs/CmsJaxrsCipherFilter.java
+4
-3
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/permission/ActionRefreshAllDocumentPermission.java
.../jaxrs/permission/ActionRefreshAllDocumentPermission.java
+43
-0
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/permission/ExceptionDocumentPermissionProcess.java
.../jaxrs/permission/ExceptionDocumentPermissionProcess.java
+12
-0
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/permission/PermissionManagerAction.java
...ble/control/jaxrs/permission/PermissionManagerAction.java
+51
-0
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/service/DocumentPersistService.java
.../cms/assemble/control/service/DocumentPersistService.java
+30
-0
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/service/PermissionOperateService.java
...ms/assemble/control/service/PermissionOperateService.java
+116
-2
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/service/ReviewService.java
...ava/com/x/cms/assemble/control/service/ReviewService.java
+1
-0
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/timertask/Timertask_RefreshAllDocumentReviews.java
...ontrol/timertask/Timertask_RefreshAllDocumentReviews.java
+23
-0
未找到文件。
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/ThisApplication.java
浏览文件 @
156e88a4
...
...
@@ -3,10 +3,7 @@ package com.x.cms.assemble.control;
import
com.x.base.core.project.Context
;
import
com.x.base.core.project.message.MessageConnector
;
import
com.x.cms.assemble.control.queue.*
;
import
com.x.cms.assemble.control.timertask.Timertask_BatchOperationTask
;
import
com.x.cms.assemble.control.timertask.Timertask_CheckDocumentReviewStatus
;
import
com.x.cms.assemble.control.timertask.Timertask_InitOperationRunning
;
import
com.x.cms.assemble.control.timertask.Timertask_LogRecordCheckTask
;
import
com.x.cms.assemble.control.timertask.*
;
import
java.util.concurrent.ConcurrentHashMap
;
...
...
@@ -53,6 +50,10 @@ public class ThisApplication {
// 每天凌晨2点执行一次
context
.
schedule
(
Timertask_LogRecordCheckTask
.
class
,
"0 0 2 * * ?"
);
context
.
schedule
(
Timertask_BatchOperationTask
.
class
,
"0 */5 * * * ?"
);
//每天凌晨2点,计算所有的文档的权限信息
context
.
schedule
(
Timertask_RefreshAllDocumentReviews
.
class
,
"0 0 2 * * ?"
);
context
.
scheduleLocal
(
Timertask_CheckDocumentReviewStatus
.
class
,
1200
);
context
.
scheduleLocal
(
Timertask_InitOperationRunning
.
class
,
150
);
}
...
...
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/ActionApplication.java
浏览文件 @
156e88a4
...
...
@@ -26,6 +26,7 @@ import com.x.cms.assemble.control.jaxrs.log.LogAction;
import
com.x.cms.assemble.control.jaxrs.output.OutputAction
;
import
com.x.cms.assemble.control.jaxrs.permission.PermissionAction
;
import
com.x.cms.assemble.control.jaxrs.permission.PermissionForDocumentAction
;
import
com.x.cms.assemble.control.jaxrs.permission.PermissionManagerAction
;
import
com.x.cms.assemble.control.jaxrs.queryview.QueryViewAction
;
import
com.x.cms.assemble.control.jaxrs.queryviewdesign.QueryViewDesignAction
;
import
com.x.cms.assemble.control.jaxrs.script.ScriptAction
;
...
...
@@ -53,6 +54,7 @@ public class ActionApplication extends AbstractActionApplication {
this
.
classes
.
add
(
DocumentAction
.
class
);
this
.
classes
.
add
(
DocumentCipherAction
.
class
);
this
.
classes
.
add
(
PermissionForDocumentAction
.
class
);
this
.
classes
.
add
(
PermissionManagerAction
.
class
);
this
.
classes
.
add
(
DocumentViewRecordAction
.
class
);
this
.
classes
.
add
(
FileInfoAction
.
class
);
this
.
classes
.
add
(
FileAction
.
class
);
...
...
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/CmsJaxrsCipherFilter.java
浏览文件 @
156e88a4
package
com.x.cms.assemble.control.jaxrs
;
import
com.x.base.core.project.jaxrs.CipherJaxrsFilter
;
import
com.x.base.core.project.jaxrs.Cipher
Manager
JaxrsFilter
;
import
javax.servlet.annotation.WebFilter
;
...
...
@@ -11,8 +11,9 @@ import javax.servlet.annotation.WebFilter;
* @author O2LEE *
*/
@WebFilter
(
urlPatterns
=
{
"/jaxrs/document/cipher/*"
"/jaxrs/document/cipher/*"
,
"/jaxrs/permission/manager*"
},
asyncSupported
=
true
)
public
class
CmsJaxrsCipherFilter
extends
CipherJaxrsFilter
{
public
class
CmsJaxrsCipherFilter
extends
Cipher
Manager
JaxrsFilter
{
}
\ No newline at end of file
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/permission/ActionRefreshAllDocumentPermission.java
0 → 100644
浏览文件 @
156e88a4
package
com.x.cms.assemble.control.jaxrs.permission
;
import
com.x.base.core.project.annotation.FieldDescribe
;
import
com.x.base.core.project.cache.ApplicationCache
;
import
com.x.base.core.project.http.ActionResult
;
import
com.x.base.core.project.http.EffectivePerson
;
import
com.x.base.core.project.logger.Logger
;
import
com.x.base.core.project.logger.LoggerFactory
;
import
com.x.cms.assemble.control.service.DocumentPersistService
;
import
com.x.base.core.project.jaxrs.WrapString
;
import
com.x.cms.core.entity.Document
;
import
javax.servlet.http.HttpServletRequest
;
import
java.util.List
;
public
class
ActionRefreshAllDocumentPermission
extends
BaseAction
{
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
ActionRefreshAllDocumentPermission
.
class
);
protected
ActionResult
<
Wo
>
execute
(
HttpServletRequest
request
,
EffectivePerson
effectivePerson
)
throws
Exception
{
ActionResult
<
Wo
>
result
=
new
ActionResult
<>();
Boolean
check
=
true
;
Wo
wo
=
new
Wo
();
DocumentPersistService
documentPersistService
=
new
DocumentPersistService
();
if
(
check
)
{
try
{
documentPersistService
.
refreshAllDocumentPermission
();
wo
.
setValue
(
"权限处理完成!"
);
result
.
setData
(
wo
);
}
catch
(
Exception
e
)
{
Exception
exception
=
new
ExceptionDocumentPermissionProcess
(
e
,
"文档权限管理时出现异常。"
);
result
.
error
(
exception
);
logger
.
error
(
e
,
effectivePerson
,
request
,
null
);
}
}
ApplicationCache
.
notify
(
Document
.
class
);
return
result
;
}
public
static
class
Wo
extends
WrapString
{
}
}
\ No newline at end of file
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/permission/ExceptionDocumentPermissionProcess.java
0 → 100644
浏览文件 @
156e88a4
package
com.x.cms.assemble.control.jaxrs.permission
;
import
com.x.base.core.project.exception.PromptException
;
class
ExceptionDocumentPermissionProcess
extends
PromptException
{
private
static
final
long
serialVersionUID
=
1859164370743532895L
;
ExceptionDocumentPermissionProcess
(
Throwable
e
,
String
message
)
{
super
(
message
,
e
);
}
}
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/permission/PermissionManagerAction.java
0 → 100644
浏览文件 @
156e88a4
package
com.x.cms.assemble.control.jaxrs.permission
;
import
com.x.base.core.project.annotation.JaxrsDescribe
;
import
com.x.base.core.project.annotation.JaxrsMethodDescribe
;
import
com.x.base.core.project.http.ActionResult
;
import
com.x.base.core.project.http.EffectivePerson
;
import
com.x.base.core.project.http.HttpMediaType
;
import
com.x.base.core.project.jaxrs.ResponseFactory
;
import
com.x.base.core.project.jaxrs.StandardJaxrsAction
;
import
com.x.base.core.project.jaxrs.proxy.StandardJaxrsActionProxy
;
import
com.x.base.core.project.logger.Logger
;
import
com.x.base.core.project.logger.LoggerFactory
;
import
com.x.cms.assemble.control.ThisApplication
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.ws.rs.*
;
import
javax.ws.rs.container.AsyncResponse
;
import
javax.ws.rs.container.Suspended
;
import
javax.ws.rs.core.Context
;
import
javax.ws.rs.core.MediaType
;
@Path
(
"permission/manager"
)
@JaxrsDescribe
(
"文档权限操作服务(管理员)"
)
public
class
PermissionManagerAction
extends
StandardJaxrsAction
{
private
StandardJaxrsActionProxy
proxy
=
new
StandardJaxrsActionProxy
(
ThisApplication
.
context
());
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
PermissionManagerAction
.
class
);
@JaxrsMethodDescribe
(
value
=
"重新计算所有文档的权限信息."
,
action
=
ActionRefreshAllDocumentPermission
.
class
)
@GET
@Path
(
"refresh/all"
)
@Produces
(
HttpMediaType
.
APPLICATION_JSON_UTF_8
)
@Consumes
(
MediaType
.
APPLICATION_JSON
)
public
void
refreshAllDocument
(
@Suspended
final
AsyncResponse
asyncResponse
,
@Context
HttpServletRequest
request
)
{
EffectivePerson
effectivePerson
=
this
.
effectivePerson
(
request
);
ActionResult
<
ActionRefreshAllDocumentPermission
.
Wo
>
result
=
new
ActionResult
<>();
Boolean
check
=
true
;
if
(
check
){
try
{
result
=
new
ActionRefreshAllDocumentPermission
().
execute
(
request
,
effectivePerson
);
}
catch
(
Exception
e
)
{
result
=
new
ActionResult
<>();
Exception
exception
=
new
ExceptionAppCategoryAdminProcess
(
e
,
"查询登录用户是否指定栏目的管理员时发生异常。"
);
result
.
error
(
exception
);
logger
.
error
(
e
,
effectivePerson
,
request
,
null
);
}
}
asyncResponse
.
resume
(
ResponseFactory
.
getEntityTagActionResultResponse
(
request
,
result
));
}
}
\ No newline at end of file
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/service/DocumentPersistService.java
浏览文件 @
156e88a4
...
...
@@ -5,6 +5,7 @@ import com.x.base.core.container.EntityManagerContainer;
import
com.x.base.core.container.factory.EntityManagerContainerFactory
;
import
com.x.base.core.entity.annotation.CheckPersistType
;
import
com.x.base.core.entity.dataitem.ItemCategory
;
import
com.x.base.core.project.cache.ApplicationCache
;
import
com.x.base.core.project.tools.ListTools
;
import
com.x.cms.assemble.control.DocumentDataHelper
;
import
com.x.cms.assemble.control.jaxrs.document.ActionPersistBatchModifyData.WiDataChange
;
...
...
@@ -320,4 +321,33 @@ public class DocumentPersistService {
}
permissionService
.
refreshDocumentPermission
(
docId
,
permissionList
);
}
/**
* 重新计算所有的文档的权限和review信息
*/
public
void
refreshAllDocumentPermission
()
throws
Exception
{
//根据栏目一个一个来查询
AppInfoServiceAdv
appInfoService
=
new
AppInfoServiceAdv
();
DocumentQueryService
documentQueryService
=
new
DocumentQueryService
();
DocumentPersistService
documentPersistService
=
new
DocumentPersistService
();
List
<
String
>
appIds
=
appInfoService
.
listAllIds
(
"信息"
);
List
<
String
>
documentIds
=
null
;
ReviewService
reviewService
=
new
ReviewService
();
if
(
ListTools
.
isNotEmpty
(
appIds
)){
for
(
String
appId
:
appIds
){
//查询指定App中所有的文档Id
documentIds
=
documentQueryService
.
listIdsByAppId
(
appId
,
"信息"
,
20000
);
if
(
ListTools
.
isNotEmpty
(
documentIds
)){
for
(
String
documentId
:
documentIds
){
try
(
EntityManagerContainer
emc
=
EntityManagerContainerFactory
.
instance
().
create
()
)
{
reviewService
.
refreshDocumentReview
(
emc
,
documentId
);
}
catch
(
Exception
e
)
{
throw
e
;
}
}
}
}
ApplicationCache
.
notify
(
Document
.
class
);
}
}
}
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/service/PermissionOperateService.java
浏览文件 @
156e88a4
...
...
@@ -3,6 +3,12 @@ package com.x.cms.assemble.control.service;
import
java.util.ArrayList
;
import
java.util.List
;
import
com.google.gson.JsonElement
;
import
com.x.base.core.entity.dataitem.DataItemConverter
;
import
com.x.base.core.project.gson.XGsonBuilder
;
import
com.x.cms.assemble.control.DocumentDataHelper
;
import
com.x.cms.core.entity.content.Data
;
import
com.x.query.core.entity.Item
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.openjpa.lib.util.StringUtil
;
...
...
@@ -22,7 +28,7 @@ public class PermissionOperateService {
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
PermissionOperateService
.
class
);
/**
* 根据文档ID,为文档设置用户访问和管理权限
* @param doc
ument
* @param doc
Id
* @param readerList
* @param authorList
* @throws Exception
...
...
@@ -131,7 +137,7 @@ public class PermissionOperateService {
/**
* 根据文档ID,为文档设置用户访问和管理权限
* @param doc
ment
Id
* @param docId
* @param permissionList
* @throws Exception
*/
...
...
@@ -206,4 +212,112 @@ public class PermissionOperateService {
throw
e
;
}
}
// /**
// * 根据文档的权限信息组织所有的权限对象列表
// * @param document
// * @throws Exception
// */
// public List<PermissionInfo> composeDocmentAllPermissions( Document document ) throws Exception {
//
// List<PermissionInfo> permissionList = new ArrayList<>();
// //处理创建者
// permissionList.add( new PermissionInfo( PermissionName.READER, "人员", document.getCreatorIdentity(), document.getCreatorIdentity() ) );
// permissionList.add( new PermissionInfo( PermissionName.AUTHOR, "人员", document.getCreatorIdentity(), document.getCreatorIdentity() ) );
// permissionList.add( new PermissionInfo( PermissionName.MANAGER, "人员", document.getCreatorIdentity(), document.getCreatorIdentity() ) );
//
// if ( ListTools.isEmpty( document.getAuthorPersonList() ) ) {
// for( String permissionCode : document.getAuthorPersonList() ){
// if( !existsPermission(permissionList, PermissionName.AUTHOR, "permissionCode") ){
// if( StringUtils.equalsIgnoreCase("所有人", permissionCode )){
// permissionList.add( new PermissionInfo( PermissionName.AUTHOR, "所有人", "所有人", "所有人" ) );
// }else{
// permissionList.add( new PermissionInfo( PermissionName.AUTHOR, "人员", permissionCode, permissionCode ) );
// }
// }
// }
// }
//
// if ( ListTools.isEmpty( document.getAuthorUnitList() ) ) {
// for( String permissionCode : document.getAuthorUnitList() ){
// if( !existsPermission(permissionList, PermissionName.AUTHOR, "permissionCode") ){
// if( StringUtils.equalsIgnoreCase("所有人", permissionCode )){
// permissionList.add( new PermissionInfo( PermissionName.AUTHOR, "所有人", "所有人", "所有人" ) );
// }else{
// permissionList.add( new PermissionInfo( PermissionName.AUTHOR, "组织", permissionCode, permissionCode ) );
// }
// }
// }
// }
//
// if ( ListTools.isEmpty( document.getAuthorGroupList() ) ) {
// for( String permissionCode : document.getAuthorUnitList() ){
// if( !existsPermission(permissionList, PermissionName.AUTHOR, "permissionCode") ){
// if( StringUtils.equalsIgnoreCase("所有人", permissionCode )){
// permissionList.add( new PermissionInfo( PermissionName.AUTHOR, "所有人", "所有人", "所有人" ) );
// }else{
// permissionList.add( new PermissionInfo( PermissionName.AUTHOR, "群组", permissionCode, permissionCode ) );
// }
// }
// }
// }
//
// if ( ListTools.isEmpty( document.getReadPersonList() ) ) {
// for( String permissionCode : document.getReadPersonList() ){
// if( !existsPermission(permissionList, PermissionName.READER, "permissionCode") ){
// if( StringUtils.equalsIgnoreCase("所有人", permissionCode )){
// permissionList.add( new PermissionInfo( PermissionName.READER, "所有人", "所有人", "所有人" ) );
// }else{
// permissionList.add( new PermissionInfo( PermissionName.READER, "人员", permissionCode, permissionCode ) );
// }
// }
// }
// }
//
// if ( ListTools.isEmpty( document.getReadUnitList() ) ) {
// for( String permissionCode : document.getReadUnitList() ){
// if( !existsPermission(permissionList, PermissionName.READER, "permissionCode") ) {
// if( StringUtils.equalsIgnoreCase("所有人", permissionCode )){
// permissionList.add( new PermissionInfo( PermissionName.READER, "所有人", "所有人", "所有人" ) );
// }else{
// permissionList.add( new PermissionInfo( PermissionName.READER, "组织", permissionCode, permissionCode ) );
// }
// }
//
// }
// }
//
// if ( ListTools.isEmpty( document.getReadGroupList() ) ) {
// for( String permissionCode : document.getReadGroupList() ){
// if( !existsPermission(permissionList, PermissionName.READER, "permissionCode") ){
// if( StringUtils.equalsIgnoreCase("所有人", permissionCode )){
// permissionList.add( new PermissionInfo( PermissionName.READER, "所有人", "所有人", "所有人" ) );
// }else{
// permissionList.add( new PermissionInfo( PermissionName.READER, "群组", permissionCode, permissionCode ) );
// }
// }
// }
// }
//
// if ( ListTools.isEmpty( document.getManagerList() ) ) {
// for( String permissionCode : document.getManagerList() ){
// if( !existsPermission(permissionList, PermissionName.MANAGER, "permissionCode") ){
// permissionList.add( new PermissionInfo( PermissionName.MANAGER, "人员", permissionCode, permissionCode ) );
// }
// }
// }
// return permissionList;
// }
private
boolean
existsPermission
(
List
<
PermissionInfo
>
permissionList
,
String
objectType
,
String
permissionCode
)
{
if
(
ListTools
.
isNotEmpty
(
permissionList
)){
for
(
PermissionInfo
permission
:
permissionList
){
if
(
StringUtils
.
equalsIgnoreCase
(
permission
.
getPermissionObjectCode
(),
permissionCode
)
&&
StringUtils
.
equalsIgnoreCase
(
permission
.
getPermissionObjectType
(),
objectType
)){
return
true
;
}
}
}
return
false
;
}
}
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/service/ReviewService.java
浏览文件 @
156e88a4
...
...
@@ -108,6 +108,7 @@ public class ReviewService {
Document
document
=
emc
.
find
(
docId
,
Document
.
class
);
if
(
document
!=
null
)
{
AppInfo
appInfo
=
emc
.
find
(
document
.
getAppId
(),
AppInfo
.
class
);
CategoryInfo
categoryInfo
=
emc
.
find
(
document
.
getCategoryId
(),
CategoryInfo
.
class
);
...
...
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/timertask/Timertask_RefreshAllDocumentReviews.java
0 → 100644
浏览文件 @
156e88a4
package
com.x.cms.assemble.control.timertask
;
import
com.x.base.core.project.schedule.AbstractJob
;
import
com.x.cms.assemble.control.service.CmsBatchOperationPersistService
;
import
com.x.cms.assemble.control.service.DocumentPersistService
;
import
com.x.cms.assemble.control.service.ReviewService
;
import
org.quartz.JobExecutionContext
;
/**
* 重新计算所有文档的权限信息
*
*/
public
class
Timertask_RefreshAllDocumentReviews
extends
AbstractJob
{
private
CmsBatchOperationPersistService
cmsBatchOperationPersistService
;
@Override
public
void
schedule
(
JobExecutionContext
jobExecutionContext
)
throws
Exception
{
DocumentPersistService
documentPersistService
=
new
DocumentPersistService
();
documentPersistService
.
refreshAllDocumentPermission
();
}
}
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录