하석형 하석형 05-30
250530 하석형 스토리지 방식 설정
@0ba6e2d84b59e25011339dfde9999147eaf66731
 
src/main/java/com/takensoft/cms/loginPolicy/dao/StorageModeDAO.java (added)
+++ src/main/java/com/takensoft/cms/loginPolicy/dao/StorageModeDAO.java
@@ -0,0 +1,32 @@
+package com.takensoft.cms.loginPolicy.dao;
+
+import com.takensoft.cms.loginPolicy.vo.StorageModeVO;
+import org.egovframe.rte.psl.dataaccess.mapper.Mapper;
+
+/**
+ * @author 하석형
+ * @since 2025.05.30
+ * @modification
+ *     since    |    author    | description
+ *  2025.05.30  |    하석형     | 최초 등록
+ *
+ * 스토리지 방식 관련 DAO
+ */
+@Mapper("storageModeDAO")
+public interface StorageModeDAO {
+
+    /**
+     * @return String - 스토리지 방식 사용 여부
+     *
+     * 스토리지 방식 조회
+     */
+    String findLatestStorageMode();
+
+    /**
+     * @param storageModeVO - 스토리지 방식 정보
+     * @return int - 스토리지 방식 등록 결과
+     *
+     * 스토리지 방식 등록
+     */
+    int save(StorageModeVO storageModeVO);
+}
 
src/main/java/com/takensoft/cms/loginPolicy/service/StorageModeService.java (added)
+++ src/main/java/com/takensoft/cms/loginPolicy/service/StorageModeService.java
@@ -0,0 +1,33 @@
+package com.takensoft.cms.loginPolicy.service;
+
+import com.takensoft.cms.loginPolicy.vo.StorageModeVO;
+
+/**
+ * @author 하석형
+ * @since 2025.05.30
+ * @modification
+ *     since    |    author    | description
+ *  2025.05.30  |    하석형     | 최초 등록
+ *
+ * 스토리지 방식 관련 인터페이스
+ */
+public interface StorageModeService {
+
+    /**
+     *
+     * @return boolean - 스토리지 방식 사용 여부 조회
+     *
+     * 스토리지 방식 조회
+     */
+    public String findByStorageMode();
+
+    /**
+     * @param storageModeVO - 스토리지 방식 정보
+     * @return int - 스토리지 방식 등록 결과
+     *
+     * 스토리지 방식 등록
+     */
+    public int storageModeSave(StorageModeVO storageModeVO);
+
+
+}(파일 끝에 줄바꿈 문자 없음)
 
src/main/java/com/takensoft/cms/loginPolicy/service/impl/StorageModeServiceImpl.java (added)
+++ src/main/java/com/takensoft/cms/loginPolicy/service/impl/StorageModeServiceImpl.java
@@ -0,0 +1,87 @@
+package com.takensoft.cms.loginPolicy.service.impl;
+
+import com.takensoft.cms.loginPolicy.dao.StorageModeDAO;
+import com.takensoft.cms.loginPolicy.service.StorageModeService;
+import com.takensoft.cms.loginPolicy.vo.StorageModeVO;
+import com.takensoft.common.exception.CustomInsertFailException;
+import com.takensoft.common.exception.CustomNotFoundException;
+import com.takensoft.common.idgen.service.IdgenService;
+import com.takensoft.common.service.VerificationService;
+import lombok.RequiredArgsConstructor;
+import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl;
+import org.springframework.dao.DataAccessException;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author 하석형
+ * @since 2025.05.30
+ * @modification
+ *     since    |    author    | description
+ *  2025.05.30  |    하석형     | 최초 등록
+ *
+ * EgovAbstractServiceImpl : 전자정부 상속
+ * StorageModeService : 스토리지 방식 관련 인터페이스 상속
+ *
+ * 스토리지 방식 관련 인터페이스 구현체
+ */
+@Service("storageModeService")
+@RequiredArgsConstructor
+public class StorageModeServiceImpl extends EgovAbstractServiceImpl implements StorageModeService {
+
+    private final StorageModeDAO storageModeDAO;
+    private final IdgenService storageModeIdgn;
+    private final VerificationService verificationService;
+
+    /**
+     * @return String - 스토리지 방식
+     * @throws DataAccessException - db 관련 예외 발생 시
+     * @throws Exception - 그 외 예외 발생 시
+     *
+     * 스토리지 방식 조회
+     */
+    @Override
+    public String findByStorageMode() {
+        try {
+            String storageMode = storageModeDAO.findLatestStorageMode();
+            return storageMode;
+        } catch (DataAccessException dae) {
+            throw dae;
+        } catch (Exception e) {
+            throw e;
+        }
+    }
+
+    /**
+     * @param storageModeVO - 스토리지 방식 정보
+     * @return int - 스토리지 방식 등록 결과
+     * @throws CustomInsertFailException - 스토리지 방식 등록 예외 발생 시
+     * @throws DataAccessException - db 관련 예외 발생 시
+     * @throws Exception - 그 외 예외 발생 시
+     *
+     * 스토리지 방식 등록
+     */
+    @Override
+    public int storageModeSave(StorageModeVO storageModeVO) {
+        try {
+            // 등록된 토큰에서 사용자 정보 조회
+            String writer = verificationService.getCurrentUserId();
+            if (writer == null || writer.isEmpty()) {
+                throw new CustomNotFoundException("사용자 정보 조회에 실패했습니다.");
+            }
+            storageModeVO.setRgtr(writer);
+
+            storageModeVO.setStrgModeId(storageModeIdgn.getNextStringId()); // ID 자동 생성
+            int result = storageModeDAO.save(storageModeVO);
+            if(result == 0) {
+                throw new CustomInsertFailException("스토리지 방식 등록에 실패했습니다.");
+            }
+
+            return result;
+        } catch (DataAccessException dae) {
+            throw dae;
+        } catch (Exception e) {
+            throw e;
+        }
+    }
+
+}(파일 끝에 줄바꿈 문자 없음)
 
src/main/java/com/takensoft/cms/loginPolicy/vo/StorageModeVO.java (added)
+++ src/main/java/com/takensoft/cms/loginPolicy/vo/StorageModeVO.java
@@ -0,0 +1,27 @@
+package com.takensoft.cms.loginPolicy.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+/**
+ * @author 하석형
+ * @since 2025.05.30
+ * @modification
+ *     since    |    author    | description
+ *  2025.05.30  |    하석형     | 최초 등록
+ *
+ * 스토리지 방식 관련 VO
+ */
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+public class StorageModeVO {
+
+    private String strgModeId;       // 이메일 2차 인증 ID
+    private String strgMode;         // 스토리지 방식 (L: Local, S: Session)
+    private String rgtr;             // 등록자 ID
+    private String regDt;            // 등록일시
+}(파일 끝에 줄바꿈 문자 없음)
src/main/java/com/takensoft/cms/loginPolicy/web/LoginPolicyController.java
--- src/main/java/com/takensoft/cms/loginPolicy/web/LoginPolicyController.java
+++ src/main/java/com/takensoft/cms/loginPolicy/web/LoginPolicyController.java
@@ -3,9 +3,11 @@
 import com.takensoft.cms.loginPolicy.service.Email2ndAuthService;
 import com.takensoft.cms.loginPolicy.service.LoginModeService;
 import com.takensoft.cms.loginPolicy.service.LoginPolicyService;
+import com.takensoft.cms.loginPolicy.service.StorageModeService;
 import com.takensoft.cms.loginPolicy.vo.Email2ndAuthVO;
 import com.takensoft.cms.loginPolicy.vo.LoginModeVO;
 import com.takensoft.cms.loginPolicy.vo.LoginPolicyVO;
+import com.takensoft.cms.loginPolicy.vo.StorageModeVO;
 import com.takensoft.cms.mber.vo.MberVO;
 import com.takensoft.cms.token.service.RefreshTokenService;
 import com.takensoft.common.message.MessageCode;
@@ -33,6 +35,7 @@
  *     since    |    author    | description
  *  2025.03.22  |    김혜민     | 최초 등록
  *  2025.05.27  |    하석형     | findByEmail2ndAuth, saveEmail2ndAuth 추가
+ *  2025.05.30  |    하석형     | findByStorageMode, saveStorageMode 추가
  *
  * 로그인정책 관련 컨트롤러
  */
@@ -50,6 +53,7 @@
     private final RedisTemplate<String, String> redisTemplate;
     private final RefreshTokenService refreshTokenService;
     private final Email2ndAuthService email2ndAuth;
+    private final StorageModeService storageMode;
 
     /**
      *
@@ -189,4 +193,29 @@
         return resUtil.successRes(result, MessageCode.COMMON_SUCCESS);
     }
 
+    /**
+     * @return ResponseEntity - 스토리지 방식 조회 결과를 포함하는 응답
+     *
+     * 스토리지 방식 조회
+     */
+    @PostMapping("/findByStorageMode.json")
+    public ResponseEntity<?> findByStorageMode() {
+        String result = storageMode.findByStorageMode();
+
+        return resUtil.successRes(result, MessageCode.COMMON_SUCCESS);
+    }
+
+    /**
+     * @param storageModeVO - 스토리지 방식 정보
+     * @return ResponseEntity - 스토리지 방식 등록 결과를 포함하는 응답
+     *
+     * 스토리지 방식 등록
+     */
+    @PostMapping("/saveStorageMode.json")
+    public ResponseEntity<?> saveStorageMode(@RequestBody StorageModeVO storageModeVO) {
+        int result = storageMode.storageModeSave(storageModeVO);
+
+        return resUtil.successRes(result, MessageCode.COMMON_SUCCESS);
+    }
+
 }
src/main/java/com/takensoft/common/idgen/context/ContextIdgen.java
--- src/main/java/com/takensoft/common/idgen/context/ContextIdgen.java
+++ src/main/java/com/takensoft/common/idgen/context/ContextIdgen.java
@@ -190,7 +190,7 @@
         return idgenServiceImpl;
     }
 
-    // 이메일 2차 인증 관리
+    // 이메일 2차 인증
     @Bean(name = "eml2ndAuthIdgn")
     public IdgenService eml2ndAuthIdgn() {
         IdgenService idgenServiceImpl = new IdgenService();
@@ -200,4 +200,15 @@
         idgenServiceImpl.setTblNm("EML_2ND_AUTH_ID");
         return idgenServiceImpl;
     }
+
+    // 스토리지 방식
+    @Bean(name = "storageModeIdgn")
+    public IdgenService storageModeIdgn() {
+        IdgenService idgenServiceImpl = new IdgenService();
+        idgenServiceImpl.setCipers(15);
+        idgenServiceImpl.setFillChar('0');
+        idgenServiceImpl.setPrefix("STORAGE_MODE_");
+        idgenServiceImpl.setTblNm("STORAGE_MODE_ID");
+        return idgenServiceImpl;
+    }
 }
(파일 끝에 줄바꿈 문자 없음)
 
src/main/resources/mybatis/mapper/loginPolicy/storageMode-SQL.xml (added)
+++ src/main/resources/mybatis/mapper/loginPolicy/storageMode-SQL.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!--
+    작성자 : 하석형
+    작성일 : 2025.05.30
+    내 용 : 스토리지 방식 관련
+-->
+<mapper namespace="com.takensoft.cms.loginPolicy.dao.StorageModeDAO">
+
+    <!--
+        작성자 : 하석형
+        작성일 : 2025.05.30
+        내 용 : 스토리지 방식 최신값 조회
+    -->
+    <select id="findLatestStorageMode" resultType="String">
+        SELECT strg_mode
+        FROM strg_mode_hstry
+        ORDER BY reg_dt DESC
+        LIMIT 1
+    </select>
+
+    <!--
+        작성자 : 하석형
+        작성일 : 2025.05.30
+        내 용 : 스토리지 방식 등록
+    -->
+    <insert id="save" parameterType="StorageModeVO">
+        INSERT INTO strg_mode_hstry (
+            strg_mode_id,
+            strg_mode,
+            rgtr,
+            reg_dt
+        )
+        VALUES (
+            #{strgModeId},
+            #{strgMode},
+            #{rgtr},
+            NOW()
+        )
+    </insert>
+
+</mapper>(파일 끝에 줄바꿈 문자 없음)
Add a comment
List