Skip to content

Commit 8d53e6e

Browse files
committed
应用系统体系结构 作业11 MongoDB和Neo4j
2 parents c472b48 + b4527aa commit 8d53e6e

File tree

17 files changed

+407
-24
lines changed

17 files changed

+407
-24
lines changed

mainServer/pom.xml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,23 @@
114114
<version>4.4.5</version>
115115
</dependency>
116116

117+
<!-- https://mvnrepository.com/artifact/org.springframework.data/spring-data-mongodb -->
118+
<dependency>
119+
<groupId>org.springframework.data</groupId>
120+
<artifactId>spring-data-mongodb</artifactId>
121+
<version>3.4.2</version>
122+
</dependency>
123+
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-mongodb -->
124+
<dependency>
125+
<groupId>org.springframework.boot</groupId>
126+
<artifactId>spring-boot-starter-data-mongodb</artifactId>
127+
<version>2.7.2</version>
128+
</dependency>
129+
130+
<dependency>
131+
<groupId>org.springframework.boot</groupId>
132+
<artifactId>spring-boot-starter-data-neo4j</artifactId>
133+
</dependency>
117134

118135

119136
</dependencies>

mainServer/src/main/java/com/zzq/ebook/controller/testControl.java

Lines changed: 90 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,21 @@
11
package com.zzq.ebook.controller;
22

3+
import com.zzq.ebook.dao.BookDao;
4+
import com.zzq.ebook.dao.UserDao;
35
import com.zzq.ebook.entity.Book;
6+
import com.zzq.ebook.entity.BookType;
47
import com.zzq.ebook.entity.ESBook;
58
import com.zzq.ebook.repository.BookRepository;
9+
import com.zzq.ebook.repository.BookTypeRepository;
610
import com.zzq.ebook.repository.ESBookRepository;
711
import com.zzq.ebook.service.BookService;
8-
import com.zzq.ebook.utils.tool.ToolFunction;
912
import org.springframework.beans.factory.annotation.Autowired;
1013
import org.springframework.data.elasticsearch.core.SearchHits;
1114
import org.springframework.web.bind.annotation.RequestMapping;
1215
import org.springframework.web.bind.annotation.RestController;
1316

17+
import java.lang.reflect.Array;
18+
import java.util.Arrays;
1419
import java.util.List;
1520

1621
@RestController
@@ -25,6 +30,16 @@ public class testControl {
2530
@Autowired
2631
ESBookRepository esBookRepository;
2732

33+
@Autowired
34+
BookTypeRepository bookTypeRepository;
35+
36+
@Autowired
37+
BookDao bookDao;
38+
39+
40+
@Autowired
41+
UserDao userDao;
42+
2843
// 测试的接口函数
2944
// 将书籍迁移到es中
3045
@RequestMapping("/init")
@@ -38,6 +53,13 @@ public List<ESBook> initFunction(){
3853
return esBookRepository.findAll();
3954
}
4055

56+
@RequestMapping("/testMongo")
57+
public String testMongo(){
58+
System.out.println("搜了个啥?");
59+
return userDao.getUserIconByUsername("user7").getIconBase64();
60+
}
61+
62+
4163
@RequestMapping("/findtest")
4264
public SearchHits<ESBook> testFunction(){
4365
esBookRepository.deleteAll();
@@ -49,4 +71,71 @@ public SearchHits<ESBook> testFunction(){
4971
return esBookRepository.findByDescription("地位");
5072
}
5173

74+
@RequestMapping("/neo4j")
75+
public List<Book> testNeo4j(){
76+
// 先删除所有的内容
77+
bookTypeRepository.deleteAll();
78+
// 添加书籍类型
79+
BookType bookType1 = new BookType("高中教辅");
80+
BookType bookType2 = new BookType("科普");
81+
BookType bookType3 = new BookType("大学教材");
82+
BookType bookType4 = new BookType("名著");
83+
BookType bookType5 = new BookType("杂志");
84+
BookType bookType6 = new BookType("游戏");
85+
BookType bookType7 = new BookType("文学");
86+
87+
// 数据准备
88+
bookType1.addBookID(1);
89+
bookType1.addBookID(21);
90+
bookType1.addBookID(22);
91+
92+
bookType2.addBookID(2);
93+
bookType2.addBookID(18);
94+
bookType2.addBookID(20);
95+
96+
bookType3.addBookID(3);
97+
bookType3.addBookID(5);
98+
bookType3.addBookID(6);
99+
bookType3.addBookID(7);
100+
bookType3.addBookID(8);
101+
bookType3.addBookID(9);
102+
bookType3.addBookID(10);
103+
104+
bookType4.addBookID(11);
105+
bookType5.addBookID(12);
106+
bookType6.addBookID(13);
107+
bookType6.addBookID(17);
108+
bookType7.addBookID(14);
109+
bookType7.addBookID(23);
110+
111+
bookType1.addRelateBookType(bookType2);
112+
bookType1.addRelateBookType(bookType3);
113+
bookType1.addRelateBookType(bookType4);
114+
115+
bookType2.addRelateBookType(bookType5);
116+
bookType2.addRelateBookType(bookType6);
117+
bookType3.addRelateBookType(bookType5);
118+
bookType3.addRelateBookType(bookType6);
119+
bookType4.addRelateBookType(bookType5);
120+
bookType4.addRelateBookType(bookType6);
121+
122+
bookType5.addRelateBookType(bookType7);
123+
bookType6.addRelateBookType(bookType7);
124+
bookType7.addRelateBookType(bookType1);
125+
126+
127+
128+
bookTypeRepository.save(bookType1);
129+
bookTypeRepository.save(bookType2);
130+
bookTypeRepository.save(bookType3);
131+
bookTypeRepository.save(bookType4);
132+
bookTypeRepository.save(bookType5);
133+
bookTypeRepository.save(bookType6);
134+
bookTypeRepository.save(bookType7);
135+
136+
return bookDao.findBooksByTagRelation("高中教辅");
137+
}
138+
139+
140+
52141
}

mainServer/src/main/java/com/zzq/ebook/controller/userControl.java

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.zzq.ebook.controller;
22

3+
import com.zzq.ebook.entity.Book;
4+
import com.zzq.ebook.entity.UserIcon;
35
import net.sf.json.JSONObject;
46
import com.zzq.ebook.constant.constant;
57
import com.zzq.ebook.entity.User;
@@ -10,10 +12,7 @@
1012
import com.zzq.ebook.utils.session.SessionUtil;
1113

1214
import org.springframework.beans.factory.annotation.Autowired;
13-
import org.springframework.web.bind.annotation.CrossOrigin;
14-
import org.springframework.web.bind.annotation.RequestBody;
15-
import org.springframework.web.bind.annotation.RequestMapping;
16-
import org.springframework.web.bind.annotation.RestController;
15+
import org.springframework.web.bind.annotation.*;
1716

1817
import java.util.List;
1918
import java.util.Map;
@@ -150,4 +149,19 @@ public Msg setUserLoginPermit(@RequestBody Map<String, String> params){
150149
else
151150
return MsgUtil.makeMsg(MsgCode.ERROR,MsgUtil.SET_LOGIN_PERMISSION_FAIL);
152151
}
152+
153+
154+
@GetMapping(value = "/user/getUserIcon/{username}")
155+
public Msg getUserIcon(@PathVariable("username") String username){
156+
System.out.println(username);
157+
UserIcon userIcon = userService.getUserIconByUsername(username);
158+
if(userIcon!=null) {
159+
JSONObject obj = new JSONObject();
160+
obj.put("base64Img",userIcon.getIconBase64());
161+
return MsgUtil.makeMsg(MsgCode.SUCCESS, MsgUtil.SUCCESS_MSG, obj);
162+
}
163+
else {
164+
return MsgUtil.makeMsg(MsgCode.ERROR);
165+
}
166+
}
153167
}

mainServer/src/main/java/com/zzq/ebook/dao/BookDao.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.zzq.ebook.dao;
22
import com.zzq.ebook.entity.Book;
3+
import com.zzq.ebook.entity.BookType;
34
import com.zzq.ebook.entity.ESBook;
45
import org.springframework.data.elasticsearch.core.SearchHits;
56

@@ -21,4 +22,6 @@ public interface BookDao {
2122

2223
SearchHits<ESBook> findESBooksByDescription(String keyword);
2324

25+
List<Book> findBooksByTagRelation(String tagName);
26+
2427
}
Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,19 @@
11
package com.zzq.ebook.dao;
22

33
import com.zzq.ebook.entity.User;
4-
import com.zzq.ebook.repository.UserRepository;
5-
import org.springframework.beans.factory.annotation.Autowired;
4+
import com.zzq.ebook.entity.UserIcon;
5+
66
import java.util.List;
77

88
public interface UserDao {
99

1010
User checkUser(String username, String password);
1111

12-
User getUserByusername(String username);
12+
User getUserByUsername(String username);
1313

1414
List<User> getAllUser();
1515

1616
User saveOneUser(User oneuser);
17+
18+
UserIcon getUserIconByUsername(String username);
1719
}

mainServer/src/main/java/com/zzq/ebook/daoImp/BookDaoImp.java

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@
44
import com.alibaba.fastjson.JSONObject;
55
import com.zzq.ebook.dao.BookDao;
66
import com.zzq.ebook.entity.Book;
7+
import com.zzq.ebook.entity.BookType;
78
import com.zzq.ebook.entity.ESBook;
89
import com.zzq.ebook.repository.BookRepository;
10+
import com.zzq.ebook.repository.BookTypeRepository;
911
import com.zzq.ebook.repository.ESBookRepository;
1012
import com.zzq.ebook.utils.redis.RedisUtil;
1113
import org.springframework.beans.factory.annotation.Autowired;
@@ -16,7 +18,9 @@
1618
import org.springframework.transaction.annotation.Transactional;
1719

1820
import java.util.ArrayList;
21+
import java.util.HashMap;
1922
import java.util.List;
23+
import java.util.Objects;
2024

2125
@Repository
2226
public class BookDaoImp implements BookDao {
@@ -30,6 +34,10 @@ public class BookDaoImp implements BookDao {
3034
private ESBookRepository esBookRepository;
3135

3236

37+
@Autowired
38+
private BookTypeRepository bookTypeRepository;
39+
40+
3341
/**
3442
* ************ 基础查询的函数 ************
3543
*/
@@ -183,4 +191,48 @@ public List<Book> findBooksGlobal(String keyword){
183191
keyword,keyword,keyword
184192
);
185193
}
194+
@Override
195+
public List<Book> findBooksByTagRelation(String tagName){
196+
List<BookType> list0 = bookTypeRepository.findBookTypesByTypeNameLike(tagName);
197+
HashMap<Integer, Integer> result = new HashMap<>();
198+
List<Book> resultBook = new ArrayList<>();
199+
200+
System.out.println(list0.size());
201+
System.out.println(list0);
202+
203+
for (BookType bookType : list0) {
204+
for (int j = 0; j < bookType.getBookIDs().size(); j++) {
205+
int id = bookType.getBookIDs().get(j);
206+
result.put(id, 1);
207+
}
208+
}
209+
210+
for (BookType type : list0) {
211+
String keyName = type.getTypeName();
212+
List<BookType> list1 = bookTypeRepository.findNodeRelatedBookTypesDistance1(keyName);
213+
List<BookType> list2 = bookTypeRepository.findNodeRelatedBookTypesDistance2(keyName);
214+
215+
for (BookType bookType : list1) {
216+
for (int j = 0; j < bookType.getBookIDs().size(); j++) {
217+
int id = bookType.getBookIDs().get(j);
218+
result.put(id, 1);
219+
}
220+
}
221+
222+
for (BookType bookType : list2) {
223+
for (int j = 0; j < bookType.getBookIDs().size(); j++) {
224+
int id = bookType.getBookIDs().get(j);
225+
result.put(id, 1);
226+
}
227+
}
228+
}
229+
230+
231+
232+
for(int id: result.keySet()){
233+
resultBook.add(this.getOneBookByID(id));
234+
}
235+
236+
return resultBook;
237+
}
186238
}

mainServer/src/main/java/com/zzq/ebook/daoImp/UserDaoImp.java

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import com.zzq.ebook.dao.UserDao;
44
import com.zzq.ebook.entity.User;
5+
import com.zzq.ebook.entity.UserIcon;
6+
import com.zzq.ebook.repository.UserIconRepository;
57
import com.zzq.ebook.repository.UserRepository;
68
import org.springframework.beans.factory.annotation.Autowired;
79
import org.springframework.stereotype.Repository;
@@ -14,13 +16,21 @@ public class UserDaoImp implements UserDao {
1416
@Autowired
1517
UserRepository userRepository;
1618

19+
@Autowired
20+
UserIconRepository userIconRepository;
21+
1722
@Override
1823
public User checkUser(String username, String password){
1924
return userRepository.checkUser(username,password);
2025
}
2126
@Override
22-
public User getUserByusername(String username){
23-
return userRepository.getOne(username);
27+
public User getUserByUsername(String username){
28+
User user = userRepository.getOne(username);
29+
UserIcon userIcon = userIconRepository.findUserIconByUsername(username);
30+
if(userIcon != null){
31+
user.setUserIcon(userIcon);
32+
}
33+
return user;
2434
}
2535
@Override
2636
public List<User> getAllUser(){
@@ -31,4 +41,11 @@ public List<User> getAllUser(){
3141
public User saveOneUser(User oneUser){
3242
return userRepository.save(oneUser);
3343
}
44+
45+
46+
// 测试用的
47+
@Override
48+
public UserIcon getUserIconByUsername(String username){
49+
return userIconRepository.findUserIconByUsername(username);
50+
}
3451
}

mainServer/src/main/java/com/zzq/ebook/entity/Book.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,12 @@ public class Book {
2323
private String publisher;
2424
private String description;
2525

26+
private String tag;
27+
28+
public void setTag(String tag){this.tag = tag;}
29+
30+
public String getTag(){return this.tag;}
31+
2632
public void setID(int ID) {
2733
this.ID = ID;
2834
}

0 commit comments

Comments
 (0)