package com.kingschan.blog.services.pub.impl;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.kingschan.blog.model.vo.ArticleVo;
import com.kingschan.blog.model.vo.MsgBoardVo;
import com.kingschan.blog.model.vo.PubTimeLineVo;
import com.kingschan.blog.dao.Pagination;
import com.kingschan.blog.dao.font.impl.BlogFontDaoImpl;
import com.kingschan.blog.dao.impl.ReportDaoImpl;
import com.kingschan.blog.po.BlogMsgBoard;
import com.kingschan.blog.services.impl.CommonServiceImpl;
import com.kingschan.blog.services.pub.PubBlogService;
import com.kingschan.blog.util.BlogUtil;
@SuppressWarnings("unchecked")
@Service
public class PubBlogServiceImpl extends CommonServiceImpl implements PubBlogService {
// private Logger log =LoggerFactory.getLogger(PubBlogServiceImpl.class);
@Autowired
private ReportDaoImpl reportDao;
@Autowired
private BlogFontDaoImpl fontDao;
@Override
public Pagination blogTimeLine(Integer limit, Integer page, String userid,String websitename)throws Exception {
Pagination p =reportDao.blogTimeLine(limit, page, userid);
List<PubTimeLineVo> lis =new ArrayList<PubTimeLineVo>();
if (null!=p.getData()&&p.getData().size()>0) {
String httproot=String.format("http://%s.%s", websitename,host);
for (Object row : p.getData()) {
Map<String, Object> map =(Map<String, Object>) row;
String site=map.get("site").toString();
PubTimeLineVo line =new PubTimeLineVo();
String datstr=map.get("time").toString();
line.setDate(datstr.substring(0, 10));
line.setTime(datstr.substring(10,16));
line.setType(map.get("type").toString());
StringBuffer sb = new StringBuffer();
if (line.getType().equals("article")) {
sb.append(String.format("<h4><a href=\"%s/entry/%s.html\" target='_blank'>%s</a></h4>",httproot,map.get("id").toString(),map.get("title").toString()))
.append(map.get("text").toString());
}else if (line.getType().equals("comment")) {
String html=BlogUtil.markDownToHtml(map.get("text").toString());
html=BlogUtil.atUserFormat(html);
sb.append("评论了文章:")
.append(String.format("<a href=\"http://%s.%s/entry/%s.html\" target='_blank'>《%s》</a>",site,host,map.get("id").toString(),map.get("title").toString()))
.append(html)
;
}else if (line.getType().equals("like")) {
sb.append("喜欢了文章:")
.append(String.format("<a href=\"http://%s.%s/entry/%s.html\" target='_blank'>《%s》</a>",site,host,map.get("id").toString(),map.get("title").toString()))
;
}else if (line.getType().equals("res")) {
if (map.get("text").toString().contains("image")) {
sb.append("上传图片:")
.append(String.format("<img src=\"http://res.51so.info/%s_profile.200X200\" alt=\"%s\" title=\"%s\" class=\"img-thumbnail\"/>",
map.get("id").toString(),
map.get("title").toString(),
map.get("title").toString()))
;
}else{
sb.append("上传了文件:").append(map.get("title").toString());
}
}
line.setContent(sb.toString());
lis.add(line);
}
}
p.setData(lis);
return p;
}
@Override
public Pagination blogMsgBoard(Integer limit, Integer page, String website)
throws Exception {
Pagination p = reportDao.blogMsgBoard(limit, page, website);
/* Object total= reportDao.uniqueQueryByHql("select count(*) from BlogMsgBoard where websiteid=? and msgFlag='√'", true, website);
p.put("total", total);*/
List<MsgBoardVo> list = new ArrayList<MsgBoardVo>();
if (null!=p.getData()) {
List<BlogMsgBoard> lis =(List<BlogMsgBoard>) p.getData();
for (BlogMsgBoard item : lis) {
// item.setMsgText(BlogUtil.atUserFormat(item.getMsgText()));
MsgBoardVo vo=item.po2vo(new MsgBoardVo());
vo.setMsgText(vo.getMsgText().replaceAll("\\<(\\/)?p\\>", ""));
list.add(vo);
if (item.getMsgCount()>0) {
List<BlogMsgBoard> replys =reportDao.getMsgBoardByrootId(website, item.getId(),1);
List<MsgBoardVo> replys_list = new ArrayList<MsgBoardVo>();
for (BlogMsgBoard blogMsgBoard : replys) {
MsgBoardVo vo1=blogMsgBoard.po2vo(new MsgBoardVo());
replys_list.add(vo1);
vo1.setMsgText(vo1.getMsgText().replaceAll("\\<(\\/)?p\\>", ""));
}
p.put(item.getId(), replys_list);
}
}
}
p.setData(list);
return p;
}
@Override
public List<ArticleVo> similarArticles(String website, String keyword,
int limit) throws Exception {
return fontDao.similarArticles(website, keyword, limit);
}
}