package com.huixinpn.dionysus.controller.article;
import com.huixinpn.dionysus.domain.article.Article;
import com.huixinpn.dionysus.domain.article.ArticleReadCounter;
import com.huixinpn.dionysus.domain.article.ArticleType;
import com.huixinpn.dionysus.domain.article.Category;
import com.huixinpn.dionysus.dto.EntityPageData;
import com.huixinpn.dionysus.dto.article.ArticleData;
import com.huixinpn.dionysus.repository.article.ArticleRepository;
import com.huixinpn.dionysus.repository.article.ReadCounterRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
/**
* Created by huanghao on 5/19/15.
*/
@RestController
public class ArticleController {
@Autowired
private ArticleRepository articleRepository;
@Autowired
private ReadCounterRepository readCounterRepository;
@RequestMapping(value = "/articles/coverpage", method = RequestMethod.GET)
public @ResponseBody
EntityPageData<ArticleData> wantCoverPage(@RequestParam(value = "category", required = true)Category category,
@RequestParam(value = "type", required = true)ArticleType type,
@RequestParam(value = "size", required = true) Integer size){
Page<Article> pageArticles = articleRepository.findAll(new PageRequest(0, size));
return new EntityPageData<>(pageArticles, ArticleData.class);
}
@RequestMapping(value = "/controllers/article/{id}/incrReadCount", method = RequestMethod.GET)
public Integer increaseReadCount(@PathVariable Long id){
Article article = articleRepository.findOne(id);
if (article != null){
ArticleReadCounter counter = article.getReadCounter();
if (counter != null){
counter.setValue(counter.getValue() + 1);
readCounterRepository.save(counter);
return counter.getValue();
}
else{
counter = new ArticleReadCounter();
counter.setValue(1);
article.setReadCounter(counter);
articleRepository.save(article);
return counter.getValue();
}
}
return 0;
}
}