Danh sách thuộc tính bảng message_text

Một phần của tài liệu Xây dựng ứng dụng hỗ trợ kết nối và hỗ trợ trong học tập (Trang 69)

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

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

Bảng 2.43 : Danh sách màn hình Admin

69

Ảnh 2.18: Màn hình “Đăng kí” – 1

Ảnh 2.19: Màn hình “Đăng kí “- 2

Ảnh 2.20: Màn hình “Đăng nhập”

70

Ảnh 2.22: Màn hình “Bài viết đã lưu”

Ảnh 2.23: Màn hình chi tiết bài viết

Ảnh 2.24: Màn hình “Bình luận”

Ảnh 2.25: Màn hình “Báo cáo bài viết”

71

Ảnh 2.26: Màn hình “Tạo bài đăng”

Ảnh 2.27: Màn hình “Thơng tin cá nhân” Ảnh 2.28: Màn hình “Chỉnh sửa thơng tin” Ảnh 2.29:Màn hình “Danh sách lĩnh vực cá nhân”

72

Ảnh 2.30: Màn hình “Đang theo dõi”

Ảnh 2.31: Màn hình “Người theo dõi”

Ảnh 2.32: Màn hình “Nhắn tin”

73 Ảnh 2.34: Màn hình “Thơng báo” Ảnh 2.35: Màn hình “Tìm kiếm bài viết” – 1 Ảnh 2.36: Màn hình “Tìm kiếm bài viết” - 2 Ảnh 2.37: Màn hình “Tìm kiếm người dùng”

74

75

Ảnh 2.40: Màn hình "Admin - Chi tiết nhóm lĩnh vực"

76

Ảnh 2.42: Màn hình "Admin - Danh mục cấp độ"

77

Ảnh 2.44: Màn hình "Admin - Danh sách bài viết"

78

Ảnh 2.46: Màn hình "Admin - Danh sách người dùng"

79

2.3. Kiến thức nền tảng và công nghệ sử dụng 2.3.1. Kiến thức nền tảng 2.3.1. Kiến thức nền tảng

2.3.1.1. Json Web Token

Json Web Token là cách thức phổ biến nhất để truyền tin an toàn giữa các thành viên trong hệ thống bằng cách sử dụng đối tượng Json. Đối tượng này được xác thức độ tin cậy bằng phần “chữ kí - signature” của nó. “Chữ kí ” này thường sử dụng thuật toán RSA8 hoặc HMAC9 để mã hóa.

Ảnh 2.48: Kết cấu của Json Web Token10

Chu trình hoạt động của Json Web Token:

1. Người dùng (user) sử dụng trình duyệt đăng nhập vào một miền nào đó mà yêu cầu đăng nhập với tên đăng nhập và mật khẩu.

8 RSA là một thuật tốn mật mã hóa khóa cơng khai. Đây là thuật tốn đầu tiên phù hợp với việc tạo ra chữ ký điện tử đồng thời với việc mã hóa. Nó đánh dấu một sự tiến bộ vượt bậc của lĩnh vực mật mã học trong việc sử dụng khóa cơng cộng. RSA đang được sử dụng phổ biến trong thương mại điện tử và

được cho là đảm bảo an toàn với điều kiện độ dài khóa đủ lớn. Xem thêm: RSA (mã hóa) – Wikipedia

tiếng Việt

9 Xem thêm Hàm băm mật mã học – Wikipedia tiếng Việt

80

2. Máy chủ sẽ nhận được yêu cầu của người dùng, đồng thời kiểm tra thông tin tên đăng nhập và mật khẩu.

3. Máy chủ sau khi kiểm tra thông tin người dùng, nếu đúng sẽ trả một JWT về cho người dùng, nếu không quay lại bước 1.

4. Người dùng sẽ sử dụng mã JWT để tiếp tục sử dụng cho các yêu cầu kế tiếp trên miền của máy chủ.

5. Máy chủ sẽ không cần phải kiểm tra lại thông tin người dùng mà chỉ cần kiểm tra đúng JWT đã được cấp từ đó tăng tốc độ sử dụng trên miền giảm thời gian truy vấn.

6. Máy chủ trả phản hồi phù hợp cho người dùng.

2.3.2. Công nghệ sử dụng 2.3.2.1. .NET Core11 2.3.2.1. .NET Core11 Định nghĩa:

.NET Core là một nền tảng phát triển đa mục đích, mã nguồn mở giúp xây dựng ứng dụng cho Windows, macOS, và Linux sử dụng đa ngơn ngữ lập trình. Cung cấp các framework và API cho điện toán đám mây, IoT, UI và machine learning.

C#, Visual Basic, F# có thể được dùng để viết ứng dụng và thư viện cho .NET Core.

Ảnh 2.49: Logo .NET Core

81

Phiên bản đầu tiên: .NET Core 1.0 phát hành vào 27/6/2016. Phiên bản hiện tại: .NET 5 phát hành vào 11/2020.

Đặc điểm:

- Đa nền tảng: có thể chạy trên Window, macOS và Linux.

- Mã nguồn mở: áp dụng giấy phép MIT và Apache 2. .NET Core là một dự án thuộc .NET Foundation.

- Hiện đại: .NET Core thực thi các mơ hình hiện đại như lập trình bất đồng bộ, các mẫu không sao chép (no-copy patterns) bằng cách sử dụng structs, và quản trị tài nguyên cho các container.

- Hiệu năng: hiệu năng cao với các tính năng như hardware intrinsics, biên dịch theo tầng (tiered complication) và Span<T>.

- Phù hợp giữa các môi trường: xử lý code là như nhau trên nhiều hệ điều hành và

kiến trúc, bao gồm x64, x86 và ARM.

- Công cụ CMD: bao gồm công cụ dịng lệnh (command-line) để sử dụng, có thể

được sử dụng để phát triển cục bộ và tích hợp liên tục.

- Triển khai linh hoạt: có thể sử dụng .NET Core trong ứng dụng hoặc cài đặt nó

cạnh nhau. Có thể được sử dụng với Docker containers.

2.3.2.2. Application Programming Interface (API)

API (hay Giao diện lập trình ứng dụng) là các phương thức, giao thức kết nối với các thư viện và ứng dụng khác. Nó là viết tắt của Application Programming

Interface – giao diện lập trình ứng dụng. API cung cấp khả năng cung cấp khả năng truy xuất đến một tập các hàm hay dùng. Và từ đó có thể trao đổi dữ liệu giữa các ứng dụng.

Restful API được hiểu là một tiêu chuẩn được sử dụng để thiết kế API cho các ứng dụng website. Nhằm để quản lý các resource web một cách dễ dàng hơn. Có thể nói Restful là một trong những kiểu thiết kế API được các lập trình viên sử dụng khá

Một phần của tài liệu Xây dựng ứng dụng hỗ trợ kết nối và hỗ trợ trong học tập (Trang 69)