package com.xiaozhi.blog.service.other.sina;
import java.util.List;
import java.util.Map;
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 weibo4j.Timeline;
import weibo4j.model.Emotion;
import weibo4j.model.WeiboException;
import com.xiaozhi.blog.mongo.MongoUserDao;
import com.xiaozhi.blog.mongo.SinaBlogDao;
import com.xiaozhi.blog.utils.ListPage;
import com.xiaozhi.blog.vo.SinaAccessToken;
import com.xiaozhi.blog.vo.SinaPost;
@Service
public class SinaBlogService {
private static Log logger = LogFactory.getLog(SinaBlogService.class);
@Autowired
private SinaBlogDao sinaBlogDao;
@Autowired
private BlogTime blogTime;
@Autowired
private Timeline timeline;
@Autowired
private MongoUserDao mongoUserDao;
public void setSinaBlogDao(SinaBlogDao sinaBlogDao) {
this.sinaBlogDao = sinaBlogDao;
}
/**
* 保存定时微博
* @param post
* @return
* @throws WeiboException
*/
public SinaPost saveSinaPost(SinaPost post) throws WeiboException{
SinaAccessToken accessToken = mongoUserDao.getAccessTokenByUser(post.getUid());
timeline.client.setToken(accessToken.getAccesstoken());
Map<String, Emotion> map = blogTime.getEmotionsMap(timeline);
SinaPost returnPost = this.sinaBlogDao.saveSinaPost(post);
returnPost.setContent(blogTime.replayFaceImages(post.getContent(), map));
return returnPost;
}
/**
* 通过id获取一个定时微博
* @param id
* @return
*/
public SinaPost getSinaPostById(long id){
return this.sinaBlogDao.getSinaPostById(id);
}
/**
* 删除一个定时微博
* @param id
* @return
*/
public SinaPost deleteSinapost(long id){
SinaPost post = this.sinaBlogDao.removeSinaPostById(id);
return post;
}
/**
* 分页获取定时微博列表
* @param uid
* @param page
* @param pagesize
* @return
* @throws WeiboException
*/
public ListPage<SinaPost> getSinaBlogsByPage(String uid, Integer page,int pagesize) throws WeiboException {
int firstResult = (page-1)*pagesize;
int lastResult = firstResult+pagesize-1;
int allResults = this.sinaBlogDao.getSinaPostCount(uid);
List<SinaPost> posts=this.sinaBlogDao.findSinaPosts(uid, firstResult, pagesize);
SinaAccessToken accessToken = mongoUserDao.getAccessTokenByUser(uid);
timeline.client.setToken(accessToken.getAccesstoken());
Map<String, Emotion> map = blogTime.getEmotionsMap(timeline);
for(SinaPost post:posts){//替换新浪表情
post.setContent(blogTime.replayFaceImages(post.getContent(), map));
}
return new ListPage<SinaPost>(posts, firstResult, lastResult, allResults);
}
}