package com.kingschan.blog.services;
import java.util.List;
import java.util.Map;
import com.kingschan.blog.model.vo.ArticleVo;
import com.kingschan.blog.dao.Pagination;
import com.kingschan.blog.po.Article;
import com.kingschan.blog.po.BlogArticleLikes;
import com.kingschan.blog.po.User;
import com.kingschan.blog.po.WebSite;
import javax.servlet.http.HttpServletRequest;
/**
*
* <pre>
* 类名称:ArticleService
* 类描述:
* 创建人:陈国祥 (kingschan)
* 创建时间:2016-2-20 上午10:54:29
* 修改人:Administrator
* 修改时间:2016-2-20 上午10:54:29
* 修改备注:
* @version V1.0
* </pre>
*/
public interface ArticleService {
/**
* 得到文章列表
* @param page
* @param website
* @param args
* @return
* @throws Exception
*/
Pagination getArticleList(int page, int limit, String website, Map<String, Object> args)throws Exception;
/**
* 主页文章列表
* @param page
* @param limit
* @param args
* @return
* @throws Exception
*/
Pagination getHomeArticleList(int page, int limit, Map<String, Object> args)throws Exception;
/**
* 文章全文检索
* @param page
* @param limit
* @param website
* @param isback 是否后台
* @param keyword
* @param fields
* @return
* @throws Exception
*/
Pagination getFullTextSearch(int page, int limit, String website,Boolean isback, String keyword, String... fields)throws Exception;
/**
* 文章全文检索
* @param page
* @param limit
* @param keyword
* @param fields
* @return
* @throws Exception
*/
Pagination getHomeFullTextSearch(int page, int limit, String keyword, String... fields)throws Exception;
/**
* 得到文章
* @param keyword
* @param readonce 是否需要记录阅读次数
* @return
* @throws Exception
*/
Article ArticleInfo(String keyword, boolean readonce, String website)throws Exception;
/**
* 得到文章
* @param keyword
* @param readonce 是否需要记录阅读次数
* @param website
* @return
* @throws Exception
*/
ArticleVo getArticle(String keyword, boolean readonce, String website)throws Exception;
/**
* 文章归档时间轴
* @param websiteId
* @param page
* @param limit
* @param date yyyy-mm
* @return
* @throws Exception
*/
Pagination getArticleTimeLine(String websiteId, int page, int limit, String date)throws Exception;
/**
* 文章归档时间轴导航 年-月
* @param websiteId
* @return
* @throws Exception
*/
List<Map<String, Object>> getArticleTimeNavigate(String websiteId)throws Exception;
/**
* 通过标签得到文章列表
* @param lableName
* @param page
* @return
* @throws Exception
*/
Pagination getArticleByLable(String lableName, String website, int page, int limit) throws Exception ;
/**
* 得到阅读次数最多的文章
* @param websiteid
* @return
* @throws Exception
*/
List<Article> getHotArticle(String websiteid, int limit)throws Exception;
/**
* 得到sitemap
* @param websiteid
* @return
* @throws Exception
*/
List<Object[]> getSiteMapByWebSite(String websiteid)throws Exception;
/**
* 统计月度写日志情况
* @param websiteid
* @return
* @throws Exception
*/
Map<String,Object> getEveryDayArticleInfo(String websiteid, int year, int month)throws Exception;
/**
* 统计月度写日志情况(使用缓存)
* @param key( websiteid, year, month逗号分隔加起组成key)
* @return
* @throws Exception
*/
Map<String,Object> getEveryDayArticleInfoForCache(String key)throws Exception;
/**
* 保存文章
* @param vo
* @param type 方式: release 发布 update 更新
* @param user
* @param ws
* @return
* @throws Exception
*/
String saveArticle(ArticleVo vo, String type, User user, WebSite ws)throws Exception;
/**
* 删除文章
* @param ids
* @return
* @throws Exception
*/
int delArticles(String[] ids) throws Exception;
/**
* 修改文章类别
* @param ids
* @param typeid
* @return
* @throws Exception
*/
int updateArticleType(String[] ids, String typeid) throws Exception;
/**
* 整个文章重生生成索引
* @throws Exception
*/
void buildIndex()throws Exception;
/**
* 改变文章类型
* @param ids
* @param category
* @param websiteid
* @return
* @throws Exception
*/
int updateArticlesType(String[] ids, String category, String websiteid)throws Exception;
/**
* 得到文章评论
* @param page
* @param limit
* @param articleId
* @param args 如果包含CUserId 则只显示此用户所有评论
* @return
* @throws Exception
*/
Pagination getCommentsByArticle(int page, int limit, String articleId, Map<String, Object> args)throws Exception;
/**
* 得到文章评论(包含点赞)
* @param page
* @param limit
* @param articleId
* @param userid
* @param args
* @return
* @throws Exception
*/
Pagination getCommentsByArticle(int page, int limit, String articleId, String userid, String model)throws Exception;
/**
* 删除文章评论
* @param ids
* @return
* @throws Exception
*/
int delArticleComments(String[] ids) throws Exception;
/**
* 删除自已的评论
* @param id
* @param userid
* @return
* @throws Exception
*/
int delSelfComments(String id, String userid) throws Exception;
/**
* 文章置顶
* @param ids
* @param websiteid
* @return
* @throws Exception
*/
int fixedTop(String[] ids, String websiteid) throws Exception;
/**
* 取消置顶
* @param ids
* @param websiteid
* @return
* @throws Exception
*/
int cancleFixed(String[] ids, String websiteid) throws Exception;
/**
* 设置文章封面
* @param ids
* @param websiteid
* @param resKey
* @return
* @throws Exception
*/
int setCover(String[] ids, String websiteid, String resKey) throws Exception;
/**
* 点赞取消点赞
* @param userid
* @param commentId
* @return +点赞 -取消点赞
* @throws Exception
*/
String articleCommentSupport(String userid, String commentId)throws Exception;
/**
* 喜欢 || 取消喜欢文章
* @param userid
* @param articleId
* @return
* @throws Exception
*/
String articleSupport(String userid, String articleId)throws Exception;
/**
* 得到当前用户是否已经点赞过该文章
* @param userid
* @param articleId
* @return
* @throws Exception
*/
BlogArticleLikes getArticleLike(String userid, String articleId)throws Exception;
/**
* 将文章里面的图片外部链接转换成自已CDN加速网站
* @param articleId
* @param req
* @throws Exception
*/
void downloadArticleImg(String articleId, HttpServletRequest req)throws Exception;
}