You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
2.9 KiB
78 lines
2.9 KiB
package com.bupt.note.Controller;
|
|
|
|
import com.bupt.note.Model.Collect;
|
|
import com.bupt.note.Model.Paper;
|
|
import com.bupt.note.Repository.CollectRepository;
|
|
import com.bupt.note.Repository.PaperRepository;
|
|
import com.bupt.note.ResponseData.ResponseData;
|
|
import com.bupt.note.ResponseData.ResponseDataUtil;
|
|
import com.bupt.note.dto.Page;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
@RestController
|
|
@RequestMapping(value = "/v1/api/collect")
|
|
public class CollectController {
|
|
|
|
@Autowired
|
|
private CollectRepository collectRepository;
|
|
|
|
@Autowired
|
|
private PaperRepository paperRepository;
|
|
|
|
private Logger logger= LoggerFactory.getLogger(CollectController.class);
|
|
|
|
@PostMapping("{id}")
|
|
public ResponseData collect(@PathVariable("id") Long paperId,@CookieValue("user") String username){
|
|
if(collectRepository.existsByPaperIdAndUserName(paperId,username)){
|
|
if(collectRepository.deleteByPaperIdAndUserName(paperId, username)>0){
|
|
return ResponseDataUtil.buildSuccess("read.tip.cancel_collect_ok");
|
|
}else{
|
|
logger.error("取消收藏失败");
|
|
return ResponseDataUtil.buildError("read.tip.cancel_collect_fail");
|
|
}
|
|
}else{
|
|
Collect collect=new Collect();
|
|
collect.setPaperId(paperId);
|
|
collect.setUserName(username);
|
|
collect.setCreateTime(System.currentTimeMillis());
|
|
collectRepository.save(collect);
|
|
if(collectRepository.existsById(collect.getId())){
|
|
return ResponseDataUtil.buildSuccess("read.tip.collect_ok");
|
|
}else{
|
|
logger.error("收藏失败");
|
|
return ResponseDataUtil.buildError("read.tip.collect_fail");
|
|
}
|
|
}
|
|
}
|
|
|
|
@GetMapping
|
|
public ResponseData list(@CookieValue("user") String username){
|
|
try {
|
|
List<Collect> collects=collectRepository.findByUserName(username);
|
|
Map<Long,Collect> map=new HashMap<>();
|
|
collects.forEach(collect -> {
|
|
map.put(collect.getPaperId(),collect);
|
|
});
|
|
List<Paper> paperList= paperRepository.findAllById(map.keySet());
|
|
paperList.forEach(paper -> {
|
|
paper.setHasCollect(true);
|
|
paper.setCollectTime(map.get(paper.getId()).getCreateTime());
|
|
});
|
|
Page<Paper> paperPage=new Page<>();
|
|
paperPage.setData(paperList);
|
|
paperPage.setTotal((long) paperList.size());
|
|
return ResponseDataUtil.buildSuccess(paperPage);
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
logger.error(String.valueOf(e));
|
|
return ResponseDataUtil.buildError();
|
|
}
|
|
}
|
|
}
|
|
|