Ý tưởng cho việc tạo chức năng quản lý huy hiệu

Chào mọi người, mình đang làm 1 trang web có chức năng huy hiệu cho người dùng giống DNH.
Mình đang vướng mắc về việc quản lý điều kiện để đạt được huy hiệu
Giả sử mình có 1 huy hiệu có tên là

  • Cuồng like điều kiện để đạt được là đi like 10 bài viết của người khác.
  • Bài viết đầu tiên

Thì phần kiểm tra điều kiện huy hiệu này mình nên xử lý ra sao nhỉ.
Mình thấy các điều kiện này kiểm tra rời rạc nhau quá.

1 Like

Khi user ấn nút like, nếu số like bằng 10 thì user được huy hiệu “Cuồng like” :thinking: ?

4 Likes

Thế thì phải viết code kiểm tra điều kiện ở nhiều chỗ rời rạc quá bác ạ

1 Like

Hẳn là phải có một class user riêng chứ nhỉ, sao lại phải kiểm tra ở nhiều chỗ rời rạc. :thinking:
Mỗi khi user bấm like thì gọi update_like chẳng hạn rồi thằng update_like nó khác lo việc add badge. :kissing:

Còn nếu lo về vấn đề đó thì cứ một ngày quét một lần nếu user nào đủ điều kiện mà chưa cho badge thì update badge. (chỉ hiệu quả khi có ít user)

5 Likes

Ý em là không chỉ có tiêu chí like đó nữa, ngoài ra còn nhiều huy hiệu như kiểu:

  1. Viết 10 bài viết (create_post)
  2. Đăng nhập liên tiếp 7 ngày (login)

Thế ở mỗi cái function kia mình lại check điều kiện badge hả bác?

1 Like

Nếu có nhiều chỗ rời rạc thì tổng hợp chúng lại thôi. Ví dụ, khi nhấn nút like thì gọi hàm check_for_100_like(), check_for_200_like(), khi user tạo một post mới thì gọi hàm check_for_10_post(), check_for_20_post(), mỗi khi đăng nhập vào một ngày thì gọi hàm check_for_login_7_days(). Cứ coi việc user làm gì đó là một sự kiện, khi sự kiện đó diễn ra thì gọi hàm tương ứng, còn mấy thứ như số post, số like, số lần đăng nhập,…thì bỏ hết vào trong một cái class, coi như đó là thứ đại diện cho một user.

6 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?