提交 a0feb0fa 编写于 作者: O o2null

Merge branch 'feature/cms增加获取doc数据接口' into 'wrdp'

【cms】增加获取doc的data接口(无权限限制)

See merge request o2oa/o2oa!2063
package com.x.cms.assemble.control.jaxrs.document;
import com.x.base.core.entity.JpaObject;
import com.x.base.core.project.annotation.FieldDescribe;
import com.x.base.core.project.bean.WrapCopier;
import com.x.base.core.project.bean.WrapCopierFactory;
import com.x.base.core.project.cache.Cache;
import com.x.base.core.project.cache.CacheManager;
import com.x.base.core.project.gson.GsonPropertyObject;
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.core.entity.Document;
import com.x.cms.core.entity.content.Data;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
public class ActionQueryGetDocumentData extends BaseAction {
private static Logger logger = LoggerFactory.getLogger(ActionQueryGetDocumentData.class);
protected ActionResult<Wo> execute(HttpServletRequest request, EffectivePerson effectivePerson, String id) throws Exception {
ActionResult<Wo> result = new ActionResult<>();
Wo wo = getDocumentQueryResult(id);
result.setData(wo);
return result;
}
private Wo getDocumentQueryResult(String id) throws Exception {
Wo wo = null;
Cache.CacheKey cacheKey = new Cache.CacheKey(this.getClass(), id);
Optional<?> optional = CacheManager.get(cacheCategory, cacheKey);
if (optional.isPresent()) {
wo = (Wo)optional.get();
} else {
Document document = documentQueryService.get(id);
wo = new Wo();
if(document!=null) {
WoDocument woOutDocument = WoDocument.copier.copy(document);
wo.setDocId(document.getId());
wo.setDocument(woOutDocument);
wo.setData(documentQueryService.getDocumentData(document));
CacheManager.put(cacheCategory, cacheKey, wo);
}
}
return wo;
}
public static class Wo extends GsonPropertyObject {
@FieldDescribe( "文档ID." )
private String docId;
@FieldDescribe( "作为输出的CMS文档数据对象." )
private WoDocument document;
@FieldDescribe( "文档所有数据信息." )
private Data data;
public String getDocId() {
return docId;
}
public void setDocId(String docId) {
this.docId = docId;
}
public WoDocument getDocument() {
return document;
}
public void setDocument( WoDocument document) {
this.document = document;
}
public Data getData() {
return data;
}
public void setData(Data data) {
this.data = data;
}
}
public static class WoDocument extends Document {
private static final long serialVersionUID = -5076990764713538973L;
public static List<String> Excludes = new ArrayList<String>();
public static WrapCopier<Document, WoDocument> copier = WrapCopierFactory.wo( Document.class, WoDocument.class, null,JpaObject.FieldsInvisible);
}
}
\ No newline at end of file
......@@ -46,10 +46,11 @@ public class ActionQueryListDocumentData extends BaseAction {
List<Wo> wos = new ArrayList<>();
Wo wo = null;
List<Document> docs = documentQueryService.list(ids);
List<String> unitNames = userManagerService.listUnitNamesWithPerson(effectivePerson.getDistinguishedName());
List<String> groupNames = userManagerService.listGroupNamesByPerson(effectivePerson.getDistinguishedName());
//先不考虑阅读权限的问题
/*List<String> unitNames = userManagerService.listUnitNamesWithPerson(effectivePerson.getDistinguishedName());
List<String> groupNames = userManagerService.listGroupNamesByPerson(effectivePerson.getDistinguishedName());*/
for (Document document : docs){
if(this.hasReadPermission(business, document, unitNames, groupNames, effectivePerson, null)) {
//if(this.hasReadPermission(business, document, unitNames, groupNames, effectivePerson, null)) {
Cache.CacheKey cacheKey = new Cache.CacheKey(this.getClass(), document.getId());
Optional<?> optional = CacheManager.get(cacheCategory, cacheKey);
if (optional.isPresent()) {
......@@ -63,7 +64,7 @@ public class ActionQueryListDocumentData extends BaseAction {
CacheManager.put(cacheCategory, cacheKey, wo);
}
wos.add(wo);
}
//}
}
return wos;
......
......@@ -695,4 +695,27 @@ public class DocumentAction extends StandardJaxrsAction{
asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
}
@JaxrsMethodDescribe(value = "查看文档数据.", action = ActionQueryGetDocumentData.class)
@GET
@Path("{id}/document/data")
@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
@Consumes(MediaType.APPLICATION_JSON)
public void query_getDocumentData( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
@JaxrsParameterDescribe("信息文档ID") @PathParam("id") String id) {
EffectivePerson effectivePerson = this.effectivePerson( request );
ActionResult<ActionQueryGetDocumentData.Wo> result = new ActionResult<>();
Boolean check = true;
if( check ){
try {
result = new ActionQueryGetDocumentData().execute(request, effectivePerson, id);
} catch (Exception e) {
result = new ActionResult<>();
result.error( e );
logger.error( e, effectivePerson, request, null);
}
}
asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
}
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册