ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
BÁO CÁO ĐỒ ÁN 1
ỨNG DỤNG ĐẶT HÀNG ADIDAS
Nhóm sinh viên thực hiện:
Bùi Thiện Nhân-19521927
Trần Hiếu Nghĩa-19521902
GIẢNG VIÊN HƯỚNG DẪN
LÊ THANH TRỌNG
TP. HỒ CHÍ MINH, 2022
Lời cảm ơn
Đầu tiên nhóm em xin gửi lời cảm ơn tới thầy Lê Thanh Trọng trong việc
giúp cả lớp nói chung và nhóm em nói riêng có được khối kiến thức cần
thiết trong môn học này để phục vụ cho việc làm đồ án. Trong suốt quá
trình học tập mơn này, nhóm em nhận được rất nhiều tài liệu cũng như
những kiến thức mà thầy cung cấp để phục vụ cho mơn học. Tuy nhiên
trong q trình làm đồ án khơng thể tránh khỏi những thiếu sót, nhóm
em mong thầy thơng cảm và sẽ coi đó là bài học trong tương lai sau này.
Các thành viên.
Nhận xét của giảng viên
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
Revision History
Name
Date
Reason For Changes
Trần Hiếu Nghĩa 1/04/2022
Phiên bản đầu tiên
Bùi Thiện Nhân 13/04/2022 Thêm các sơ đồ, business
Bùi Thiện Nhân 05/05/2022
Phiên bản thứ 2
Trần Hiếu Nghĩa 23/05/2022 Sửa Use Case & Interface
Bùi Thiện Nhân 07/06/2022 thêm Implementation, install
Version
V1.1
V1.2.1
V1.2
V1.2.1
V1.2.2
MỤC LỤC
Chương 1. GIỚI THIỆU CHUNG
10
1.1. Lý do chọn đề tài
10
1.2. Tổng quan về chức năng
10
1.2.1.
Đối với phần đăng nhập, đăng ký và đăng xuất
10
1.2.2.
Đối với người sử dụng
11
Chương 2. CƠ SỞ LÝ THUYẾT
12
2.1. Dart
12
2.2. Flutter
12
2.3. Provider
12
2.4. Đăng nhập bằng bên thứ 3
13
2.5. NodeJs
13
2.6. Heroku
13
2.7. Postman
14
Chương 3. XÂY DỰNG HỆ THỐNG
15
3.1. Xây dựng kiến trúc hệ thống
15
3.1.1.
Áp dụng kiến trúc MVVM trong ứng dụng
15
3.1.2.
Sơ đồ use case
17
3.1.3.
ERD
18
3.1.4.
Cơ sở dữ liệu
18
3.1.4.1. User
18
3.1.4.2. UserAddress
18
3.1.4.3. Store
19
3.1.4.4. Product
19
3.1.4.5. ProductTypes
19
3.1.4.6. ProductCategory
20
3.1.4.7. OrderItem
20
3.1.4.8. Order
20
3.1.4.9. Promotion
21
3.1.4.10. AdBanner
21
3.2. Thiết kế giao diện
21
3.2.1.
Màn hình splash
21
3.2.2.
Màn hình PopularProduct
23
3.2.3.
Màn hình Shop (Search)
26
3.2.4.
Màn hình Store
29
3.2.5.
Màn hình Product Category
32
3.2.6.
Màn hình List Filtered Product
34
3.2.7.
Màn hình Product Detail
36
3.2.8.
Màn hình WishList
41
3.2.9.
Màn hình Order
44
3.2.10.
Màn hình Authenticate
52
3.2.11.
Màn hình Order History
57
3.2.12.
Màn hình Settings:
61
3.2.13.
Màn hình chỉnh sửa, thêm User Address
71
Chương 4. CÀI ĐẶT
79
4.1. Môi trường phát triển
79
4.2. Các thư viện được sử dụng
80
Chương 5. KẾT LUẬN
81
5.1. Kết quả đạt được
81
5.1.1.
Về UI/UX
81
5.1.2.
Ưu điểm
81
5.1.3.
Nhược điểm và giải pháp
82
5.1.3.1. Các vấn đề hiện hữu
82
5.1.3.2. Giải pháp
82
5.1.4.
Hướng phát triển trong tương lai
Chương 6. TÀI LIỆU THAM KHẢO
82
82
TĨM TẮT ĐỒ ÁN
ỨNG DỤNG ADIDAS
-
Ngơi nhà của thể thao và giày sneaker, ứng dụng adidas giúp bạn dễ dàng
tiếp cận các sản phẩm giày sneaker, đợt ra mắt thời trang theo mùa, cùng các
bộ môn thể thao, trang phục và thiết bị phù hợp với phong cách cá nhân.
Nguồn cảm hứng, câu chuyện của các vận động viên và ưu đãi độc quyền
trên ứng dụng ngay trong tầm tay của bạn. Các sản phẩm adidas tốt nhất, tinh
tuyển cho bạn.
CHỈ MỘT ỨNG DỤNG ADIDAS. NHIỀU LỢI ÍCH
-
Cập nhật trước, sở hữu sớm. Từ tin tức vận động viên, dự án hợp tác trang
phục và các đợt ra mắt hype, bạn có thể khám phá tất cả chỉ với ứng dụng
adidas.
-
Nắm bắt tin tức về các mẫu giày sneaker
-
Mua sắm các sản phẩm mới ra mắt của adidas.
-
Giành quyền truy cập đến các ưu đãi, phần thưởng, quà tặng và sản phẩm đặc
biệt.
-
Nhận thông báo khi các sản phẩm giày sneaker & trang phục adidas yêu
thích của bạn được giảm giá
-
Theo dõi đơn hàng và lịch sử mua sắm để trả hàng dễ dàng.
TÌM NHANH CỬA HÀNG
-
Cập nhật, thơng tin các cửa hàng chính hãng được ủy quyền từ Adidas đang
có mặt ở quốc gia hiện tại của người dùng.
-
Thơng tin địa chỉ cửa hàng được tích hợp với cơng cụ tìm kiếm, chỉ đường
GoogleMap.
ADIDAS PHONG CÁCH THỂ THAO TỰ NHIÊN
-
Điều chỉnh dựa trên sở thích của bạn, ứng dụng adidas cho phép bạn dễ dàng
tạo phong cách Ba Sọc của chính mình. Và nếu thể thao là phong cách của
bạn, trang phục dòng Originals từ kho tàng adidas sẽ định hình phong cách
cho ngày nay. Với dòng trang phục cho nam, nữ và trẻ em, adidas luôn đổi
mới qua mỗi mùa.
Chương 1. GIỚI THIỆU CHUNG
1.1.
Lý do chọn đề tài
Hiện nay các chi nhánh của Adidas cũng như các cửa hàng nhượng quyền, được phép
phân phối, bán lẻ các sản phẩm chính hãng của Adidas xuất hiện ngày càng phổ biến.
Vì thế mỗi gian hàng, cửa hàng bắt đầu được phân bổ, tập trung vào một tệp hoặc
một lượng khách hàng nhất định, để làm nổi bật tiêu đề của chi nhánh, cửa hàng. Vì
vậy, việc một số cửa hàng mặc dù được thuộc hệ thống quản lý Adidas vẫn có thể sẽ
khơng có đầy đủ tồn bộ sản phẩm của Adidas để cung cấp cho người dùng. Ngồi
ra, các thơng tin về khuyến mãi, ra mắt sản phẩm, sự kiện, cộng đồng,… sẽ không
thể chỉ mỗi được thông báo ở cửa hàng, việc quảng cáo sẽ cần được đến từ nhiều
hướng tiếp cận, mạng xã hội là một trong những cách truyền thông hiệu quả nhất hiện
nay.
Hiểu và nắm bắt được vấn đề đó, nhóm chúng em mang đến một giải pháp cho các
chuỗi cửa hàng về việc quản lý cũng như để cửa hàng được tiếp cận người tiêu dùng
dễ dàng hơn. Các thông tin về cửa hàng, thương hiệu, sản phẩm cũng sẽ được đưa
đến một cách đầy đủ và chính xác. Người dùng sẽ khơng cần bắt buộc phải ‘có mặt’
ở một cửa hàng để tận hưởng khơng khí adidas. Ứng dụng hỗ trợ đặt hàng và quản lý
các sản phẩm Adidas sẽ giúp người dùng có thể đặt hàng tại nhà cũng như biết được
các hoạt động mới của cửa hàng và giúp các chuỗi cửa hàng tiến gần hơn với người
tiêu dùng.
1.2.
Tổng quan về chức năng
1.2.1. Đối với phần đăng nhập, đăng ký và đăng xuất
● Người sử dụng có thể đăng nhập hoặc đăng ký bằng ba phương thức
sau:
● Sử dụng email và password
● Thông qua google
● Thông qua facebook
● Sau khi đăng ký, người dùng được chuyển thẳng sang trang chính
● Khi một tài khoản đã đăng nhập, người dùng không cần phải đăng nhập
lại mỗi khi truy cập ứng dụng
1.2.2. Đối với người sử dụng
Ngồi xem thơng tin sản phẩm thì tất cả các chức năng của người sử dụng
đều yêu cầu phải đăng nhập trước.
a) Xem và nhận thông báo
● Thông báo của người dùng sẽ được update liên tục khi có thơng báo mới
● Khi người dùng xem một thông báo, sẽ giảm số lượng thông báo mới đi
một đơn vị
b) Xem và tra cứu thơng tin sản phẩm
● Người dùng có thể tra cứu sản phẩm theo tên gọi và xem thông tin chi tiết
của sản phẩm
● Khi người dùng chọn sản phẩm thì sẽ lưu vào giỏ hàng bao gồm các thuộc
tính cần thiết
● Khi người dùng đặt hàng và hồn tất điền vào các thơng tin của đơn hàng,
đơn hàng sẽ được thêm vào cơ sở dữ liệu và cộng điểm cho người dùng
c) Tra cứu và xem thông tin của cửa hàng
● Người dùng có thể tra cứu và xem thông tin của cửa hàng dựa trên tên và
địa chỉ của cửa hàng
● Người dùng có thể mở các ứng dụng liên quan để xem thông tin của cửa
hàng (địa chỉ, điện thoại)
d) Xem thông tin cá nhân
● Người dùng có thể xem và cập nhật một số thơng tin cá nhân
● Có thể đổi mật khẩu của người dùng
e) Xem và chỉnh sửa địa chỉ đã lưu
● Người dùng có thể xem, chỉnh sửa hoặc xóa thơng tin địa chỉ đã lưu trong
ứng dụng
f) Xem lịch sử đơn hàng
● Người dùng có thể xem lịch sử cũng như đơn hàng và chi tiết của những
đơn hàng đó(bao gồm tình trạng của đơn hàng)
g) Liên hệ
● Người dùng có thể mở các ứng dụng đã cài đặt trong máy để liên hệ và
tương tác với cửa hàng.
h) Cài đặt
● Người dùng có quyền chỉnh sửa cài đặt trong ứng dụng bao gồm quyền
không nhận thông báo đẩy
Chương 2. CƠ SỞ LÝ THUYẾT
2.1.
-
Dart là ngôn ngữ lập trình đa mục đích ban đầu được phát triển bởi Google và
sau đó được Ecma (ECMA-408) phê chuẩn làm tiêu chuẩn. Nó được sử dụng
để xây dựng các ứng dụng web, server, máy tính để bàn và thiết bị di động.
Dart là một ngôn ngữ hướng đối tượng, được xác định theo lớp, với cơ chế
garbage-collected, sử dụng cú pháp kiểu C để dịch mã tùy ý sang JavaScript.
Nó hỗ trợ interface, mixin, abstract, generic, static typing và sound type. Dart
là ngơn ngữ mã nguồn mở và miễn phí, được phát triển trên GitHub.
2.2.
-
-
-
-
Flutter
Flutter là mobile UI framework của Google để tạo ra các giao diện chất lượng
cao trên iOS và Android trong khoảng thời gian ngắn. Flutter hoạt động với
những code sẵn có được sử dụng bởi các lập trình viên, các tổ chức.
Các ứng dụng được xây dựng với Flutter hầu như không thể phân biệt với
những ứng dụng được xây dựng bằng cách sử dụng Android SDK, cả về giao
diện và hiệu suất. Hơn nữa, với những tinh chỉnh nhỏ, chúng có thể chạy trên
thiết bị iOS.
Flutter sử dụng Dart, một ngôn ngữ nhanh, hướng đối tượng với nhiều tính
năng hữu ích như mixin, generic, isolate, và static type.
Flutter có các thành phần UI của riêng nó, cùng với một cơ chế để kết xuất
chúng trên nền tảng Android và iOS. Hầu hết các thành phần giao diện người
dùng, đều sẵn dùng, phù hợp với các nguyên tắc của Material Design.
Các ứng dụng Flutter có thể được phát triển bằng cách sử dụng IntelliJ IDEA,
một IDE rất giống với Android Studio.
Flutter hồn tồn miễn phí và cũng là mã nguồn mở.
2.3.
-
Dart
Provider
Provider là một trong những giải pháp để quản lý State trong lập trình ứng
dụng với Flutter.
Provider là một thư viện cung cấp cho bạn một đường dẫn để bạn có thể kết
nối với các widget của bạn. Nó chỉ đơn giản là cung cấp dữ liệu cho những
widget nào cần, và không quan tâm đến những widget mà khơng cần cung cấp
dữ liệu.
Hồn tồn tách biệt logic khỏi các widget.
Dễ nắm bắt và làm quen với người mới bắt đầu.
Cấu trúc của dự án sẽ gọn gàng hơn.
12
-
Nó được chính Google và Flutter khuyến khích sử dụng cho tới thời điểm hiện
tại.
2.4.
Đăng nhập bằng bên thứ 3
Ứng dụng có hỗ trợ tính năng đăng nhập thơng qua bên thứ ba bằng Google
và Facebook. Một số thông tin đơn giản của người dùng sẽ được truy cập và
lưu trữ tại đây.
1.
Google Sign In
2.
Facebook Sign In (Hiện tại chưa được hoàn chỉnh)
2.5.
-
-
-
-
Nodejs là một mã nguồn được xây dựng dựa trên nền tảng Javascript V8
Engine. Nodejs sử dụng rộng bởi hàng ngàn lập trình viên trên tồn thế giới.
NodeJS có thể chạy trên nhiều nền tảng hệ điều hành khác nhau từ Windows
cho tới Linux, MacOs nên đó cũng là một lợi thế. NodeJS cung cấp các thư
viện phong phú ở dạng Javascript Module khác nhau giúp đơn giản hóa việc
lập trình và giảm thời gian ở mức thấp nhất.
Không đồng bộ: Tất cả các API của Nodejs đều khơng đồng bộ (noneblocking), nó chủ yếu dựa trên nền của Nodejs Server và chờ đợi Server trả dữ
liệu về. Việc di chuyển máy chủ đến các API tiếp theo sau khi gọi và cơ chế
thông báo các sự kiện của Node.js giúp máy chủ để có được một phản ứng từ
các cuộc gọi API trước (Realtime).
Tốc độ xử lý nhanh: Nodejs được xây dựng dựa vào nền tảng V8 Javascript
Engine nên việc thực thi chương trình rất nhanh.
Đơn luồng nhưng khả năng mở rộng cao: Node.js sử dụng một mơ hình luồng
duy nhất với sự kiện lặp. cơ chế tổ chức sự kiện giúp các máy chủ để đáp ứng
một cách không ngăn chặn và làm cho máy chủ cao khả năng mở rộng như trái
ngược với các máy chủ truyền thống mà tạo đề hạn chế để xử lý yêu cầu.
Node.js sử dụng một chương trình đơn luồng và các chương trình tương tự có
thể cung cấp dịch vụ cho một số lượng lớn hơn nhiều so với yêu cầu máy chủ
truyền thống như Apache HTTP Server.
Không đệm: Nodejs khơng đệm bất kì một dữ liệu nào và các ứng dụng này
chủ yếu là đầu ra dữ liệu.
Có giấy phép: Nodejs đã được cấp giấy phép bởi MIT License.
2.6.
-
NodeJs
Heroku
Heroku là một nền tảng đám mây cho phép các cá nhân, doanh nghiệp xây
dựng, triển khai, quản lý và mở rộng ứng dụng. Lợi thế chính của nền tảng này
13
-
-
nằm ở tính linh hoạt và dễ sử dụng, đây là giải pháp giúp các nhà phát triển
đưa ứng dụng của họ ra thị trường đơn giản và nhanh chóng.
Heroku Runtime: Hỗ trợ cung cấp các smart container mà ứng dụng của bạn
sẽ chạy trong đó. Bên cạnh đó, tính năng này còn giúp xử lý mọi thứ quan
trọng trong ứng dụng bao gồm cấu hình, điều phối, cân bằng tải, backup, log,
bảo mật…
Heroku Redis: Hỗ trợ dịch vụ Redis phục vụ cho lập trình viên sử dụng. Dịch
vụ này cho phép lưu trữ trên bộ nhớ với tốc độ nhanh phổ biến.
Add-ons: Hỗ trợ bạn quản lý các ứng dụng với dịch vụ được tích hợp sẵn như
New Relic, Mongo DB, SendGrid, Searchify, Fasty, ClearDB,…
Code/data rollback: Giúp người dùng có thể dễ dàng khơi phục mã nguồn hoặc
cơ sở dữ liệu của mình về trạng thái trước đó.
App Metrics: Đây là tính năng giúp giám sát lưu lượng, thời gian phải hồi, bộ
nhớ, tải CPU và lỗi. Giúp bạn quản lý ứng dụng chặt chẽ.
GitHub Integration: Giúp bạn có thể thực hiện các tính năng như pull request,
push, commit…hoạt động với mọi branch mà bạn muốn.
2.7.
-
-
Postman
Postman là một loại cơng cụ cho phép người dùng có thể thao tác với API, mà
trong đó phổ biến nhất là REST. Với thử nghiệm API thì Postman là một trong
những cơng cụ phổ biến vì được thực nghiệm nhiều nhất. Postman có khả năng
hỗ trợ mọi phương thức HTTP bao gồm: POST, PUT, DELETE, PATCH,
GET,... Ngồi ra, Postman cịn cho phép lập trình viên lưu lại lịch sử của các
lần request.
Postman sử dụng Collection nên người dùng có thể tạo bộ sưu tập cho những
lệnh gọi API của họ. Mỗi một bộ sưu tập đều có thể tạo ra thư mục con với
nhiều request.
Trong Postman Collections và environment sẽ được import hoặc export giúp
người dùng có thể chia sẻ tệp dễ dàng hơn.
Postman có khả năng test trạng thái phản hồi của HTTP.
Hỗ trợ gỡ lỗi: Bộ phận bảng điều khiển của Postman có thể giúp bạn kiểm tra
dữ liệu đã xuất. Từ đó, q trình gỡ lỗi sẽ trở nên dễ dàng và linh hoạt hơn.
Hỗ trợ tạo thử nghiệm: Những điểm kiểm tra thử nghiệm và xác định trạng
thái phản hồi HTTP thành cơng. Và vai trị xác nhận có thể được thêm vào mỗi
lệnh gọi API nhằm đảm bảo phạm vi kiểm tra.
Thơng qua q trình sử dụng bộ sưu tập và newman sẽ đảm bảo các kiểm thử
sẽ chạy được trong những lần lặp lại. Từ đó, tiết kiệm thời gian cho các thử
nghiệm có thể lặp đi lặp lại.
Tích hợp liên tục: Postman có khả năng hỗ trợ tích hợp liên tục cho các hoạt
động phát triển và có thể được duy trì.
14
Chương 3. XÂY DỰNG HỆ THỐNG
3.1.
Xây dựng kiến trúc hệ thống
3.1.1. Áp dụng kiến trúc MVVM trong ứng dụng
A. Định nghĩa
- Mơ hình MVVM cho phép tách biệt dữ liệu (Model), mã thực thi (logic
hay còn gọi là View Model) và giao diện người dùng (View). Mơ hình
MVVM được xây dựng dựa trên mơ hình MVP với một trong những
ngun tắc lớn nhất là tầng dưới không được phép biết tầng trên làm gì.
- Về cách thức hoạt động ViewModel chiếm vị trí trung tâm. Nó sẽ gửi và
nhận dữ liệu từ model và gửi cho view, đông thời cũng quan sát sự thay
đổi của dữ liệu xảy ra ở View và phản hồi với model tương ứng.
B. Sử dụng mơ hình MVVM trong ứng dụng:
15
a) Thư mục views
o View là nơi người dùng tương tác với các widget được hiển thị trên
màn hình. Các sự kiện người dùng này sẽ tạo ra một số action
chuyển đến ViewModel để xử lý. Khi Viewmodel xử lý xong action
nó sẽ cập nhật lại View.
b) Thư mục view_models
o ViewModel là trung gian giữa View và Model, nó nhận các sự kiện
của người dùng và gửi yêu cầu đó đến Model để lấy data. Khi Model
có data và trả lại cho ViewModel, ViewModel sẽ thơng báo data đó
đến View. ViewModel có thể được sử dụng bởi View, hay một
ViewModel có thể cung cấp dữ liệu cho nhiều View khác nhau.
c) Thư mục models
o Model cũng chứa các lớp mô tả business logic và định nghĩa
business rules cho dữ liệu (cách mà dữ liệu sẽ được thay đổi và sử
dụng).
d) Thư mục services
o Đây là thành phần quản lý toàn bộ các cơ sở dữ liệu (database) bao
gồm gọi api, xử lý kết quả trả về. Convert sang các models của ứng
dụng.
16
3.1.2. Sơ đồ use case
17
3.1.3. ERD
3.1.4. Cơ sở dữ liệu
3.1.4.1.
User
Field
Type
Description
fullName
String
Họ và tên của khách hàng
dateOfBirth
DateTime
Ngày sinh của khách hàng
email
String
Email của khách hàng
favoriteProducts
List<Product>? Chứa danh sách các sản phẩm mà khách hàng yêu
thích
gender
String?
Giới tính của khách hàng
phoneNumber
String
Số điện thoại của khách hàng
isVerifiedEmail boolean
Kiểm tra xem email của khách hàng đã được xác thực
chưa
3.1.4.2. UserAddress
Field
Type Description
userId
String ID của user
18
String Chứa tên của người nhận hang
receptionName
receptionPhoneNumber String Chứa số điện thoại của người nhận hàng
address
String Chứa địa chỉ của người nhận hàng
country
String Chứa quốc gia của người nhận hàng
3.1.4.3. Store
Field
Type Description
name
String Tên của cửa hàng
address
String Địa chỉ cụ thể của cửa hàng
openTime int
Thời gian cửa hàng bắt đầu mở cửa
clostTime int
Thời gian cửa hàng đóng cửa
3.1.4.4. Product
Field
Type
Description
imageUrls
List<String>
Danh sách url hình ảnh của sản phẩm
tag
String
Thơng tin tóm tắt đi kèm của sản phẩm (‘HOT’,
‘NEW’,…)
price
int
Giá tiền của sản phẩm
name
String
Tên của sản phẩm
isFavorite
bool
Biến để kiểm tra xem sản phẩm có được user lưu vào
danh sách yêu thích chưa
productType ProductType
categories
Lưu loại sản phẩm (‘Shoes’, ‘Clothes’,…)
List<ProductCategory> Lưu danh sách các mục phân loại của sản phẩm
(‘Running’, ‘Slide’, ‘LifeStyles’,…)
3.1.4.5. ProductTypes
Field
Type
Description
name
String
Tên của loại sản phẩm (‘Shoes’, ‘Clothes’,…)
19
categories List<ProductCategory> Danh sách các mục phân loại (‘All’, ‘Running’,…)
3.1.4.6. ProductCategory
Field
Type Description
name
String Tên của mục phân loại (‘Running’, ‘Slide’, ‘LifeStyles’, …)
imageUrl String Chứa link url hình ảnh của mục phân loại
3.1.4.7. OrderItem
Field
Type
product
Product Chứa 1 object lưu trữ sản phẩm
size
Double
quantity int
int
total
Description
Size của sản phẩm (8, 8.5, 9, 9.5,…)
Số lượng của 1 product, order item
Tổng giá trị của order item (product.price * quantity – promotion?)
3.1.4.8. Order
Field
Type
Description
userId
String
Chứa id của người dùng đặt đơn hàng
orderDateTime
DateTime
Thời gian đơn hàng được đặt
userAddress
UserAddress
Chứa object address của người dùng
paymentMethod String
Phương thức thanh tốn
promotion
Promotion?
Chứa promotion của Order nếu có
orderStatus
String
Tình trạng đơn hàng
orderItems
List<OrderItem> Chứa các item (sản phẩm) của đơn hàng
total
int
Tổng thành tiền của đơn hàng
20
3.1.4.9. Promotion
Field
Type
Description
name
String
Tiêu đề của khuyến mãi
description
String
Mô tả chi tiết khuyến mãi
expiredDate DateTime Hạn sử dụng của khuyến mãi
double
discount
Chứa giá trị giảm giá (>1: giảm theo phần tram, [else] giảm trực tiếp.
3.1.4.10. AdBanner
Field
Type
Description
tag
String
Tóm tắt cho banner quảng cáo
title
String
Tiêu đề của banner quảng cáo
image
String?
Chứa url hình ảnh của banner quảng cáo, nếu null sẽ hiển thị video
video
String?
Chứa url video của banner quảng cáo
product Product Object product mà banner đang quảng cáo
3.2.
Thiết kế giao diện
3.2.1. Màn hình splash
Khi chạy ứng dụng sẽ vào màn hình loading. Hiển thị logo của thương hiệu Adidas
trong 1 khoảng thời gian tùy cấu hình của thiết bị người dùng, để load và build các
widget cần thiết cho màn hình chính của ứng dụng.
21
22
3.2.2. Màn hình PopularProduct
Người dùng sẽ nhận được một List các banner quảng cáo các sản phẩm đang hot,
được giảm giá, limited,… được quảng cáo từ nhà cung cấp. Đồng thời có thể
navigate sang product_detail nếu người nhấn vào button shopnow.
23
24
25