Quản lý danh sách nhà hàng

Một phần của tài liệu Phát triển phân hệ báo giá tự động cho hệ thống tổ chức sự kiện (Trang 37)

7 TỔNG KẾT

3.18 Quản lý danh sách nhà hàng

3.4. CÁC BÀI TOÁN ĐẶT RA KHI XÂY DỰNG HỆ THỐNG

3.4 Các bài toán đặt ra khi xây dựng hệ thống 3.4.1 Duy trì hoạt động

Việc kinh doanh nhà hàng liên tục hoạt động vì vậy hệ thống phải đảm bảo hoạt động được một số tính năng chủ yếu để khi khơng có internet.

Khi hệ thống bị mất kết nối với internet. Việc để user khơng thể thực hiện thanh tốn mà phải ghi thủ cơng lại các hàng hóa, sản phẩm vừa bán sẽ rất bất tiện và dễ gây sai sót. Vì vậy cần thiết kế hệ thống để có thể chạy liên tục kể cả khi mất internet.

Cách giải quyết:

Khi hệ thống mất mạng, người dùng có thể dùng thiết bị di động kết nối với 3G/4G để tiếp tục hoạt động quản lý, sử dụng hệ thống.

3.4.2 Bài tốn tìm kiếm

Trong hệ thống, việc tìm kiếm diễn ra rất nhiều. Từ việc tìm kiếm nhà hàng, tìm kiếm các menu thích hợp khi báo giá. . . Vì vậy cần có phương pháp lưu trữ thích hợp cũng như giải thuật tìm kiếm hiệu quả để tối ưu hiệu năng, thời gian thực hiện tính năng.

Cách giải quyết:Tận dụng thế mạnh của hệ quản trị cơ sở dữ liệu phi quan hệ. Việc query data ở database sẽ có tốc độ nhanh hơn so với các hệ quản trị cơ sở dữ liệu quan hệ. Ngồi ra các trường dữ liệu tìm kiếm liên tục được đánh index ở Mongodb để việc query hiện thực nhanh hơn khi có một tập dữ liệu lớn.

3.4.3 Phân tích yêu cầu bảo mật

Yêu cầu quan trọng nhất của một hệ thống thương mại điện tử hỗ trợ thanh toán trực tuyến là vấn đề bảo mật trong hệ thống và an toàn dữ liệu: dữ liệu phải được bảo mật và tồn vẹn. Có cơ chế phân quyền rõ ràng và chỉ cấp những quyền tối thiểu cho các thành viên theo từng cấp độ. Những hoạt động của người dùng cần có cơ chế kiểm tra xác thực và chống thối thác. Ngoài ra tất cả các giao dịch của hệ thống cần được lưu vết và thống kê để dễ dàng kiểm tra.

Cách giải quyết:

Khi người dùng đăng nhập vào hệ thống, hệ thống sẽ trả về một AccessToken và lưu ở trình duyệt người dùng. Phía trình duyệt khi gọi API sẽ kèm theo AccessToken này để xác thực dựa trên role của user, nếu thành công sẽ trả về kết quả.

3.4. CÁC BÀI TOÁN ĐẶT RA KHI XÂY DỰNG HỆ THỐNG

3.4.4 Bài tốn trực quan hóa dữ liệu

Vấn đề trực quan hóa dữ liệu là rất quan trọng trong hệ thống quản lý nhà hàng. Trực quan hóa giúp chủ nhà hàng có thể quan sát một cách trực quan các đơn hàng, doanh thu. người dùng ...

Cách giải quyết:Sử dụng các biểu đồ để thể hiện các mẫu dữ liệu trong hệ thống.

Chương 4

THIẾT KẾ HỆ THỐNG 4.1 Mơ hình cơ sở dữ liệu

4.2. CHI TIẾT CƠ SỞ DỮ LIỆU

4.2 Chi tiết cơ sở dữ liệu 4.2.1 Bảng: User

Hình 4.2: Bảng User

Ghi chú: Bảng User lưu thơng tin về khách hàng và đối tác.

• _id: mã người dùng,

• email: địa chỉ email của người dùng,

• isSystemAdmin: phân biệt system admin với người dùng bình thường,

• isVerify: tài khoản đã được xác thực bằng email hay chưa,

• password: mã hash mật khẩu của người dùng,

• restAdmin: địa chỉ nhà hàng mà người dùng quản lý,

• phoneNumber: số điện thoại của người dùng

4.2. CHI TIẾT CƠ SỞ DỮ LIỆU

4.2.2 Bảng: Restaurant

Hình 4.3: Bảng Restaurant

Ghi chú: Bảng Restaurnt lưu thơng tin của nhà hàng trên hệ thống.

• _id: mã nhà hàng,

• email: địa chỉ email của nhà hàng,

• address: địa chỉ của nhà hàng,

• capacity: sức chưa tối đa của nhà hàng,

• description: mơ tả, giới thiệu của nhà hàng,

• hotline: số điện thoại hotline của nhà hàng,

• listImage: danh sách hình ảnh của nhà hàng,

• location: toạ độ của nhà hàng,

• name: tên nhà hàng,

• placeId: mã vị trí của nhà hàng trên google map api,

• providedEvent: danh sách sự kiện của nhà hàng cung cấp,

4.2. CHI TIẾT CƠ SỞ DỮ LIỆU

Hình 4.4: Bảng Venue

4.2.3 Bảng: Venue

Ghi chú: Bảng Venue lưu thơng tin phịng sảnh thuộc nhà hàng.

• _id: mã phịng ban,

• numberTable: số lượng bàn,

• properties: tiện ích của phịng sảnh,

• capacity: sức chứa,

• reserved: thời gian đã được đặt,

• listImage: hình ảnh của phịng sảnh,

• restaurantId: mã nhà hàng,

• name: tên phịng sảnh,

• type: loại tiệc phòng sảnh cung cấp

4.2. CHI TIẾT CƠ SỞ DỮ LIỆU

4.2.4 Bảng: Menu

Hình 4.5: Bảng Menu

Ghi chú: Bảng Menu lưu thơng tin thực đơn của nhà hàng.

• _id: mã thực đơn,

• foodList: danh sách món ăn,

• image: hình ảnh thực đơn,

• mumberPeople: số lượng người trên một thực đơn,

• price: giá tiền của một thực đơn,

• type: loại sự kiện của thực đơn,

4.2. CHI TIẾT CƠ SỞ DỮ LIỆU

4.2.5 Bảng: Booking

Hình 4.6: Bảng Booking

Ghi chú: Bảng Booking lưu thơng tin đặt hàng của người dùng.

• _id: mã bảng đơn đặt hàng,

• billingEmail: email của người dùng thanh tốn đơn hàng,

• chargeId: mã thanh tốn của Stripe,

• createdAt: thời gian đặt hàng,

• deposit: số tiền đã cọc,

• menu: mã menu và số lượng menu đã đặt,

• restaurantId: mã nhà hàng đã đặt,

• serviceId: danh sách dịch vụ đã chọn,

• venueId: mã phịng ban đã đặt,

• status: trạng thái của đơn hàng,

• total: tổng giá tiền của đơn hàng,

• userId: mã người dùng đã đặt hàng

4.3. KIẾN TRÚC HỆ THỐNG

4.2.6 Bảng: Service

Hình 4.7: Bảng Service

Ghi chú: Bảng Service lưu thông tin dịch vụ mà hệ thống cung cấp.

• _id: mã dịch vụ,

• description: mơ tả dịch vụ,

• images: danh sách hình ảnh của dịch vụ,

• name: tên dịch vụ,

• price: giá dịch vụ,

• type: loại dịch vụ

4.3 Kiến trúc hệ thống

Việc mở rộng hệ thống cũng như bảo trì là điều cực kì quan trọng của một hệ thống. Khi có u cầu của khách hàng cần bổ sung thêm tính năng hoặc sửa lỗi hệ thống thì việc đáp ứng được nhu cầu của khách hàng một cách kịp thời và nhanh chóng là rất quan trọng.

Kiến trúc hệ thống: Hệ thống được xây dựng trên mơ hình client-server

Phía client được hiện thực bởi Reactjs. ReactJS là một thư viện JavaScript mã nguồn mở, được Facebook thiết kế nhằm giúp tạo ra các ứng dụng web hấp dẫn, với thời gian ngắn và hiệu quả mà không cần code quá nhiều. Mục tiêu cốt lõi của ReactJS nhằm cung cấp hiệu suất làm việc cao nhất có thể, thơng qua việc tập trung các component riêng lẻ lại với nhau. Thay vì làm việc trên tồn bộ ứng dụng web, ReactJS cho phép chúng ta chia nhỏ cấu trúc UI thành những component đơn giản hơn.

4.3. KIẾN TRÚC HỆ THỐNG

Hình 4.8: Kiến trúc hệ thống

Ngoài ra sử dụng Google Places API để có thể lấy được các thơng tin cần thiết của các nhà hàng có trên google. Dùng để tính vị trí khoảng cách của các nhà hàng.

Phía server được hiện thực bởi Nodejs. Ứng dụng Nodejs được viết bằng ngơn ngữ lập trình javascript - một ngơn ngữ thơng dụng đồng bộ với phía client, được sử dụng rộng rãi và chạy được trên nhiều trình duyệt, nền tảng, hệ điều hành,...

Hệ quản trị cơ sở dữ liệu MongoDB phù hợp với tập dữ liệu lớn và ngày càng mở rộng. Có thể lập chỉ mục ở bất kì thuộc tính nào giúp cho giúp cho việc truy vấn phong phú, đa dạng và nhanh hơn.

Cổng thanh toán VNPAY là cổng thanh toán được sử dụng rộng rãi ở Việt Nam. Với các phương thức thanh toán đa dạng, linh hoạt. VNPAY Cho phép người dùng thánh tốn bằng các tài khoản ngân hàng có kết nối internet banking hoặc có thể thánh tốn dễ dàng bằng cách quét mã QRCode.

Chương 5

HIỆN THỰC HỆ THỐNG 5.1 Danh sách API sử dụng

5.1.1 API đăng ký member

Mô tả /api/auth/register Phương thức POST Input Body • name • email • password

Output Tạo tài khoản thành công hoặc thất bại Bảng 5.1: API đăng ký member

5.1. DANH SÁCH API SỬ DỤNG 5.1.2 API đăng nhập Mô tả /api/auth/login Phương thức POST Input Body • email • password

Output Đăng nhập thành cơng hoặc thất bại Bảng 5.2: API đăng nhập

5.1.3 API lấy thông tin user

Mô tả /api/auth/me Phương thức GET Input Header • authorization: token Body • email • password

Output Lấy thông tin thành công hoặc thất bại Bảng 5.3: API lấy thông tin user

5.1. DANH SÁCH API SỬ DỤNG

5.1.4 API lấy danh sách thơng tin user

Mơ tả /api/auth/users Phương thức GET

Input Header

• Authorization: token Query

• type: "user" | "sys-admin" | "rest-admin"

Output Lấy thơng tin thành công hoặc thất bại

Bảng 5.4: API lấy danh sách thơng tin user

5.1.5 API xóa user

Mơ tả /api/auth/users/:id Phương thức DELETE Input Header • Authorization: token Param • id: userId

Output Xóa account thành cơng hoặc thất bại Bảng 5.5: API xóa user

5.1. DANH SÁCH API SỬ DỤNG

5.1.6 API accept restaurant đã đăng ký

Mô tả /api/admin/rest/accept Phương thức POST Input Header • Authorization: token Body • restId: id của nhà hàng

Output Update trạng thái của nhà hàng từ pending sang accepted Bảng 5.6: API accept restaurant đã đăng ký

5.1.7 API cập nhật thơng tin người dùng

Mơ tả /api/users/update-info Phương thức POST Input Header • Authorization: token Body • name • numberPhone

Output Cập nhật user info và trả về data mới

Bảng 5.7: API cập nhật thông tin người dùng

5.1. DANH SÁCH API SỬ DỤNG

5.1.8 API verify account

Mô tả /api/auth/verify-account Phương thức POST

Input Body

• token

Output Xác nhận người dùng, user có thể đăng nhập từ đây Bảng 5.8: API verify account

5.1.9 API danh sách đơn hàng của user

Mô tả /api/users/orders Phương thức GET

Input Header

• Authorization: token

Output Trả về danh sách đơn hàng đã đặt

Bảng 5.9: API danh sách đơn hàng của user

5.1.10 API danh sách đơn hàng của admin

Mô tả /api/admin/orders Phương thức GET

Input Header

• Authorization: token

Output Trả về danh sách đơn hàng đã đặt

5.1. DANH SÁCH API SỬ DỤNG

5.1.11 API cập nhật trạng thái của Order

Mơ tả /api/restaurants/admin/update-status Phương thức POST Input Header • Authorization: token Body • orderId

Output Thay đổi trạng thái đơn hàng từ Deposit sang Done. Bảng 5.11: API cập nhật trạng thái của Order

5.1.12 API trả danh sách nhà hàng

Mơ tả /api/restaurants Phương thức GET

Input Body

• typeAddr?: loại nhà hàng

• capacity?: số người tham dự

• rangePrice?: khoảng giá của menu

• searchKey?: tên nhà hàng

• properties?: các tiện ích của nhà hàng

Output Trả về danh sách nhà hàng.

Bảng 5.12: API trả danh sách nhà hàng

5.1. DANH SÁCH API SỬ DỤNG

5.1.13 API get doanh thu của nhà hàng

Mô tả /api/restaurants/admin/revenue Phương thức GET

Input Header

• Authorization: token

Output Trả về thống kê doanh thu của nhà hàng.

Bảng 5.13: API get doanh thu của nhà hàng

5.1.14 API đăng ký nhà hàngMô tả /api/restaurants/create Mơ tả /api/restaurants/create Phương thức POST Input Header • Authorization: token Body • name: tên nhà hàng • address: địa chỉ • location: tọa độ • providedEvent: các loại hình • capacity: sức chứa • email • hotline

Output Đăng ký một nhà hàng ở trạng thái pending. Bảng 5.14: API đăng ký nhà hàng

5.1. DANH SÁCH API SỬ DỤNG

5.1.15 API trả thông tin nhà hàng

Mô tả /api/restaurants/detail/:id Phương thức GET

Input

Output Trả về thông tin chi tiết của nhà hàng.

Bảng 5.15: API trả thông tin nhà hàng

5.1.16 API Báo giá tự động

Mô tả /api/restaurants/inquery Phương thức POST

Input Body

• type: loại nhà hàng

• quantity: số người tham dự

• price: chi phí dự tính

• coordinate: tọa độ địa chỉ của bạn

• properties?: các tiện ích của nhà hàng

• services?: các dịch vụ của nhà hàng

Output Trả về danh sách chi phí phải trả của mỗi nhà hàng phù hợp yêu cầu.

Bảng 5.16: API Báo giá tự động

5.1. DANH SÁCH API SỬ DỤNG

5.1.17 API trả danh sách nhà hàng pending

Mơ tả /api/restaurants/pending Phương thức GET

Input Header

• Authorization: token

Output Trả về danh sách nhà hàng chưa được xác thực. Bảng 5.17: API trả danh sách nhà hàng pending

5.1.18 API cập nhật trang detail

Mơ tả /api/restaurants/updateinfo/:rest_id Phương thức POST Input Header • Authorization: token Body • type: loại nhà hàng

• capacity: sức chứa tối đa

• listImages: danh sách hình ảnh

• description: giới thiệu

• address: địa chỉ

Output Cập nhật restaurant info.

5.1. DANH SÁCH API SỬ DỤNG

5.1.19 API tạo menu

Mô tả /api/restaurants/createmenu/:venue_id Phương thức POST

Input Header

• Authorization: token Body

• name: tên menu

• foodList: danh sách món

• image: hình ảnh

• price: giá tiền

• numberPeople: số người

Output Trả về menu mới.

Bảng 5.19: API tạo menu

5.1.20 API get danh sách dịch vụ

Mô tả /api/restaurants/services Phương thức GET

Input

Output Trả về danh sách dịch vụ.

Bảng 5.20: API get danh sách dịch vụ

5.1. DANH SÁCH API SỬ DỤNG 5.1.21 API tạo phịng sảnh Mơ tả /api/restaurants/createvenue/:rest_id Phương thức POST Input Header • Authorization: token Body • name: tên phịng sảnh • numberTable: số bàn [min,max] • image: hình ảnh

• type: loại sự kiện

• properties?: tiện ích

Output Trả về phòng sảnh mới.

Bảng 5.21: API tạo phòng sảnh

5.1.22 API get danh sách tiện ích của phịng sảnh

Mơ tả /api/restaurants/venue/properties Phương thức GET

Input

Output Trả về danh sách tiện ích của phịng sảnh.

5.1. DANH SÁCH API SỬ DỤNG 5.1.23 API cập nhật phịng sảnh Mơ tả /api/restaurants/updatevenue/:venue_id Phương thức POST Input Header • Authorization: token Body • name?: tên phịng sảnh • numberTable?: số bàn [min,max] • image?: hình ảnh

• type?: loại sự kiện

• properties?: tiện ích

Output Cập nhật thơng tin phịng sảnh.

Bảng 5.23: API cập nhật phịng sảnh

5.1.24 API xóa menu

Mơ tả /api/restaurants/venue/remove Phương thức DELETE

Input Header

• Authorization: token Body

• menuId: id của menu

Output Trả về danh sách menu mới.

Bảng 5.24: API xóa menu

5.1. DANH SÁCH API SỬ DỤNG 5.1.25 API cập nhật menu Mô tả /api/restaurants/updatemenu/:menuId Phương thức POST Input Header • Authorization: token Body

• name?: tên menu

• foodList?: danh sách món

• image?: hình ảnh

• price?: giá tiền

• numberPeople?: số người Output Trả về phòng sảnh mới. Bảng 5.25: API cập nhật menu 5.1.26 API xóa phịng sảnh Mơ tả /api/restaurants/venue/remove Phương thức DELETE Input Header • Authorization: token Body • venueId: id của phịng sảnh

Output Trả về danh sách phòng sảnh mới.

5.2. HIỆN THỰC HỆ THỐNG Ở WEBSITE

5.2 Hiện thực hệ thống ở Website 5.2.1 Màn hình đăng nhập

Hình 5.1: Màn hình SignIn/SignUp

Giới thiệu: Người dùng (Member, RestaurantAdmin, SystemAdmin) đăng nhập

vào hệ thống, nếu chưa có tài khoản người dùng bấm vào Đăng kí ngay.

Mơ tả:

• Đăng nhập: người dùng nhập email, password, sau đó bấm Đăng nhập. Nếu thành công, hệ thống sẽ chuyển tới trang Home. (Api chi tiết 5.1.2)

• Đăng ký: người dùng nhập name, email, password, sau đó bấm Đăng ký. Hệ

5.2. HIỆN THỰC HỆ THỐNG Ở WEBSITE

thống sẽ gửi một đường link xác thực qua email, người dùng bấm vào để hoàn thành đăng ký.(Api chi tiết 5.1.1)

5.2.2 Màn hình danh sách nhà hàng

Hình 5.2: Màn hình HomePage

Giới thiệu: Người dùng có thể xem danh sách và thông tin sơ lược của các nhà

hàng.(Api chi tiết 5.1.12)

Mơ tả:

• Lọc danh sách nhà hàng: Ở cột bên trái là các lựa chọn để lọc danh sách: theo

Một phần của tài liệu Phát triển phân hệ báo giá tự động cho hệ thống tổ chức sự kiện (Trang 37)

Tải bản đầy đủ (PDF)

(81 trang)