홍아랑 홍아랑 2024-07-26
240726 홍아랑 파일 정보 조회 관련 코드 추가
@af48becee5ffd1c98b87361581871e73c644528a
src/main/java/com/takensoft/ai_lms/common/confing/SecurityConfig.java
--- src/main/java/com/takensoft/ai_lms/common/confing/SecurityConfig.java
+++ src/main/java/com/takensoft/ai_lms/common/confing/SecurityConfig.java
@@ -64,6 +64,7 @@
                 .requestMatchers("/test/**").permitAll()
                 .requestMatchers("/studentInfo/**").permitAll() // 학생 정보 진입 허용(민수)
                 .requestMatchers("/board/**").permitAll() // 게시판 정보 진입 허용
+                .requestMatchers("/book/**").permitAll() // 교재 정보 진입 허용
                 .requestMatchers("/file/**").permitAll() // 게시판 정보 진입 허용
                 .anyRequest().authenticated()); // 나머지 경로는 인증 필요
 
src/main/java/com/takensoft/ai_lms/lms/board/dao/BoardDAO.java
--- src/main/java/com/takensoft/ai_lms/lms/board/dao/BoardDAO.java
+++ src/main/java/com/takensoft/ai_lms/lms/board/dao/BoardDAO.java
@@ -35,4 +35,8 @@
     // 게시글 삭제
     int deleteBoard(String bbsId) throws Exception;
 
+    // 게시글 검색
+    List<HashMap<String, Object>> searchBoard(HashMap<String, Object> params) throws Exception;
+
+
 }
src/main/java/com/takensoft/ai_lms/lms/board/service/BoardService.java
--- src/main/java/com/takensoft/ai_lms/lms/board/service/BoardService.java
+++ src/main/java/com/takensoft/ai_lms/lms/board/service/BoardService.java
@@ -31,4 +31,7 @@
 
     // 게시글 삭제
     int deleteBoard(String bbsId) throws Exception;
+
+    // 게시글 검색
+    List<HashMap<String, Object>> searchBoard(HashMap<String, Object> params) throws Exception;
 }
src/main/java/com/takensoft/ai_lms/lms/board/service/impl/BoardServiceImpl.java
--- src/main/java/com/takensoft/ai_lms/lms/board/service/impl/BoardServiceImpl.java
+++ src/main/java/com/takensoft/ai_lms/lms/board/service/impl/BoardServiceImpl.java
@@ -65,6 +65,12 @@
         return boardDAO.deleteBoard(bbsId);
     }
 
+    // 게시글 검색
+    @Override
+    public List<HashMap<String, Object>> searchBoard(HashMap<String, Object> params) throws Exception {
+        return boardDAO.searchBoard(params);
+    }
+
 
 
 
src/main/java/com/takensoft/ai_lms/lms/board/web/BoardController.java
--- src/main/java/com/takensoft/ai_lms/lms/board/web/BoardController.java
+++ src/main/java/com/takensoft/ai_lms/lms/board/web/BoardController.java
@@ -11,6 +11,7 @@
 import org.springframework.web.bind.annotation.*;
 
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -128,6 +129,22 @@
         }
     }
 
+    /**
+     * @author 박세훈
+     * @since 2024.07.26
+     *
+     * 게시글 검색
+     */
+
+    @PostMapping("/search.json")
+    public ResponseEntity<?> searchBoard(@RequestBody HashMap<String, Object> params) throws Exception {
+        HashMap<String, Object> result = new HashMap<>();
+
+        List<HashMap<String, Object>> boardList = boardService.searchBoard(params);
+        result.put("list", boardList);
+        return new ResponseEntity<>(result, HttpStatus.OK);
+    }
+
 
 
 }
 
src/main/java/com/takensoft/ai_lms/lms/book/dao/BookDAO.java (added)
+++ src/main/java/com/takensoft/ai_lms/lms/book/dao/BookDAO.java
@@ -0,0 +1,56 @@
+package com.takensoft.ai_lms.lms.book.dao;
+
+import com.takensoft.ai_lms.lms.book.vo.BookVO;
+import org.egovframe.rte.psl.dataaccess.mapper.Mapper;
+
+import java.util.List;
+
+/**
+ * @author  : 구자현
+ * @since   : 2024.07.25
+ *
+ * 교재 관련 Mapper
+ */
+@Mapper("bookDAO")
+public interface BookDAO {
+
+    /**
+     * @author  : 구자현
+     * @since   : 2024.07.25
+     *
+     * 전체 교재 목록 출력
+     */
+    List<BookVO> getAllBooks();
+
+    /**
+     * @author  : 구자현
+     * @since   : 2024.07.25
+     *
+     * 책의 상세 정보
+     */
+    BookVO getBookById(String book_id);
+
+    /**
+     * @author  : 구자현
+     * @since   : 2024.07.25
+     *
+     * 교재 등록
+     */
+    void insertBook(BookVO book);
+
+    /**
+     * @author  : 구자현
+     * @since   : 2024.07.25
+     *
+     * 교재 제목 수정
+     */
+    void updateBook(BookVO book);
+
+    /**
+     * @author  : 구자현
+     * @since   : 2024.07.25
+     *
+     * 교재 삭제
+     */
+    void deleteBook(String book_id);
+}
 
src/main/java/com/takensoft/ai_lms/lms/book/service/BookService.java (added)
+++ src/main/java/com/takensoft/ai_lms/lms/book/service/BookService.java
@@ -0,0 +1,53 @@
+package com.takensoft.ai_lms.lms.book.service;
+
+import com.takensoft.ai_lms.lms.book.vo.BookVO;
+import java.util.List;
+
+/**
+ * @author  : 구자현
+ * @since   : 2024.07.25
+ *
+ * 교재 관련 Service 클래스
+ */
+public interface BookService {
+
+    /**
+     * @author  : 구자현
+     * @since   : 2024.07.25
+     *
+     * 전체 교재 목록 출력
+     */
+    List<BookVO> getAllBooks();
+
+    /**
+     * @author  : 구자현
+     * @since   : 2024.07.25
+     *
+     * 책의 상세 정보
+     */
+    BookVO getBookById(String book_id);
+
+    /**
+     * @author  : 구자현
+     * @since   : 2024.07.25
+     *
+     * 교재 등록
+     */
+    void insertBook(BookVO book);
+
+    /**
+     * @author  : 구자현
+     * @since   : 2024.07.25
+     *
+     * 교재 제목 수정
+     */
+    void updateBook(BookVO book);
+
+    /**
+     * @author  : 구자현
+     * @since   : 2024.07.25
+     *
+     * 교재 삭제
+     */
+    void deleteBook(String book_id);
+}
 
src/main/java/com/takensoft/ai_lms/lms/book/service/Impl/BookServiceImpl.java (added)
+++ src/main/java/com/takensoft/ai_lms/lms/book/service/Impl/BookServiceImpl.java
@@ -0,0 +1,82 @@
+package com.takensoft.ai_lms.lms.book.service.Impl;
+
+import com.takensoft.ai_lms.common.idgen.service.IdgenService;
+import com.takensoft.ai_lms.lms.book.dao.BookDAO;
+import com.takensoft.ai_lms.lms.book.service.BookService;
+import com.takensoft.ai_lms.lms.book.vo.BookVO;
+import lombok.RequiredArgsConstructor;
+import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl;
+import org.springframework.stereotype.Service;
+import java.util.List;
+
+/**
+ * @author  : 구자현
+ * @since   : 2024.07.25
+ *
+ * 교재 관련 ServiceImpl 클래스
+ */
+@Service
+@RequiredArgsConstructor
+public class BookServiceImpl extends EgovAbstractServiceImpl implements BookService {
+
+    private final BookDAO bookDAO;
+
+    private final IdgenService bookIdgn;
+
+    /**
+     * @author  : 구자현
+     * @since   : 2024.07.25
+     *
+     * 전체 교재 목록 출력
+     */
+    @Override
+    public List<BookVO> getAllBooks() {
+        return bookDAO.getAllBooks();
+    }
+
+    /**
+     * @author  : 구자현
+     * @since   : 2024.07.25
+     *
+     * 책의 상세 정보
+     */
+    @Override
+    public BookVO getBookById(String book_id) {
+        return bookDAO.getBookById(book_id);
+    }
+
+    /**
+     * @author  : 구자현
+     * @since   : 2024.07.25
+     *
+     * 교재 등록
+     */
+    @Override
+    public void insertBook(BookVO book) {
+        String book_id = bookIdgn.getNextStringId();
+        book.setBook_id(book_id);
+        bookDAO.insertBook(book);
+    }
+
+    /**
+     * @author  : 구자현
+     * @since   : 2024.07.25
+     *
+     * 교재 제목 수정
+     */
+    @Override
+    public void updateBook(BookVO book) {
+        bookDAO.updateBook(book);
+    }
+
+    /**
+     * @author  : 구자현
+     * @since   : 2024.07.25
+     *
+     * 교재 삭제
+     */
+    @Override
+    public void deleteBook(String book_id) {
+        bookDAO.deleteBook(book_id);
+    }
+}(No newline at end of file)
 
src/main/java/com/takensoft/ai_lms/lms/book/vo/BookVO.java (added)
+++ src/main/java/com/takensoft/ai_lms/lms/book/vo/BookVO.java
@@ -0,0 +1,23 @@
+package com.takensoft.ai_lms.lms.book.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+/**
+ * @author  : 구자현
+ * @since   : 2024.07.25
+ *
+ * 교재 관련 VO
+ */
+@Setter
+@Getter
+@NoArgsConstructor
+@AllArgsConstructor
+public class BookVO {
+    // 교재 아이디
+    private String book_id;
+    // 교재 제목
+    private String book_nm;
+}
 
src/main/java/com/takensoft/ai_lms/lms/book/web/BookController.java (added)
+++ src/main/java/com/takensoft/ai_lms/lms/book/web/BookController.java
@@ -0,0 +1,77 @@
+package com.takensoft.ai_lms.lms.book.web;
+
+import com.takensoft.ai_lms.lms.book.service.Impl.BookServiceImpl;
+import com.takensoft.ai_lms.lms.book.vo.BookVO;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * @author  : 구자현
+ * @since   : 2024.07.25
+ *
+ * 교재 관련 Controller 클래스
+ */
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/book")
+public class BookController {
+
+    private final BookServiceImpl bookServiceImpl;
+
+    /**
+     * @author  : 구자현
+     * @since   : 2024.07.25
+     *
+     * 전체 교재 목록 출력
+     */
+    @GetMapping
+    public List<BookVO> getAllBooks() {
+        return bookServiceImpl.getAllBooks();
+    }
+
+    /**
+     * @author  : 구자현
+     * @since   : 2024.07.25
+     *
+     * 책의 상세 정보
+     */
+    @GetMapping("/{book_id}")
+    public BookVO getBookById(@PathVariable String book_id) {
+        return bookServiceImpl.getBookById(book_id);
+    }
+
+    /**
+     * @author  : 구자현
+     * @since   : 2024.07.25
+     *
+     * 교재 등록
+     */
+    @PostMapping
+    public void insertBook(@RequestBody BookVO book) {
+        bookServiceImpl.insertBook(book);
+    }
+
+    /**
+     * @author  : 구자현
+     * @since   : 2024.07.25
+     *
+     * 교재 제목 수정
+     */
+    @PutMapping
+    public void updateBook(@RequestBody BookVO book) {
+        bookServiceImpl.updateBook(book);
+    }
+
+    /**
+     * @author  : 구자현
+     * @since   : 2024.07.25
+     *
+     * 교재 삭제
+     */
+    @DeleteMapping("/{book_id}")
+    public void deleteBook(@PathVariable String book_id) {
+        bookServiceImpl.deleteBook(book_id);
+    }
+}(No newline at end of file)
src/main/java/com/takensoft/ai_lms/lms/student/dao/StudentInfoDAO.java
--- src/main/java/com/takensoft/ai_lms/lms/student/dao/StudentInfoDAO.java
+++ src/main/java/com/takensoft/ai_lms/lms/student/dao/StudentInfoDAO.java
@@ -4,6 +4,8 @@
 import org.apache.ibatis.annotations.Param;
 import org.egovframe.rte.psl.dataaccess.mapper.Mapper;
 
+import java.util.List;
+
 /**
  * @author 권민수
  * @since 2024.07.25
src/main/java/com/takensoft/ai_lms/lms/student/service/Impl/StudentInfoServiceImpl.java
--- src/main/java/com/takensoft/ai_lms/lms/student/service/Impl/StudentInfoServiceImpl.java
+++ src/main/java/com/takensoft/ai_lms/lms/student/service/Impl/StudentInfoServiceImpl.java
@@ -6,6 +6,8 @@
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * @author 권민수
  * @since 2024.07.25
 
src/main/java/com/takensoft/ai_lms/lms/student/vo/HistoryVO.java (added)
+++ src/main/java/com/takensoft/ai_lms/lms/student/vo/HistoryVO.java
@@ -0,0 +1,25 @@
+package com.takensoft.ai_lms.lms.student.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.sql.Timestamp;
+
+/**
+ * @author 권민수
+ * @since 2024.07.26
+ *
+ * 학생 최근 학습 정보 VO 클래스
+ */
+
+@Getter
+@Setter
+public class HistoryVO {
+
+    private String bookId;
+    private String bookName;
+    private String unitId;
+    private String unitName;
+    private String completionTime;
+
+}
src/main/java/com/takensoft/ai_lms/lms/student/vo/StudentInfoVO.java
--- src/main/java/com/takensoft/ai_lms/lms/student/vo/StudentInfoVO.java
+++ src/main/java/com/takensoft/ai_lms/lms/student/vo/StudentInfoVO.java
@@ -3,6 +3,8 @@
 import lombok.Getter;
 import lombok.Setter;
 
+import java.util.List;
+
 /**
  * @author 권민수
  * @since 2024.07.25
@@ -13,11 +15,13 @@
 @Setter
 @Getter
 public class StudentInfoVO {
+
     private String studentName;
     private String institutionName;
-    private String grade;
+    private int grade;
     private String className;
     private String studentQuestion;
+    private List<HistoryVO> history;
 
 }
 
src/main/resources/mybatis/mapper/auth/auth-SQL.xml
--- src/main/resources/mybatis/mapper/auth/auth-SQL.xml
+++ src/main/resources/mybatis/mapper/auth/auth-SQL.xml
@@ -66,7 +66,6 @@
                          , use_at
                          , reg
                          , regist_dt
-                        , ednst_id
                   )VALUES( #{usid}
                          , #{loginId}
                          , #{password}
@@ -76,7 +75,6 @@
                          , 'Y'
                          , #{reg}
                          , now()
-                        , '1'
         );
     </insert>
     <!--
src/main/resources/mybatis/mapper/lms/board-SQL.xml
--- src/main/resources/mybatis/mapper/lms/board-SQL.xml
+++ src/main/resources/mybatis/mapper/lms/board-SQL.xml
@@ -45,7 +45,7 @@
         내 용 : 게시글 전체 조회
     -->
     <select id="findAllBoard"  resultMap="boardMap">
-        SELECT bbs_id, bbs_ttl, bbs_cls, bbs_cnt,bbs_tm, file_mng_id, scls_id
+        SELECT *
         FROM board
         WHERE scls_id = #{sclsId}
         ORDER BY bbs_id DESC
@@ -58,7 +58,7 @@
         내 용 : 게시글 상세 조회
     -->
     <select id="findByBoardId" parameterType="BoardVO" resultMap="boardMap">
-        SELECT bbs_id, bbs_ttl, bbs_cls, bbs_cnt,bbs_tm, file_mng_id
+        SELECT *
         FROM board
         WHERE bbs_id = #{bbsId}
         ORDER BY bbs_id DESC
@@ -66,6 +66,32 @@
 
     <!--
         작성자 : 박세훈
+        작성일 : 2024.07.26
+        내 용 : 게시글 검색
+    -->
+    <select id="searchBoard" parameterType="BoardVO" resultMap="boardMap">
+        SELECT *
+        FROM board
+        WHERE 1 = 1
+        <if test="option != null and keyword != null">
+            <choose>
+                <when test="option == 'bbsTitle'">
+                    AND bbs_ttl LIKE CONCAT('%', #{keyword}, '%')
+                </when>
+                <when test="option == 'bbsCategory'">
+                    AND bbs_cls LIKE CONCAT('%', #{keyword}, '%')
+                </when>
+                <otherwise>
+                    AND bbs_cnt LIKE CONCAT('%', #{keyword}, '%')
+                </otherwise>
+            </choose>
+        </if>
+        ORDER BY bbs_id DESC
+        LIMIT #{pageSize} OFFSET #{startIndex}
+    </select>
+
+    <!--
+        작성자 : 박세훈
         작성일 : 2024.07.25
         내 용 : 게시글 수정
     -->
 
src/main/resources/mybatis/mapper/lms/book-SQL.xml (added)
+++ src/main/resources/mybatis/mapper/lms/book-SQL.xml
@@ -0,0 +1,65 @@
+<?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">
+<mapper namespace="com.takensoft.ai_lms.lms.book.dao.BookDAO">
+
+    <resultMap id="bookMap" type="BookVO">
+        <result property="book_id" column="book_id"/>
+        <result property="book_nm" column="book_nm"/>
+    </resultMap>
+
+    <!--
+        작 성 자 : 구자현
+        작 성 일 : 2024.07.25
+        내   용 : 전체 교재 목록 출력
+    -->
+    <select id="getAllBooks" resultMap="bookMap">
+        SELECT
+            book_id,
+            book_nm
+         FROM book
+    </select>
+
+    <!--
+        작 성 자 : 구자현
+        작 성 일 : 2024.07.25
+        내   용 : 책의 상세 정보
+    -->
+    <select id="getBookById" parameterType="String" resultMap="bookMap">
+        SELECT
+            book_id,
+            book_nm
+         FROM book
+        WHERE book_id = #{book_id}
+    </select>
+
+    <!--
+        작 성 자 : 구자현
+        작 성 일 : 2024.07.25
+        내   용 : 교재 등록
+    -->
+    <insert id="insertBook" parameterType="bookVO">
+        INSERT INTO book (book_id, book_nm)
+             VALUES (#{book_id}, #{book_nm})
+    </insert>
+
+    <!--
+        작 성 자 : 구자현
+        작 성 일 : 2024.07.25
+        내   용 : 교재 제목 수정
+    -->
+    <update id="updateBook" parameterType="bookVO">
+        UPDATE book
+           SET book_nm = #{book_nm}
+         WHERE book_id = #{book_id}
+    </update>
+
+    <!--
+        작 성 자 : 구자현
+        작 성 일 : 2024.07.25
+        내   용 : 교재 삭제
+    -->
+    <delete id="deleteBook" parameterType="String">
+        DELETE FROM book
+         WHERE book_id = #{book_id}
+    </delete>
+</mapper>(No newline at end of file)
 
src/main/resources/mybatis/mapper/lms/change.xml (deleted)
--- src/main/resources/mybatis/mapper/lms/change.xml
@@ -1,14 +0,0 @@
-<?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">
-<mapper namespace="com.takensoft.ai_lms.lms.test.dao.TestDAO">
-    <!--
-        작 성 자 : 박민혁
-        작 성 일 : 2024.07.25
-        내   용 : 경로 생성을 위해 만들어 놓은 xml,
-        CRUD를 이용하는데 삭제하거나 수정해서 사용해주세요
-    -->
-    <select id="testList" resultType="HashMap">
-        SELECT test_data
-        FROM test_info
-    </select>
-</mapper>(No newline at end of file)
src/main/resources/mybatis/mapper/lms/student-SQL.xml
--- src/main/resources/mybatis/mapper/lms/student-SQL.xml
+++ src/main/resources/mybatis/mapper/lms/student-SQL.xml
@@ -14,20 +14,46 @@
         <result property="grade" column="grade"/>
         <result property="className" column="className"/>
         <result property="studentQuestion" column="studentQuestion"/>
+        <collection property="history" ofType="com.takensoft.ai_lms.lms.student.vo.HistoryVO">
+            <result property="bookName" column="bookName"/>
+            <result property="bookId" column="bookId"/>
+            <result property="unitName" column="unitName"/>
+            <result property="unitId" column="unitId"/>
+            <result property="completionTime" column="completionTime"/>
+        </collection>
     </resultMap>
 
-    <select id="getStudentInfo" resultType="com.takensoft.ai_lms.lms.student.vo.StudentInfoVO">
+    <select id="getStudentInfo" resultMap="StudentInfoResultMap">
         SELECT
             u.user_nm AS studentName,
             i.ednst_nm AS institutionName,
-            g.grd_no AS grade,
-            c.scls_nm AS className,
-            uc.stn_qna AS studentQuestion
+            ui.grd_no AS grade,
+            ui.scls_nm AS className,
+            uc.stn_qna AS studentQuestion,
+            hu.book_id AS bookId,
+            hu.book_nm AS bookName,
+            hu.unit_id AS unitId,
+            hu.unit_nm AS unitName,
+            hu.cmptn_tm AS completionTime
         FROM users u
-                 JOIN institution i ON u.ednst_id = i.ednst_id
+                 JOIN user_institution ui ON u.user_id = ui.user_id
+                 JOIN institution i ON ui.ednst_id = i.ednst_id
                  JOIN user_class uc ON u.user_id = uc.user_id
-                 JOIN class c ON uc.scls_id = c.scls_id
-                 JOIN grade g ON c.sgrd_id = g.sgrd_id
+                 LEFT JOIN (
+            SELECT
+                uu.user_id,
+                b.book_id,
+                b.book_nm,
+                un.unit_id,
+                un.unit_nm,
+                uu.cmptn_tm
+            FROM user_unit uu
+                     JOIN unit un ON uu.unit_id = un.unit_id
+                     JOIN book b ON un.book_id = b.book_id
+            WHERE uu.user_id = #{userId}
+            ORDER BY uu.cmptn_tm DESC
+                LIMIT 3
+        ) hu ON u.user_id = hu.user_id
         WHERE u.user_id = #{userId}
     </select>
 
src/main/resources/mybatis/mapper/test/test-SQL.xml
--- src/main/resources/mybatis/mapper/test/test-SQL.xml
+++ src/main/resources/mybatis/mapper/test/test-SQL.xml
@@ -4,7 +4,7 @@
     <!--
         작 성 자 : 방선주
         작 성 일 : 2024.07.05
-        내   용 : 테스트 xml
+        내   용 : 테스트 xml2
     -->
     <select id="testList" resultType="HashMap">
         SELECT test_data
Add a comment
List