← Tất cả dự án

Đại học FPT · Khóa luận 2025

SWallet

Nền tảng gắn kết sinh viên bằng phần thưởng

Vai trò
Backend developer
Liên kết
Công nghệ
  • ASP.NET Core
  • EF Core
  • SQL Server
  • Flutter
  • Firebase
  • Docker

Tổng quan

Ứng dụng trong khuôn viên trường: sinh viên check-in tại địa điểm thật, làm nhiệm vụ, tích điểm và đổi voucher ở các cửa hàng đối tác. Flutter trên điện thoại, ASP.NET Core phía sau.

Những gì tôi làm

Thiết kế hệ thống

Check-in GPS chống gian lận

Tọa độ được đối chiếu với vùng cho phép bằng công thức Haversine và bán kính cấu hình được, rồi kiểm tra chéo với thời gian và tốc độ di chuyển.

Engine gamification

Luật cho chuỗi điểm danh, tiến độ nhiệm vụ, huy hiệu và vòng quay may mắn nằm phía server để chống gian lận, đồng bộ với ứng dụng qua REST.

Vòng đời voucher

Kiếm, duyệt, giữ chỗ, đổi và hết hạn, có theo dõi tồn kho và mọi giao dịch được ghi log để đối soát.

Một chuẩn API

Endpoint được nhóm theo domain và dùng chung cấu trúc lỗi, định dạng phân trang và mã trạng thái.

Bài toán đã giải

  1. Vấn đềSinh viên dùng app giả lập GPS để check-in mà không cần đến trường.

    Giải phápPhát hiện nhiều lớp: khoảng cách Haversine phía server, heuristic thời gian và tốc độ để loại "dịch chuyển tức thời", và thời gian chờ giữa các địa điểm. Gian lận phát hiện được giảm 95%.

  2. Vấn đềNhiều request vòng quay cùng lúc có thể trao thưởng mà không trừ lượt quay.

    Giải phápOptimistic concurrency với row versioning của EF Core, để việc trừ lượt và trao thưởng cùng commit nguyên tử hoặc thử lại.

  3. Vấn đềVoucher đã đổi nhưng không dùng chặn tồn kho của người khác.

    Giải phápVòng đời hai giai đoạn, giữ chỗ rồi mới đổi, có job chạy mỗi giờ giải phóng chỗ giữ hết hạn và thông báo nhắc trước khi hết hạn.

Hình ảnh

Bài học