Bảng dữ liệu comment: Lưu thơng tin bình luận của bài viết
STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Ý nghĩa
1 _id ObjectId Khóa chính Id của đối tượng
2 oid String Là duy nhất, tham
chiếu với khóa chính
Dạng text của _id
3 post_id String Bắt buộc Id của bài post
trong bình luận này
4 content String Nội dung bài viết
5 image String Nội dung hình
51
6 author_id String Bắt buộc Id tác giả
7 status Boolean Bắt buộc Trạng thái tồn tại
của bài viết
8 id_edited Boolean Bắt buộc Trạng thái đã
chỉnh sửa Bảng 2.24: Danh sách thuộc tính bảng comment
Bảng dữ liệu conversation: Lưu thơng tin cuộc hội thoại, thông tin người tham gia.
STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Ý nghĩa
1 _id ObjectId Khóa chính Id của đối tượng
2 oid String Là duy nhất, tham
chiếu với khóa chính
Dạng text của _id
3 name String Tên cuộc trò
chuyện
4 participants List<string> Bắt buộc Danh sách người
tham gia
5 status Boolean Bắt buộc Trạng thái
Bảng 2.25: Danh sách thuộc tính bảng conversation
Bảng dữ liệu downvote: Lưu thơng tin Downvote của đối tượng (Bài viết, Bình luận, Phản hồi bình luận)
STT Tên thuộc tính Kiểu dữ
liệu Ràng buộc Ý nghĩa
1 _id ObjectId Khóa chính Id của đối tượng
2 oid String Là duy nhất, tham
chiếu với khóa chính Dạng text của _id
3 object_vote_id String Tham chiếu tới oid
của đối tượng, có thể là post.oid,
comment.oid, reply_comment.oid
Id của đối tượng được downvote
52
4 downvote_by String Tham chiếu tới
user.oid
Id của người dùng thực hiện hành động downvote
5 is_deleted Boolean Bắt buộc Trạng thái
xóa/chưa xóa của đổi tượng
Bảng 2.26: Danh sách thuộc tính bảng “downvote”
Bảng dữ liệu external_login: Lưu thông tin đăng nhập bằng dịch vụ bên thứ ba của ứng dụng. Ví dụ: Google, Facebook, …
STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Ý nghĩa
1 _id ObjectId Khóa chính Id của đối tượng
2 oid String Là duy nhất,
tham chiếu với khóa chính
Dạng text của _id
3 login_provider String Bắt buộc Tên dịch vụ sử dụng
4 email String Bắt buộc, tham
chiếu
Email người dùng sử dụng để đăng nhập Bảng 2.27: Danh sách thuộc tính bảng external_login
Bảng dữ liệu fcm_info: Lưu thông tin dịch vụ Firebase Cloud Messaging.
STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Ý nghĩa
1 _id ObjectId Khóa chính Id của đối tượng
2 oid String Là duy nhất, tham
chiếu với khóa chính
Dạng text của _id
53
user.oid dùng
4 device_token String Bắt buộc Token của thiết
bị được cung cấp bởi Google Bảng 2.28: Danh sách thuộc tính bảng fcm_info
Bảng dữ liệu field: Lưu thông tin lĩnh vực của người dùng, của bài viết.
STT Tên thuộc tính Kiểu dữ liệu
Ràng buộc Ý nghĩa
1 _id ObjectId Khóa chính Id của đối tượng
2 oid String Là duy nhất, tham
chiếu với khóa chính
Dạng text của _id
3 value String Bắt buộc, duy nhất Tên lĩnh vực đó
4 status int Bắt buộc Trạng thái (chặn,
xóa, active, …) Bảng 2.29: Danh sách thuộc tính bảng field
Bảng dữ liệu follow: Lưu thơng tin theo dõi giữa các người dùng với nhau
STT Tên thuộc tính Kiểu dữ liệu
Ràng buộc Ý nghĩa
1 _id ObjectId Khóa chính Id của đối tượng
2 oid String Là duy nhất, tham
chiếu với khóa chính
Dạng text của _id
54
4 from_id String Bắt buộc, tham chiếu
tới user.oid
Id của người chủ động theo dõi.
5 to_id String Bắt buộc, tham chiếu
tới user.oid
Id của người được người khác theo dõi.
Bảng 2.30: Danh sách thuộc tính bảng follow Bảng dữ liệu level: Lưu thông tin các giá trị của cấp độ Bảng dữ liệu level: Lưu thông tin các giá trị của cấp độ
STT Tên thuộc tính Kiểu dữ liệu
Ràng buộc Ý nghĩa
1 _id ObjectId Khóa chính Id của đối tượng
2 oid String Là duy nhất, tham
chiếu với khóa chính
Dạng text của _id
3 name String Bắt buộc, duy nhất Tên gọi của cấp độ
4 description String Mô tả của cấp độ
5 order Int Bắt buộc Thứ tự ưu tiên
6 icon String Bắt buộc Tên file icon
9 is_active Boolean Bắt buộc Trạng thái hoạt
động Bảng 2.31: Danh sách thuộc tính bảng level
55
Bảng dữ liệu message_image: Lưu thơng tin các tin nhắn có hình ảnh hoặc file đa phương tiện
STT Tên thuộc tính Kiểu dữ liệu
Ràng buộc Ý nghĩa
1 _id ObjectId Khóa chính Id của đối tượng
2 oid String Là duy nhất, tham
chiếu với khóa chính
Dạng text của _id
3 sender_id String Tham chiếu với
user.oid
Id người gửi tin nhắn
4 convesation_id String Tham chiếu tới
conversation.oid
Id của cuộc hội thoại chứa tin nhắn này
5 is_edited Boolean Bắt buộc Trạng thái đã chỉnh
sửa
6 message_type Int Bắt buộc Loại tin nhắn
7 status Int Bắt buộc Trạng thái
Bảng 2.32: Danh sách thuộc tính bảng message_image
Bảng dữ liệu message_text: Lưu thơng tin tin nhắn có chứa nội dung văn bản
STT Tên thuộc tính Kiểu dữ liệu
Ràng buộc Ý nghĩa
1 _id ObjectId Khóa chính Id của đối tượng
56
với khóa chính
3 sender_id String Tham chiếu với user.oid Id người gửi tin
nhắn
4 convesation_id String Tham chiếu tới
conversation.oid
Id của cuộc hội thoại chứa tin nhắn này
5 is_edited Boolean Bắt buộc Trạng thái đã
chỉnh sửa
6 message_type Int Bắt buộc Loại tin nhắn
7 status Int Bắt buộc Trạng thái
8 created_date DateTime Bắt buộc Ngày tạo
9 modified_date DateTime Bắt buộc Ngày chỉnh sửa
10 content List<string> Nội dung
Bảng 2.33: Danh sách thuộc tính bảng message_text Bảng dữ liệu notification_detail: Lưu thông tin chi tiết thông báo Bảng dữ liệu notification_detail: Lưu thông tin chi tiết thơng báo
ST T
Tên thuộc tính Kiểu dữ liệu
Ràng buộc Ý nghĩa
1 _id ObjectId Khóa chính Id của đối tượng
2 oid String Là duy nhất, tham
chiếu với khóa chính
Dạng text của _id
3 notification_object_
id
String Tham chiếu với
nofitication_object.
Id của
57
oid
4 creator_id String Tham chiếu tới
user.oid
Id của người thực hiện hành động tao ra thông báo
5 receiver_id String Tham chiếu tới
user.oid
Id của người nhận thông báo
6 created_date DateTime Bắt buộc Ngày tạo
7 modified_date DateTime Bắt buộc Ngày chỉnh sửa
8 is_read Boolean Bắt buộc Trạng thái đã xem
thông báo hay chưa
9 is_deleted Boolean Bắt buộc Trạng thái đã
xóa/chưa xóa của thơng báo
Bảng 2.34: Danh sách thc tính bảng notification_detail
Bảng dữ liệu notification_object: Lưu thơng tin nguồn gốc thơng báo dính tới đối tượng
STT Tên thuộc tính Kiểu dữ
liệu Ràng buộc
Ý nghĩa
1 _id ObjectId Khóa chính Id của đối tượng
2 oid String Là duy nhất, tham chiếu
với khóa chính Dạng text của _id
3 object_id String
Tham chiếu tới user.oid, post.oid, comment.oid, reply_comment.oid
Thông tin Id của đối tượng liên quan thông báo
58
4 owner_id String Tham chiếu tới user.oid Thông tin id người
sở hữu đối tượng
5 notification_type String Bắt buộc. Tham chiếu
tới notification_type.oid Loại thông báo Bảng 2.35: Danh sách thuộc tính bảng notification_object
Bảng dữ liệu object_level: Lưu thơng tin cấp độ, lĩnh vực của một đối tượng, ví dụ như người dùng hoặc bài viết
STT Tên thuộc tính Kiểu dữ
liệu Ràng buộc
Ý nghĩa
1 _id ObjectId Khóa chính Id của đối tượng
2 oid String Là duy nhất, tham chiếu
với khóa chính Dạng text của _id
3 object_id String Tham chiếu tới user.oid,
post.oid
Id của đối tượng cần lưu cấp độ
4 field_id String Tham chiếu tới field.oid Id của lĩnh vực
5 level_id String Tham chiếu tới level.oid Id của cấp độ
6 point Int Chỉ có user mới có giá
trị
Điểm hoạt động theo lĩnh vực
7 created_date DateTime Bắt buộc Ngày tạo
8 modified_date DateTime Bắt buộc Ngày chỉnh sửa
9 is_active Boolean Bắt buộc Trạng thái hoạt
động (bị ẩn, hiện) Bảng 2.36: Danh sách thuộc tính bảng object_level
59
Bảng dữ liệu post: Lưu thông tin bài viết của người dùng
STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Ý nghĩa
1 _id ObjectId Khóa chính Id của đối tượng
2 oid String Là duy nhất, tham
chiếu với khóa chính Dạng text của _id
3 title String Bắt buộc Là tiêu đề bài viết
4 author_id String Tham chiếu tới
user.oid Id tác giả
5 created_date DateTime Bắt buộc Ngày tạo
6 modified_date DateTime Bắt buộc Ngày chỉnh sửa
7 string_contents List<object> Nội dung dạng
văn bản
8 image_contents List<object> Nội dung đa
phương tiện
9 Status Int Bắt buộc Trạng thái
Bảng 2.37: Danh sách thuộc tính bảng post
Bảng dữ liệu reply_comment: Lưu thơng tin phản hồi bình luận của người dùng
STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Ý nghĩa
1 _id ObjectId Khóa chính Id của đối tượng
60
chiếu với khóa chính
3 parent_id String Tham chiếu tới
comment.oid
Id của bình luận mà nó được trả lời
4 content String Bắt buộc Nội dung
5 author_id String Tham chiếu tới
user.oid Id tác giả
6 status Int Bắt buộc Trạng thái
7 created_date DateTime Bắt buộc Ngày tạo
8 modified_date DateTime Bắt buộc Ngày chỉnh sửa
9 is_edited Boolean Bắt buộc Trạng thái chỉnh
sửa Bảng 2.38: Danh sách thuộc tính bảng reply_comment
Bảng dữ liệu report: Lưu thông tin báo cáo sai phạm của người dùng đối với một đối tượng
STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Ý nghĩa
1 _id ObjectId Khóa chính Id của đối tượng
2 oid String Là duy nhất, tham
chiếu với khóa chính Dạng text của _id
3 author_id String Tham chiếu tới
user.oid
Id người tạo báo cáo
61
post.oid, comment.oid, reply_comment.oid, user.oid
báo cáo
5 object_type String Loại đối tượng
6 reason List<string> Id của report_reason Danh sách Id lý
do báo cáo
7 is_approved Boolean Trạng thái duyệt
8 approve_by String Tham chiếu tới
user.oid Người duyệt
9 approve_date DateTime Ngày duyệt
10 created_date DateTime Bắt buộc Ngày tạo
11 modified_date DateTime Bắt buộc Ngày chỉnh sửa
Bảng 2.39: Danh sách thuộc tính bảng report
Bảng dữ liệu upvote: Lưu dữ liệu upvote của người dùng với đối tượng
STT Tên thuộc tính Kiểu dữ
liệu Ràng buộc
Ý nghĩa
1 _id ObjectId Khóa chính Id của đối tượng
2 oid String Là duy nhất, tham
chiếu với khóa chính Dạng text của _id
3 object_vote_id String Tham chiếu tới oid
của đối tượng, có thể là post.oid,
comment.oid, reply_comment.oid
Id của đối tượng được downvote
4 upvote_by String Tham chiếu tới
user.oid
Id của người dùng thực hiện hành động upvote
62
xóa/chưa xóa của đổi tượng
Bảng 2.40: Danh sách thuộc tính bảng upvote Bảng dữ liệu user: Thông tin người dùng Bảng dữ liệu user: Thông tin người dùng
STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Ý nghĩa
1 _id ObjectId Khóa chính Id của đối tượng
2 oid String Là duy nhất, tham
chiếu với khóa chính Dạng text của _id
3 first_name string Bắt buộc Họ
4 last_name String Bắt buộc Tên lót và tên
5 date_of_birth DateTime Bắt buộc Ngày sinh
6 email String
Là duy nhất, tham chiếu với
account.email
7 phone_number String Bắt buộc, là duy nhất Số điện thoại
8 address Object Địa chỉ
9 avatar Object Ảnh đại diện
10 avatar_hash String Url hình ảnh
11 call_id string Id video call
12 refresh_token String Refresh token
gần nhất
63
khoản
14 created_date DateTime Bắt buộc Ngày tạo
15 modified_date DateTime Bắt buộc Ngày chỉnh sửa
16 additional_infos Dictionary Thông tin thêm
17 post_saved List<string> Danh sách bài
viết đã lưu
18 jwt_tokens List<string> Danh sách token
đang hoạt động Bảng 2.41: Danh sách thuộc tính bảng user
2.2.3. Thiết kế kiến trúc hệ thống 2.2.3.1. Kiến trúc tổng thể hệ thống 2.2.3.1. Kiến trúc tổng thể hệ thống
Ảnh 2.16: Sơ đồ hệ thống Trong đó: Trong đó:
- CoStudy App: Ứng dụng di động đang phát triển. Cũng là sản phẩm của đề
64 - .NET Core Server: Server của hệ thống.
- .NET Admin: Trang quản lý người dùng.
- Firebase Cloud Messaging: Hệ thống gửi tin thời gian thực.
- Firebase Storage: Nơi lưu trữ dữ liệu trực tuyến của Firebase.
- Firebase Authentication: API Xác thực của Firebase.
- Google Maps API: Để xác định khoảng cách và vị trí người dùng.
- MongoDb: Database của hệ thống
- SMTP Mail Server: Mail server của hệ thống
2.2.3.2. Kiến trúc ứng dụng di động
Ảnh 2.17: Kiến trúc ứng dụng di động
2.2.4. Thiết kế giao diện
2.2.4.1. Danh sách màn hình
Màn hình cho ứng dụng di động
STT Tên màn hình Mơ tả chức năng
1 Đăng nhập – 1 Màn hình đăng nhập 1
65
3 Đăng kí – 1 Màn hình đăng kí 1
4 Đăng kí – 2 Màn hình đăng kí 2
5 Bài viết đã lưu Màn hình danh sách bài viết đã
lưu của người dùng
6 Lĩnh vực cá nhân Màn hình chứa thơng tin các lĩnh
vực cá nhân của người dùng
7 Bảng tin Màn hình chứa bảng tin của người
dùng
8 Bảng xếp hạng
Màn hình bảng xếp hạng điểm hoạt động theo lĩnh vực của người dùng
9 Báo cáo bài viết Màn hình báo cáo nội dung vi
phạm của người dùng
10 Cập nhật thơng tin
Màn hình cập nhật thơng tin của người dùng như thông tin cơ bản, thông tin lĩnh vực
11 Chi tiết bài viết
Màn hình chứa thơng tin chi tiết bài viết như thông tin bài viết, một số bình luận của bài viết…
12 Chi tiết bình luận
Chứa thơng tin chi tiết bình luận và thơng tin các phản hồi bình luận
13 Đăng bài viết Màn hình chứa các tác vụ cho hoạt
động đăng bài viết mới
66
nhân đang theo dõi
15 Gọi video Màn hình gọi video
16 Người theo dõi Màn hình danh sách người đang
theo dõi bản thân
17 Nhắn tin Giao diện nhắn tin giữa hai người
dùng với nhau
18 Thơng báo Màn hình hiển thị các cập nhật
những đối tượng liên quan
19 Thơng tin cá nhân Màn hình hiển thị thơng tin cá hân
20 Tìm kiếm bài viết – 1 Màn hình tìm kiếm bài viết 1
21 Tìm kiếm bài viết – 2 Màn hình tìm kiếm bài viết 2
22 Tìm kiếm bài viết – 3 Màn hình tìm kiếm bài viết 3
23 Tìm kiếm người dùng Màn hình tìm kiếm người dùng
24 Tìm kiếm người lân cận Màn hình tìm người lân cận dựa
theo khoảng cách
25 Xem thông tin Màn hình xem chi tiết thơng tin
Bảng 2.42 : Danh sách màn hình Màn hình cho quản trị viên Màn hình cho quản trị viên
STT Tên màn hình Mơ tả chức năng
26 Admin – backend API Màn hình truy vết lời gọi
API của người dùng
27 Admin – Chi tiết cấp độ Màn hình chi tiết cấp độ
xuất hiện trên UI di động được thể hiện ở đây
67
28 Admin – Chi tiết lĩnh vực Màn hình chi tiết lĩnh vực
xuất hiện lên UI di động được thể hiện ở đây
29 Admin – Chi tiết nhóm lĩnh vực Màn hình chứa thơng tin
nhóm lĩnh vực để thực hiện gom nhóm bài viết theo chủ đề liên quan, tăng trải nghiệm tìm kiếm
30 Admin – Chi tiết tài khoản Màn hình thơng tin chi tiết
tài khoản người dùng được quản lý bởi quản trị viên
31 Admin – Đăng nhập Màn hình đăng nhập vào
trang của quản trị viên
31 Admin – Danh mục cấp độ Màn hình danh sách cấp
độ sẵn có được quản lý bởi quản trị viên để người dùng có thể chọn cho bài viết của mình
32 Admin – Danh mục lĩnh vực Màn hình danh sách lĩnh
vực sẵn có được quản lý bởi quản trị viên để người dùng có thể chọn cho bài viết của mình
33 Admin – Danh sách bài viết Màn hình chứa danh sách
bài viết được quản lý bởi quản trị viên
68
34 Admin – Danh sách báo cáo Màn hình chứa danh sách
báo cáo vi phạm mà người dùng báo cáo sẽ được quản lý bởi quản trị viên
35 Admin – Danh sách bình luận Màn hình chứa danh sách
bình luận sẽ hiển thị và giám sát bởi quản trị viên ở đây
36 Admin – Danh sách người dùng Màn hình chứ danh sách
tài khoản
37 Admin – Danh sách nhóm lĩnh vực Quản lý nhóm lĩnh vực
38 Admin – Danh sách phản hồi Quản lý danh sách các câu
trả lời (phản hồi) của bình luận
39 Admin – Thêm lĩnh vực Thêm mới lĩnh vực được
thực hiện bởi quản trị viên
40 Admin – Thêm nhóm lĩnh vực Thêm mới nhóm lĩnh vực