woals
07-30
240730 권민수 지문 이름 단어장 검색 기능 추가, 단어 CRUD 추가
@7b375d3f3562018eba55af0297cfb41bc5cdb3d4
--- src/main/java/com/takensoft/ai_lms/common/confing/SecurityConfig.java
+++ src/main/java/com/takensoft/ai_lms/common/confing/SecurityConfig.java
... | ... | @@ -73,7 +73,8 @@ |
73 | 73 |
.requestMatchers("/unitLearning/**").permitAll() // 로드맵 정보 진입 허용 |
74 | 74 |
.requestMatchers("/unit/**").permitAll() |
75 | 75 |
.requestMatchers("/photo/**").permitAll() |
76 |
- .requestMatchers("/wordbook/**").permitAll() |
|
76 |
+ .requestMatchers("/wordbook/**").permitAll() // 단어장 정보 진입 허용 |
|
77 |
+ .requestMatchers("/word/**").permitAll() // 단어 정보 진입 허용 |
|
77 | 78 |
.requestMatchers("/survey/**").permitAll() |
78 | 79 |
.anyRequest().authenticated()); // 나머지 경로는 인증 필요 |
79 | 80 |
|
--- src/main/java/com/takensoft/ai_lms/lms/word_book/dao/WordBookDAO.java
+++ src/main/java/com/takensoft/ai_lms/lms/word_book/dao/WordBookDAO.java
... | ... | @@ -30,4 +30,7 @@ |
30 | 30 |
// 단어장 삭제 |
31 | 31 |
int deleteWordBook(String wdBookId); |
32 | 32 |
|
33 |
+ // 단어장 검색(지문 이름으로 검색) |
|
34 |
+ List<WordBookVO> getWordBooksByTextTitle(String textTitle); |
|
35 |
+ |
|
33 | 36 |
} |
+++ src/main/java/com/takensoft/ai_lms/lms/word_book/dao/WordDAO.java
... | ... | @@ -0,0 +1,32 @@ |
1 | +package com.takensoft.ai_lms.lms.word_book.dao; | |
2 | + | |
3 | +import com.takensoft.ai_lms.lms.word_book.vo.WordVO; | |
4 | +import org.egovframe.rte.psl.dataaccess.mapper.Mapper; | |
5 | + | |
6 | +import java.util.List; | |
7 | + | |
8 | +/** | |
9 | + * @author 권민수 | |
10 | + * @since 2024.07.30 | |
11 | + * | |
12 | + * 단어 정보 DAO 클래스 | |
13 | + */ | |
14 | + | |
15 | +@Mapper("wordDAO") | |
16 | +public interface WordDAO { | |
17 | + | |
18 | + // 단어장에 해당하는 모든 단어 목록 조회 | |
19 | + List<WordVO> getWordsByBookId(String wdBookId); | |
20 | + | |
21 | + // 단어 등록 | |
22 | + void insertWord(WordVO word); | |
23 | + | |
24 | + // 단어 수정 | |
25 | + void updateWord(WordVO word); | |
26 | + | |
27 | + // 단어 삭제 | |
28 | + void deleteWord(String wdId); | |
29 | + | |
30 | + // String generateWordId(); | |
31 | + | |
32 | +} |
--- src/main/java/com/takensoft/ai_lms/lms/word_book/service/Impl/WordBookServiceImpl.java
+++ src/main/java/com/takensoft/ai_lms/lms/word_book/service/Impl/WordBookServiceImpl.java
... | ... | @@ -50,4 +50,9 @@ |
50 | 50 |
public void deleteWordBook(String wdBookId) { |
51 | 51 |
wordBookDAO.deleteWordBook(wdBookId); |
52 | 52 |
} |
53 |
+ |
|
54 |
+ @Override |
|
55 |
+ public List<WordBookVO> getWordBooksByTextTitle(String textTitle) { |
|
56 |
+ return wordBookDAO.getWordBooksByTextTitle(textTitle); |
|
57 |
+ } |
|
53 | 58 |
} |
+++ src/main/java/com/takensoft/ai_lms/lms/word_book/service/Impl/WordServiceImpl.java
... | ... | @@ -0,0 +1,49 @@ |
1 | +package com.takensoft.ai_lms.lms.word_book.service.Impl; | |
2 | + | |
3 | +import com.takensoft.ai_lms.common.idgen.service.IdgenService; | |
4 | +import com.takensoft.ai_lms.lms.word_book.dao.WordDAO; | |
5 | +import com.takensoft.ai_lms.lms.word_book.service.WordService; | |
6 | +import com.takensoft.ai_lms.lms.word_book.vo.WordVO; | |
7 | +import lombok.RequiredArgsConstructor; | |
8 | +import org.springframework.stereotype.Service; | |
9 | + | |
10 | +import java.util.List; | |
11 | + | |
12 | +/** | |
13 | + * @author 권민수 | |
14 | + * @since 2024.07.30 | |
15 | + * | |
16 | + * 단어 정보 관련 서비스 | |
17 | + */ | |
18 | + | |
19 | +@Service | |
20 | +@RequiredArgsConstructor | |
21 | +public class WordServiceImpl implements WordService { | |
22 | + | |
23 | + private final WordDAO wordDAO; | |
24 | + | |
25 | + private final IdgenService wordIdgn; | |
26 | + | |
27 | + @Override | |
28 | + public List<WordVO> getWordsByBookId(String wdBookId) { | |
29 | + return wordDAO.getWordsByBookId(wdBookId); | |
30 | + } | |
31 | + | |
32 | + @Override | |
33 | + public void insertWord(WordVO word) { | |
34 | + String wordId = wordIdgn.getNextStringId(); | |
35 | + word.setWdId(wordId); | |
36 | + wordDAO.insertWord(word); | |
37 | + } | |
38 | + | |
39 | + @Override | |
40 | + public void updateWord(WordVO word) { | |
41 | + wordDAO.updateWord(word); | |
42 | + } | |
43 | + | |
44 | + @Override | |
45 | + public void deleteWord(String wdId) { | |
46 | + wordDAO.deleteWord(wdId); | |
47 | + } | |
48 | + | |
49 | +} |
--- src/main/java/com/takensoft/ai_lms/lms/word_book/service/WordBookService.java
+++ src/main/java/com/takensoft/ai_lms/lms/word_book/service/WordBookService.java
... | ... | @@ -28,4 +28,8 @@ |
28 | 28 |
// 단어장 삭제 |
29 | 29 |
void deleteWordBook(String wdBookId); |
30 | 30 |
|
31 |
+ // 단어장 검색(지문 이름으로 검색) |
|
32 |
+ List<WordBookVO> getWordBooksByTextTitle(String textTitle); |
|
33 |
+ |
|
34 |
+ |
|
31 | 35 |
} |
+++ src/main/java/com/takensoft/ai_lms/lms/word_book/service/WordService.java
... | ... | @@ -0,0 +1,28 @@ |
1 | +package com.takensoft.ai_lms.lms.word_book.service; | |
2 | + | |
3 | +import com.takensoft.ai_lms.lms.word_book.vo.WordVO; | |
4 | + | |
5 | +import java.util.List; | |
6 | + | |
7 | +/** | |
8 | + * @author 권민수 | |
9 | + * @since 2024.07.30 | |
10 | + * | |
11 | + * 단어 정보 Service 인터페이스 | |
12 | + */ | |
13 | + | |
14 | +public interface WordService { | |
15 | + | |
16 | + // 단어장에 해당하는 모든 단어 목록 조회 | |
17 | + List<WordVO> getWordsByBookId(String wdBookId); | |
18 | + | |
19 | + // 단어 등록 | |
20 | + void insertWord(WordVO word); | |
21 | + | |
22 | + // 단어 수정 | |
23 | + void updateWord(WordVO word); | |
24 | + | |
25 | + // 단어 삭제 | |
26 | + void deleteWord(String wdId); | |
27 | + | |
28 | +} |
+++ src/main/java/com/takensoft/ai_lms/lms/word_book/vo/WordVO.java
... | ... | @@ -0,0 +1,23 @@ |
1 | +package com.takensoft.ai_lms.lms.word_book.vo; | |
2 | + | |
3 | +import lombok.Getter; | |
4 | +import lombok.Setter; | |
5 | + | |
6 | +/** | |
7 | + * @author 권민수 | |
8 | + * @since 2024.07.30 | |
9 | + * | |
10 | + * 단어 정보 VO 클래스 | |
11 | + */ | |
12 | + | |
13 | +@Getter | |
14 | +@Setter | |
15 | +public class WordVO { | |
16 | + | |
17 | + private String wdId; | |
18 | + private String wdBookId; | |
19 | + private String wdNm; | |
20 | + private String wdMnng; | |
21 | + private String fileMngId; | |
22 | + | |
23 | +} |
--- src/main/java/com/takensoft/ai_lms/lms/word_book/web/WordBookController.java
+++ src/main/java/com/takensoft/ai_lms/lms/word_book/web/WordBookController.java
... | ... | @@ -24,16 +24,19 @@ |
24 | 24 |
|
25 | 25 |
final private WordBookService wordBookService; |
26 | 26 |
|
27 |
- @GetMapping("/findAll.json") |
|
27 |
+ // 단어장 전체 목록 조회 |
|
28 |
+ @PostMapping("/findAll.json") |
|
28 | 29 |
public List<WordBookVO> getAllWordBooks() { |
29 | 30 |
return wordBookService.getAllWordBooks(); |
30 | 31 |
} |
31 | 32 |
|
33 |
+ // 아이디에 해당하는 단어장 조회 |
|
32 | 34 |
@PostMapping("/find.json") |
33 | 35 |
public WordBookVO getWordBookById(@RequestBody WordBookVO wordBook) { |
34 | 36 |
return wordBookService.getWordBookById(wordBook.getWdBookId()); |
35 | 37 |
} |
36 | 38 |
|
39 |
+ // 단어장 등록 |
|
37 | 40 |
@PostMapping("/insert.json") |
38 | 41 |
public void insertWordBook(@RequestBody Map<String, String> req) { |
39 | 42 |
WordBookVO wordBook = new WordBookVO(); |
... | ... | @@ -43,14 +46,31 @@ |
43 | 46 |
wordBookService.insertWordBook(wordBook); |
44 | 47 |
} |
45 | 48 |
|
46 |
- @PutMapping("/update.json") |
|
49 |
+ // 단어장 수정 |
|
50 |
+ @PostMapping("/update.json") |
|
47 | 51 |
public void updateWordBook(@RequestBody WordBookVO wordBook) { |
48 | 52 |
wordBookService.updateWordBook(wordBook); |
49 | 53 |
} |
50 | 54 |
|
51 |
- @DeleteMapping("/delete.json") |
|
55 |
+ // 단어장 삭제 |
|
56 |
+ @PostMapping("/delete.json") |
|
52 | 57 |
public void deleteWordBook(@RequestBody WordBookVO wordBook) { |
53 | 58 |
wordBookService.deleteWordBook(wordBook.getWdBookId()); |
54 | 59 |
} |
55 | 60 |
|
61 |
+ // 단어장 검색(지문 이름으로 검색) |
|
62 |
+ @PostMapping("/findByTextTitle.json") |
|
63 |
+ public List<WordBookVO> getWordBooksByTextTitle(@RequestBody Map<String, String> request) { |
|
64 |
+ String textTitle = "%" + request.get("textTitle") + "%"; // 부분 검색 허용 |
|
65 |
+ return wordBookService.getWordBooksByTextTitle(textTitle); |
|
66 |
+ } |
|
67 |
+ |
|
56 | 68 |
} |
69 |
+ |
|
70 |
+// 1. 책에 소속된 단어장 리스트 가져오기(보류) |
|
71 |
+// 2. 지문 이름 검색으로 지문에 소속되는 단어장 리스트 가져오기(완료) |
|
72 |
+// 3. 단어 검색으로 해당 단어를 포함하는 단어장 리스트 가져오기 |
|
73 |
+// 4. 단어장에 소속되는 단어 리스트 가져오기 (단어R)(완료) |
|
74 |
+// 5. 단어장에 단어 추가 (단어C)(완료) |
|
75 |
+// 6. 단어 아이디에 해당하는 단어 수정(단어U)(완료) |
|
76 |
+// 7. 단어 아이디에 해당하는 단어 삭제(단어D)(완료) |
+++ src/main/java/com/takensoft/ai_lms/lms/word_book/web/WordController.java
... | ... | @@ -0,0 +1,54 @@ |
1 | +package com.takensoft.ai_lms.lms.word_book.web; | |
2 | + | |
3 | +import com.takensoft.ai_lms.lms.word_book.service.WordService; | |
4 | +import com.takensoft.ai_lms.lms.word_book.vo.WordVO; | |
5 | +import lombok.RequiredArgsConstructor; | |
6 | +import lombok.extern.slf4j.Slf4j; | |
7 | +import org.springframework.web.bind.annotation.PostMapping; | |
8 | +import org.springframework.web.bind.annotation.RequestBody; | |
9 | +import org.springframework.web.bind.annotation.RequestMapping; | |
10 | +import org.springframework.web.bind.annotation.RestController; | |
11 | + | |
12 | +import java.util.List; | |
13 | +import java.util.Map; | |
14 | + | |
15 | +/** | |
16 | + * @author 권민수 | |
17 | + * @since 2024.07.30 | |
18 | + * | |
19 | + * 단어 정보 관련 컨트롤러 클래스 | |
20 | + */ | |
21 | + | |
22 | +@RestController | |
23 | +@RequiredArgsConstructor | |
24 | +@Slf4j | |
25 | +@RequestMapping("/word") | |
26 | +public class WordController { | |
27 | + | |
28 | + private final WordService wordService; | |
29 | + | |
30 | + // 단어장 아이디에 해당하는 단어 목록 조회 | |
31 | + @PostMapping("/getWordsByBookId.json") | |
32 | + public List<WordVO> getWordsByBookId(@RequestBody Map<String, String> request) { | |
33 | + return wordService.getWordsByBookId(request.get("wdBookId")); | |
34 | + } | |
35 | + | |
36 | + // 단어 등록 | |
37 | + @PostMapping("/insert.json") | |
38 | + public void insertWord(@RequestBody WordVO word) { | |
39 | + wordService.insertWord(word); | |
40 | + } | |
41 | + | |
42 | + // 단어 수정 | |
43 | + @PostMapping("/update.json") | |
44 | + public void updateWord(@RequestBody WordVO word) { | |
45 | + wordService.updateWord(word); | |
46 | + } | |
47 | + | |
48 | + // 단어 삭제 | |
49 | + @PostMapping("/delete.json") | |
50 | + public void deleteWord(@RequestBody WordVO word) { | |
51 | + wordService.deleteWord(word.getWdId()); | |
52 | + } | |
53 | + | |
54 | +} |
+++ src/main/resources/mybatis/mapper/lms/word-SQL.xml
... | ... | @@ -0,0 +1,52 @@ |
1 | +<?xml version="1.0" encoding="UTF-8" ?> | |
2 | +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | |
3 | +<mapper namespace="com.takensoft.ai_lms.lms.word_book.dao.WordDAO"> | |
4 | + | |
5 | + <!-- | |
6 | + 작 성 자 : 권민수 | |
7 | + 작 성 일 : 2024.07.30 | |
8 | + 내 용 : 단어 정보 관련 sql 매핑 xml 문서 | |
9 | + --> | |
10 | + | |
11 | + <resultMap id="wordResultMap" type="WordVO"> | |
12 | + <id property="wdId" column="wd_id" /> | |
13 | + <result property="wdBookId" column="wd_book_id" /> | |
14 | + <result property="wdNm" column="wd_nm" /> | |
15 | + <result property="wdMnng" column="wd_mnng" /> | |
16 | + <result property="fileMngId" column="file_mng_id" /> | |
17 | + </resultMap> | |
18 | + | |
19 | + <select id="getWordsByBookId" resultMap="wordResultMap"> | |
20 | + SELECT * | |
21 | + FROM word | |
22 | + WHERE wd_book_id = #{wdBookId} | |
23 | + </select> | |
24 | + | |
25 | + <insert id="insertWord"> | |
26 | + INSERT INTO | |
27 | + word (wd_id, | |
28 | + wd_book_id, | |
29 | + wd_nm, | |
30 | + wd_mnng, | |
31 | + file_mng_id) | |
32 | + VALUES (#{wdId}, | |
33 | + #{wdBookId}, | |
34 | + #{wdNm}, | |
35 | + #{wdMnng}, | |
36 | + #{fileMngId}) | |
37 | + </insert> | |
38 | + | |
39 | + <update id="updateWord"> | |
40 | + UPDATE word | |
41 | + SET wd_nm = #{wdNm}, | |
42 | + wd_mnng = #{wdMnng}, | |
43 | + file_mng_id = #{fileMngId} | |
44 | + WHERE wd_id = #{wdId} | |
45 | + </update> | |
46 | + | |
47 | + <delete id="deleteWord"> | |
48 | + DELETE FROM word | |
49 | + WHERE wd_id = #{wdId} | |
50 | + </delete> | |
51 | + | |
52 | +</mapper>(파일 끝에 줄바꿈 문자 없음) |
--- src/main/resources/mybatis/mapper/lms/word_book-SQL.xml
+++ src/main/resources/mybatis/mapper/lms/word_book-SQL.xml
... | ... | @@ -8,7 +8,7 @@ |
8 | 8 |
내 용 : 단어장 정보 관련 sql 매핑 xml 문서 |
9 | 9 |
--> |
10 | 10 |
|
11 |
- <resultMap id="WordBookResultMap" type="com.takensoft.ai_lms.lms.word_book.vo.WordBookVO"> |
|
11 |
+ <resultMap id="WordBookResultMap" type="WordBookVO"> |
|
12 | 12 |
<id property="wdBookId" column="wd_book_id"/> |
13 | 13 |
<result property="wdBookTypeId" column="wd_book_type_id"/> |
14 | 14 |
<result property="textId" column="text_id"/> |
... | ... | @@ -34,7 +34,7 @@ |
34 | 34 |
WHERE wd_book_id = #{wdBookId} |
35 | 35 |
</select> |
36 | 36 |
|
37 |
- <insert id="insertWordBook" parameterType="com.takensoft.ai_lms.lms.word_book.vo.WordBookVO"> |
|
37 |
+ <insert id="insertWordBook" parameterType="WordBookVO"> |
|
38 | 38 |
INSERT INTO |
39 | 39 |
ai_lms.wordbook (wd_book_id, |
40 | 40 |
wd_book_type_id, |
... | ... | @@ -46,7 +46,7 @@ |
46 | 46 |
#{userId}) |
47 | 47 |
</insert> |
48 | 48 |
|
49 |
- <update id="updateWordBook" parameterType="com.takensoft.ai_lms.lms.word_book.vo.WordBookVO"> |
|
49 |
+ <update id="updateWordBook" parameterType="WordBookVO"> |
|
50 | 50 |
UPDATE ai_lms.wordbook |
51 | 51 |
SET wd_book_type_id = #{wdBookTypeId}, |
52 | 52 |
text_id = #{textId}, |
... | ... | @@ -59,4 +59,11 @@ |
59 | 59 |
WHERE wd_book_id = #{wdBookId} |
60 | 60 |
</delete> |
61 | 61 |
|
62 |
+ <select id="getWordBooksByTextTitle" resultType="WordBookVO"> |
|
63 |
+ SELECT wb.* |
|
64 |
+ FROM wordbook wb |
|
65 |
+ JOIN text t ON wb.text_id = t.text_id |
|
66 |
+ WHERE t.text_ttl LIKE #{textTitle} |
|
67 |
+ </select> |
|
68 |
+ |
|
62 | 69 |
</mapper>(파일 끝에 줄바꿈 문자 없음) |
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?