package com.zdcf.service.Impl;
import java.io.Serializable;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.apache.log4j.Logger;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.zdcf.base.Constants;
import com.zdcf.dto.MessageDTO;
import com.zdcf.dto.ThemeDTO;
import com.zdcf.dto.ZhihuDTO;
import com.zdcf.mapper.MessageMapper;
import com.zdcf.model.Message;
import com.zdcf.model.Theme;
import com.zdcf.model.Zhihu;
import com.zdcf.service.BaseService;
import com.zdcf.service.MessageService;
import com.zdcf.tool.PageVo;
@Service
@Transactional
public class MessageServiceImpl extends BaseService implements MessageService {
private static Logger logger = Logger.getLogger(MessageServiceImpl.class);
@Resource
private MessageMapper messageMapper;
@Autowired
RedisCacheService redisCacheService;
@Override
public List<ThemeDTO> getThemeList(){
List<ThemeDTO> list = messageMapper.getThemeList();
return list;
}
@Override
public int addTheme(Theme theme) {
return messageMapper.addTheme(theme);
}
@Override
public int addZhihuAirticle(Zhihu zhihu) throws Exception{
Date now =new Date();
zhihu.setAddTime(now);
zhihu.setUpdateTime(now);
zhihu.setReviewNum(0);
int count = messageMapper.addZhihuAirticle(zhihu);
if(count ==1){
this.sendMessage(zhihu, Constants.Cache.Type.save);
}
return count;
}
@Override
public ThemeDTO getThemeById(int id) {
return messageMapper.getThemeById(id);
}
@Override
public ZhihuDTO getZhihuDetailById(int id) {
Zhihu temp = new Zhihu();
temp.setId(id);
Zhihu zhihu = redisCacheService.get(temp.getCacheKey(), Zhihu.class);
//不在缓存中,去数据库中查询
if(zhihu == null){
zhihu = messageMapper.getZhihuDetailById(id);
if(zhihu !=null){
super.sendMessage(zhihu, Constants.Cache.Type.update);
}
}
ZhihuDTO zhihuDTO = new ZhihuDTO();
if(zhihu != null){
BeanUtils.copyProperties(zhihu,zhihuDTO );
return zhihuDTO;
}else{
return null;
}
}
@Override
public void storeAllZhihu() {
List<Zhihu> list= messageMapper.getAllZhihu();
for(int i=0;i<list.size();i++){
this.sendMessage(list.get(i), Constants.Cache.Type.save);
}
}
@Override
public List<MessageDTO> getMessagesByThemeId(int id) {
return messageMapper.getMessagesByThemeId(id);
}
@Override
public int addMessage(Message message) {
messageMapper.updateThemeTime(message.getThemeId());
return messageMapper.addMessage(message);
}
@Override
public Theme getThemeByTheme(String theme) {
return messageMapper.getThemeByTheme(theme);
}
@Override
public Serializable getThemeListPage(
PageVo<Map<String, Object>> pageVo2) {
PageVo<Map<String, Object>> pageVo = (PageVo<Map<String, Object>>) pageVo2;
int offset = pageVo.getCurrentPage() - 1;
if (offset < 0)
offset = 0;
List<Map<String, Object>> commonNewsList = messageMapper
.getThemeListPage( offset * pageVo.getPageSize(),
pageVo.getPageSize());
int count = messageMapper.getThemeCount(offset* pageVo.getPageSize(), pageVo.getPageSize());
pageVo.setVoList(commonNewsList);
pageVo.setRecordCount(count);
return pageVo;
}
@Override
public Serializable getZhihuArticleListPage(
PageVo<Map<String, Object>> pageVo2) {
PageVo<Map<String, Object>> pageVo = (PageVo<Map<String, Object>>) pageVo2;
int offset = pageVo.getCurrentPage() - 1;
if (offset < 0)
offset = 0;
List<Map<String, Object>> commonNewsList = messageMapper
.getZhihuArticleListPage( offset * pageVo.getPageSize(),
pageVo.getPageSize());
int count = messageMapper.getZhihuArticleCount(offset* pageVo.getPageSize(), pageVo.getPageSize());
pageVo.setVoList(commonNewsList);
pageVo.setRecordCount(count);
return pageVo;
}
@Override
public List<HashMap<String, Object>> findNextTheme(int index,int count){
List<HashMap<String, Object>> starLoanlist = messageMapper.findNextTheme(index,count);
return starLoanlist;
}
@Override
public List<HashMap<String, Object>> findNextZhihuAirticle(int index,int count){
List<HashMap<String, Object>> starLoanlist = messageMapper.findNextZhihuAirticle(index,count);
return starLoanlist;
}
}