Quy trình tạo hành động tác động lên sàn TMĐT

Một phần của tài liệu Xây dựng hệ thống đồng bộ sản phẩm trên các trang thương mại điện tử bằng AutoIT và selenium (Trang 42)

3.2.4.2 Biểu đồ Use case

Hình 3-9: Lược đồ use case ca phn thc thi tđộng

Trong trường hợp lý tưởng, người quản trị gần như không phải can thiệp gì mà hệ thống sẽ tự chạy tự động. Tuy nhiên trong trường hợp phát sinh lỗi, có thể do website cập nhật giao diện thì người quản trị có thể tạm dừng tiến trình chạy tự động, chỉnh sửa hành động mẫu nếu cần sau đó cho chương trình tiếp tục chạy.

3.2.4.3 Thiết kế cơ sở d liu

a) Phân tích

Dựa vào yêu cầu chức năng của hệ thống, cơ sở dữ liệu cần lưu trữ thông tin của lượt đăng mới các hành động mới được nhân bản từ hành động mẫu kèm thông tin sản phẩm mới. Các thực thể này có các thuộc tính như sau:

Thực thể lượt đăng: chứa thơng tin về người đăng (end user), website, phiên bản, trạng thái lượt đăng.

Thực thể hành động mới: chứa thông tin về lượt đăng, website, phiên bản, hành động mẫu, các bước hành động mới.

Quan hệ giữa các thực thể

Hình 3-10: Lược đồ thực thể quan hệ của phần tạo thực thi hành động

Hình vẽ trên biểu thị mối quan hệ giữa các thực thể. Mỗi lượt đăng có thể có nhiều hành động mới. Mỗi hành động mới có một bộ nhiều bước hành động mớ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 SyncTime

SyncTime (sync_id, sync_name, website_id, version_id,username, status):

trong đó sync _id là khóa chính, sync_name là tên lượt đăng để gợi nhớ cho người quản trị, website_id là khóa ngồi xác định website trực thuộc, version_id là khóa ngồi xác định phiên bản hiện tại, username là tên username tạo website, status là trạng thái của phiên bản (actived, deactived).

Lược đồ quan h NewAction

NewAction (act_id, act _name, username, a_index, version_id, note, steps,

status): trong đó act_id là khóa chính, act_name là tên hành động, username là tên người dùng yêu cầu đồng bộ, a_idx là thứ tự hành động, version_id là khóa ngồi xác định phiên bản trực thuộc, steps là thông tin chi tiết các bước hành động mới, status là trạng thái của hành động (actived, deactived).

3.2.4.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 thực thi hành động tự động:

URI Phương

thức Tham số Trả về Ghi chú

api/v1/sync_

requests GET - requests_list

Trả về danh sách các yêu cầu đồng bộ mới

api/v1/new_a

ctions GET request_id

new_actions_ list Trả về danh sách hành động mới api/v1/issue_ report POST request_id, action_id, step_index

Thông báo việc thực thi hành động có lỗi tới server để sau này có thể kiểm tra lại

Bảng 3-5: Danh sách các API module thực thi hành động.

3.2.5.1. Kiến trúc h thng

Hệ thống được xây dựng với kiến trúc 3 tầng như sau

Tng 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 cui

Để 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.

Nhp sn phm mu

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.

Chn 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 cp nht

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 liu

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 hUser: đã mô tả phn 3.2.3.4

Lược đồ quan h Website: đã mô tả phn 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

Bng 3-6: Danh sách các API module web qun tr

3.2.5.5 Mt vài thut tốn

Mã hóa một chiều mật khẩu với salt

Khi lưu trữ password vào CSDL thường sẽ sử dụng các hàm băm khác nhau được hỗ trợ bởi hệ CSDL hoặc ngơn ngữ lập trình (như MD5) để tạo dữ liệu mã hóa, dữ liệu mã hóa đó được lưu vào CSDL. Ví dụ:

$crypt = md5($raw_password); //e99a18c428cb38d5f260853678922e03

Bởi vì hàm băm tạo ra các giá trị khơng thể dịch ngược chỉ duy nhất một cách là thử. Nếu sử dụng các mật khẩu yếu, nó có thể bị dò ra dựa trên giá trị băm của các mật khẩu phổ biến biết trước. Như trường hợp trên khi thấy e99a18c428cb38d5f260853678922e03 thì đốn được password là abc123. Để khắc phục điều này có thể sử dụng đến salt.

Sử dụng Salt tăng cường an toàn cho mật khẩu.

Để phức tạp hóa mật khẩu lưu trữ, thì các mật khẩu gốc trước khi mã hóa được nối thêm các chuỗi, các chuỗi thêm này gọi là salt.

$crypt = md5($raw_password.$salt);

Giờ mật khẩu lưu trữ ở trên phức tạp hơn rất nhiều. Biết được $crypt đoán ra $raw_password là rất khó, kể cả khi là password yếu. Khó mà xây dựng được một từ điển chứa các mã hóa tương ứng với password.

Mã hóa hai chiều mật khẩu với mã hóa Cesar

Với mật khẩu của người dùng tại các trang TMĐT, nếu hệ thống chỉlưu ở dạng chuỗi nguyên bản sẽ rất rủi ro về bảo mật. Khó ai có thểđưa mật khẩu để hệthơng lưu trữ mà khơng có hàm mã hóa nào cả. Tác giả xây dựng hàm mã hóa dựa trên thuật tốn mã hóa Cesar như sau:

function encrypt($string) {

$loop = rand(1, 10); // lấy ngẫu nhiên 1 số từ 1 đến 10 $res = "";

for ($i = 0; $i < $loop; $i++) { //lặp n lần

$num = rand(1, 26); // tìm ngẫu nhiên số từ 1 đến 26 $numa = $num+96;

$first = chr($numa); //tìm kí tựtương đương trong ASCII

$res .= $first.$this->Encipher($string, $num); // mã hóa cesar chuỗi đầu với số ngẫu nhiên, nối kí tựvào đầu

}

$loop_char = chr($loop+96);

return $loop_char.$res; // Nối kí tựtương đương loop vào đầu }

Về độ an tồn thì thuật tốn khơng an tồn tuyệt đối nhưng cũng tránh hiển thị mật khẩu tại các giao diện.

3.3. Xây dng các giao din

Giao diện trang thống kê

Giao diện này để giúp cho người sử dụng nắm bắt được các thông tin - Số lượng sản phẩm đã đăng lên các sàn

- Thống kê được lượt đăng sản phẩm theo tháng, quý, năm - Thống kê sản phẩm theo danh mục

Hình 3-15: Giao din trang thng kê

Giao din trang danh sách sn phm

Đây là giao diện quản trị rất phổ biến bao gồm: - Hiển thị danh sách các sản phẩm

- Có 1 đường dẫn (Nút chọn) để tạo sản phẩm mới

- Mỗi sản phẩm lại có thêm đường dẫn để sửa hoặc xóa sản phẩm

- Mỗi sản phẩm có 1 danh sách các sàn mà người dùng đang bán hàng, khi bấm vào tên mỗi sàn thì sẽ bật hoặc tắt chức năng đồng bộ sản phẩm lên sàn đó

Hình 3-16: Giao din trang danh sách sn phm

Giao din thêm sn phm

Tại đây người dùng có thể nhập các thơng tin về sản phẩm

Giao din qun lý tài khon

Tại đây người dùng sẽ nhập tên đăng nhập và tài khoản cho các sàn thương mại điện tử, trong trường hợp người dùng không muốn bán hàng trên 1 sàn nào đó thì có thể chọn tắt tài khoản trên sàn đó đi.

Hình 3-18: Giao din trang qun lý tài khon

Mật khẩu của người dùng được mã hóa và lưu trữ trên server. Hàm mã hóa là hàm được cài đặt theo thuật tốn mã hóa Cesar.

Giao diện quản lý danh mục

Danh mục có các chức năng cơ bản như thêm, sửa xóa danh mục. Một danh mục bao gồm một định danh chính (khơng trùng lặp) và các giá trị danh mục tại mỗi sàn. Ví dụ một danh mục chung cho 3 sàn Tiki, Sendo, Shopee là Áo nam thì định danh trên các sàn cụ thể như sau:

- Tiki: Thời Trang > Thời trang nam > Trang phục nam > Áo khoác nam - Shopee: Thời Trang Nam > Áo khoác & Áo vest > Áo khoác phao

- Sendo: Thời trang nam > Áo khoác nam > Áo khoác phao nam

Nếu 1 sản phẩm chưa có giá trị danh mục trên sàn nào thì sản phẩm đó cũng

Một phần của tài liệu Xây dựng hệ thống đồng bộ sản phẩm trên các trang thương mại điện tử bằng AutoIT và selenium (Trang 42)

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

(65 trang)