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 collects=collectRepository.findByUserName(username); Map map=new HashMap<>(); collects.forEach(collect -> { map.put(collect.getPaperId(),collect); }); List paperList= paperRepository.findAllById(map.keySet()); paperList.forEach(paper -> { paper.setHasCollect(true); paper.setCollectTime(map.get(paper.getId()).getCreateTime()); }); Page 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(); } } }