From a068334dc6d8c41f0917b9d85272eec830c4f8f3 Mon Sep 17 00:00:00 2001 From: jonghwan76 Date: Wed, 23 Feb 2022 01:59:01 +0900 Subject: [PATCH] =?UTF-8?q?=EC=82=AC=EC=9A=A9=EC=9E=90=20=EC=9D=8C?= =?UTF-8?q?=EC=95=85=ED=8C=8C=EC=9D=BC=20=EC=84=A4=EC=A0=95=20=EC=9E=91?= =?UTF-8?q?=EC=97=85=EC=A4=91-1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../m/member_env/M_Member_envBO.java | 3 + .../m/member_env/M_Member_envBOImpl.java | 50 +++++++++++++++ .../m/member_env/M_Member_envController.java | 63 +++++++++++++++++-- .../java/com/backoffice/m/util/M_Util.java | 50 +++++++++++++-- .../com.backoffice.m.member_env.xml | 23 +++++++ src/main/webapp/META-INF/context.xml | 2 +- .../views/ftl/m/member_env/view_set_music.ftl | 19 ++++-- 개발참고.txt | 13 +++- 8 files changed, 206 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/backoffice/m/member_env/M_Member_envBO.java b/src/main/java/com/backoffice/m/member_env/M_Member_envBO.java index b39ab32..915020c 100644 --- a/src/main/java/com/backoffice/m/member_env/M_Member_envBO.java +++ b/src/main/java/com/backoffice/m/member_env/M_Member_envBO.java @@ -25,4 +25,7 @@ public interface M_Member_envBO { public abstract int delete_tbl_favorite_word(DataMap paramMap) throws Exception; public abstract int insert_tbl_favorite_word(DataMap paramMap) throws Exception; + + public abstract int insert_tbl_music(DataMap paramMap) throws Exception; + public abstract int delete_tbl_music(DataMap paramMap) throws Exception; } diff --git a/src/main/java/com/backoffice/m/member_env/M_Member_envBOImpl.java b/src/main/java/com/backoffice/m/member_env/M_Member_envBOImpl.java index 1f049ae..af0d368 100644 --- a/src/main/java/com/backoffice/m/member_env/M_Member_envBOImpl.java +++ b/src/main/java/com/backoffice/m/member_env/M_Member_envBOImpl.java @@ -241,4 +241,54 @@ public class M_Member_envBOImpl extends AbstractBOManager implements M_Member_en return result; } + + /** + * 사용자 음악파일 등록 - snut97 + * @param paramMap + * @return + * @throws Exception + */ + public int insert_tbl_music(DataMap paramMap) throws Exception{ + int result = 0; + + try { + generalDAO.setNamespace(SQLMAP_NAMESPACE); + generalDAO.startTransaction(); + + result = generalDAO.update("insert_tbl_music", paramMap); + + generalDAO.commitTransaction(); + } catch (SQLException e) { + throw e; + }finally{ + generalDAO.endTransaction(); + } + + return result; + } + + /** + * 사용자 음악파일 삭제 - snut97 + * @param paramMap + * @return + * @throws Exception + */ + public int delete_tbl_music(DataMap paramMap) throws Exception{ + int result = 0; + + try { + generalDAO.setNamespace(SQLMAP_NAMESPACE); + generalDAO.startTransaction(); + + result = generalDAO.update("delete_tbl_music", paramMap); + + generalDAO.commitTransaction(); + } catch (SQLException e) { + throw e; + }finally{ + generalDAO.endTransaction(); + } + + return result; + } } diff --git a/src/main/java/com/backoffice/m/member_env/M_Member_envController.java b/src/main/java/com/backoffice/m/member_env/M_Member_envController.java index 7b5537b..71931be 100644 --- a/src/main/java/com/backoffice/m/member_env/M_Member_envController.java +++ b/src/main/java/com/backoffice/m/member_env/M_Member_envController.java @@ -1,9 +1,7 @@ package com.backoffice.m.member_env; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; +import java.io.File; +import java.util.*; import java.util.Map.Entry; import javax.servlet.http.HttpServletRequest; @@ -18,7 +16,10 @@ import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.servlet.mvc.support.RedirectAttributes; import com.backoffice.admin.member.member_confirm.A_Member_confirmBO; @@ -616,7 +617,6 @@ public class M_Member_envController extends AbstractControllerManager{ }else{ log.info("--------------- 레코드 ---------------"); - HttpSession session = request.getSession(false); DataMap rm_mem = (DataMap) session.getAttribute(ConstantSystem.SESSION_RM_MEMBER); @@ -643,4 +643,57 @@ public class M_Member_envController extends AbstractControllerManager{ return result; } + + @RequestMapping(value = "/saveMusicFile", method = RequestMethod.POST) + @ResponseBody + public Map saveMusicFile(MultipartHttpServletRequest request) { + HashMap result = new HashMap(); + result.put("RESULT", ConstantResultCode.RESULT_INIT); + + M_Util gmUtil = new M_Util(); + HttpSession session = request.getSession(false); + + String delList = request.getParameter("delList"); //삭제 음악파일 목록(콤마구분) + String modList = request.getParameter("modList"); //수정 음악파일 목록(콤마구분) + + List fileList = request.getFiles("file[]"); //파일 목록 + String path = "e:/bf/music/"; //업로드 경로 -> 추후 프로퍼티로 빼야함. + String nFileName = gmUtil.getUniqueNumber(); //업로드 파일명 + + int idx = 0; + DataMap rm_mem = (DataMap) session.getAttribute(ConstantSystem.SESSION_RM_MEMBER); + + //해당 사용자의 디렉토리가 없으면 생성 + File uploadPath = new File(path + "/" + rm_mem.get("member_id")); + if (!uploadPath.exists()) + uploadPath.mkdirs(); + + try { + int uploadResultCnt = 0; + for (MultipartFile mf : fileList) { + idx = idx + 1; + String originFileName = mf.getOriginalFilename(); // 원본 파일 명 + String fileType = originFileName.substring(originFileName.lastIndexOf(".") + 1); + String saveFileName = nFileName + "_" + idx + "." + fileType; //저장된 음악 파일명 + String filePath = path + "/" + rm_mem.get("member_id"); //저장파일 위치 + mf.transferTo(new File(filePath, saveFileName)); + + DataMap paramMap = new DataMap(); + paramMap.put("member_id", rm_mem.get("member_id")); + paramMap.put("music_file_path", filePath); + paramMap.put("music_name", originFileName); + + //작업기준정보 DB 등록 + int result1 = member_envBO.insert_tbl_music(paramMap); + uploadResultCnt++; + } + + } catch (Exception e) { + result.put("RESULT", ConstantResultCode.RESULT_EXCEPTION); + e.printStackTrace(); + } + + return result; + } + } diff --git a/src/main/java/com/backoffice/m/util/M_Util.java b/src/main/java/com/backoffice/m/util/M_Util.java index 0d23f51..5afc371 100644 --- a/src/main/java/com/backoffice/m/util/M_Util.java +++ b/src/main/java/com/backoffice/m/util/M_Util.java @@ -5,11 +5,8 @@ import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLDecoder; -import java.util.ArrayList; -import java.util.Enumeration; -import java.util.Iterator; -import java.util.List; -import java.util.Map; +import java.text.SimpleDateFormat; +import java.util.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; @@ -414,4 +411,47 @@ public class M_Util { } return paramMap; } + + private static long dummy = 0l; + /** + * 시간 값을 이용하여 20자리 고유 문자열 반환 + * + * @return 숫자형태의 문자 + */ + public String getUniqueNumber() { + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); // 17 characters + String sReturn = sdf.format(Calendar.getInstance().getTime()); + try { + ++dummy; + } + catch (Exception e) { + dummy = 0; + } + sReturn += padLeft(String.valueOf(dummy % 1000), 3, '0'); + + return sReturn; + } + + /** + * 문자열 왼쪽 패딩
+ * @param value 적용시킬 문자열 + * @param width 패딩 길이 + * @param paddingChar 채울 문자 + * @return 왼쪽으로 패딩된 문자열 + */ + public String padLeft(String value, int width, char paddingChar) { + try { + if (value.length() >= width) + return value; + + String sReturn = value; + while (sReturn.length() < width) + sReturn = String.valueOf(paddingChar) + sReturn; + + return sReturn; + } + catch (Exception e) { + return ""; + } + } } \ No newline at end of file diff --git a/src/main/resources/sqlmap/m/member_env/com.backoffice.m.member_env.xml b/src/main/resources/sqlmap/m/member_env/com.backoffice.m.member_env.xml index 110060a..a21bd1f 100644 --- a/src/main/resources/sqlmap/m/member_env/com.backoffice.m.member_env.xml +++ b/src/main/resources/sqlmap/m/member_env/com.backoffice.m.member_env.xml @@ -133,6 +133,29 @@ ); + + + INSERT INTO tbl_music + ( + member_id, + music_file_path, + music_name, + reg_dt + ) + VALUES + ( + #member_id#, + #music_file_path#, + #music_name#, + now() + ); + + + + + DELETE FROM tbl_music WHERE member_id = #member_id# and idx = #idx# + + DELETE FROM tbl_favorite_word WHERE member_id = #member_id# diff --git a/src/main/webapp/META-INF/context.xml b/src/main/webapp/META-INF/context.xml index 9809592..96cbd91 100644 --- a/src/main/webapp/META-INF/context.xml +++ b/src/main/webapp/META-INF/context.xml @@ -1,6 +1,6 @@ - + diff --git a/src/main/webapp/WEB-INF/views/ftl/m/member_env/view_set_music.ftl b/src/main/webapp/WEB-INF/views/ftl/m/member_env/view_set_music.ftl index 41a25d1..28dcf29 100644 --- a/src/main/webapp/WEB-INF/views/ftl/m/member_env/view_set_music.ftl +++ b/src/main/webapp/WEB-INF/views/ftl/m/member_env/view_set_music.ftl @@ -17,8 +17,11 @@
<#list model['music_list'] as item> -
- +
+ +
@@ -78,13 +81,19 @@ }) function fncAddItem() { + var size = $("input[name='attachFile']").length; + + if(size >=5) { + Swal.fire({text: '음악파일은 5개까지 설정 가능합니다.'}); + return; + } + $(".set_list_wrap").append("
" + - "" + - "
") + "") } function fncModify(e) { - $(e).parent().find(".word_list").prop("readonly", false); + $(e).parent().find(".fileSpan").show(); } function fncRemove(e) { diff --git a/개발참고.txt b/개발참고.txt index 8b3375d..ca00edb 100644 --- a/개발참고.txt +++ b/개발참고.txt @@ -21,4 +21,15 @@ 10. O 유축(BF_NU_TP_14) : 유축량 11. O 젖병(BF_NU_TP_2) : 젖병 섭취량 12. X 체온(BF_NU_TP_15) : 체온 - 13. O 홈페이드 이유식(BF_NU_TP_9) : 홈메이드 이유식 종류 및 섭취량 \ No newline at end of file + 13. O 홈페이드 이유식(BF_NU_TP_9) : 홈메이드 이유식 종류 및 섭취량 + +# 음악설정 파일 등록절차 + 1. 삭제시에는 삭제키를 List로 넘겨서 배열에서 삭제. + 2. 추가시에는 해당 파일을 신규로 등록 + 3. 수정시에는 해당키 삭제후 해당 파일 신규로 등록 + + +# 세션 회원정보 + HttpSession session = request.getSession(false); + DataMap rm_mem = (DataMap) session.getAttribute(ConstantSystem.SESSION_RM_MEMBER); + paramMap.put("member_id", rm_mem.get("member_id")); \ No newline at end of file