/* ================================================================== * Created [2009-4-27 下午11:32:55] by Jon.King * ================================================================== * TSS * ================================================================== * mailTo:jinpujun@hotmail.com * Copyright (c) Jon.King, 2009-2012 * ================================================================== */ package com.jinhe.tss.portal.service; import java.util.List; import com.jinhe.tss.component.log.Logable; import com.jinhe.tss.portal.PortalConstants; import com.jinhe.tss.portal.engine.model.PortalNode; import com.jinhe.tss.portal.entity.PortalStructure; import com.jinhe.tss.portal.helper.PortalStructureWrapper; import com.jinhe.tss.portal.permission.PermissionFilter4Check; import com.jinhe.tss.portal.permission.PermissionFilter4Portal; import com.jinhe.tss.um.permission.filter.PermissionFilter4Copy; import com.jinhe.tss.um.permission.filter.PermissionFilter4CopyTo; import com.jinhe.tss.um.permission.filter.PermissionFilter4Create; import com.jinhe.tss.um.permission.filter.PermissionFilter4Move; import com.jinhe.tss.um.permission.filter.PermissionFilter4Sort; import com.jinhe.tss.um.permission.filter.PermissionFilter4Update; import com.jinhe.tss.um.permission.filter.PermissionTag; public interface IPortalService extends IPortalRelationService{ /** * <p> * 获取所有门户结构PortalStructure * </p> * @return */ @PermissionTag( operation = PortalConstants.PORTAL_VIEW_OPERRATION, resourceType = PortalConstants.PORTAL_RESOURCE_TYPE) List<?> getAllPortalStructures(); /** * <p> * 获取除portlet应用外的门户结构。移动到...,复制到...的时候将调用本方法。将根据“新增”操作选项过滤 * </p> * @return */ @PermissionTag( operation = PortalConstants.PORTAL_ADD_OPERRATION, resourceType = PortalConstants.PORTAL_RESOURCE_TYPE) List<?> getTargetPortalStructures(); /** * 获取所有启用门户 * @return */ @PermissionTag( operation = PortalConstants.PORTAL_VIEW_OPERRATION, resourceType = PortalConstants.PORTAL_RESOURCE_TYPE) List<?> getActivePortals(); /** * 获取指定门户下启用的页面和版面 * @param portalId * @return */ @PermissionTag( operation = PortalConstants.PORTAL_VIEW_OPERRATION, resourceType = PortalConstants.PORTAL_RESOURCE_TYPE) List<?> getActivePagesByPortal(Long portalId); /** * 获取门户下所有可用的门户结构节点列表(不包括门户根节点) * @param portalId * @return */ @PermissionTag( operation = PortalConstants.PORTAL_VIEW_OPERRATION, resourceType = PortalConstants.PORTAL_RESOURCE_TYPE) List<?> getPortalStructuresByPortal(Long portalId); /** * <p> * 获取单个门户结构PortalStructure的节点信息,<p></p> * 如果该门户结构PortalStructure是根节点,则要一块取出其对应门户Portal的信息 * </p> * @param id * 门户结构主键ID值 * @return * 门户结构对象 */ @PermissionTag( operation = PortalConstants.PORTAL_VIEW_OPERRATION, resourceType = PortalConstants.PORTAL_RESOURCE_TYPE, filter = PermissionFilter4Check.class) PortalStructure getPoratalStructure(Long id); /** * 只取门户结构节点 * @param id * @return */ @PermissionTag( operation = PortalConstants.PORTAL_VIEW_OPERRATION, resourceType = PortalConstants.PORTAL_RESOURCE_TYPE, filter = PermissionFilter4Check.class) PortalStructure getPortalStructureById(Long id); /** * <p> * 保存门户结构信息,如果该门户结构PortalStructure是根节点,则要一块保存其门户Portal的信息。<p></p> * 更新操作也一样。 * * save()结束返回 该门户结构PortalStructure 对象 * </p> * * @param portalStructure * 要保存的门户结构实体(如果是根节点,则实体类型为其子类RootPortalStructure * @return * 保存成功以后的门户结构实体 */ @Logable(operateTable="门户结构", operateType="新建", operateInfo="新建了 ${returnVal} 节点") @PermissionTag( operation = PortalConstants.PORTAL_ADD_OPERRATION , resourceType = PortalConstants.PORTAL_RESOURCE_TYPE, filter = PermissionFilter4Create.class) PortalStructure createPortalStructure(PortalStructureWrapper psw); @Logable(operateTable="门户结构", operateType="修改", operateInfo="修改了 ${returnVal} 节点") @PermissionTag( operation = PortalConstants.PORTAL_EDIT_OPERRATION, resourceType = PortalConstants.PORTAL_RESOURCE_TYPE, filter = PermissionFilter4Update.class) PortalStructure updatePortalStructure(PortalStructureWrapper psw); /** * <p> * 删除门户结构PortalStructure * 如果有子节点,同时删除子节点(递归过程,子节点的子节点......) * </p> * * @param id * 操作节点的ID */ @Logable(operateTable="门户结构", operateType="删除", operateInfo="删除了(ID: ${args[0]})节点") void delete(Long id); /** * <p> * 停用/启用 门户结构PortalStructure(将其下的disabled属性设为"1"/"0")<p></p> * 停用时,如果有子节点,同时停用所有子节点(递归过程,子节点的子节点......)<p></p> * 启用时,如果有父节点且父节点为停用状态,则启用父节点(也是递归过程,父节点的父节点......)<p></p> * 前提:用户对被操作的节点及其所有子节点(或父节点)有停用启用的权限。 * </p> * * @param id * 操作节点的ID * @param disabled * 停用或者启用(1/0) */ @Logable(operateTable="门户结构", operateType="停用/启用", operateInfo="<#if args[1]=1>停用<#else>启用</#if>了(ID: ${args[0]})节点") void disable(Long id, Integer disabled); /** * <p> * 跨父节点移动门户结构PortalStructure节点<p></p> * 移动到弹出窗口中选中的门户结构下(一般为"版面"节点),即将移动节点的parentId设为目标的id。<p></p> * 同时设置其排序属性sqpNo,放到最后面<p></p> * * 前提:用户对被操作的节点及其所有子节点有查看权限。 * </p> * * @param id * 要移动节点的id * @param targetId * 目标节点ID * @param portalId * 目标节点的portalId */ @Logable(operateTable="门户结构", operateType="移动", operateInfo="移动(ID: ${args[0]})节点到(ID: ${args[1]})节点下") @PermissionTag( operation = PortalConstants.PORTAL_ADD_OPERRATION + "," + PortalConstants.PORTAL_DEL_OPERRATION, resourceType = PortalConstants.PORTAL_RESOURCE_TYPE, filter = PermissionFilter4Move.class) void move(Long id, Long targetId, Long portalId); /** * * <p> * 排序,同节点下的节点排序(一次只能排一个) * </p> * * @param id * 排序节点ID * @param targetId * 目标节点ID * @param direction * 方向 */ @Logable(operateTable="门户结构", operateType="排序", operateInfo="(ID: ${args[0]})节点移动到了(ID: ${args[1]})节点<#if args[2]=1>之下<#else>之上</#if>") @PermissionTag( operation = PortalConstants.PORTAL_ORDER_OPERRATION, resourceType = PortalConstants.PORTAL_RESOURCE_TYPE, filter = PermissionFilter4Sort.class) void order(Long id, Long targetId, int direction); /** * <p> * 复制门户,要求新输入一个门户名字。 * </p> * * @param id * 被复制门户的根节点ID */ @Logable(operateTable="门户结构", operateType="复制", operateInfo="复制了(ID: ${args[0]})节点") @PermissionTag( operation = PortalConstants.PORTAL_ADD_OPERRATION, resourceType = PortalConstants.PORTAL_RESOURCE_TYPE, filter = PermissionFilter4Copy.class) List<PortalStructure> copyPortal(Long id); /** * 复制到。。。 * @param id * @param name * @param targetId * @param portalId * @return */ @Logable(operateTable="门户结构", operateType="复制到", operateInfo="复制(ID: ${args[0]})节点到(ID: ${args[1]})下") @PermissionTag( operation = PortalConstants.PORTAL_ADD_OPERRATION, resourceType = PortalConstants.PORTAL_RESOURCE_TYPE, filter = PermissionFilter4CopyTo.class) List<PortalStructure> copyTo(Long id, Long targetId, Long portalId); /** * 获取一个门户树的一份拷贝。 * 方法将会被权限过滤拦截器拦截,用户没有权限的门户结构节点将会被过滤掉。 * 如果用户是匿名用户,则应该调用本方法,因为匿名用户没有自定义门户。 * * @param portalId * @param method * 查看方式 维护预览/浏览/查看 maintain/browse/view * @return */ @PermissionTag(filter = PermissionFilter4Portal.class) PortalNode getPortal(Long portalId, Long themeId, String method); }