|
|
|
package com.bupt.note.Controller;
|
|
|
|
|
|
|
|
import com.bupt.note.Model.Paper;
|
|
|
|
import com.bupt.note.Repository.PapaerRepository;
|
|
|
|
import com.bupt.note.ResponseData.ResponseData;
|
|
|
|
import com.bupt.note.ResponseData.ResponseDataUtil;
|
|
|
|
import com.bupt.note.dto.Page;
|
|
|
|
import com.bupt.note.dto.QueryPaper;
|
|
|
|
import com.bupt.note.dto.UploadPaper;
|
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
import org.slf4j.Logger;
|
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
|
|
import javax.persistence.criteria.Predicate;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 论文管理接口
|
|
|
|
*/
|
|
|
|
@RestController
|
|
|
|
@RequestMapping(value = "/v1/api/paper")
|
|
|
|
public class PaperController {
|
|
|
|
|
|
|
|
private Logger logger= LoggerFactory.getLogger(PaperController.class);
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
private PapaerRepository papaerRepository;
|
|
|
|
|
|
|
|
@PostMapping("upload")
|
|
|
|
public ResponseData upload(@RequestBody UploadPaper uploadPaper, @CookieValue("user") String username) {
|
|
|
|
if (uploadPaper.getFileId() != null && uploadPaper.getYear() != null && StringUtils.isNoneEmpty(uploadPaper.getTitle(),uploadPaper.getType(),
|
|
|
|
uploadPaper.getAuthor(), uploadPaper.getProfession(), uploadPaper.getSchool(), uploadPaper.getSummary(),uploadPaper.getTag())){
|
|
|
|
Paper paper = uploadPaper.toPaper();
|
|
|
|
paper.setUserName(username);
|
|
|
|
papaerRepository.save(paper);
|
|
|
|
if(papaerRepository.existsById(paper.getId())){
|
|
|
|
return ResponseDataUtil.buildSuccess();
|
|
|
|
}else{
|
|
|
|
return ResponseDataUtil.buildError();
|
|
|
|
}
|
|
|
|
}else{
|
|
|
|
return ResponseDataUtil.buildError();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@GetMapping("list")
|
|
|
|
public ResponseData list(QueryPaper queryPaper){
|
|
|
|
|
|
|
|
try {
|
|
|
|
Page<Paper> list=new Page<>();
|
|
|
|
list.setTotal(papaerRepository.count());
|
|
|
|
List<Paper> papers = papaerRepository.findAll((root, criteriaQuery, criteriaBuilder) -> {
|
|
|
|
List<Predicate> predicates = new ArrayList<>();
|
|
|
|
if(StringUtils.isNotEmpty(queryPaper.getTitle())){
|
|
|
|
predicates.add(criteriaBuilder.like(root.get("title"),"%"+queryPaper.getTitle()+"%"));
|
|
|
|
}
|
|
|
|
if(StringUtils.isNotEmpty(queryPaper.getAuthor())){
|
|
|
|
predicates.add(criteriaBuilder.like(root.get("author"),"%"+queryPaper.getAuthor()+"%"));
|
|
|
|
}
|
|
|
|
if(StringUtils.isNotEmpty(queryPaper.getTag())){
|
|
|
|
predicates.add(criteriaBuilder.like(root.get("tag"),"%"+queryPaper.getTag()+"%"));
|
|
|
|
}
|
|
|
|
if(StringUtils.isNotEmpty(queryPaper.getProfession())){
|
|
|
|
predicates.add(criteriaBuilder.like(root.get("profession"),"%"+queryPaper.getTag()+"%"));
|
|
|
|
}
|
|
|
|
if(queryPaper.getStartYear()!=null&&queryPaper.getEndYear()==null){
|
|
|
|
predicates.add(criteriaBuilder.ge(root.get("year"),queryPaper.getStartYear()));
|
|
|
|
}else if(queryPaper.getStartYear()==null&&queryPaper.getEndYear()!=null){
|
|
|
|
predicates.add(criteriaBuilder.le(root.get("year"),queryPaper.getEndYear()));
|
|
|
|
}else if(queryPaper.getStartYear()!=null&&queryPaper.getEndYear()!=null){
|
|
|
|
predicates.add(criteriaBuilder.between(root.get("year"),queryPaper.getStartYear(),queryPaper.getEndYear()));
|
|
|
|
}
|
|
|
|
return criteriaQuery.where(predicates.toArray(new Predicate[0])).getRestriction();
|
|
|
|
});
|
|
|
|
list.setData(papers);
|
|
|
|
return ResponseDataUtil.buildSuccess(list);
|
|
|
|
} catch (Exception e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
logger.error(String.valueOf(e));
|
|
|
|
return ResponseDataUtil.buildError();
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|