diff --git a/src/main/java/com/dbnt/kcgfilemanager/controller/BoardController.java b/src/main/java/com/dbnt/kcgfilemanager/controller/BoardController.java index 30b648a..d8e07a0 100644 --- a/src/main/java/com/dbnt/kcgfilemanager/controller/BoardController.java +++ b/src/main/java/com/dbnt/kcgfilemanager/controller/BoardController.java @@ -2,6 +2,7 @@ package com.dbnt.kcgfilemanager.controller; import com.dbnt.kcgfilemanager.model.Board; import com.dbnt.kcgfilemanager.model.UserInfo; +import com.dbnt.kcgfilemanager.service.BoardService; import com.dbnt.kcgfilemanager.service.UserInfoService; import lombok.RequiredArgsConstructor; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; @@ -19,14 +20,7 @@ import java.util.List; @RequestMapping("/board") public class BoardController { -// private final UserInfoService userInfoService; - -// @GetMapping("/user/login") -// public ModelAndView goLogin() { -// ModelAndView mav = new ModelAndView("login"); -// return mav; -// } - + private final BoardService boardService; @GetMapping("/contentWrite") public ModelAndView contentWrite(Principal principal) { @@ -38,12 +32,8 @@ public class BoardController { } @PostMapping("/saveContent") - public Integer saveContent(Board board){ - System.out.println("controller coming"); - return board.getContentSeq(); - } - @PostMapping("/uploadFiles") - public void uploadFiles(Integer contentSeq, MultipartHttpServletRequest request){ - System.out.println("controller coming"); + public Integer saveContent(Board content, MultipartHttpServletRequest request){ + content.setFileList(request.getMultiFileMap().get("uploadFiles")); + return boardService.saveContent(content); } } diff --git a/src/main/java/com/dbnt/kcgfilemanager/model/Board.java b/src/main/java/com/dbnt/kcgfilemanager/model/Board.java index a99136e..4f1e25e 100644 --- a/src/main/java/com/dbnt/kcgfilemanager/model/Board.java +++ b/src/main/java/com/dbnt/kcgfilemanager/model/Board.java @@ -5,6 +5,7 @@ import lombok.NoArgsConstructor; import lombok.Setter; import org.hibernate.annotations.DynamicInsert; import org.hibernate.annotations.DynamicUpdate; +import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import javax.persistence.*; @@ -40,6 +41,9 @@ public class Board extends BaseModel{ private List childFiles; @Transient private List hashTags; + @Transient private String hashTagStr; + @Transient + private List fileList; } diff --git a/src/main/java/com/dbnt/kcgfilemanager/repository/BoardLogRepository.java b/src/main/java/com/dbnt/kcgfilemanager/repository/BoardLogRepository.java new file mode 100644 index 0000000..8c04684 --- /dev/null +++ b/src/main/java/com/dbnt/kcgfilemanager/repository/BoardLogRepository.java @@ -0,0 +1,10 @@ +package com.dbnt.kcgfilemanager.repository; + +import com.dbnt.kcgfilemanager.model.BoardLog; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.Optional; + +public interface BoardLogRepository extends JpaRepository { + Optional findTopByContentSeqOrderByLogSeqDesc(Integer contentSeq); +} diff --git a/src/main/java/com/dbnt/kcgfilemanager/repository/BoardRepository.java b/src/main/java/com/dbnt/kcgfilemanager/repository/BoardRepository.java new file mode 100644 index 0000000..eee9b7e --- /dev/null +++ b/src/main/java/com/dbnt/kcgfilemanager/repository/BoardRepository.java @@ -0,0 +1,8 @@ +package com.dbnt.kcgfilemanager.repository; + +import com.dbnt.kcgfilemanager.model.Board; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface BoardRepository extends JpaRepository { + +} diff --git a/src/main/java/com/dbnt/kcgfilemanager/repository/FileInfoRepository.java b/src/main/java/com/dbnt/kcgfilemanager/repository/FileInfoRepository.java new file mode 100644 index 0000000..ae670cb --- /dev/null +++ b/src/main/java/com/dbnt/kcgfilemanager/repository/FileInfoRepository.java @@ -0,0 +1,8 @@ +package com.dbnt.kcgfilemanager.repository; + +import com.dbnt.kcgfilemanager.model.FileInfo; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface FileInfoRepository extends JpaRepository { + +} diff --git a/src/main/java/com/dbnt/kcgfilemanager/repository/HashTagLinkRepository.java b/src/main/java/com/dbnt/kcgfilemanager/repository/HashTagLinkRepository.java new file mode 100644 index 0000000..3b61585 --- /dev/null +++ b/src/main/java/com/dbnt/kcgfilemanager/repository/HashTagLinkRepository.java @@ -0,0 +1,8 @@ +package com.dbnt.kcgfilemanager.repository; + +import com.dbnt.kcgfilemanager.model.HashTagLink; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface HashTagLinkRepository extends JpaRepository { + +} diff --git a/src/main/java/com/dbnt/kcgfilemanager/repository/HashTagRepository.java b/src/main/java/com/dbnt/kcgfilemanager/repository/HashTagRepository.java new file mode 100644 index 0000000..0ff3747 --- /dev/null +++ b/src/main/java/com/dbnt/kcgfilemanager/repository/HashTagRepository.java @@ -0,0 +1,10 @@ +package com.dbnt.kcgfilemanager.repository; + +import com.dbnt.kcgfilemanager.model.HashTag; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.Optional; + +public interface HashTagRepository extends JpaRepository { + Optional findByTagName(String tagName); +} diff --git a/src/main/java/com/dbnt/kcgfilemanager/service/BoardService.java b/src/main/java/com/dbnt/kcgfilemanager/service/BoardService.java new file mode 100644 index 0000000..be503d4 --- /dev/null +++ b/src/main/java/com/dbnt/kcgfilemanager/service/BoardService.java @@ -0,0 +1,68 @@ +package com.dbnt.kcgfilemanager.service; + +import com.dbnt.kcgfilemanager.model.Board; +import com.dbnt.kcgfilemanager.model.BoardLog; +import com.dbnt.kcgfilemanager.model.HashTag; +import com.dbnt.kcgfilemanager.model.HashTagLink; +import com.dbnt.kcgfilemanager.repository.BoardLogRepository; +import com.dbnt.kcgfilemanager.repository.BoardRepository; +import com.dbnt.kcgfilemanager.repository.HashTagLinkRepository; +import com.dbnt.kcgfilemanager.repository.HashTagRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; + +import java.util.List; + +@Service +@RequiredArgsConstructor +public class BoardService { + + private BoardRepository boardRepository; + private BoardLogRepository boardLogRepository; + private HashTagRepository hashTagRepository; + private HashTagLinkRepository hashTagLinkRepository; + + @Transactional + public Integer saveContent(Board content){ + boardRepository.save(content); + saveBoardLog(content.getContentSeq(), "I", null, content.getCreateId()); + saveHashTagLink(content.getContentSeq(), content.getHashTagStr()); + saveUploadFiles(content.getContentSeq(), content.getFileList()); + return content.getContentSeq(); + } + + public void saveBoardLog(Integer contentSeq, String status, String description, String createId){ + BoardLog lastLog = boardLogRepository.findTopByContentSeqOrderByLogSeqDesc(contentSeq).orElse(null); + BoardLog log = new BoardLog(); + log.setContentSeq(contentSeq); + log.setLogSeq(lastLog == null?1:(lastLog.getLogSeq()+1)); + log.setLogStatus(status); + log.setDescription(description); + log.setCreateId(createId); + boardLogRepository.save(log); + } + public HashTag saveHashTag(String tagName){ + HashTag tag = new HashTag(); + tag.setTagName(tagName); + return hashTagRepository.save(tag); + } + public void saveHashTagLink(Integer contentSeq, String hashTagStr){ + String[] hashTagAry = hashTagStr.trim().replaceAll(",", "").split("#"); + for(String tagName : hashTagAry){ + HashTag tag = hashTagRepository.findByTagName(tagName).orElse(null); + if(tag==null){ + tag = saveHashTag(tagName); + } + HashTagLink link = new HashTagLink(); + link.setContentSeq(contentSeq); + link.setTagSeq(tag.getTagSeq()); + hashTagLinkRepository.save(link); + } + } + public void saveUploadFiles(Integer contentSeq, List files){ + + } + +} diff --git a/src/main/resources/static/js/board/contentWrite.js b/src/main/resources/static/js/board/contentWrite.js index 91b59e9..d16eda4 100644 --- a/src/main/resources/static/js/board/contentWrite.js +++ b/src/main/resources/static/js/board/contentWrite.js @@ -50,6 +50,10 @@ $(document).on('click', '.fileDelete', function (){ }) $(document).on('click', '#saveBtn', function (){ const formData = new FormData($("#contentForm")[0]); + for(const file of files) { + if(!file.isDelete) + formData.append('uploadFiles', file, file.name); + } $.ajax({ type : 'POST', data : formData, @@ -58,7 +62,6 @@ $(document).on('click', '#saveBtn', function (){ contentType: false, success : function(data) { $("#contentSeq").val(data); - uploadFiles(); }, error : function(xhr, status) { @@ -102,24 +105,6 @@ function selectorDisabler(depth){ }) } -function uploadFiles(){ - const formData = new FormData($("#fileForm")[0]); - $.ajax({ - type : 'POST', - data : formData, - url : "/board/uploadFiles", - enctype: "multipart/form-data", - processData: false, - contentType: false, - success : function(data) { - alert("저장되었습니다.") - }, - error : function(xhr, status) { - - } - }) -} - function setFileDiv(file, idx){ const uploadDiv = $("#uploadDiv"); if(files.length===1){ diff --git a/src/main/resources/templates/board/contentWrite.html b/src/main/resources/templates/board/contentWrite.html index f0bcf37..f1a10d7 100644 --- a/src/main/resources/templates/board/contentWrite.html +++ b/src/main/resources/templates/board/contentWrite.html @@ -91,12 +91,13 @@
- +

파일을 업로드 해주세요.
+
@@ -111,10 +112,6 @@
-
- - -