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.
cloudnote_server/src/main/java/com/bupt/note/Controller/NoteController.java

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();
}
}
}