Thực hiện: Tên đề tài: Xây dựng hệ thống cung cấp dịch vụ quản lý và kinh doanh trực tuyến Nội dung đề tài: Nghiên cứu và ứng dụng các công nghệ hiện đại trong việc xây dựng, triển kha
Trang 1THÀNH PHỐ HỒ CHÍ MINH
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ THÔNG TIN
Tp Hồ Chí Minh, tháng 6/2023
XÂY DỰNG HỆ THỐNG CUNG CẤP DỊCH VỤ
QUẢN LÝ VÀ KINH DOANH TRỰC TUYẾN
GVHD: Th.S MAI ANH THƠ SVTH : NGUYỄN BẢO TRẤN
LÔ MINH PHÁT NGUYỄN VĂN SƠN
S K L 0 1 0 2 8 5
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH
KHOA ĐÀO TẠO CHẤT LƯỢNG CAO
KHÓA LUẬN TỐT NGHIỆP
Ngành: Công nghệ thông tin
Giảng viên hướng dẫn: Th S Mai Anh Thơ
Nhóm thực hiện:
Nguyễn Bảo Trấn – 19110301
Lô Minh Phát – 19110511 Nguyễn Văn Sơn – 19110280 Khoá: 2019 – 2023
Thành phố Hồ Chí Minh, tháng 06 năm 2023
ĐỀ TÀI: XÂY DỰNG HỆ THỐNG CUNG CẤP DỊCH VỤ
QUẢN LÝ VÀ KINH DOANH TRỰC TUYẾN
Trang 3Thực hiện:
Tên đề tài: Xây dựng hệ thống cung cấp dịch vụ quản lý và kinh doanh trực tuyến
Nội dung đề tài: Nghiên cứu và ứng dụng các công nghệ hiện đại trong việc xây
dựng, triển khai hệ thống cung cấp dịch vụ quản lý và kinh doanh thời trang Mang
đến cho người dùng những công cụ, ứng dụng, hỗ trợ cho việc kinh doanh trực tuyến
Thời gian thực hiện: 13/02/2023 – 28/05/2023
Chữ ký của SV:
TP Hồ Chí Minh, ngày… tháng… năm 2023
TRƯỞNG NGÀNH
(Ký và ghi rõ họ tên)
GIẢNG VIÊN HƯỚNG DẪN
(Ký và ghi rõ họ tên)
Đại học Sư phạm Kỹ thuật TP HCM
Khoa Đào tạo Chất lượng cao
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập – Tự do – Hạnh phúc
Trang 4LỜI CẢM ƠN
Lời đầu tiên, nhóm chúng em xin gửi lời cảm ơn chân thành đến Khoa Đào tạo Chất lượng cao của Trường Đại Học Sư Phạm Kỹ Thuật Thành Phố Hồ Chí Minh, đã tạo điều kiện cho nhóm thực hiện khóa luận tốt nghiệp này
Đồng thời, nhóm chúng em cũng xin gửi lời tri ân sâu sắc nhất đến Cô Mai Anh Thơ Trong quá trình tìm hiểu và học tập, chúng em đã nhận được những lời khuyên mà cô đưa ra từ kinh nghiệm thực tiễn và hướng dẫn rất tận tình, tâm huyết của cô Cô đã giúp chúng em tích lũy thêm nhiều kiến thức hay
và bổ ích Từ những kiến thức mà cô truyền đạt, nhóm chúng em xin trình bày lại những gì mình đã tìm hiểu và thực hiện đề tài này
Tuy nhiên, kiến thức của nhóm em vẫn còn những hạn chế nhất định Do
đó, không tránh khỏi những thiếu sót trong quá trình hoàn thành đồ án này Mong quý thầy cô xem và góp ý để đồ án của nhóm chúng em được hoàn thiện hơn
Kính chúc quý thầy cô hạnh phúc và thành công hơn nữa trong sự nghiệp
“trồng người”, luôn dồi dào sức khỏe để tiếp tục dìu dắt nhiều thế hệ học trò đến những bến bờ tri thức
Trang 51
MỤC LỤC
MỤC LỤC 1
DANH SÁCH BẢNG 7
DANH SÁCH ẢNH, HÌNH 10
Định nghĩa và từ viết tắt 14
PHẦN MỞ ĐẦU 15
CHƯƠNG 1: LÝ DO CHỌN ĐỀ TÀI 15
1.1 Giới thiệu 15
1.2 Xu hướng kinh doanh hiện nay 15
1.3 Vấn đề tồn tại 15
1.4 Giải pháp cho vấn đề tồn tại 15
1.5 Mục tiêu nghiên cứu: 17
PHẦN NỘI DUNG 18
CHƯƠNG 2: KHẢO SÁT HIỆN TRẠNG 18
2.1 Một số hệ thống tham khảo 18
2.1.1 Nền tảng quản lý và bán hàng đa kênh SAPO 18
2.1.2 Website kinh doanh thời trang Nike 23
2.1.3 Hệ thống quản lý của Yody 27
2.2 Tổng hợp, phân tích yêu cầu cho hệ thống 29
2.2.1 Về chức năng, website: 29
2.2.1.1 Website quản lý cửa hàng (Shop Manager): 29
2.2.1.2 Website cửa hàng (Shopping Website): 29
2.2.1.3 Website triển khai (Tenant Manager): 29
2.2.2 Về giao diện, trải nghiệm người dùng (UI/UX) 30
CHƯƠNG 3: KIẾN TRÚC HỆ THỐNG VÀ CÔNG NGHỆ SỬ DỤNG 31
3.1 Kiến trúc hệ thống 31
3.1.1 Định nghĩa 31
3.1.2 Ưu điểm và nhược điểm 31
Trang 62
3.1.3 Các giải pháp thiết kế 32
3.1.3.1 Sử dụng database riêng biệt cho từng tenant (Database per Tenant) 32 3.1.3.2 Sử dụng chung database, mỗi tenant sử dụng 1 schema (Schema per Tenant) 33
3.1.3.3 Dùng chung database và schema cho tất cả tenant (Shared database) 34 3.2 Công nghệ sử dụng – Backend 34
3.2.1 Spring Boot 34
3.2.2 Cấu trúc dự án 35
3.2.3 MySQL 36
3.3 Công nghệ sử dụng – Frontend 37
3.3.1 ReactJS 37
3.3.2 Cấu trúc dữ án 38
3.3.3 Các bộ thư viện dùng hỗ trợ cho website 39
3.4 Triển khai hệ thống, cấu hình CI/CD 39
CHƯƠNG 4: THIẾT KẾ HỆ THỐNG 39
4.1 Người dùng trong hệ thống 40
4.1.1 Xác thực và phân quyền 40
4.1.2 Phân loại người dùng (Actors) 40
4.2 Thiết kế use case 41
4.3 Mô tả chức năng 42
4.3.1 Quản lí tài khoản 47
4.3.2 Quản lí bộ thuộc tính sản phẩm 54
4.3.3 Quản lí thẻ sản phẩm 60
4.3.4 Quản lí danh mục 61
4.3.5 Quản lí tin tức 61
4.3.6 Quản lí quyền (Master) 61
4.3.7 Quản lí tỉnh thành 65
Trang 73
4.3.8 Quản lí chi nhánh 70
4.3.9 Quản lí thuộc tính 71
4.3.10 Đăng nhập người dùng 76
4.3.11 Đăng ký người dùng 77
4.3.12 Quản lý sản phẩm 79
4.3.13 Thêm sản phẩm vào giỏ hàng 79
4.3.14 Xem sản phẩm trong giỏ hàng 80
4.3.15 Đặt hàng và thanh toán đơn hàng 81
4.3.16 Quản lí sản phẩm 85
4.3.17 Quản lý đơn đặt hàng 90
4.3.18 Quản lý tenant 90
4.4 Class diagram 94
4.5 Thiết kế giao diện 97
4.5.1 Layout website quản lý cửa hàng 97
4.5.1.1 Giao diện các thành phần dùng để hiển thị nội dung 97
4.5.1.2 đăng nhập 105
4.5.1.3 User Profile 107
4.5.1.4 Navigation Bar 108
4.5.1.5 Màn hình quản lý các nội dung 109
4.5.2 Layout website triển khai 110
4.5.3 Layout website cửa hàng 111
4.5.3.1 Giao diện trang hiển thị sản phẩm 111
4.5.3.2 Giao diện trang xem chi tiết sản phẩm 112
4.5.3.3 Giao diện trang giỏ hàng 112
CHƯƠNG 5: KIỂM THỬ PHẦN MỀM 115
5.1 Test plan 115
5.2 Thiết kế test case: 115
CHƯƠNG 6: KẾT LUẬN 116
6.1 Kết quả đạt được 116
Trang 84
6.2 Ưu điểm: 116
6.3 Nhược điểm: 117
6.4 Hướng phát triển về sau: 117
TÀI LIỆU THAM KHẢO 118
PHỤ LỤC 1 119
1 Location 119
2 Store 119
3 Category 120
4 News 120
5 Tenant 121
6 Employee 122
7 Permission 122
8 Group 122
9 Account 123
10 CustomerAddress 124
11 Customer 124
12 Tag 125
13 ProductCategory 125
14 ProductVariant 125
15 ProductConfig 127
16 Product 127
17 OrderItem 128
18 Order 128
19 Variant 130
20 VariantConfig 130
21 VariantTemplate 130
22 Payment 131
23 paymentConfig 131
24 Carousel 132
Trang 95
25 carouselItem 132
26 FacetedSearch 132
27 FactedItem 133
Trang 106
Trang 117
DANH SÁCH BẢNG
Bảng 1: Cấu trúc dữ án Frontend 39
Bảng 2: Bộ thư viện dùng cho dự án frontend 39
Bảng 3: Phân loại người dùng (Actors) 40
Bảng 4: Danh sách các chức năng của từng website 47
Bảng 5: Use case tạo mới tài khoản 48
Bảng 6: Use case chỉnh sửa thông tin tài khoản 50
Bảng 7: Use case xem thông tin tài khoản 52
Bảng 8: Use case xoá tài khoản 54
Bảng 9: Use case tạo mới bộ thuộc tính 55
Bảng 10: Use case chỉnh sửa bộ thuộc tính 57
Bảng 11: Use case xem thông tin bộ thuộc tính 59
Bảng 12: Use case xoá bộ thuộc tính 60
Bảng 13: Nhóm chức năng quản lý thẻ sản phẩm (tags) 60
Bảng 14: Nhóm chức năng quản lý danh mục 61
Bảng 15: Nhóm chức năng quản lý tin tức 61
Bảng 16: Use case xem danh sách quyền 62
Bảng 17: Use case chỉnh sửa quyền 63
Bảng 18: Use case xem tỉnh thành 65
Bảng 19: Use case tạo mới tỉnh thành 67
Bảng 20: Use case chỉnh sửa tỉnh thành 68
Bảng 21: Use case xoá tỉnh thành 70
Bảng 22: Nhóm chức năng quản lý chi nhánh 70
Bảng 23: Use case xem danh sách thuộc tính 71
Bảng 24: Use case tạo mới một thuộc tính 72
Bảng 25: Use case chỉnh sửa thuộc tính 74
Bảng 26: Use case xoá thuộc tính 75
Bảng 27: Use case đăng nhập khách hàng 76
Bảng 28: Use case đăng kí người dùng 78
Trang 128
Bảng 29: Nhóm chức năng quản lý sản phẩm 79
Bảng 30: Use case thêm sản phẩm về giỏ hàng 79
Bảng 31: Use case xem sản phẩm vào giỏ hàng 81
Bảng 32: Use case đặt hàng 83
Bảng 33: Use case xem danh sách sản phẩm 85
Bảng 34: Use case tạo mới một sản phẩm 87
Bảng 35: Use case chỉnh sửa sản phẩm 89
Bảng 36: Nhóm chức năng quản lý đơn hàng 90
Bảng 37: Use case tạo mới Tenant 91
Bảng 38: Use case xóa Tenant 92
Bảng 39: bảng mô tả layout website CMS 97
Bảng 40: Bảng mô tả thành phần hiển thị nội dung website 105
Bảng 41: Bảng mô tả giao diện đăng nhập CMS 106
Bảng 42: Bảng mô tả Trang Profile 108
Bảng 43: Bảng mô tả Navigation Bar CMS 108
Bảng 44: Bảng mô tả thành phần hiển thị 111
Bảng 45: Bảng mô tả thành phần hiển thị trang chi tiết sản phẩm 112
Bảng 46: Bảng mô tả thành phần hiển thị trang giỏ hàng 112
Bảng 47: Bảng mô tả thành phần hiển thị trang tạo đơn hàng 114
Bảng 48: Mô tả class Location 119
Bảng 49: Mô tả class Store 119
Bảng 50: Mô tả class Category 120
Bảng 51: Mô tả class News 120
Bảng 52: Mô tả class Tenant 121
Bảng 53: Mô tả class Employee 122
Bảng 54: Mô tả class Permission 122
Bảng 55: Mô tả class Group 123
Bảng 56: Mô tả class Account 124
Bảng 57: Mô tả class CustomerAddress 124
Trang 139
Bảng 58: Mô tả class Customer 125
Bảng 59: Mô tả class Tag 125
Bảng 60: Mô tả class ProductCategory 125
Bảng 61: Mô tả class ProductVariant 126
Bảng 62: Mô tả class ProductConfig 127
Bảng 63: Mô tả class Product 128
Bảng 64: Mô tả class OrderItem 128
Bảng 65: Mô tả class Order 129
Bảng 66: Mô tả class Variant 130
Bảng 67: Mô tả class VariantConfig 130
Bảng 68: Mô tả class VariantTemplate 130
Bảng 69: Mô tả class Payment 131
Bảng 70: Mô tả class PaymentConfig 131
Bảng 71: Mô tả class Carousel 132
Bảng 72: Mô tả class CarouselItem 132
Bảng 73: Mô tả class FacetedSearch 132
Bảng 74: Mô tả class FacetedItem 133
Trang 1410
DANH SÁCH ẢNH, HÌNH
Ảnh 1: Hệ thống Sapo [1] 18
Ảnh 2: Hệ thống Sapo [2] 19
Ảnh 3: Hệ thống Sapo [3] 19
Ảnh 4: Hệ thống Sapo [4] 20
Ảnh 5: Hệ thống Sapo [5] 20
Ảnh 6: Hệ thống Sapo [6] 20
Ảnh 7: Hệ thống Sapo [7] 21
Ảnh 8: Hệ thống Sapo [8] 21
Ảnh 9: Hệ thống Sapo [9] 21
Ảnh 10: Hệ thống Sapo [10] 22
Ảnh 11: Hệ thống Sapo [11] 22
Ảnh 12: Ảnh website Nike [1] 23
Ảnh 13: Ảnh website Nike [2] 24
Ảnh 14: Ảnh website Nike [3] 25
Ảnh 15: Ảnh website Nike [4] 25
Ảnh 16: Ảnh website Nike [5] 26
Ảnh 17: Giao diện quản lý Yody [1] 27
Ảnh 18: Giao diện quản lý Yody [2] 27
Ảnh 19: Giao diện quản lý Yody [3] 28
Ảnh 20: Giao diện quản lý Yody [4] 28
Ảnh 21: Kiến trúc hệ thống được sử dụng trong project 31
Ảnh 22: Database per Tenant 32
Ảnh 23: Schema per Tenant 33
Ảnh 24: Shared database 34
Ảnh 25: Biểu tượng của Spring Boot 34
Ảnh 26: Cấu trúc thư mục của phía backend Spring Boot 35
Ảnh 27: Biểu tượng của MySQL 36
Ảnh 28: Biểu tượng của ReactJS 37
Trang 1511
Ảnh 29: Các thành phần hiển thị trên trình duyệt được biểu diễn thành UI Tree
trong ReactJS 38
Ảnh 30: Cấu trúc thư mục Frontend – ReactJS 38
Ảnh 31: Quy trình triển khai và cấu hình CI/CD 39
Ảnh 32: Sơ đồ use case ở mức tổng quan Error! Bookmark not defined Ảnh 33: Lược đồ tuần tự tạo mới tài khoản 49
Ảnh 34: Lược đồ tuần tự chỉnh sửa tài khoản 51
Ảnh 35: Lược đồ tuần tự xem tài khoản 53
Ảnh 36: Lược đồ tuần tự xoá tài khoản 54
Ảnh 37: Lược đồ tuần tự tạo bộ thuộc tính mới 56
Ảnh 38: Lược đồ tuần tự chỉnh sửa bộ thuộc tính 58
Ảnh 39: Lược đồ tuần tự xem danh sách bộ thuộc tính sản phẩm 59
Ảnh 40: Lược đồ tuần tự xoá bộ thuộc tính 60
Ảnh 41: Lược đồ tuần tự xem danh sách quyền 62
Ảnh 42: Lược đồ tuần tự chỉnh sửa nhóm quyền 64
Ảnh 43: Lược đồ tuần tự xem danh sách tỉnh thành 66
Ảnh 44: Lược đồ tuần tự tạo mới tính thành 67
Ảnh 45: Lược đồ tuần tự chỉnh sửa tỉnh thành 69
Ảnh 46: Lược đồ tuần tự xoá tỉnh thành 70
Ảnh 47: Lược đồ tuần tự xem danh sách thuộc tính 71
Ảnh 48: Lược đồ tuần tự tạo mới thuộc tính 73
Ảnh 49: Lược đồ tuần tự chỉnh sửa thuộc tính thành công 74
Ảnh 50: Lược đồ tuần tự xoá thuộc tính 75
Ảnh 51: Lược đồ tuần tự đăng nhập 77
Ảnh 52: Lược đồ tuần tự đăng kí người dùng 78
Ảnh 53: Lược đồ tuần tự thêm sản phẩm vào giỏ hàng 80
Ảnh 54: Lược đồ tuần tự xem giỏ hàng 81
Ảnh 55: Lược đồ tuần tự đặt hàng và thanh toán 84
Ảnh 56: Lược đồ tuần tự xem danh sách sản phẩm 85
Trang 1612
Ảnh 57: Lược đồ tuần tự tạo mới sản phẩm 87
Ảnh 58: Lược đồ tuần tự chỉnh sửa sản phẩm 89
Ảnh 59: Lược đồ tuần tự tạo mới tenant 91
Ảnh 60: Lược đồ tuần tự xóa tenant 93
Ảnh 61: Class diagram của ứng dụng Master 94
Ảnh 62: Class Diagram cho ứng dụng tenant 96
Ảnh 63: Layout website quản lý cửa hàng 97
Hình 1: Label + Input 98
Hình 2: Dropdown 98
Hình 3: InputDate 99
Hình 4: InputPassword 99
Hình 5: TextArea 99
Hình 6: TickBox 100
Hình 7: UploadImage 100
Hình 8: RichTextField 100
Hình 9: NumberInput 101
Hình 10: CordinateInput 101
Hình 11: ColorPicker 102
Hình 12: VariantSetInput 103
Hình 13: orderProductTable 103
Hình 14: ContentListTable 104
Hình 15: ContentAction 105
Hình 16: Notification Panel 105
Hình 17: Màn hình đăng nhập trang quản lý cửa hàng 105
Hình 18: Trang Profile 107
Hình 19: Shop Manager Navigation Bar 108
Hình 20: Giao diện quản lý danh sách các nội dung 109
Hình 21: Giao diện xem thông tin chi tiết và điều chỉnh thông tin 109
Trang 1713
Hình 22: Layout website triển khai [1] 110
Hình 23: Layout website triển khai [2] 110
Hình 24: Trang hiển thị sản phẩm 111
Hình 25: trang chi tiết sản phẩm 112
Hình 26: Giao diện trang giỏ hàng 112
Hình 27: Trang giao diện tạo đơn hàng 113
Trang 1814
Định nghĩa và từ viết tắt
công cụ tìm kiếm)
kinh doanh ẩm thực, nhà hàng, ăn uống Navbar Thanh công cụ, hiển thị trong các website
nghiệm người dùng)
(Continuous Delivery), ý nói là quá trình tích hợp (integration) thường xuyên, nhanh chóng hơn khi code cũng như thường xuyên cập nhật phiên bản mới
(delivery)
Tenant Đại diện cho một người dùng, đã đăng
ký, được cấp 1 tài khoản để tham gia vào
sử dụng các website quản lý và bán hàng
Trang 191.2 Xu hướng kinh doanh hiện nay
Ngày nay, khi mà xu hướng kinh doanh trực tuyến hay bán hàng qua mạng đã trở nên phổ biến hơn bao giờ hết Khái niệm “Thương mại điện tử” (TMĐT) đã không còn quá xa lạ với người Việt Nam ta Sự ra đời của các công nghệ, hệ thống, ứng dụng, đóng vai trò quan trọng cho sự phát triển này, xây dựng cầu nối, xóa bỏ khoảng cách giữa người mua và người bán, mang đến giải pháp kinh doanh tốt nhất, tạo ra nguồn lợi nhuận to lớn, thúc đẩy sự phát triển và tăng trưởng trong nhiều ngành nghề khác nhau
1.3 Vấn đề tồn tại
Tuy nhiên, để có được một hệ thống TMĐT, từ khâu xây dựng, cũng như triển khai đi vào vận hành, sẽ tiêu tốn của các doanh nghiệp một khoản chi phí không hề nhỏ Thêm vào đó thời gian để hoàn thiện hệ thống, cho đến khi đi vào hoạt động cũng sẽ khá lâu Chưa kể đến việc, hệ thống có lỗi phát sinh, chưa cung cấp đầy đủ các tính năng cần thiết trong một hệ thống TMĐT Từ đó, gây ra những trở ngại, khó khăn cho doanh nghiệp, đặc biệt là các doanh nghiệp vừa và nhỏ đang trong giai đoạn khởi nghiệp
1.4 Giải pháp cho vấn đề tồn tại
Để giải quyết những khó khăn trên, nhóm đã quyết định tìm hiểu, nghiên cứu
về vấn đề trên, đồng thời có những buổi trao đổi trực tiếp với một vài người đã từng làm việc cho những hộ kinh doanh cũng đang trong giai đoạn khởi nghiệp và cũng đã từng gặp phải vấn đề trên
Trang 2016
Qua đó nhóm biết được giải pháp chung, mà những hộ kinh doanh này chọn đó
là đăng ký, tham gia vào các hệ thống đã được xây dựng, hoàn thiện trước đó, với đầy
đủ các chức năng, công cụ cần thiết, tất cả đều đã được kiểm tra kĩ càng, đảm bảo chất lượng tốt nhất, luôn được cập nhật thường xuyên
Chủ sở hữu của những hệ thống này, mở ra một loại hình cung cấp dịch vụ, cho phép những người dùng tham gia vào, mỗi người sẽ được cấp một bộ các tài khoản riêng biệt, dùng để đăng nhập vào và sử dụng hệ thống Về các chức năng, công cụ giữa những người dùng này là hoàn giống nhau, do là dùng chung một hệ thống Nhưng dữ liệu trong hệ thống của mỗi tài khoản sẽ được quản lý riêng biệt, tách biệt hoàn toàn, mỗi người một kho dữ liệu riêng
Từ đó những chủ sở hữu này mở ra một loại hình dịch vụ thu phí người dùng hằng tháng, tất nhiên chi phí sẽ rẻ hơn rất nhiều so với việc phải xây cả một hệ thống,
và thời gian triển khai cũng sẽ nhanh chóng hơn Hơn nữa việc triển khai như vậy sẽ giúp chủ sở hữu có thể mở ra thêm nhiều ứng dụng, những phiên bản mở rộng, công
cụ bổ trợ thêm, thu thêm phí nếu người dùng có mong muốn sử dụng chúng
Qua những thông tin thu thập được ở trên, đề tài mà nhóm muốn thực hiện sẽ
là triển khai một website thương mại điện tử, cho phép nhiều người dùng có thể cùng tham gia vào, dùng chung các ứng dụng website, cho việc quản lý cũng như bán hàng trực tuyến Tất nhiên dữ liệu ở mỗi người dùng sẽ được tổ chức và quản lý riêng biệt nhau, dựa trên lối kiến trúc, hướng thiết kế, mà nhóm đã nghiên cứu và tìm hiểu, có tên là Multi-Tenancy
Trang 2117
1.5 Mục tiêu nghiên cứu:
Tìm hiểu, ứng dụng các công nghệ mới, trong việc xây dựng, phát triển, triển khai ứng dụng trên nền tảng website
Xây dựng một trang thương mại điện tử, cho phép nhiều người dùng có thể cùng tham gia vào, dùng chung với nhau
Nghiên cứu kiến trúc Multi-Tenancy, áp dụng cho việc thiết kế, xây dựng cấu trúc hệ thống của ứng dụng
Tìm hiểu về các nghiệp vụ trong thương mại điện tử, mang đến những giải pháp phù hợp trong việc quản lý và kinh doanh trực tuyến
Tạo ra một ứng dụng thân thiện với người dùng, dễ sử dụng
Cho phép tùy chỉnh mở rộng những hướng phát triển về sau cho ứng dụng
Giải đáp các thắc mắc của các thành viên trong nhóm về cách xây dựng, và vận hành của những hệ thống tương tự
Trang 2218
PHẦN NỘI DUNG
2.1 Một số hệ thống tham khảo
2.1.1 Nền tảng quản lý và bán hàng đa kênh SAPO
Ảnh 1: Hệ thống Sapo [1]
Sapo là một nền tảng quản lý và bán hàng đa kết, được sử dụng khá phổ biến hiện nay tại Việt Nam, mang lại nhiều giải pháp như là:
Sapo Web: Phần mềm cho phép người dùng thiết kế website, thiết lập SEO
cho các doanh nghiệp
Sapo Go: Ứng dụng quản lý bán hàng cho doanh nghiệp trên các sàn thương
mại điện tử, Facebook
Sapo FNB: Phần mềm hỗ trợ cho các doanh nghiệp thuộc lĩnh vực F&B, quán
ăn, quán cafe, giúp lên đơn hàng, quản lý kho, nguyên liệu, kiểm tra doanh thu,
Sapo OMINI: Đây là phần mềm quản lý bán hàng đa kênh được đánh giá tốt
nhất Hỗ trợ các doanh nghiệp trong việc quản lý tập trung các cửa hàng từ các sàn TMĐT, website, Facebook… trên cùng một nền tảng
Sapo Academy: Nơi chia sẻ kinh nghiệm, nghiệp vụ, đào tạo bán hàng online
thực chiến
Trang 26Mang đến cho các cửa hàng kinh doanh, từ nhỏ đến lớn, một hệ thống quản lý
và bán hàng vô cùng nhanh chóng, tiện lợi, với chi phí không quá cao
Những chức năng, công cụ mà Sapo cung cấp cho thấy được sự chuyên nghiệp trong từng khâu xử lý, từng lĩnh vực, ngành nghề khác nhau Rất rõ ràng, minh bạch, chi tiết và đầy đủ thông tin
Trang 2723
2.1.2 Website kinh doanh thời trang Nike
Ảnh 12: Ảnh website Nike [1]
Trang 2824
Trang chủ thiết kế trực quan, dễ nắm bắt thông tin
Các danh mục lớn được phân chia rõ ràng
Ảnh 13: Ảnh website Nike [2]
Giá cả và hình ảnh trực quan, rõ ràng, thông tin ngắn chi tiết dễ hiểu
Có chức năng lọc sản phẩm, phân theo từng màu sắc, giới tính, độ tuổi, giúp thuận tiện, tăng tính trải nghiệm cho người dùng
Trang 3026
Ảnh 16: Ảnh website Nike [5]
Trang chi tiết sản phẩm, có nhiều hình ảnh trực quan, các nút bấm rõ ràng, người dùng nhìn vào dễ dàng nhận biết và thao tác
Trang 3127
2.1.3 Hệ thống quản lý của Yody
Ảnh 17: Giao diện quản lý Yody [1]
Giao diện đẹp mắt, bố cục đầy đủ, các thông tin được phân thành từng cụm, từng
ô một, giúp việc diễn giải nội dung rõ ràng, dễ tìm, dễ nắm bắt
Trang web với phông màu hài hòa, dễ nhìn
Các nút bấm, đề mục từng trang có hiệu ứng để nhận biết người dùng đang ở trong đề mục nào, ngoài ra còn có nút thu gọn nội dung, nút thông báo
Ảnh 18: Giao diện quản lý Yody [2]
Trang 3228
Giao diện đẹp mắt, bố cục đầy đủ, các thông tin được phân thành từng cụm, từng
ô một, giúp việc diễn giải nội dung rõ ràng, dễ tìm, dễ nắm bắt
Ảnh 19: Giao diện quản lý Yody [3]
Dữ liệu trình bày theo dạng bảng, từng hàng một, mỗi hàng sẽ có các cột thông tin tương ứng, còn có các thanh công cụ tìm kiếm, bộ lọc, phân trang
Ảnh 20: Giao diện quản lý Yody [4]
Các thanh navbar phân cấp nội dung rõ ràng, có hiệu ứng sáng khi click vào, có các nút thu gọn
Có thể thấy ở trang quản lý này của yody, có rất nhiều đề mục và nội dung cần quản lý, là những công cụ hỗ trợ cho việc kinh doanh
Trang 3329
2.2 Tổng hợp, phân tích yêu cầu cho hệ thống
Qua những tìm hiểu, nghiên cứu, khảo sát về các hệ thống hiện nay, tổng kết lại, để có thể xây dựng một trang thương mại điện tử, cung cấp đầy đủ các nghiệp vụ quản lý và kinh doanh dưới dạng một loại hình dịch vụ cho phép nhiều người tham gia vào sử dụng, ta sẽ cần có những yêu cầu sau:
2.2.1 Về chức năng, website:
2.2.1.1 Website quản lý cửa hàng (Shop Manager):
Một website quản lý, cung cấp các công cụ, chức năng hỗ trợ, cho việc quản lý kinh doanh
Bắt buộc phải đăng nhập để sử dụng
Quản lý phân quyền cho các tài khoản nhân viên trong cửa hàng
Quản lý các thông tin sản phẩm trong cửa hàng, thiết kế cấu hình thuộc tính cho sản phẩm, tạo nên tính đa dạng trong các loại mặt hàng
Quản lý các đơn hàng
Quản lý các thông tin, nội dung hiển thị trên website cửa hàng
Kiểm tra các số liệu kinh doanh trong cửa hàng
2.2.1.2 Website cửa hàng (Shopping Website):
Website bán hàng, hiển thị các sản phẩm được bày bán
Không bắt buộc phải đăng nhập để sử dụng
Người có thể xem các thông tin sản phẩm, tin tức, biển quảng cáo, tìm kiếm sản phẩm, thêm vào giỏ hàng, đặt hàng, thanh toán
Nội dung trên website có tính tùy biến cao, có thể thay đổi, dựa trên các thiết lập bên website quản lý cửa hàng
2.2.1.3 Website triển khai (Tenant Manager):
Website quản lý thông tin các tài khoản đăng ký tham gia, sử dụng các website quản lý và website cửa hàng
Bắt buộc phải đăng nhập để sử dụng
Chịu trách nhiệm triển khai, mở tài khoản cho những người dùng đăng
ký tham gia vào
Trang 3430
Chi tiết các chức năng cho từng website được mô tả ở Chương 4
2.2.2 Về giao diện, trải nghiệm người dùng (UI/UX)
Giao diện bắt mắt, bố cục rõ ràng các vị trí content, navbar, sử dụng các
màu sắc đơn giản, không quá cầu kì, dễ nhìn, vị trí các nút bấm, hình ảnh
sản phẩm, nội dung rõ ràng, Website hoạt động mượt mà
Phải luôn đặt mình dưới góc nhìn 1 người dùng bình thường, mang đến
những trải nghiệm tốt nhất Giúp người dùng nhận diện, xác định rõ vấn
đề khi có lỗi xảy, để người khắc phục, thực hiện lại Dữ liệu nội dung
quản lý phải được ràng buộc kĩ càng, tránh sai sót dữ liệu
Trang 3531
Ảnh 21: Kiến trúc hệ thống được sử dụng trong project
3.1 Kiến trúc hệ thống
3.1.1 Định nghĩa
Multi Tenancy là một giải pháp thiết kế phần mềm với chỉ một phiên bản ứng dụng nhưng vẫn có cơ sở dữ liệu phục vụ cho nhiều khách hàng cùng lúc Mỗi khách hàng được chia sẻ ứng dụng phần mềm và một cơ sở dữ liệu Dữ liệu của từng khách hàng sẽ độc lập, tách biệt với nhau
3.1.2 Ưu điểm và nhược điểm
Ưu điểm:
Chi phí thấp hơn: Với nhiều tenant, việc mở rộng quy mô ít ảnh hưởng đến cơ
sở hạ tầng hơn nhiều so với giải pháp lưu trữ trên một bên thuê vì người dùng mới có quyền truy cập vào cùng một phần mềm cơ bản
Cơ sở hạ tầng dùng chung dẫn đến chi phí thấp hơn: kiến trúc này cho phép các công ty thuộc mọi quy mô chia sẻ cơ sở hạ tầng và chi phí vận hành trung tâm dữ liệu
và không phải tốn chi phí cho việc quản lí hạ tầng Việc không phải quản lý bất kỳ cơ
sở hạ tầng hoặc phần mềm nào ngoài tài nguyên nội bộ cho phép doanh nghiệp tập trung vào các công việc hàng ngày
Trang 3632
Bảo trì và cập nhật liên tục: Khách hàng không cần phải trả phí bảo trì tốn kém
để luôn cập nhật phần mềm của họ Các nhà cung cấp tung ra các tính năng và cập nhật mới
Nhược điểm:
Khó sao lưu cơ sở dữ liệu cho từng tenant riêng lẻ
Lượng dữ liệu phình to ra nhanh chóng
Khó khăn khi mở rộng tài nguyên cho hệ thống
3.1.3 Các giải pháp thiết kế
Khi thiết kế kiến trúc Multi-tenancy, thách thức nằm ở việc tách dữ liệu cho từng tenant, trong khi vẫn chia sẻ nhiều nhất có thể các tài nguyên khác Dưới đây là
3 mẫu kiến trúc chính cho nhiều người thuê, khác nhau về mức độ phân tách (vật lý)
dữ liệu của người thuê
3.1.3.1 Sử dụng database riêng biệt cho từng tenant (Database per Tenant)
Với cách thiết kế này, hệ thống sẽ có 1 database chính (lưu trữ danh sách tenant, thông tin của các tenant, ), và các database của các tenant có cấu trúc giống nhau Với mỗi khách thuê sẽ có quyền truy cập vào database của chính họ
Ảnh 22: Database per Tenant
Trang 3733
Ưu điểm lớn nhất của cách thiết kế này là dữ liệu của từng bên thuê được cách
ly ở mức vật lí nên đảm bảo được mức độ an toàn dữ liệu và tính riêng tư cao nhất Tuy nhiên đây là một cách làm tốn kém vì cần nhiều tài nguyên phần cứng Cách làm này chỉ phù hợp với một số khách hàng có yêu cầu đặc biệt và sẵn sàng trả tiền
3.1.3.2 Sử dụng chung database, mỗi tenant sử dụng 1 schema (Schema per Tenant)
Cách thiết kế này sử dụng một cơ sở dữ liệu, mỗi tenant tương ứng 1 schema
Sử dụng 1 schema chung để quản lý những thông tin chi tiết, danh sách của các tenants Các tenants sẽ có cấu trúc table giống như nhau Dữ liệu cho mỗi tenants được cách ly ở mức logic theo ngữ nghĩa của các schema riêng biệt do công cụ cơ sở
dữ liệu cung cấp Nếu database cung cấp chức năng phân quyền từng schema cho từng user, thì cơ chế bảo mật của công cụ cơ sở dữ liệu sẽ đảm bảo hơn nữa tính riêng tư và bảo mật của dữ liệu
Ảnh 23: Schema per Tenant
Tuy nhiên, vấn đề sao lưu và khôi phục là nhược điểm của cách thiết kế này khi hệ quản trị cơ sở dữ liệu không cung cấp chức năng sao lưu và khôi phục trên từng schema Khi đó bắt buộc phải sao lưu toàn bộ cơ sở dữ liệu Điều này sẽ gây ảnh hưởng đến các tenant không liên quan
Trang 3834
3.1.3.3 Dùng chung database và schema cho tất cả tenant (Shared database)
Với cách làm này thì tất cả dữ liệu của tenants sẽ lưu chung trong cùng table,
và sẽ chỉ phân biệt nhau thông qua cột định danh ví dụ: tenant_id Cách này sẽ hạn chế được vấn đề khi phải đồng bộ cấu trúc bảng của hệ thống
Ảnh 24: Shared database
Đây là cách thiết kế có khả năng phân tách dữ liệu theo từng tenant thấp nhất nhưng sẽ tận dụng được tối đa tài nguyên Đây cũng là cách thiết kế cơ sở dữ liệu đơn giản nhất nhưng sẽ gây phức tạp ở tầng ứng dụng, việc quản lí sao lưu sẽ gặp khó khăn giống như cách thiết kế thứ hai
3.2 Công nghệ sử dụng – Backend
3.2.1 Spring Boot
Ảnh 25: Biểu tượng của Spring Boot
Spring Boot là một project trong hệ sinh thái spring framework cho ngôn ngữ Java Trước khi có Spring Boot để khởi động một project spring ta phải trải qua rất nhiều bước cấu hình, khi spring boot ra đời với chức năng tự động cấu hình, vì thế
Trang 3935
người lập trình chỉ tập trung vào việc phát triển business cho ứng dụng Ngoài ra một tính năng cốt lõi của spring là dependency injection cho phép người lập trình tạo các ứng dụng mô-đun bao gồm các thành phần được ghép nối lỏng lẻo giúp dễ dàng mở rộng hệ thống, lý tưởng cho việc phát triển ứng dụng microservice
Ưu điểm của Spring Boot:
Spring là framework nổi tiếng cho một trong những ngôn ngữ phổ biến nhất thế giới là Java với cộng đồng sử dụng rất lớn, hầu hết vấn đề gặp phải khi sử dụng spring đều đã có cách giải quyết trên internet
Cung cấp khả năng tự động cấu hình giúp triển khai hệ thống nhanh chóng
Cốt lõi của spring là dependency injection giúp cho hệ thống dễ dàng mở rộng, lý tưởng cho phát triển ứng dụng microservice
3.2.2 Cấu trúc dự án
Ảnh 26: Cấu trúc thư mục của phía backend Spring Boot
Controller: nơi tiếp nhận request ở phía client để xử lý và trả về response
Trang 40Ảnh 27: Biểu tượng của MySQL
Hệ quản trị cơ sở dữ liệu MySQL được hiểu như là chương trình dùng để quản
lý hệ thống cơ sở dữ liệu, trong đó, cơ sở dữ liệu là một hệ thống lưu trữ thông tin được sắp xếp rõ ràng, phân lớp ngăn nắp Nó giúp bạn có thể truy cập dữ liệu một cách thuận lợi và nhanh chóng nhất Vì hỗ trợ đa số các ngôn ngữ lập trình nên MySQL chính là hệ quản trị cơ sở dữ liệu tự do nguồn mở phổ biến nhất trên thế giới Hiện MySQL đang được các nhà phát triển rất ưa chuộng trong quá trình phát triển ứng dụng
MySQL là cơ sở dữ liệu tốc độ cao, ổn định hoạt động trên nhiều hệ điều hành, cung cấp một hệ thống lớn các hàm tiện ích rất mạnh Đặc biệt, hệ quản trị cơ sở dữ liệu MySQL hoàn toàn miễn phí nên người dùng có thể thoải mái tải về từ trang chủ
Nó có rất nhiều những phiên bản cho các hệ điều hành khác nhau
Đặc điểm của hệ quản trị cơ sở dữ liệu MySQL
Hệ quản trị cơ sở dữ liệu MySQL chính là một trong những phần mềm quản trị CSDL dạng server based, hệ gần giống với SQL server of Microsoft
MySQL là phần mềm quản lý dữ liệu thông qua CSDL Và mỗi một CSDL đều có bảng quan hệ chứa dữ liệu riêng biệt