3.2.5.1. Kiến trúc hệ thống
Hệ thống được xây dựng với kiến trúc 3 tầng như sau
Tầng client:
Là nơi hiển thị các giao diện với người dùng,
Tầng ứng dụng
Đây là nơi server sẽ thực hiện các bước xửlý thông tin như xử lý dữ liệu thơ, cài đặt các hàm mã hóa, giải mã, băm mật khẩu để đảm bảo tính bảo mật của dữ liệu. Tầng ứng dụng được cài đặt bằng ngôn ngữ PHP sử dụng framwork codeigniter, triển khai trên máy chủ Apache.
Tầng dữ liệu
Đây là nơi lưu trữ và thao tác truy vấn, quản lý cơ sở dữ liệu, tầng này được cài đặt dựa trên DB_Buider có sẵn của Codeigniter giúp cho việc triển khai các câu truy vấn được rành mạch, linh động.
3.2.5.2 Biểu đồ Use case
Hình 3-12: Biểu đồ Usecase của người dùng cuối
Để người dùng đăng đồng thời sản phẩm lên các sàn thì cần thực hiện theo quy trình sau:
Hình 3-13: Quy trình đăng sản phẩm đồng bộ
Xác thực và quản lý profile
Các kịch bản tương tựnhư thực hiện với các trang yêu cầu tài khoản, cũng có các usecase cơ bản như đăng ký, đăng nhập, thay đổi thông tin và đăng xuất.
Cài đặt tài khoản
Đây là việc đầu tiên người dùng phải làm khi muốn đồng bộ sản phẩm, tài khoản này là tài khoản bình thường người dùng vẫn hay đăng nhập vào các sàn TMĐT như Tiki, Sendo, shopee… Với nhiều người dùng thì họ ln để tài khoản ở các sàn là giống nhau cả về tên đăng nhập và mật khẩu. Tuy nhiên vẫn có một số người để các tên đăng nhập khác nhau vì tên tài khoản khi đăng ký đã có người khác sử dụng hoặc sử dụng mật khẩu khác nhau vì muốn nâng cao bảo mật (tránh trường hợp lộ tài khoản một sàn thì mất ln tài khoản ở các sàn cịn lại). Vì vậy hệ thống để mặc định là mỗi trang có một form để quản lý tài khoản. Ngồi ra thơng tin tài khoản của người dùng được mã hóa trước khi gửi lên server và được mã hóa 2 chiều thêm một lần nữa trước khi lưu vào cơ sở dữ liệu.
Có một khó khăn rất lớn khi đồng bộ các sản phẩm là việc khác nhau trong vấn đề xử lý form, đặc biệt mỗi sàn lại phân chia danh mục theo cấu trúc cha con khác nhau. Vì vậy để sản phẩm được đăng thành cơng thì người dùng sẽ được cung cấp một giao diện đễ ghép cặp các danh mục của các sàn. Và việc này cũng phải được cấu hình trước khi đồng bộ sản phẩm.
Nhập sản phẩm mẫu
Có 2 cách nhập chính cho người dùng:
- Nếu sản phẩm chưa đăng lên sàn nào thì người dùng sẽ phải nhập các trường như khi đăng lên từng sàn. Do số lượng các trường của các sàn là khác nhau nên một số sàn có những trường mà các sàn khác lại khơng có. Hệ thống sẽ đưa ra phần nhập liệu của tất các trường và sẽ yêu cầu bắt buộc nhập với những trường cần thiết mà nếu thiếu trường đó sản phẩm khơng thể đăng thành cơng được.
- Nếu sản phẩm đã có trên sàn nào đó rồi thì hệ thống cung cấp trình tiện ích mở rộng (cho trình duyệt chrome) để người dùng chỉ cần ấn 1 nút là sản phẩm sẽ được gửi thông tin về cho hệ thống. Chức năng này rất hữu ích khi người dùng đã bán hàng lâu năm trên một sàn nào đó mà có sốlượng sản phẩm đang bán lớn. Hỗ trợ giảm thao tác nhập liệu cho người dùng.
Chọn sàn cần đồng bộ
Mỗi sàn lại có chính sách với người bán khác nhau, chính sách chiết khấu khác nhau tại mỗi thời điểm nên có những thời điểm người bán hàng chỉ muốn tập trung bán hàng trên một vài sàn nào đó mà khơng phải là tất cả. Việc chọn này sẽ giúp tối ưu lợi nhuận cho người bán hàng.
Nhấn nút đồng bộ
Tại mỗi sản phẩm sẽ có một nút đồng bộ riêng hoặc người dùng có thể chọn một danh sách các sản phẩm rồi đồng bộ hàng loạt
Xem kết quả cập nhật
Sau khi đồng bộ thành công hệ thống có cập nhật trạng thái của sản phẩm tại mỗi sàn, người dùng có thể ấn vào link mới để xem thông tin hiển thị trên sàn
3.2.5.3 Thiết kế cơ sở dữ liệu
a) Phân tích
Dựa vào các chức năng của bộ tạo/sửa hành động, cơ sở dữ liệu cần lưu trữ các thông tin về người dùng cuối, tài khoản của người dùng ở các sàn, website, danh mục sản phẩm, thông tin sản phẩm, cài đặt đặc biệt tương ứng là các thực thể của hệ thống. Các thực thể có các thuộc tính như sau:
Người dùng: lưu trữ thông tin gồm username, mật khẩu, tình trạng hoạt động.
Website: lưu trữ tên của website, người tạo, tình trạng hoạt động.
Tài khoản ở các sàn: lưu trữ tên người tạo, website, tên người dùng, mật khẩu đã mã hóa, bản trực thuộc, tình trạng hoạt động.
Sản phẩm: lưu trữ tên sản phẩm, mã sản phẩm, đường dẫn ảnh, giá gốc, giá giảm, ngày giảm giá, danh mục, loại sản phẩm, đơn vị, mầu sắc, họa tiết, cỡ, khối lượng, lượng tồn kho, mã sku, mô tả sản phẩm, chi tiết sản phẩm, các sàn đã đăng, thời gian đăng, tình trạng hoạt động.
Cài đặt: lưu trữ thơng tin người dùng, thuộc tính cài đặt, giá trị cài đặt Quan hệ giữa các thực thể
Hình vẽ trên biểu thị mối quan hệ giữa các thực thể. Mỗi người dùng có thể có nhiều nhiều sản phẩm. Mỗi người dùng có một tài khoản trên mỗi sàn. Có thể đăng nhiều sản phẩm trên nhiều sàn. Mỗi sản phẩm chỉ có duy nhất một danh mục đích cuối.
b) Thiết kế
Từ các phân tích về các thực thể và các liên kết thực thể nêu trên, có thể mơ tả qua các lược đồ quan hệ sau:
Lược đồ quan hệUser: đã mô tả ở phần 3.2.3.4
Lược đồ quan hệ Website: đã mô tả ở phần 3.2.3.4
Lược đồ quan hệ Account
Account (acc_id, user_name, upassword, website_id, status): trong đó u_id
là khóa chính, user_name là tên đăng nhập, upassword là mật khẩu đã được mã hóa, website_id là khóa ngồi xác định website muốn đồng bộ, status là trạng thái của website (actived, deactived)
Lược đồ quan hệ Category
Category (cate_id, user_name, website1_id, website1_cate, website2_id,
website2_cate, status): trong đó cate_id là khóa chính, user_name là người dùng, website1_id và website2_id là khóa định danh của các sàn, website1_cate và website2_cate là chi tiết các, status là trạng thái của website (actived, deactived)
Lược đồ quan hệ Product
Product (p_id, p_name, p_code, base_price, discount_price, category,
p_type, don_vi, color, key_words, hoa_tiet, co_mu, ton_kho, sku, description, attributes, upload_time, status): trong đó p_id là khóa chính, p_name là tên sản phẩm, p_code là mã sản phẩm, base_price là giá gốc, discount_price là giá khuyến mại, category là danh mục sản phẩm, p_type là loại sản phẩm, don_vi là đơn vị tính, color là màu sắc sản phẩm, key_words là từkhóa để seo sản phẩm, hoa_tiet là họa tiết nếu có, co_mu là có mũ, ton_kho là lượng tồn kho, sku là mã SKU, description mô tả sản phẩm, attributes là thuộc tính sản phẩm, upload_time là thời gian người dùng tạo sản phẩm, status là trạng thái của website (actived, deactived)
Lược đồ quan hệ Setting
Setting (set_id, user_name, setting_key, setting_value): trong đó set_id là
khóa chính, user_name là người dùng, setting_key là key cài đặt, setting_value là giá trị cài đặt.
3.2.5.4 Thiết kế các API
Bảng dưới đây mô tả các chức năng của các API đã được xây dựng cho mô đun trang quản lý
URI Phương
thức Tham số Trả về Ghi chú
api/v1/oauth/login POST username password access_token token_type refresh_token expires_in user_name Đăng nhập
api/v1/oauth/logout POST access_token status Đăng xuất
api/v1/websites GET access_token websites_list
Trả về danh sách website của người dùng
api/v1/categories GET access_token, categories_list
Trả về danh sách các cấu hình danh mục của người dùng api/v1/category_edit PUT access_token, website1_id, website1_name, website2_id, website2_name status Sửa thơng tin cấu hình danh mục
api/v1/accounts GET access_token accounts_list
Trả về danh sách tài khoản người dùng ở các website api/v1/account_edit PUT access_token, website_id, user_name, password status Sửa thông tin tài khoản của user tại sàn
api/v1/settings GET access_token settings_list
Trả về danh sách các cấu hình của người dùng api/v1/setting_edit PUT access_token, setting_key, setting_value status Sửa cấu hình cài đặt của người dùng
api/v1/products GET access_token, products_list Trả về danh sách sản phẩm của người dùng api/v1/product_add POST access_token, p_name, p_code, base_price, discount_price, category, p_type, don_vi, color, key_words, hoa_tiet, co_mu, ton_kho, sku, description, attributes product_id Tạo sản phẩm mới api/v1/product_edit PUT access_token, product_id, p_name, p_code, base_price, discount_price, category, p_type, don_vi, color, key_words, hoa_tiet, co_mu, ton_kho, sku, description, attributes
status Sửa thông tin sản phẩm
api/v1/product_delete POST access_token,
product_id status Xóa sản phẩm api/v1/product_sync POST access_token, product_id, website_id status Đồng bộ sản phẩm