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.
148 lines
5.8 KiB
148 lines
5.8 KiB
package com.bupt.note.Controller;
|
|
|
|
import com.bupt.note.Model.Note;
|
|
import com.bupt.note.Model.Paper;
|
|
import com.bupt.note.Model.PaperNote;
|
|
import com.bupt.note.Repository.NoteRepository;
|
|
import com.bupt.note.Repository.PaperNoteRepository;
|
|
import com.bupt.note.Repository.PaperRepository;
|
|
import com.bupt.note.ResponseData.ResponseData;
|
|
import com.bupt.note.ResponseData.ResponseDataUtil;
|
|
import com.bupt.note.dto.DeleteNote;
|
|
import com.bupt.note.dto.NoteForm;
|
|
import com.bupt.note.dto.Page;
|
|
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;
|
|
import java.util.Optional;
|
|
|
|
@RestController
|
|
@RequestMapping(value = "/v1/api/notes")
|
|
public class NoteController {
|
|
|
|
@Autowired
|
|
private NoteRepository noteRepository;
|
|
|
|
@Autowired
|
|
private PaperNoteRepository paperNoteRepository;
|
|
|
|
@Autowired
|
|
private PaperRepository paperRepository;
|
|
|
|
private final Logger logger = LoggerFactory.getLogger(NoteController.class);
|
|
|
|
/**
|
|
* 添加笔记
|
|
*
|
|
* @param noteForm
|
|
* @param username
|
|
* @return
|
|
*/
|
|
@PostMapping("add")
|
|
public ResponseData addNote(@RequestBody NoteForm noteForm, @CookieValue("user") String username) {
|
|
if (noteForm.getPaperId() != null && StringUtils.isNoneBlank(noteForm.getNoteId(),
|
|
noteForm.getOriginalText(),
|
|
noteForm.getNoteTitle(), noteForm.getNoteContent(), noteForm.getContent())) {
|
|
Note note = noteForm.toNote();
|
|
note.setUserName(username);
|
|
noteRepository.save(note);
|
|
if (noteRepository.existsById(note.getNoteId())) {
|
|
PaperNote paperNote;
|
|
if (paperNoteRepository.existsByPaperIdAndUserName(noteForm.getPaperId(), username)) {
|
|
paperNote = paperNoteRepository.findByPaperIdAndUserName(note.getPaperId(), username);
|
|
} else {
|
|
paperNote = new PaperNote();
|
|
paperNote.setPaperId(noteForm.getPaperId());
|
|
paperNote.setUserName(username);
|
|
}
|
|
paperNote.setTxtContent(noteForm.getContent());
|
|
paperNoteRepository.save(paperNote);
|
|
return ResponseDataUtil.buildSuccess(note);
|
|
} else {
|
|
logger.error("保存笔记失败");
|
|
return ResponseDataUtil.buildError();
|
|
}
|
|
} else {
|
|
logger.error("表单校验失败");
|
|
return ResponseDataUtil.buildError();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 查找笔记
|
|
*
|
|
* @param username
|
|
* @return
|
|
*/
|
|
@GetMapping({"list/{id}","list"})
|
|
public ResponseData list(@PathVariable(value = "id",required = false) Long paperId,NoteForm noteForm,@CookieValue("user") String username) {
|
|
try {
|
|
Page<Note> list = new Page<>();
|
|
list.setTotal(noteRepository.count());
|
|
List<Note> noteList = noteRepository.findAll((root, criteriaQuery, criteriaBuilder) -> {
|
|
List<Predicate> predicates = new ArrayList<>();
|
|
if (StringUtils.isNotEmpty(username)) {
|
|
predicates.add(criteriaBuilder.equal(root.get("userName"), username));
|
|
}
|
|
if(StringUtils.isNotEmpty(noteForm.getNoteTitle())){
|
|
predicates.add(criteriaBuilder.like(root.get("noteTitle"),"%"+noteForm.getNoteTitle()+"%"));
|
|
}
|
|
if(StringUtils.isNotEmpty(noteForm.getNoteContent())){
|
|
predicates.add(criteriaBuilder.like(root.get("noteContent"),"%"+noteForm.getNoteContent()+"%"));
|
|
}
|
|
if(paperId!=null) {
|
|
predicates.add(criteriaBuilder.equal(root.get("paperId"), paperId));
|
|
}
|
|
return criteriaQuery.where(predicates.toArray(new Predicate[0])).getRestriction();
|
|
});
|
|
noteList.forEach(note -> {
|
|
Optional<Paper> paper=paperRepository.findById(note.getPaperId());
|
|
paper.ifPresent(note::setPaper);
|
|
});
|
|
list.setData(noteList);
|
|
return ResponseDataUtil.buildSuccess(list);
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
logger.error(String.valueOf(e));
|
|
return ResponseDataUtil.buildError();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 删除笔记
|
|
* @return
|
|
*/
|
|
@DeleteMapping("remove")
|
|
public ResponseData remove(@RequestBody DeleteNote deleteNote,@CookieValue("user") String username){
|
|
if(deleteNote.getNoteId()!=null&&deleteNote.getPaperId()!=null&&StringUtils.isNotEmpty(deleteNote.getContent())&&
|
|
paperNoteRepository.existsByPaperIdAndUserName(deleteNote.getPaperId(),username)){
|
|
noteRepository.deleteById(deleteNote.getNoteId());
|
|
PaperNote paperNote = paperNoteRepository.findByPaperIdAndUserName(deleteNote.getPaperId(), username);
|
|
paperNote.setTxtContent(deleteNote.getContent());
|
|
paperNoteRepository.save(paperNote);
|
|
return ResponseDataUtil.buildSuccess();
|
|
}else{
|
|
logger.error("删除笔记表单校验失败");
|
|
}
|
|
return ResponseDataUtil.buildError();
|
|
}
|
|
|
|
@PutMapping("update")
|
|
public ResponseData put(@RequestBody NoteForm noteForm){
|
|
if(StringUtils.isNoneEmpty(noteForm.getNoteId(),noteForm.getNoteContent())){
|
|
Note note=noteRepository.getOne(noteForm.getNoteId());
|
|
note.setNoteContent(noteForm.getNoteContent());
|
|
noteRepository.save(note);
|
|
return ResponseDataUtil.buildSuccess();
|
|
}else{
|
|
logger.error("笔记更新失败");
|
|
return ResponseDataUtil.buildError();
|
|
}
|
|
}
|
|
}
|
|
|