Преглед изворни кода

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

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

See merge request o2oa/o2oa!2063
o2null пре 5 година
родитељ
комит
cbae94ca0c

+ 100 - 0
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/document/ActionQueryGetDocumentData.java

@@ -0,0 +1,100 @@
+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);
+
+	}
+
+}

+ 5 - 4
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/document/ActionQueryListDocumentData.java

@@ -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;

+ 23 - 0
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/document/DocumentAction.java

@@ -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));
+	}
 }