Đăng ký Đăng nhập
Trang chủ Hệ thống cung cấp dịch vụ tìm kiếm nhóm thợ theo khu vực trên nền tảng website...

Tài liệu Hệ thống cung cấp dịch vụ tìm kiếm nhóm thợ theo khu vực trên nền tảng website

.PDF
49
77
95

Mô tả:

TRƯỜNG ĐẠI HỌC LẠC HỒNG KHOA CÔNG NGHỆ THÔNG TIN  ----- ----            BÁO CÁO NGHIÊN CỨU KHOA HỌC ĐỀ TÀI: HỆ THỐNG CUNG CẤP DỊCH VỤ TÌM KIẾM NHÓM THỢ THEO KHU VỰC TRÊN NỀN TẢNG WEBSITE LÊ PHƯỚC KHỬ BIÊN HÒA, THÁNG 11/2018 TRƯỜNG ĐẠI HỌC LẠC HỒNG KHOA CÔNG NGHỆ THÔNG TIN ----- ----- BÁO CÁO NGHIÊN CỨU KHOA HỌC     ĐỀ TÀI:   HỆ THỐNG CUNG CẤP DỊCH VỤ TÌM  KIẾM NHÓM THỢ THEO KHU VỰC TRÊN NỀN TẢNG WEBSITE      Sinh viên thực hiện: LÊ PHƯỚC KHỬ Giáo viên hướng dẫn: Th.S NGUYỄN MINH PHÚC BIÊN HÒA, THÁNG 11/2018 I LỜI CẢM ƠN Em xin chân thành cám ơn tất cả các giảng viên trường Đại Học Lạc Hồng, các thầy cô khoa Công Nghệ Thông Tin đã giảng dạy và hướng dẫn chúng em trong suốt thời gian chúng em theo học tại trường. Em xin gửi lời cảm ơn đến Th.S Nguyễn Minh Phúc là giáo viên đã trực tiếp hướng dẫn tận tình để em hoàn thành đề tài nghiên cứu khoa học này. Ngoài ra em xin cám ơn cô Phan Thị Hường được khoa phân là giáo viên phản biện đã đóng góp rất nhiều để hoàn thiện đề tài cũng như là báo cáo toàn văn. Cám ơn thầy Tạ Nguyễn là giáo viên chủ nhiệm lớp 14SE111 và các bạn trong lớp cùng toàn thể gia đình và người thân đã giúp đỡ, động viên chúng em trong quá trình thực hiện đề tài này. Em xin cám ơn các thầy, các cô trong khoa Công Nghệ Thông Tin đã có những ý kiến đóng góp trong các buổi báo cáo tiến độ. Với vốn kiến thức còn hạn chế cùng những điều kiện khách quan không cho phép, đề tài của em khó tránh khỏi những thiếu sót cũng như chưa đáp ứng đầy đủ các yêu cầu. Do đó em hy vọng tiếp tục nhận được những ý kiến đóng góp và hướng dẫn của quý thầy cô để đề tài của em được hoàn thiện hơn. Sau cùng, em xin kinh chức quý thầy cô trong Khoa Công Nghệ Thông Tin thật dồi dào sức khỏe để tiếp tục sứ mệnh cao đẹp là truyền đạt những tri thức quý báu cho thế hệ mai sau. Em xin chân thành cảm ơn. Biên Hòa, tháng 11 năm 2018 Sinh viên thực hiện Lê Phước Khử II LỜI CAM ĐOAN Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi, các tài liệu và kết quả nghiên cứu trong đồ án là trung thực. Biên Hòa, tháng 11 năm 2018 Sinh viên thực hiện Lê Phước Khử III MỤC LỤC LỜI CẢM ƠN ................................................................................................................................ I LỜI CAM ĐOAN .......................................................................................................................... II MỤC LỤC .................................................................................................................................... III DANH MỤC BẢNG ................................................................................................................... VI DANH MỤC HÌNH .................................................................................................................... VI PHẦN MỞ ĐẦU ............................................................................................................................ 1 1. Lý do chọn đề tài ............................................................................................... 1 2. Tình hình nghiên cứu ......................................................................................... 1 2.1. Ngoài nước...............................................................................................1 2.2. Trong nước...............................................................................................1 3. Mục tiêu nghiên cứu .......................................................................................... 1 4. Phương pháp nghiên cứu ................................................................................... 2 5. Những vấn đề mà đề tài chưa thực hiện được ................................................... 2 6. Kết cấu của đề tài............................................................................................... 2 Chương 1 : TỔNG QUAN LÝ THUYẾT ............................................................... 3 1.1. Sơ đồ liên quan các thành phần đã sử dụng trong hệ thống ........................ 3 1.2. Giới thiệu về Node.JS và framework Express ............................................ 3 1.2.1. Node.js là gì?........................................................................................ 3 1.2.2. Giới thiệu về framework Express ........................................................ 5 1.3. Giới thiệu về cơ sở dữ liệu MySQL ............................................................ 5 1.4. Giới thiệu NPM ........................................................................................... 6 1.5. RESTful Api là gì? ...................................................................................... 6 1.6. Giới thiệu một số module và thư viện đã sử dụng trong đề tài ................... 6 1.6.1. Thư viện Socket.io ............................................................................... 6 1.6.2. Thư viện Angularjs .............................................................................. 7 1.6.3. JSON Web Token ................................................................................ 7 1.6.4. Module Nodemailer ............................................................................. 8 1.6.5. Module Multer và fs............................................................................. 8 1.6.6. Module Dotenv .................................................................................... 8 1.7. Tiểu kết ........................................................................................................ 8 Chương 2 : PHÂN TÍCH THIẾT KẾ HỆ THỐNG .............................................. 10 2.1. Khảo sát hiện trạng .................................................................................... 10 2.1.1. Tình trạng tìm kiếm thợ trước đây ..................................................... 10 2.1.2. Hệ thống ra đời với yêu cầu ............................................................... 10 2.2. Sơ đồ hệ thống ........................................................................................... 10 2.2.1. Mô hình tổng quát .............................................................................. 10 IV 2.2.2. Mô hình use case của thợ ................................................................... 11 2.2.2.1. Đổi mật khẩu .............................................................................. 11 2.2.2.2. Xem trang cá nhân ..................................................................... 11 2.2.2.3. Cập nhật thông tin cá nhân ........................................................ 12 2.2.2.4. Đăng hồ sơ mới .......................................................................... 12 2.2.2.5. Xóa hồ sơ ................................................................................... 13 2.2.2.6. Xem tin nhắn đã gửi................................................................... 13 2.2.2.7. Gửi một tin nhắn ........................................................................ 13 2.2.2.8. Cập nhật trạng thái giao dịch ..................................................... 14 2.2.3. Mô hình use case của khách ............................................................... 15 2.2.3.1. Tìm kiếm theo danh mục ........................................................... 15 2.2.3.2. Tìm kiếm theo khu vực .............................................................. 15 2.2.3.3. Tạo mới một giao dịch ............................................................... 16 2.2.4. Mô hình use case của admin .............................................................. 16 2.2.4.1. Tạo mới một danh mục .............................................................. 16 2.2.4.2. Chỉnh sửa một danh mục ........................................................... 17 2.2.4.3. Cập nhật trạng thái tài khoản ..................................................... 17 2.3. Mô hình cơ sở dữ liệu................................................................................ 18 2.3.1. Sơ đồ cơ sở dữ liệu............................................................................. 18 2.3.2. Chức năng của từng bảng và thuộc tính ............................................. 18 Chương 3 : XÂY DỰNG HỆ THỐNG HỖ TRỢ TÌM KIẾM NHÓM THỢ THEO KHU VỰC NỀN TẢNG WEBSITE .................................................................... 21 3.1. Server API của hệ thống hỗ trợ tìm kiếm nhóm thợ theo khu vực ........... 21 3.1.1. Giới thiệu chung về Web Server API của hệ thống hỗ trợ tìm kiếm nhóm thợ ........................................................................................................... 21 3.1.1.1. Giới thiệu ................................................................................... 21 3.1.1.2. Phân quyền người dùng ............................................................. 21 3.1.2. Cài đặt môi trường lập trình và một số module cần thiết .................. 21 3.1.2.1. Môi trường Node.js và NPM ..................................................... 21 3.1.2.2. Cài các Module cần thiết sử dụng phần mềm NPM .................. 21 3.1.3. Kết nối và truy vấn dữ liệu giữa Node.js và MySql .......................... 22 3.1.3.1. Kết nối với database Mysql ....................................................... 22 3.1.3.2. Truy vấn dữ liệu ......................................................................... 23 3.1.4. Chức năng của một số router có trong API ........................................ 24 3.2. Xây dựng Server Websocket sử dụng thư viện socket.io để làm ứng dụng nhắn tin thời gian thực ................................................................................. 26 3.2.1. Giới thiệu chung về Server Websocket.............................................. 26 V 3.2.2. Cài đặt một số module cần thiết ......................................................... 26 3.2.3. Chức năng của từng sự kiện trong Socket.io ..................................... 26 3.3. Giao diện Front-end sử dụng thư viện Angular.js ..................................... 28 3.3.1. Giới thiệu ........................................................................................... 28 3.3.2. Giao diện Front-end của thợ .............................................................. 28 3.3.2.1. Đăng ký ...................................................................................... 28 3.3.2.2. Đăng nhập .................................................................................. 28 3.3.2.3. Trang cá nhân............................................................................. 29 3.3.2.4. Hồ sơ .......................................................................................... 30 3.3.3. Giao diện Front-end của khách .......................................................... 32 3.3.4. Giao diện Front-end của Admin ........................................................ 34 3.3.4.1. Trang tổng quan ......................................................................... 34 3.3.4.2. Trang duyệt hồ sơ ...................................................................... 34 3.3.4.3. Danh mục ................................................................................... 35 3.3.4.4. Quản lý ....................................................................................... 36 KẾT LUẬN .................................................................................................................................. 39 TÀI LIỆU THAM KHẢO ............................................................................................................ 40 VI DANH MỤC BẢNG Bảng 2.1 Chức năng của từng bảng trong database. ...................................18 Bảng 3.1 Tên và một số chức năng của API ................................................24 DANH MỤC HÌNH Hình 1.1 Sơ đồ liên quan các thành phần. .....................................................3 Hình 1.2 Mô hình xử lý request của Node.js. ................................................4 Hình 1.3 Mô hình Framework Express. .........................................................5 Hình 1.4 Mô hình giao tiếp giữa Client và Server. ........................................6 Hình 1.5 Cấu trúc của một chuỗi JSON Web Token. ....................................8 Hình 2.1 Mô hình use case tổng quát. ..........................................................10 Hình 2.2 Mô hình use case của thợ. .............................................................11 Hình 2.3 Mô hình use case của khách..........................................................15 Hình 2.4 Mô hình use case của admin. ........................................................16 Hình 2.5 Mô hình cơ sở dữ liệu của hệ thống hỗ trợ tìm thợ. .....................18 Hình 3.1 Màn hình console hiển thị thông tin phiên bản của Node.js và NPM. ...............................................................................................................................21 Hình 3.2 Màn hình console khi gõ lệnh npm init. .......................................22 Hình 3.3 Thư mục node_modules chứa module đã cài đặt trong câu lệnh npm install. ....................................................................................................................22 Hình 3.4 Server trả về dữ liệu dưới dạng JSON của tài khoản 100000001. 24 Hình 3.5 Giao diện đăng ký. ........................................................................28 Hình 3.6 Giao diện đăng ký khi bị lỗi. .........................................................28 Hình 3.7 Giao diện đăng nhập. ....................................................................28 Hình 3.8 Giao diện đăng nhập khi bị lỗi sai tài khoản hoặc mật khẩu. .......28 Hình 3.9 Trang cá nhân của một tài khoản. .................................................29 Hình 3.10 Giao diện Popup hiển thị lịch sử đã giao dịch ............................29 Hình 3.11 Giao diện cập nhật thông tin cá nhân. .........................................30 Hình 3.12 Giao diện đăng hồ sơ. .................................................................30 Hình 3.13 Giao diện danh sách hồ sơ đợi duyệt. .........................................30 Hình 3.14 Giao diện chỉnh sửa hồ sơ. ..........................................................31 Hình 3.15 Giao diện danh sách các hồ sơ đã được admin duyệt. ................31 Hình 3.16 Giao diện chat thời gian thực giữa thợ và khách. .......................32 Hình 3.17 Giao diện đánh giá của một giao dịch.........................................32 VII Hình 3.18 Giao diện tìm kiếm thợ ...............................................................33 Hình 3.19 Giao diện khi đã được chọn một danh mục. ...............................33 Hình 3.20 Thông tin của một thợ hiển thị khi được chọn. ...........................33 Hình 3.21 Giao diện đăng nhập của Admin .................................................34 Hình 3.22 Giao diện trang tổng quan. ..........................................................34 Hình 3.23 Giao diện duyệt hồ sơ của thợ.....................................................35 Hình 3.24 Giao diện Popup khi nhấn xóa một hồ sơ. ..................................35 Hình 3.25 Giao diện chỉnh sửa danh mục ....................................................35 Hình 3.26 Giao diện cập nhật một danh mục...............................................36 Hình 3.27 Popup hiển thị danh sách các hồ sơ trong một danh mục. ..........36 Hình 3.28 Danh sách hiển thị tài khoản của thợ. .........................................37 Hình 3.29 Giao diện quản lý danh sách tài khoản khách. ............................37 Hình 3.30 Giao diện danh sách các giao dịch kèm theo trạng thái. .............38 1 PHẦN MỞ ĐẦU 1. Lý do chọn đề tài Trong xã hội hiện đại ngày nay, GPS đang là một hướng đi có tiềm năng rất lớn mang lại các dịch vụ hữu ích và giá trị cao, Có thể dẫn chứng cho xu thế này đó là việc đã và đang xuất hiện. Ví dụ như: các ứng dụng hỗ trợ tìm đường, tìm người giúp việc, tìm kiếm địa điểm ăn uống, tìm bạn bè, các hệ thống chỉ đường, theo dõi cho taxi, xe tải... Trước đây, việc tìm kiếm ra nơi để sửa thiết bị hư hỏng tốn rất nhiều thời gian và công sức và chủ yếu việc tìm kiếm đa phần dựa trên truyền tai hoặc đi dọc các con phố để tìm ra địa điểm sửa thiết bị hư hỏng. Nhận thức được những vấn đề trên tác giả đã chọn đề tài nghiên cứu khoa học “Hệ thống cung cấp dịch vụ hỗ trợ tìm kiếm nhóm thợ theo khu vực trên nền tảng Website” để đơn giản hơn về việc tìm ra thợ sửa thiết bị. 2. Tình hình nghiên cứu 2.1. Ngoài nước Nhận thấy được những hiệu quả to lớn từ GPS, các hãng phần mềm trên thế giới đã tích cực đầu tư nghiên cứu nâng cao chất lượng và đã làm ra rất nhiều ứng dụng từ GPS. Điển hình như Google là một trong những công ty đi tiên phong trong việc áp dụng GPS. Họ đã làm rất nhiều ứng dụng về GPS 1 trong số đó là Google Map với rất nhiều tính năng điển hình các tính năng mới hiện nay như hiển thị tình trạng giao thông, chỉ đường cho xe máy, ô tô ... 2.2. Trong nước Ở Việt Nam với sự phát triển chóng mặt của công nghệ. Một số ứng dụng áp dụng GPS đã được đưa vào sử dụng. Nhằm mục đích giúp con người quản lý vị trí hiệu quả, Chính vì thế rất nhiều công ty, cá nhân đã ra đời một loạt sản phẩm ứng dụng dựa trên nền GPS như:  Ứng dụng https://zalo.me/pc nhắn tin và gọi điện miễn phí hoạt động trên cả 2 nền tảng là máy tính và di động có một chức năng tìm kiếm bạn xung quanh nhờ vào ứng dụng của GPS.  Hệ thống https://www.ohanaliving.vn/ với chức năng đăng và tìm phòng trọ, bạn trọ trong một khu vực. Người dùng nhờ vào ứng dụng có thể tìm kiếm phòng trọ giá rẻ và vị trí thuận lợi với nhu cầu bản thân,...  Hệ thống https://www.jupviec.vn/ với chức năng tìm kiếm và đặt dịch vụ người giúp việc nhờ vào ứng dụng của GPS. 3. Mục tiêu nghiên cứu Xây dựng được hệ thống giúp khách có thể tìm được thợ theo từng ngành nghề hoặc có thể theo từng khu vực và hiển thị thông tin thợ lên bản đồ, sau đó khách sẽ nhắn tin trao đổi trực tiếp với thợ qua ứng dụng nhắn tin thời gian thực của hệ thống. 2 4. Phương pháp nghiên cứu  Tìm hiểu về Javascript, tạo ứng dụng web dựa trên nền tảng Node.js và framework Express.  Nghiên cứu về cách sử dụng tiêu chuẩn RESTful API dùng trong việc thiết kế các thiết kế API.  Sử dụng Socket.io dùng làm một ứng dụng chat thời gian thực.  Dùng AngularJS tạo nên Website Single Page Application.  Sử dụng api của google map hiển thị thông tin thợ.  Dùng json web token để mã hóa thông tin cần thiết. 5. Những vấn đề mà đề tài chưa thực hiện được  Chưa đưa ứng dụng vào thực tiễn.  Chưa lấy được vị trí thợ theo thời gian thực. 6. Kết cấu của đề tài Báo cáo được chia làm ba phần: phần mở đầu, phần nội dung và phần kết luận. Phần mở đầu Nêu lý do chọn đề tài, tổng quan tình hình phát triển, mục tiêu nghiên cứu đề tài, phương pháp nghiên cứu cũng như những đóng góp mới của đề tài. Bên cạnh đó cũng chỉ ra mặt hạn chế mà đề tài chưa thực hiện được để giúp mọi người có cái nhìn rõ hơn. Phần nội dung chính: gồm 3 chương  Chương 1: Tổng quan lý thuyết Chương này giới thiệu về môi trường Node.js, Framework Express, giải thích NPM là gì?, quá trình hoạt động của một Web API sử dụng tiêu chuẩn RESTfull API, Đồng thời sẽ giới thiệu về socket.io quá trình hoạt động của nó và một số module mà tác giả đã sử dụng trong đề tài cùng với chức năng của những thư viện đó.  Chương 2: Phân tích thiết kế hệ thống Trong chương này tác giả trình bày về mô hình use case và cơ sở dữ liệu của hệ thống.  Chương 3: Xây dựng Hệ thống hỗ trợ tìm kiếm nhóm thợ theo khu vực nền tảng website. Trong chương này tác giả trình bày một số chức năng của web api, xây dựng một websocket, giao diện của website hệ thống tìm thợ và sử dụng Framework Angular.js của thợ, khách và admin. Phần kết luận Đưa ra những kết luận và kiến nghị về chương trình đã xây dựng. 3 Chương 1 : TỔNG QUAN LÝ THUYẾT 1.1. Sơ đồ liên quan các thành phần đã sử dụng trong hệ thống Hình 1.1 Sơ đồ liên quan các thành phần. ①. AngularJS tạo ra một yêu cầu đến server qua giao thức http/https. ②. Server Node.js phân tích yêu cầu do AngularJS gửi lên sau đấy chuyển yêu cầu sang ExpressJS. ③. ExpressJS lấy dữ liệu database MySQL ④. MySQL sẽ trả về dữ liệu cần lấy cho ExpressJS ⑤. NodeJS trả về dữ liệu dưới dạng JSON được Front-end AngularJS yêu cầu trước đó. ⑥. AngularJS nhận dữ liệu và tiền hành hiển thị dữ liệu nhận được ra giao diện. 1.2. Giới thiệu về Node.JS và framework Express 1.2.1. Node.js là gì? Trước giờ, JavaScript đã luôn được sử dụng ở phía client, tức là bên phía của khách truy cập trình duyệt trang web. Các mã JavaScript này được chạy bởi trình duyệt của client (Firefox, Chrome, IE, v.v …) và thực hiện các hành động trên trang web. Tuy nhiên, Node.js cung cấp một môi trường phía máy chủ , cho phép chúng ta sử dụng ngôn ngữ JavaScript để tạo các trang web sử dụng framework Express. Như trên trang chủ của Node.js có viết rõ: “Node.js là một JavaScript runtime được build dựa trên Chrome’s V8 JavaScript engine. Node.js sử dụng mô hình event-driven, non-blocking I/O khiến nó trở nên nhẹ và hiệu quả.”. Như vậy, có thể nói Node.js không phải là Framework hay CMS gì cả, cũng không phải là một ngôn ngữ lập trình mới bởi nó là sự kết hợp giữa 2 ngôn ngữ lập trình C++ và JavaScript (do được xây dựng dựa trên nền tảng V8 này), mà nó chỉ là một môi trường để thực thi code JavaScript trên server. vì được biên dịch trực tiếp đến mã máy gốc nên về mặt tốc độ xử lý thì rất nhanh.[1] 4 Hình 1.2 Mô hình xử lý request của Node.js. Node.js sử dụng cơ chế hướng sự kiện, mô hình giao tiếp non-blocking I/O cho nên làm cho ứng dụng nhẹ mà hiệu quả, vô cùng hoàn hảo cho các ứng dụng thời gian thực. Một đặc điểm nữa là do sử dụng JavaScript nên Node.js có thể chạy trên nhiều nền tảng hệ điều hành khác nhau (Windows, Linux, MacOS…) và trên mọi loại thiết bị phân tán. Mỗi function trong Node.js là bất đồng bộ. Vì vậy, mọi thứ bình thường kẹt trong thread thì giờ đây được thực thi dưới background. Ngoài ra, Node.js chứa một thư viện built-in cho phép các ứng dụng hoạt động như một Webserver mà không cần cài đặt thêm các phần mềm như Nginx, Apache hoặc IIS để hỗ trợ. Thêm nữa, Node.js còn cung cấp rất nhiều thư viện bổ sung (module) hữu ích, vì thế bạn sẽ không phải bắt đầu xây dựng các ứng dụng của bạn từ con số 0 nữa.[2] Ưu điểm - Học 1 ngôn ngữ javascript dùng được cả back-end và front-end. - Với cơ chế event-driven, non-blocking I/O(Input/Output) và mô hình kết hợp với Javascript là sự lựa chọn tuyệt vời cho các dịch vụ Webs làm bằng JSON. - Với khả năng xử lý nhiều Request/s đồng thời thời gian phản hồi nhanh. Các ứng dụng gồm rất nhiều request từ người dùng cần sự hoạt động nhanh để thể hiện sự chuyên nghiệp thì NodeJS sẽ là sự lựa chọn tốt. - NodeJS sẽ tận dụng tối đa Unix để hoạt động. Tức là NodeJS có thể xử lý hàng nghìn Process và trả ra 1 luồng khiến cho hiệu xuất hoạt động đạt mức tối đa nhất và tuyệt vời nhất. - Các web thông thường gửi HTTP request và nhận phản hồi lại (Luồng dữ liệu). Giả xử sẽ cần xử lý 1 luồng giữ liệu cực lớn, NodeJS sẽ xây dựng các Proxy phân vùng các luồng dữ liệu để đảm bảo tối đa hoạt động cho các luồng dữ liệu khác. Nhược điểm 5 - Ứng dụng nặng tốn tài nguyên. 1.2.2. Giới thiệu về framework Express Hình 1.3 Mô hình Framework Express. Express là một framework giành cho Node.js. Nó cung cấp cho chúng ta rất nhiều tính năng để tạo ra một trang web. Express hỗ trợ các phương thức HTTP và midleware tạo ra môt API dễ sử dụng. Có thể tổng hợp một số chức năng chính của express như sau: - Thiết lập các lớp trung gian để trả về các HTTP request. - Định nghĩa router cho phép sử dụng với các hành động khác nhau dựa trên phương thức HTTP và URL. - Cho phép trả về các trang HTML dựa vào các tham số.[4] 1.3. Giới thiệu về cơ sở dữ liệu MySQL MySQL là một chương trình dùng để quản lý hệ thống cơ sở dữ liệu, cơ sở dữ liệu là một hệ thống lưu trữ thông tin, là một hệ thống được sắp xếp, phân lớp rõ ràng ngăn nắp những thông tin mà mình lưu trữ. Do đó bạn có thể truy cập lấy dữ liệu một cách dễ dàng, MySQL hỗ trợ hầu hết các ngôn ngữ phổ biến hiện nay kể cả Node.js cũng không phải là ngoại lệ.[8] Trong đề tài này tác giả sử dụng cơ sở dữ liệu MySQL vì nó miễn phí để sử dụng, nhiều lập trình viên sử dụng đặc biệt là sử dụng để xây dựng một website, hỗ trợ nhiều nền tảng và rất tiện dụng. Ưu điểm - MySQL rất nhanh, đáng tin cậy, và rất dễ sử dụng. - Sử dụng cú pháp SQL tiêu chuẩn. - Là mã nguồn mở nên hoàn toàn miễn phí khi sử dụng. Nhược điểm - MySQL có thể bị khai thác để chiếm quyền điều khiển. - Không được tích hợp để sử dụng cho các hệ thống lớn. Ví dụ như ngân 6 hàng, các công ty lớn cần quản lý lượng dữ liệu khổng lồ. 1.4. Giới thiệu NPM NPM viết tắt của Node Package Manager là một công cụ (chương trình) quản lý các thư viện lập trình Javascript cho Node.js, công cụ này là thật sự cần thiết cho thế giới mã nguồn mở. Trong cộng đồng Javascript, các lập trình viên chia sẻ hàng trăm nghìn các đoạn code giúp cho các dự án mới tránh phải viết lại các thành phần cơ bản, các thư viện lập trình hay thậm chí cả các framework. Mỗi đoạn code này có thể phụ thuộc vào rất nhiều các mã nguồn mở khác, thật may mắn khi các công cụ quản lý thư viện ra đời, nếu không sẽ mất rất nhiều công sức trong việc quản lý các thư viện này. 1.5. RESTful Api là gì? REST là viết tắt của Representational State Transfer. REST là một loạt hướng dẫn và dạng cấu trúc dùng cho việc chuyển đổi dữ liệu. API là viết tắt của Application Programming Interface, phương thức kết nối với các thư viện và ứng dụng khác. RESTful API là một tiêu chuẩn dùng trong việc thết kế các thiết kế API cho các ứng dụng web để quản lý các resource. RESTful là một trong những kiểu thiết kế API được sử dụng phổ biến nhất ngày nay. Trọng tâm của Rest quy định cách sử dụng các HTTP method (như GET, POST, PUT, DELETE...) và cách định dạng các URL cho ứng dụng web để quản lý các resource có trong đề tài. Hình 1.4 Mô hình giao tiếp giữa Client và Server. 1.6. Giới thiệu một số module và thư viện đã sử dụng trong đề tài 1.6.1. Thư viện Socket.io Socket.io là công cụ hỗ trợ xây dựng một ứng dụng realtime, giao tiếp hai chiều giữa client và server bằng cách sử dụng một TCP socket để tạo một kết nối hiệu quả và ít tốn kém. Mặc dù được thiết kế để chuyên sử dụng cho các ứng dụng web, lập trình viên vẫn có thể đưa chúng vào bất kì loại ứng dụng nào. Socket.io cho phép các kênh giao tiếp song song hai chiều và hiện đã được hỗ trợ trong nhiều trình duyệt (Firefox, Google Chrome và Safari).[6] Dữ liệu truyền tải thông qua giao thức HTTP (thường dùng với kĩ thuật Ajax) 7 chứa nhiều dữ liệu không cần thiết trong phần header. Một header request/response của HTTP có kích thước khoảng 871 byte, trong khi với Websocket, kích thước này chỉ là 2 byte (sau khi đã kết nối). Vậy giả sử bạn làm một ứng dụng game có thể tới 10,000 người chơi đăng nhập cùng lúc, và mỗi giây họ sẽ gửi/nhận dữ liệu từ server. Hãy so sánh lượng dữ liệu header mà giao thức HTTP và WebSocket trong mỗi giây: - HTTP: 871 x 10,000 = 8,710,000 bytes = 69,680,000 bits per second (66 Mbps) - WebSocket: 2 x 10,000 = 20,000 bytes = 160,000 bits per second (0.153 Kbps) Tác giả sử dụng Socket.io trong đề tài này để viết một module chat realtime giữa thợ và khách. 1.6.2. Thư viện Angularjs AngularJS là một framework phát triển dựa trên Javascript, một framework cho các ứng dụng web. AngularJS dùng để phát triển front-end thông qua các API để gọi data, cho nên AngularJS thường được sử dụng để xây dựng project Single Page Application. Tác giả chọn sử dụng Angular.js để viết Front-End vì tính dễ tiếp cận của nó và tải nhanh do không cần phải tài và render cả trang giờ đây chỉ cần tài một phần html của website và lấy JSON hiển thị ra. Ưu điểm - Dễ làm quen khi đã nắm kiến thức cơ bản javascript. - Sử dụng data bind giống .NET với tính năng liên kết với HTML nên giúp người dùng cảm thấy dễ sử dụng. - Có thể chạy trên hầu hết các trình duyệt điện thoại thông minh. - Cung cấp khả năng tái sử dụng các component. Nhược điểm - Là một JavaScript framework, ứng dụng được viết bởi AngularJS không an toàn. Phải có các tính năng bảo mật và xác thực phía server sẽ giúp ứng dụng trở nên an toàn hơn. - Nếu người sử dụng ứng dụng vô hiệu hóa JavaScript thì họ chỉ nhìn được trang cơ bản, không thấy gì thêm. 1.6.3. JSON Web Token JSON Web Token (JWT) là 1 tiêu chuẩn mở (RFC 7519) định nghĩa cách thức truyền tin an toàn giữa các thành viên bằng 1 đối tượng JSON. Thông tin này có thể được xác thực và đánh dấu tin cậy nhờ vào "chữ ký" của nó. Phần chữ ký của JWT sẽ được mã hóa lại bằng HMAC hoặc RSA. JSON Web Token bao gồm 3 phần, được ngăn cách nhau bởi dấu chấm (.): - Phần Header dùng để khai báo kiểu chữ ký và thuật toán mã hóa sẽ dùng cho cái token của chúng ta. - Phần thứ 2 của token đó là Payload, nơi chứa các nội dung của thông tin 8 (claim). Thông tin truyền đi có thể là mô tả của 1 thực thể (ví dụ như người dùng) hoặc cũng có thể là các thông tin bổ sung thêm cho phần Header. Nhìn chung, chúng được chia làm 3 loại: reserved, public và private. - Phần chữ ký được tạo bằng cách kết hợp 2 phần Header + Payload, rồi mã hóa nó lại bằng 1 giải thuật encode nào đó, càng phức tạp thì càng tốt, ví dụ như HMAC SHA-256.[7] Hình 1.5 Cấu trúc của một chuỗi JSON Web Token. Trong đề tài, tác giả sử dụng JSON web token để xác thực quyền truy cập (Authentication) và lưu trữ JSON Web Token ở Cookie dưới client. Trong một JWT có chứa UserAccountID và UserTypeID. Mỗi khi Client gửi một Request thì kèm theo JSON Web Token trong HTTP Header. 1.6.4. Module Nodemailer Module Nodemailer dùng để gửi mail từ Node.js. Hiện tại Nodemailer đã hỗ trợ nhiều services như Gmail, Godaddy, Hotmail, iCloud, Yahoo, ... Ở đề tài này tác giả dùng Nodemailer gửi Email đề người dùng xác nhận tài khoản hoặc gửi mật khẩu hệ thống tự tạo lúc người dùng quên mật khẩu về email của người dùng. 1.6.5. Module Multer và fs Trong đề tài này tôi dùng Multer Để nhận dữ liệu là một file ảnh được gửi từ client và dùng module FS có sẵn trong môi trường Node.js để lưu trên máy chủ. 1.6.6. Module Dotenv Trong đề tài tác giả sử dụng module Dotenv để đọc file env trong đó lưu các cấu hình để kết nối với Mysql, key để giải mã JSON Web Token và tài khoản, mật khẩu của Gmail. Vậy file env là gì, dùng làm gì? [3] env được viết tắt là environment dùng đề lưu các thông tin bí mật, không được commit thông qua git thông thường. 1.7. Tiểu kết 9 Qua chương này, tác giả đã nêu lên một số cơ sở lý thuyết và một số thư viện, phần mềm được sử dụng trong đề tài. Trong chương tiếp theo, tác giả sẽ tiến hành vào quá trình xây dựng Web API. 10 Chương 2 : PHÂN TÍCH THIẾT KẾ HỆ THỐNG 2.1. Khảo sát hiện trạng 2.1.1. Tình trạng tìm kiếm thợ trước đây Trước đây, việc tìm kiếm thợ để sửa chữa một thiết bị hư hỏng rất mất thời gian và tốn nhiều công sức cũng như tiền của rất nhiều. Người khách khi có thiết bị hư hỏng thì phải tìm kiếm nơi sửa chữa thích hợp thường thì phải ra đường kiếm hoặc hỏi người thân xung quanh để biết nơi sửa chữa thích hợp. 2.1.2. Hệ thống ra đời với yêu cầu Nhằm giải quyết vấn đề hiện hành ở trên thì đã nảy ra ý tưởng “Hệ thống cung cấp dịch vụ hỗ trợ tìm kiếm nhóm thợ theo khu vực trên nền tảng Website” Với các chức năng như: - Hiển thị thông tin thợ trên map khi tìm kiếm thợ theo danh mục và khu vực. - Người thợ đăng hồ sơ để người dùng tìm kiếm. - Nhắn tin thời gian thực giữa khách và thợ với nhau. - Kết thúc giao dịch và đánh giá giữa khách với thợ và thợ với khách. 2.2. Sơ đồ hệ thống 2.2.1. Mô hình tổng quát Hình 2.1 Mô hình use case tổng quát. Website có 3 tác nhân bao gồm: Admin, Thợ và Khách - Admin cần phải đăng nhập để quản lý tài khoản thợ và khách, danh mục ngành nghề, hồ sơ của thợ, tìm kiếm thợ và cập nhật thông tin cá nhân. - Thợ cần đăng nhập để quản lý thông tin cá nhân, hồ sơ, quản lý giao dịch của bản thân, chat với khách và có thể đăng ký tài khoản thợ. 11 - Khách cần đăng nhập để quản lý thông tin cá nhân, giao dịch của bản thân, chat với thợ và có thể đăng ký tài khoản thợ 2.2.2. Mô hình use case của thợ Hình 2.2 Mô hình use case của thợ. 2.2.2.1. Đổi mật khẩu - Tên sử dụng: Đổi mật khẩu. - Tác nhân: Thợ. - Tiền điều kiện: Phải là admin hoặc khách hoặc thợ đã có tài khoản đã được xác nhận. - Mục đích: Thành viên có thể đổi mật khẩu của tài khoản. - Kịch bản chính: ①. Thành viên chọn đổi mật khẩu. ②. Hệ thống hiện form nhập liệu để nhập mật khẩu mới và cũ. ③. Thành viên nhập mật khẩu mới và cũ vào form. ④. Thành viên chọn thay đổi mật khẩu để thay đổi mật khẩu nếu không hợp lệ theo kịch bản phụ. ⑤. Hệ thống báo thay đổi thành công và kết thúc use case. - Kịch bản phụ: ①. Hệ thống sẽ hiện thông báo lỗi. ②. Quay lại bước 2 2.2.2.2. Xem trang cá nhân - Tên sử dụng: Đăng ký. - Tác nhân: Thợ. - Tiền điều kiện: Thành viên có thể là admin hoặc khách đã đăng nhập vào hệ thống. - Mục đích: Thành viên xem thông tin cá nhân của bản thân hoặc thành vien khác.
- Xem thêm -

Tài liệu liên quan

Tài liệu vừa đăng