Explorar el Código

1、增加cms点赞接口;2、修改externalStorageSources.json配置

o2sword hace 5 años
padre
commit
2b2fb3c7c9

+ 24 - 0
o2server/configSample/externalStorageSources.json

@@ -286,5 +286,29 @@
       "###name": "存储节点名,对应存储名称,谨慎修改.###",
       "###deepPath": "是否使用更深的路径.###"
     }
+  ],
+  "general": [
+    {
+      "protocol": "webdav",
+      "username": "admin",
+      "password": "admin",
+      "host": "127.0.0.1",
+      "port": 8080.0,
+      "prefix": "",
+      "enable": true,
+      "weight": 100.0,
+      "name": "251",
+      "deepPath": false,
+      "###protocol": "协议,可选值ftp,webdav###",
+      "###username": "登录用户名.###",
+      "###password": "登录密码.###",
+      "###host": "主机地址.###",
+      "###port": "端口.###",
+      "###prefix": "前缀路径.###",
+      "###enable": "是否启用###",
+      "###weight": "设置权重.###",
+      "###name": "存储节点名,对应存储名称,谨慎修改.###",
+      "###deepPath": "是否使用更深的路径.###"
+    }
   ]
 }

+ 2 - 0
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/ActionApplication.java

@@ -9,6 +9,7 @@ import com.x.cms.assemble.control.jaxrs.appinfo.AppInfoAnonymousAction;
 import com.x.cms.assemble.control.jaxrs.appinfo.AppInfoConfigAction;
 import com.x.cms.assemble.control.jaxrs.categoryinfo.CategoryInfoAction;
 import com.x.cms.assemble.control.jaxrs.categoryinfo.CategoryInfoAnonymousAction;
+import com.x.cms.assemble.control.jaxrs.commend.DocumentCommendAction;
 import com.x.cms.assemble.control.jaxrs.comment.DocumentCommentInfoAction;
 import com.x.cms.assemble.control.jaxrs.data.DataAction;
 import com.x.cms.assemble.control.jaxrs.document.DocumentAction;
@@ -85,6 +86,7 @@ public class ActionApplication extends AbstractActionApplication {
 		this.classes.add(FormAnonymousAction.class);
 		this.classes.add(ScriptAnonymousAction.class);
 		this.classes.add(DocumentCommentInfoAction.class);
+		this.classes.add(DocumentCommendAction.class);
 
 		return this.classes;
 	}

+ 1 - 0
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/CmsJaxrsFilter.java

@@ -37,6 +37,7 @@ import javax.servlet.annotation.WebFilter;
         "/jaxrs/permission/*",
         "/jaxrs/docpermission/*",
         "/jaxrs/comment/*",
+        "/jaxrs/commend/*",
         "/servlet/*"
 }, asyncSupported = true)
 public class CmsJaxrsFilter extends ManagerUserJaxrsFilter {

+ 53 - 0
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/commend/ActionGet.java

@@ -0,0 +1,53 @@
+package com.x.cms.assemble.control.jaxrs.commend;
+
+import com.x.base.core.container.EntityManagerContainer;
+import com.x.base.core.container.factory.EntityManagerContainerFactory;
+import com.x.base.core.entity.JpaObject;
+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.exception.ExceptionEntityNotExist;
+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.base.core.project.tools.ListTools;
+import com.x.cms.core.entity.DocumentCommend;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Optional;
+
+public class ActionGet extends BaseAction {
+
+	private static  Logger logger = LoggerFactory.getLogger( ActionGet.class );
+	
+	protected ActionResult<Wo> execute( HttpServletRequest request, EffectivePerson effectivePerson, String id ) throws Exception {
+		ActionResult<Wo> result = new ActionResult<>();
+		Wo wo = null;
+		Cache.CacheKey cacheKey = new Cache.CacheKey( this.getClass(), id );
+		Optional<?> optional = CacheManager.get(cacheCategory, cacheKey );
+
+		if (optional.isPresent()) {
+			result.setData((Wo)optional.get());
+		} else {
+			try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
+				DocumentCommend dc = emc.find(id, DocumentCommend.class);
+				if (null == dc) {
+					throw new ExceptionEntityNotExist(id, DocumentCommend.class);
+				}
+				wo = Wo.copier.copy( dc );
+				CacheManager.put(cacheCategory, cacheKey, wo);
+				result.setData( wo );
+			}
+		}
+		
+		return result;
+	}
+	
+	public static class Wo extends DocumentCommend {
+
+		static WrapCopier<DocumentCommend, Wo> copier = WrapCopierFactory.wo( DocumentCommend.class, Wo.class, null, ListTools.toList(JpaObject.FieldsInvisible));
+
+	}
+}

+ 61 - 0
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/commend/ActionListPaging.java

@@ -0,0 +1,61 @@
+package com.x.cms.assemble.control.jaxrs.commend;
+
+import com.google.gson.JsonElement;
+import com.x.base.core.container.EntityManagerContainer;
+import com.x.base.core.container.factory.EntityManagerContainerFactory;
+import com.x.base.core.entity.JpaObject;
+import com.x.base.core.project.bean.WrapCopier;
+import com.x.base.core.project.bean.WrapCopierFactory;
+import com.x.base.core.project.http.ActionResult;
+import com.x.base.core.project.http.EffectivePerson;
+import com.x.cms.core.entity.DocumentCommend;
+import com.x.cms.core.entity.DocumentCommend_;
+import org.apache.commons.lang3.StringUtils;
+
+import javax.persistence.EntityManager;
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+import java.util.List;
+
+class ActionListPaging extends BaseAction {
+	ActionResult<List<Wo>> execute(EffectivePerson effectivePerson, Integer page, Integer size, JsonElement jsonElement) throws Exception {
+		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
+			ActionResult<List<Wo>> result = new ActionResult<>();
+			Wi wi = this.convertToWrapIn(jsonElement, Wi.class);
+			EntityManager em = emc.get(DocumentCommend.class);
+			CriteriaBuilder cb = em.getCriteriaBuilder();
+			CriteriaQuery<DocumentCommend> cq = cb.createQuery(DocumentCommend.class);
+			Root<DocumentCommend> root = cq.from(DocumentCommend.class);
+			Predicate p = cb.conjunction();
+			if (StringUtils.isNotBlank(wi.getDocumentId())){
+				p = cb.and(p, root.get(DocumentCommend_.documentId).in(wi.getDocumentId()));
+			}
+			if (StringUtils.isNotBlank(wi.getCommendPerson())){
+				p = cb.and(p, root.get(DocumentCommend_.commendPerson).in(wi.getCommendPerson()));
+			}
+			List<Wo> wos = emc.fetchDescPaging(DocumentCommend.class, Wo.copier, p, page, size, DocumentCommend.sequence_FIELDNAME);
+			result.setData(wos);
+			result.setCount(emc.count(DocumentCommend.class, p));
+			return result;
+		}
+	}
+
+	public static class Wi extends DocumentCommend{
+
+		private static final long serialVersionUID = 8042740393049682505L;
+
+		static WrapCopier<Wi, DocumentCommend> copier = WrapCopierFactory.wi(Wi.class, DocumentCommend.class, null,
+				JpaObject.FieldsUnmodify);
+	}
+
+	public static class Wo extends DocumentCommend {
+
+		private static final long serialVersionUID = -1828627584254370972L;
+
+		static WrapCopier<DocumentCommend, Wo> copier = WrapCopierFactory.wo(DocumentCommend.class, Wo.class, null,
+				JpaObject.FieldsInvisible);
+
+	}
+}

+ 12 - 0
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/commend/BaseAction.java

@@ -0,0 +1,12 @@
+package com.x.cms.assemble.control.jaxrs.commend;
+
+import com.x.base.core.project.cache.Cache;
+import com.x.base.core.project.jaxrs.StandardJaxrsAction;
+import com.x.cms.core.entity.Document;
+import com.x.cms.core.entity.DocumentCommend;
+
+public class BaseAction extends StandardJaxrsAction {
+
+	protected Cache.CacheCategory cacheCategory = new Cache.CacheCategory(DocumentCommend.class, Document.class);
+	
+}

+ 67 - 0
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/commend/DocumentCommendAction.java

@@ -0,0 +1,67 @@
+package com.x.cms.assemble.control.jaxrs.commend;
+
+import com.google.gson.JsonElement;
+import com.x.base.core.project.annotation.JaxrsDescribe;
+import com.x.base.core.project.annotation.JaxrsMethodDescribe;
+import com.x.base.core.project.annotation.JaxrsParameterDescribe;
+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;
+import java.util.List;
+
+@Path("commend")
+@JaxrsDescribe("点赞信息管理")
+public class DocumentCommendAction extends StandardJaxrsAction {
+
+	private StandardJaxrsActionProxy proxy = new StandardJaxrsActionProxy(ThisApplication.context());
+	private Logger logger = LoggerFactory.getLogger(DocumentCommendAction.class);
+
+	@JaxrsMethodDescribe(value = "根据标识获取点赞对象.", action = ActionGet.class)
+	@GET
+	@Path("{id}")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void get( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, @JaxrsParameterDescribe("评论ID") @PathParam("id") String id) {
+		EffectivePerson effectivePerson = this.effectivePerson( request );
+		ActionResult<ActionGet.Wo> result = new ActionResult<>();
+		try {
+			result = ((ActionGet)proxy.getProxy(ActionGet.class)).execute( request, effectivePerson, id );
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, null);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
+	@JaxrsMethodDescribe(value = "分页列示点赞对象.", action = ActionListPaging.class)
+	@POST
+	@Path("list/paging/{page}/size/{size}")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void listPaging(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+						   @JaxrsParameterDescribe("分页") @PathParam("page") Integer page,
+						   @JaxrsParameterDescribe("每页数量") @PathParam("size") Integer size, JsonElement jsonElement) {
+		ActionResult<List<ActionListPaging.Wo>> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = ((ActionListPaging)proxy.getProxy(ActionListPaging.class)).execute(effectivePerson, page, size, jsonElement);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, jsonElement);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+}