package com.xiaozhi.blog.service;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
//import com.xiaozhi.blog.redis.BlogDao;
import com.xiaozhi.blog.mongo.MongoBlogDao;
import com.xiaozhi.blog.redis.BlogIndexDao;
import com.xiaozhi.blog.utils.KeyUtils;
import com.xiaozhi.blog.utils.ListPage;
import com.xiaozhi.blog.utils.MentionUtil;
import com.xiaozhi.blog.vo.Range;
import com.xiaozhi.blog.vo.WebPost;
import solr.index.BlogIndexData;
@Service
public class BlogService {
private static Log logger = LogFactory.getLog(BlogService.class);
@Autowired
private MongoBlogDao mongoBlogDao;
@Autowired
private BlogIndexDao blogIndexDao;
@Autowired
private MentionUtil mentionUtil;
/**
* 根据微薄id获取微搏信息(不包括转发)
* @param pid
* @return
*/
public WebPost getBlogById(String pid){
return this.mongoBlogDao.getBlogById(pid);
}
/**
* 根据微薄id获取微搏信息(包括转发)
* @param pid
* @return
*/
public WebPost getBlogWithForwardById(String pid) {
return this.mongoBlogDao.getBlogWithForwardById(pid);
}
/**
* 分页获取当前用户发布了的微搏列表
* @param uid
* @param range
* @return
*/
public ListPage<WebPost> getPostsByPage(String uid, Integer page,Integer pagesize) {
List<String> pids= this.mongoBlogDao.getPostsIdList(uid,KeyUtils.posts(uid));
int firstResult = (page-1)*pagesize;
int lastResult = firstResult+pagesize-1;
int allResults = pids.size();
List<WebPost> users=this.mongoBlogDao.getPosts(pids, new Range(firstResult,lastResult));
return new ListPage<WebPost>(users, firstResult, lastResult, allResults);
}
/**
* 分页获得自己的timeline(包括关注了的人发的微搏)
* @param uid
* @param range
* @return
*/
public ListPage<WebPost> getTimelineByPage(String uid, Integer page,Integer pagesize) {
List<String> pids= this.mongoBlogDao.getPostsIdList(uid,KeyUtils.timeline(uid));
int firstResult = (page-1)*pagesize;
int lastResult = firstResult+pagesize-1;
int allResults = pids.size();
List<WebPost> blogs=this.mongoBlogDao.getPosts(pids, new Range(firstResult,lastResult));
return new ListPage<WebPost>(blogs, firstResult, lastResult, allResults);
}
/**
* 分页获得提及自己的微博
* @param uid
* @param page
* @param pagesize
* @return
*/
public ListPage<WebPost> getMentions(String uid, Integer page,Integer pagesize) {
List<String> pids= this.mongoBlogDao.getPostsIdList(uid,KeyUtils.mentions(uid));
int firstResult = (page-1)*pagesize;
int lastResult = firstResult+pagesize-1;
List<WebPost> blogs=this.mongoBlogDao.getPosts(pids, new Range(firstResult,lastResult));
int allResults = pids.size();
return new ListPage<WebPost>(blogs, firstResult, lastResult, allResults);
}
/**
* 发布微搏
* @param uid
* @param post
*/
public WebPost post(String uid, WebPost post ,boolean isForword) {
try {
post.setContent(this.mentionUtil.replayFaceImages(post.getContent()));
String pid = this.mongoBlogDao.post(uid, post,isForword);
return this.getBlogWithForwardById(pid);
} catch (Exception e) {
logger.error("=================>post is error :"+e.toString(),e);
}
return null;
}
/**
* 删除自己的微搏
* @param username
* @param pid
*/
public boolean removeBlogByMe(String uid, String pid) {
return this.mongoBlogDao.removeBlogByMe(uid, pid);
}
/**
* 别人删除你的微搏残余
* @param uid
* @param pid
* @return
*/
public boolean removeBlogByOther(String uid, String pid) {
return this.mongoBlogDao.removeBlogByOther(uid, pid);
}
/**
* 删除提及我的微博残余
* @param uid
* @param pid
* @return
*/
public boolean removeMention(String uid, String pid){
return this.mongoBlogDao.removeMention(uid, pid);
}
/**
* 分页获取所有微博为建索引准备
* @param page
* @param pagesize
* @return
*/
public ListPage<BlogIndexData> timeline(Integer page,Integer pagesize) {
int firstResult = (page-1)*pagesize;
int lastResult = firstResult+pagesize-1;
int allResults = this.blogIndexDao.getAllTimelineNum();
List<BlogIndexData> blogs=this.blogIndexDao.getAlltimeline(new Range(firstResult,lastResult));
return new ListPage<BlogIndexData>(blogs, firstResult, lastResult, allResults);
}
}