/* ==================================================================
* 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 com.jinhe.tss.cms.entity.Article;
import com.jinhe.tss.cms.entity.ChannelArticle;
import com.jinhe.tss.cms.helper.ArticleQueryCondition;
import com.jinhe.tss.component.log.Logable;
import com.jinhe.tss.component.support.persistence.pagequery.PageInfo;
public interface IArticleService {
/**
* 复制文章
*
* @param articleId
* @param channelId
* @param copyTo
*/
@Logable(operateTable="文章", operateType="复制", operateInfo="复制(ID: ${args[0]}) 文章到(ID: ${args[1]}) 栏目下")
void copyArticle(Long articleId, Long channelId, boolean copyTo);
/**
* 新增/修改文章
*
* @param article
* @param channelId
* @param attachList
* @param tempArticleId
* 新增的时候上传的附件对象以new Date()为主键,此处的tempArticleId就是这个值
*/
@Logable(operateTable="文章", operateType="新增", operateInfo="新增文章 ${args[0]} 到(ID: ${args[1]}) 栏目下")
void createArticle(Article article, Long channelId, String attachList, Long tempArticleId);
@Logable(operateTable="文章", operateType="修改", operateInfo="修改文章 ${args[0]}")
void updateArticle(Article article, Long channelId, String attachList);
/**
* 创建普通文章栏目关系
*
* @param channelId
* @param tempArticleId
*/
void createChannelArticleRelation(Long channelId, Long articleId);
/**
* 删除文章
*
* @param articleId
* @param channelId
*/
@Logable(operateTable="文章", operateType="删除", operateInfo="删除了 ID为 ${args[0]} 的 文章 (所在栏目为:${args[1]})")
void deleteArticle(Long articleId, Long channelId);
/**
* 获取文章
*
* @param articleId
* @return
*/
Article getArticleById(Long articleId);
/**
* 移动文章
*
* @param articleId
* @param oldChannelId
* @param channelId
*/
@Logable(operateTable="文章", operateType="移动", operateInfo="将(ID: ${args[0]}) 文章,从(ID: ${args[1]}) 栏目下移动到(ID: ${args[2]}) 栏目下")
void moveArticle(Long articleId, Long oldChannelId, Long channelId);
/**
* 获取栏目下属所有文章列表
*
* @param channelId
* @param pageNum
* @param orderBy
* @return
*/
PageInfo getChannelArticles(Long channelId, Integer pageNum, String... orderBy);
/**
* <p>
* 搜索栏目下的文章
* </p>
*
* @param condition
* @return
*/
Object[] searchArticleList(ArticleQueryCondition condition);
/**
* 文章上移/下移
*
* @param articleId
* @param toArticleId
* @param channelId
*/
@Logable(operateTable="文章", operateType="排序", operateInfo="(ID: ${args[0]}) 和 (ID: ${args[1]})文章顺序互相交换")
void moveArticleDownOrUp(Long articleId, Long toArticleId, Long channelId);
/**
* 文章跨分页上移下移
*
* @param articleId
* @param channelId
* @param page
* @param direction
*/
@Logable(operateTable="文章", operateType="跨页排序", operateInfo="跨页移动文章(ID: ${args[0]})")
void moveArticleDownOrUpCross(Long articleId, Long channelId, Integer page, int direction);
/**
* 锁定文章
*
* @param articleId
*/
@Logable(operateTable="文章", operateType="锁定", operateInfo="锁定(ID: ${args[0]}) 文章")
void lockingArticle(Long articleId);
/**
* 解锁文章
*
* @param articleId
*/
@Logable(operateTable="文章", operateType="解锁", operateInfo="解锁(ID: ${args[0]}) 文章")
void unLockingArticle(Long articleId);
/**
* 改变文章流程状态
*
* @param articleId
* @param oldStatus
* @param status
* @param workflowId
*/
@Logable(operateTable="文章", operateType="走流程", operateInfo="修改(ID: ${args[0]}) 文章状态,从 ${args[1]} 到 ${args[2]}")
void changeArticleStatus(Long articleId, Integer oldStatus, Integer status, Integer workflowId);
/**
* 转载文章
*
* @param articleId
* @param channelId
* @param oldChannelId
*/
@Logable(operateTable="文章", operateType="转载文章", operateInfo="转载(ID: ${args[0]}) 文章至 (ID: ${args[1]} 栏目下")
void reshipArticle(Long articleId, Long channelId, Long oldChannelId);
/**
* 置顶文章
*
* @param articleId
* @param channelId
*/
@Logable(operateTable="文章", operateType="置顶", operateInfo="修改(ID: ${args[0]}) 文章为 (ID: ${args[1]} 栏目的置顶文章")
void doTopArticle(Long articleId, Long channelId);
/**
* 取消置顶
*
* @param articleId
* @param channelId
*/
@Logable(operateTable="文章", operateType="解除置顶", operateInfo="取消(ID: ${args[0]}) 文章为 (ID: ${args[1]} 栏目的置顶文章")
void undoTopArticle(Long articleId, Long channelId);
/**
* 获得文章的相关文章信息
*
* @param articleId
* @return
*/
Object[] getArticleExistRelationship(Long articleId);
/**
* 保存文章的相关文章关系
*
* @param articleId
* @param associateArticleIds
*/
void relatedArticleTo(Long articleId, String associateArticleIds);
/**
* 获得文章的分发文章关系解码器对象组
*
* @param articleId
* @param channelId
* @return
*/
Object[] getDistributeArticleRelationShip(Long articleId, Long channelId);
/**
* 保存文章的分发文章关系
*
* @param articleId
* @param channelId
* @param distributeToChannelIds
*/
@Logable(operateTable="文章", operateType="分发文章", operateInfo="保存(ID: ${args[0]}) 文章的分发文章关系")
void saveDistributeArticleRelationShip(Long articleId, Long channelId, String distributeToChannelIds);
/**
* 根据栏目id和文章id取得栏目文章关系信息
*
* @param articleId
* @param channelId
* @return
*/
ChannelArticle getChannelArticle(Long articleId, Long channelId);
/**
* 根据权限项ID(operationId)查找用户对该流程步骤是否有权限
*
* @param operationId
* 权限项目ID
* @param resourceId
* 流程步骤ID
* @return
*/
boolean getArticleWorkflowPermission(String operationId, Long workFlowId);
}