2.4.5.1. Mô tả
Quản trị trong hệ thống là người chịu trách nhiệm theo dõi hoạt động của hệ thống. Quản lý các thông tin trong hệ thống, tài nguyên hệ thống.
Đăng nhập tài khoản quản trị, tùy theo quyền của tài khoản trên hệ thống mà người quản trị sẽ thực hiện các nhiệm vụ trên hệ thống.
Các hoạt động quản trị hệ thống bao gồm quản lý danh mục, quản lý sản phẩm, quản lý nhà cung ứng, quản lý đơn vị vận chuyển, quản lý ngân hàng, quản lý thuế, quản lý các gói dịch vụ.
2.4.5.2. Các chức năng - Quản lý danh mục :
Tạo danh mục: Danh mục được tạo bao gồm các thông tin : Danh mục cha (danh mục đã được tạo trước đó trong hệ thống hoặc là danh mục gốc). Tên danh mục không được để trống, tối đa 50 kí tự. Trạng thái danh mục, và mô tả danh mục.
Sửa thông tin danh mục: Danh mục trên hệ thống có thể sửa các thông tin về tên danh mục, danh mục cha, trạng thái và mô tả của danh mục.
Quản lý danh mục: Liệt kê các danh mục trong hệ thống. Có hai dạng liệt kê trên hệ thống là dạng bảng hoặc dạng list. Dạng liệt kê danh mục theo bảng hỗ trợ tìm kiếm danh mọc theo các cột tương ứng hoặc tìm kiếm danh mục nâng cao. Liệt kê danh sách danh mục hiển thị dạng cây để dễ nhận biết các cấp của danh mục. -Quản lý ngân hàng:
Tạo ngân hàng: Thông tin ngân hàng bao gồm: Tên viết tắt: tối đa 50 kí tự không được để trống, Tên đầy đủ của ngân hàng tối đa 255 kí tự, không để trống, ảnh đại diện ngân hàng và trạng thái của ngân hàng trong hệ thống (kích hoạt hoặc không kích hoạt).
Xem ngân hàng: Xem thông tin một ngân hàng liên mà hệ thống hỗ trợ. Thông tin ngân hàng sẽ được hiển thị bao gồm: Tên viết tắt, tên đầy đủ, trạng thái và người tạo.
Sửa ngân hàng: Các thông tin có thể sửa được là tên viết tắt, tên đầy đủ, ảnh, và trạng thái của ngân hàng. Các thông tin này ko được để trống.
Xem danh sách ngân hàng: Có hai dạng xem là dạng list và dạng bảng. Dạng list sẽ liệt kê các ngân hàng trong hệ thống cùng các thông tin về ngân hàng ở dạng list. Liệt kê danh sách ngân hàng dạng bảng hỗ trợ tìm kiếm ngân hàng theo từng cột (ứng với từng thông tin của ngân hàng) tương ứng hoặc có thể sử dụng form tìm kiếm riêng.
Xóa ngân hàng: Yêu cầu xác nhận của người quản trị rồi mới xóa ngân hàng khỏi hệ thống.
-Quản lý thuế: Quản lý các loại thuế tương ứng với các sản phẩm mà hệ thống cung cấp. Mỗi sản phẩm trong hệ thống sẽ chịu 1 loại thuế duy nhất.
Tạo thuế mới: Thông tin về một loại thuế bao gồm: Tên thuế, phần trăm (%), trạng thái (sử dụng hoặc không sử dụng), mô tả về thuế. Trong đó tên thuế và phần trăm không được để trống, phần trăm phải là ở dạng số.
Xem thuế: Xem thông tin về một loại thuế trên hệ thống bao gồm: Tên thuế, phần trăm thuế, ngày tạo, người tạo, mô tả về thuế.
Sửa thuế: Sửa thông tin về tên, trạng thái, phần trăm, và mô tả về thuế. Quản lý thuế: Liệt kê tất cả các loại thuế trên hệ thống, dạng danh sách và dạng bảng. Dạng bảng tương ứng với mỗi thông tin thuế là một cột và tìm kiếm thuế ngay trên bảng đó.
Xóa thuế: Yêu cầu xác nhận trước khi xóa thuế khỏi hệ thống. -Quản lý sản phẩm: Sản phẩm trên hệ thống sẽ bao gồm thông tin:
Danh mục chứa sản phẩm :Một trong các danh mục đã được tạo ở trong hệ thống.
Tên sản phẩm: Tên của sản phẩm không được để trống, tối đa 255 kí tự. Trạng thái của sản phẩm: Hoạt động hoặc không hoạt động.
Thuế mà sản phẩm phải chịu: Không được để trống, là một trong số các loại thuế đã được tạo trong hệ thống.
Mô tả sản phẩm: Dạng text, có thể để trống nếu không có mô tả nào về hệ thống.
Ảnh sản phẩm: Một sản phẩm có thể có nhiều ảnh. Mỗi ảnh của sản phẩm sẽ bao gồm tên ảnh (không được để trống) và đường dẫn đến file ảnh trên hệ thống. Khi xem một sản phẩm có thể xem các ảnh của sản phẩm đó, thêm, sửa, xóa một ảnh bất kì của sản phẩm đó.
Các chức năng quản lý sản phẩm trên hệ thống bao gồm thêm sản phẩm, sửa sản phẩm, quản lý sản phẩm, xóa sản phẩm trên hệ thống. Việc thêm, sửa , xem sản phẩm là thay đổi thông tin sản phẩm hoặc cung cấp các thông tin về sản phẩm cho hệ thống để tạo hoặc sửa sản phẩm.
-Quản lý phương thức vận chuyển: Hệ thống cung cấp form để thêm, sửa, xem các phương thức vận chuyển trên hệ thống. Thông tin về phương thức vận chuyển bao gồm:
Tên phương thức vận chuyển: Không được để trống, tối đa 255 kí tự.
Mô tả về phương thức vận chuyển: dạng text, có thể để trống nếu không có mô tả về phương thức vận chuyển này.
Thuế: Thuế mà phương thức vận chuyển này phải chịu, là một trong các loại thuế được tạo ra trước đó trong hệ thống.
Đơn giá: Dạng số, đơn giá của loại hình vận chuyển này. Không được để trống.
Đơn vị: Dạng text, đơn vị tính của loại hình vận chuyển (/1km, /1 tấn 1km…). Không được để trống
-Quản lý người dùng trên hệ thống: Quản trị viên hệ thống sẽ chỉ quản lý nhà cung cấp, đơn vị vận chuyển và khách hàng trên hệ thống. Thông tin về người dùng trên hệ thống về cơ bản là giống nhau, ứng với mỗi loại người dùng sẽ có các level khác nhau để phân biệt vai trò của người đó trên hệ thống. Thông tin người dùng trên hệ thống bao gồm:
Tên người dùng (với đơn vị vận chuyển và nhà cung cấp là tên công ty) : là tên đầy đủ của người dùng trên hệ thống tối đa 255 kí tự không được để trống.
Email: email đăng kí trên hệ thống. Người dùng có thể dùng email để đăng nhập vào hệ thống thay cho tên đăng nhập. Email không được để trống và phải đúng định dạng email nếu không sẽ báo lỗi.
Mật khẩu: mật khẩu đăng nhập hệ thống của người dùng, không được để trống tối thiểu 4 kí tự.
Tên đăng nhập: không chứa các kí tự đặc biệt, không được để trống tối đa 50 kí tự.
Ảnh đại diện: Có thể để trống, chọn một ảnh trong máy để đưa vào làm ảnh đại diện trên hệ thống.
Số cố định và số di động: Tối đa 40 số, không được để trống, dạng số. Tỉnh thành phố: Một trong các thành phố ở Việt nam.
Địa chỉ: Địa chỉ cụ thể của người dùng trong tỉnh thành phố ở trên, không được để trống.
Trang web: website cá nhân của người dùng(nếu có) .
-Quản lý gói sản phẩm trên hệ thống: gói sản phẩm (package) hiện tại sẽ do người quản trị định nghĩa ra. Tùy theo các yêu cầu trên thực tế mà các gói này sẽ được định nghĩa. Gói sản phẩm này sẽ bao gồm các sản phẩm hoặc các gói sản
phẩm khác cùng số lượng sản phẩm được định nghĩa cho một mục đích nhất định nào đó.
Như ta đã biết, lĩnh vực cung cấp sản phẩm xây dựng là rất đa dạng và phong phú. Tuy nhiên, các loại sản phẩm xây dựng trên thực tế cũng có giới hạn. Các mặt hàng về vật liệu xây dựng giúp tạo nên các công trình xây dựng. Các sản phẩm này bao gồm: gạch, đá, xi măng, sắt thép và các loại sản phẩm hoàn thiện, nội thất và trang trí khác. Các loại sản phẩm này giúp tạo nên một công trình xây dựng. Tuy nhiên, nếu chỉ định nghĩa các sản phẩm này trên hệ thống, khách hàng khi tham gia vào hệ thống sẽ mất công tìm kiếm rất nhiều sản phẩm nếu như có một nhu cầu xây dựng nào đó như xây phòng tắm, xây 1 phòng bếp hay phòng ngủ….. Với mỗi nhu cầu như vậy khách hàng sẽ phải mất công tìm kiếm rất nhiều loại vật liệu sao cho phù hợp. Mặt khác, những nhu cầu này lại không phải chỉ có một khách hàng cần mà có thể rất nhiều khách hàng cũng có nhu cầu như vậy. Với vấn đề đó, yêu cầu đặt ra là hệ thống có thể định nghĩa một gói sản phẩm (package) được định nghĩa để thực hiện một công việc xây dựng như trên, trong gói sản phẩm đó, các loại vật liệu đã được tập hợp, tính toán tương đối để có thể triển khai thực tế được.
Trên hệ thống sẽ cung cấp các chức năng về định nghĩa gói sản phẩm, sửa đổi thông tin về gói sản phẩm, list danh sách các gói sản phẩm đang cung cấp trên hệ thống.
CHƯƠNG 3: THIẾT KẾ HỆ THỐNG
3.1. Tổng quan về mô hình hệ thống
3.1.1. Mô hình MVC
Hệ thống được thiết kế dựa trên mô hình MVC. Mô hình MVC hiện nay là mô hình phổ biến được sử dụng để xây dựng các hệ thống web. Mô hình MVC:
INCLUDEPICTURE "E:\\Knowledge\\Fundamental\\ki9\\Zend Framework\\documents\\ebooks\\ZendFramework-1.10.5-manual- en\\ZendFramework- 1.10.5\\documentation\\manual\\core\\en\\images\\d481d625821a97b9a5eb2cec99d ca50e-learning.quickstart.intro.mvc.png" \* MERGEFORMATINET Hình 9: Mô hình MVC
Mô hình MVC bao gồm các thành phần chủ yếu sau đây:
Models trong các ứng dụng dựa trên MVC là những thành phần có nhiệm vụ lưu trữ thông tin, trạng thái của các đối tượng, thông thường nó là một lớp được ánh xạ từ một bảng trong CSDL.
Views là các thành phần chịu trách nhiệm hiển thị các thông tin lên cho người dùng thông qua giao diện . Thông thường, các thông tin cần hiển thị được lấy từ thành phần Models .
Controllers trong các ứng dụng kiểu MVC chịu trách nhiệm xử lý các tác động về mặt giao diện, các thao tác đối với models, và cuối cùng là chọn một view thích hợp để hiển thị ra màn hình. Trong kiến trúc MVC, view chỉ có tác dụng hiển thị giao diện mà thôi, còn điều kiển dòng nhập xuất của người dùng vẫn do
3.1.2. Mô hình tổng thể hệ thống
Hệ thống sẽ được xây dựng dựa trên mô hình MVC. Các phần model, view, controller trên hệ thống sẽ được phân tách vào các phần rõ ràng để có thể tiện sử dụng và tái sử dụng các lớp, các thuộc tính trên hệ thống.
Ứng với mỗi mức người dùng trong hệ thống sẽ có những vai trò riêng trong hệ thống, đăng nhập vào hệ thống với mục đích khác nhau. Vì vậy, ta sẽ phân chia hệ thống ra thành các module tương ứng với các tác vụ của người dùng thực hiện trên hệ thống. Các module tạo ra cũng phải tuân theo mô hình MVC mà toàn hệ thống đã thống nhất. Cụ thể ta sẽ có mô hình hệ thống sau:
Hình 10: Mô hình hệ thống
Do tất cả các module đều dùng chung một cơ sở dữ liệu chung nên ta có thể tách phần model của toàn hệ thống ra thành một phần riêng để tất cả các module đều có thể sử dụng mà không cần phải khai báo lại từng model trong từng module cụ thể. - Module admin: Các hoạt động của admin trên hệ thống. Theo như các yêu cầu về chức năng của admin trên hệ thống thì phần module admin đảm nhận vai trò quản lý toàn bộ phần bên trong của hệ thống (backend).
- Module supplier: Hoạt động của nhà cung cấp trên hệ thống sẽ được thực hiện trong module này, khi đăng nhập bằng tài khoản supplier nhà cung cấp sẽ chuyển đến trang quản lý của mình nằm trong module supplier.
- Module distributor: module quản lý của nhà phân phối trên hệ thống. Khi được tạo tài khoản nhà phân phối, nhà phân phối sẽ được tạo phần quản lý của mình nằm trong module này để quản lý thông tin về mình, các tác vụ của mình trên hệ thống. - Module transporter: Mỗi đơn vị vận chuyển cũng có một phần quản lý riêng của mình nằm trong module này. Module transporter chỉ dành riêng cho đơn vị vận chuyển có thể đăng nhập để quản lý.
- Module user: Quản lý toàn bộ user trên hệ thống. Tách biệt với các module khác để hỗ trợ cho việc tạo, đăng kí, đăng nhập, quản lý user tùy theo yêu cầu quản lý. Do các user đăng nhập trên hệ thống có các thông tin giống nhau chỉ khác nhau về cấp độ trên hệ thống (level) nên yêu cầu một module quản lý chung đối với tất cả user trên hệ thống.
- Module shop: phần frontend của hệ thống, trưng bày sản phẩm, thực hiện các thao tác giới thiệu, mua bán trên hệ thống. Module shop phục vụ cho khách hàng có nhu cầu vào tìm kiếm, tham khảo và đặt mua sản phẩm trên hệ thống.
3.2. Thiết kế hệ thống
3.2.1. Module admin
Module admin thực hiện các yêu cầu của admin. Các yêu cầu này bao gồm: quản lý ngân hàng, quản lý danh mục, quản lý sản phẩm, quản lý thuế, quản lý gói dịch vụ (treeBuild).
Mô hình tổng quan module admin như sau:
Hình 11: Module admin
Compponents là phần chứa các lớp chung của toàn module, các lớp ở mức toàn cục để tất cả các phần trong module có thể gọi và sử dụng. Trong đó có lớp Controller là lớp trừu tượng cho các controller trong module kế thừa.
Controllers : Phù hợp với mô hình MVC, lớp controller trong module sẽ đảm nhiệm các chức năng xử lý bên trong module admin. Các controllers trong module sẽ bao gồm CategoryController xử lý các phần liên quan đến danh mục như thêm, sửa, xóa, quản lý, BankController xử lý các yêu cầu liên quan đến việc thêm, sửa, xóa, quản lý các ngân hàng trên hệ thống, TaxController quản lý thuế,
BuildTreeController quản lý các gói dịch vụ, ProductController quản lý sản phẩm. Views: ứng với mỗi controller của module sẽ có các mục view tương ứng. Các mục view này sẽ chịu trách nhiệm phần hiển thị ra hệ thống các thành phần form, view, admin, update, create, … tương ứng với các action .
3.2.1.2. Chi tiết module admin
Các yêu cầu về quản lý danh mục hệ thống sẽ do CategoryController xử lý và gọi hiển thị tương ứng, tương tự, các yêu cầu về ngân hàng sẽ do BankController xử lý, yêu cầu về thuế, gói dịch vụ, sản phẩm sẽ do các controller tương ứng alf TaxController, BuildTreeController, ProductController xử lý và gọi hiển thị tương ứng với các yêu cầu gửi đến. Các xử lý liên quan đến danh mục:
Hình 12: Class diagram trong module admin
Các class trong module admin đều có các xử lý tương tự nhau do cùng có chung mục đích là quản lý các phần trên hệ thống. Trong đó :
ActionCreate() sẽ gọi hiển thị file create.php trong mục view. File này sẽ tiếp tục render ra file _form.php chứa các thành phần input tương ứng để tạo ra một trường trong cơ sở dữ liệu. Khi người dùng điền đầy đủ thông tin, action này sẽ tạo một trường trong cơ sở dữ liệu tương ứng với các thông tin người dùng nhập vào.
actionView : với tham số id truyền vào là id của bảng tương ứng. action này sẽ gọi hàm loadModel để tạo model tương ứng. Sau đó sẽ render ra view tương ứng là file view.php trong mục view để hiển thị chi tiết thông tin về model được gọi
actionIndex: action này sẽ tìm tất cả các trường tương ứng trong bảng (Bank, category,…) . Render ra file index.php. Tương ứng với mỗi trường trong bảng, file index.php này sẽ gọi đến file _view.php để hiển thị ra thông tin liên quan đến trường này. Các trường sẽ được liệt kê ra dưới dạng danh sách. Với thông tin về category, thông tin liệt kê ra sẽ được hiển thị dưới dạng cây để có thể tiện theo dõi cấu trúc tổ chức của các danh mục trong hệ thống.
actionUpdate : Sửa thông tin về một item trong hệ thống (Bank, Category, …). Tương ứng với tham số đầu vào là id ta sẽ xác định được item cần sửa. Sau đó form sửa sẽ được render ra trong file update.php tương ứng.
actionDelete : action này sẽ không gọi hiển thị ra mà thay vào đó, sau khi xóa một item thành công sẽ chuyển về trang quản lý tương ứng.
actionAdmin : Tương ứng với các controller Bank, Category, Tax, BuildTree, Product mà ta có các thông tin quản lý riêng. Action này chịu trách nhiệm tìm kiếm tất cả các trường của bảng tương ứng, sau đó gọi đến hiển thị admin.php trong mục view tương ứng. File này sẽ tổ chức dữ liệu dưới dạng bảng và có các mục tìm kiếm tương ứng với từng trường dữ liệu trong bảng.