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

180 lines
6.8 KiB

package com.bupt.note.Controller;
import com.bupt.note.Model.Note;
import com.bupt.note.Model.PaperNote;
import com.bupt.note.Repository.NoteRepository;
import com.bupt.note.Repository.PaperNoteRepository;
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 com.bupt.note.service.FileService;
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.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.util.ArrayList;
import java.util.List;
@RestController
@RequestMapping(value = "/v1/api/notes")
public class NoteController {
@Autowired
private NoteRepository noteRepository;
@Autowired
private PaperNoteRepository paperNoteRepository;
@Autowired
private FileService fileService;
private 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())) {
Writer wr = null;
try {
PaperNote paperNote;
File f;
if (paperNoteRepository.existsByPaperIdAndUserName(noteForm.getPaperId(), username)) {
paperNote = paperNoteRepository.findByPaperIdAndUserName(note.getPaperId(), username);
f = new File(paperNote.getFilePath());
} else {
f = fileService.newFile();
paperNote = new PaperNote();
paperNote.setFileId(noteForm.getFileId());
paperNote.setPaperId(noteForm.getPaperId());
paperNote.setFilePath(f.getAbsolutePath());
paperNote.setUrlPath("/txt/" + f.getName());
paperNote.setUserName(username);
paperNoteRepository.save(paperNote);
}
wr = new FileWriter(f);
wr.write(noteForm.getContent());
return ResponseDataUtil.buildSuccess(note);
} catch (IOException e) {
e.printStackTrace();
logger.error(String.valueOf(e));
} finally {
if (wr != null) {
try {
wr.close();
} catch (IOException e) {
e.printStackTrace();
logger.error(String.valueOf(e));
}
}
}
logger.error(String.format("更新论文id=%d失败", noteForm.getPaperId()));
return ResponseDataUtil.buildError();
} else {
logger.error("保存笔记失败");
return ResponseDataUtil.buildError();
}
} else {
logger.error("表单校验失败");
return ResponseDataUtil.buildError();
}
}
/**
* 查找笔记
*
* @param username
* @return
*/
@GetMapping("list/{id}")
public ResponseData list(@PathVariable("id") Long paperId,@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));
}
predicates.add(criteriaBuilder.equal(root.get("paperId"),paperId));
return criteriaQuery.where(predicates.toArray(new Predicate[0])).getRestriction();
});
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);
File f = new File(paperNote.getFilePath());
Writer wr = null;
try {
wr = new FileWriter(f);
wr.write(deleteNote.getContent());
return ResponseDataUtil.buildSuccess();
} catch (IOException e) {
e.printStackTrace();
logger.error(String.valueOf(e));
} finally {
if (wr != null) {
try {
wr.close();
} catch (IOException e) {
e.printStackTrace();
logger.error(String.valueOf(e));
}
}
}
logger.error("删除笔记失败");
}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();
}
}
}