/* ==================================================================
* 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.cms.service;
import java.util.List;
import com.jinhe.tss.cms.CMSConstants;
import com.jinhe.tss.cms.entity.Channel;
import com.jinhe.tss.cms.entity.WordsFilter;
import com.jinhe.tss.component.log.Logable;
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;
/**
* Channel的Service层接口,定义Channel相关的所有业务处理接口
*/
public interface IChannelService {
/**
* <p>
* 得到所有站点栏目列表
* </p>
* @return
*/
List<?> getAllSiteChannelList();
/**
* <p>
* 获取所有未删除状态的Channel资源
* </p>
* @param condition
* @return List
*/
@PermissionTag(
operation = CMSConstants.OPERATION_VIEW,
resourceType = CMSConstants.RESOURCE_TYPE_CHANNEL
)
List<?> getAllChannels();
/**
* 新增或更新普通栏目
* @param channel
* @return
*/
@Logable(operateTable="栏目", operateType="新增", operateInfo="新增了 ${args[0]} 节点")
@PermissionTag(
operation = CMSConstants.OPERATION_ADD_CHANNEL,
resourceType = CMSConstants.RESOURCE_TYPE_CHANNEL,
filter = PermissionFilter4Create.class
)
Channel createChannel(Channel channel);
@Logable(operateTable="栏目", operateType="修改", operateInfo="修改了 ${args[0]} 节点")
@PermissionTag(
operation = CMSConstants.OPERATION_EDIT,
resourceType = CMSConstants.RESOURCE_TYPE_CHANNEL,
filter = PermissionFilter4Update.class
)
Channel updateChannel(Channel channel);
/**
* 新增站点
* @param channel
* @return
*/
@Logable(operateTable="站点", operateType="新增", operateInfo="新增了 ${args[0]} 节点")
@PermissionTag(
operation = CMSConstants.OPERATION_ADD_SITE,
resourceType = CMSConstants.RESOURCE_TYPE_CHANNEL,
filter = PermissionFilter4Create.class
)
Channel createSite(Channel site);
/**
* 更新站点
* @param channel
* @return
*/
@Logable(operateTable="站点", operateType="修改", operateInfo="修改了 ${args[0]} 节点")
@PermissionTag(
operation = CMSConstants.OPERATION_EDIT,
resourceType = CMSConstants.RESOURCE_TYPE_CHANNEL,
filter = PermissionFilter4Update.class
)
Channel updateSite(Channel site);
/**
* <p>
* 逻辑删除某栏目下的所有未删除Channel
* </p>
* @param channelId
*/
@Logable(operateTable="站点栏目", operateType="删除", operateInfo="删除了 ID为 ${args[0]} 的节点。")
void deleteChannel(Long channelId);
/**
* <p>
* 移动Channel到站点或栏目下
* </p>
*/
@Logable(operateTable="站点栏目", operateType="移动", operateInfo="移动(ID: ${args[0]})节点到(ID: ${args[1]})节点下")
@PermissionTag(
operation = CMSConstants.OPERATION_ADD_CHANNEL + "," + CMSConstants.OPERATION_DELETE,
resourceType = CMSConstants.RESOURCE_TYPE_CHANNEL,
filter = PermissionFilter4Move.class
)
void moveChannel(Long channelId, Long targetId);
/**
* 排序同一级的栏目
* @param channelId
* @param toChannelId
* @param direction
*/
@Logable(operateTable="站点栏目", operateType="排序", operateInfo="(ID: ${args[0]})节点移动到了(ID: ${args[1]})节点<#if args[2]=1>的下方<#else>的上方</#if>")
@PermissionTag(
operation = CMSConstants.OPERATION_ORDER,
resourceType = CMSConstants.RESOURCE_TYPE_CHANNEL,
filter = PermissionFilter4Sort.class
)
void sortChannel(Long channelId, Long toChannelId, Integer direction);
/**
* 复制栏目,只复制栏目以及子栏目,不复制栏目下的文章
* @param channelId
* @param targetId
* @return
*/
@Logable(operateTable="站点栏目", operateType="复制", operateInfo="复制了(ID: ${args[0]})节点到(ID: ${args[1]})节点下")
@PermissionTag(
operation = CMSConstants.OPERATION_ADD_CHANNEL,
resourceType = CMSConstants.RESOURCE_TYPE_CHANNEL,
filter = PermissionFilter4CopyTo.class
)
List<Channel> copyChannel(Long channelId, Long targetId);
/**
* <p>
* 获得栏目关系维护的3个List信息
* </p>
* @param channelId
* @return Object []
*/
Object[] getChannelRelationShip(Long channelId);
/**
* <p>
* 保存栏目的关系信息
* </p>
*/
void saveChannelRelationShip(Long channelId, String distributeFromIds, String distributeToIds);
/**
* <p>
* 通过ID得到单个栏目信息
* </p>
* @param id
* @return
*/
Channel getChannelById(Long id);
/**
* <p>
* 获取指定站点信息
* </p>
* @param condition
* @return Site
*/
Channel getSiteById(Long siteId);
/**
* <p>
* 停用站点
* </p>
* @param condition
* @return boolean
*/
@Logable(operateTable="站点栏目", operateType="停用", operateInfo="停用了 (ID :${args[0]}) 站点")
void stopSite(Long siteId);
/**
* <p>
* 启用站点及所有子栏目
* <p>
* @param condition
* @return
*/
@Logable(operateTable="站点栏目", operateType="启用", operateInfo="启用了 (ID :${args[0]}) 站点及其所有子栏目")
void startSiteAll(Long siteId);
/**
* <p>
* 启用栏目
* </p>
* @param condition
* @return boolean
*/
@Logable(operateTable="站点栏目", operateType="启用", operateInfo="启用了 (ID :${args[0]}) 栏目")
void startChannel(Long siteId);
/**
* 获取可以新建文章的栏目列表
* @return
* [channels, canAddIds]
*/
Object[] selectCanAddArticleParentChannels();
/**
* 获取可以新建子栏目的栏目列表
* @return
* [channels, canAddIds]
*/
Object[] selectCanAddChannelParentChannels();
/**
* <p>
* 得到栏目下所有栏目
* </p>
* @param condition
* @return
*/
List<Channel> getChannelTreeDown(Long channelId);
/**
* <p>
* 保存需过滤的词组
* </p>
* @param shieldWords
* @param forbidWords
* @param siteId
*/
@Logable(operateTable="站点栏目", operateType="修改过滤词", operateInfo="更新了(ID: ${args[2]})站点下需要过滤的词组 ${args[0]}、${args[1]}")
void saveWordsFilter(String shieldWords, String forbidWords, Long siteId);
/**
* <p>
* 得到过滤词组详细信息
* </p>
* @param siteId
* @return
*/
WordsFilter getWordsFilterInfo(Long siteId);
/**
* <p>
* 通过栏目id取栏目下所有可发布的文章总数
* </p>
* @param channelId
* @return
*/
Integer getPublishableArticleCount(Long channelId);
/**
* <p>
* 通过栏目id取栏目下所有可发布文章id
* </p>
* @param channelId
* @param currentPageNum
* @param pageSize
* @return
*/
List<?> getPagePublishableArticleList(Long channelId, int currentPageNum, Integer pageSize);
/**
* <p>
* 通过栏目Id得到站点Id
* </p>
* @param channelId
* @return
*/
Long getSiteIdByChannelId(Long channelId);
/**
* <p>
* 发布文章
* </p>
* @param articleIdList
* @param siteId
*/
@Logable(operateTable="站点栏目", operateType="发布", operateInfo="发布了(ID: ${args[1]})栏目下的文章")
void publishArticle(List<?> articleIdList, Long siteId);
/**
* 获取需要发布的总文章数
* @param channelId
* @param category 1:增量发布 2: 完全发布
* @return
*/
int getTotalRows4Publish(Long channelId, String category);
/**
* 根据页码获取当前页需要发布的文章列表
* @param channelId
* @param pageNum
* @param page_site
* @param category
* @return
*/
List<?> getPageArticleList(Long channelId, int pageNum, int pageSize, String category);
}