Skip to content

Instantly share code, notes, and snippets.

@hieutran
Last active April 15, 2024 10:53
Show Gist options
  • Save hieutran/fbd8c8b0cd17353fad4badc566114cb9 to your computer and use it in GitHub Desktop.
Save hieutran/fbd8c8b0cd17353fad4badc566114cb9 to your computer and use it in GitHub Desktop.

Đề bài: Quản lý Sản phẩm và Đơn hàng

Yêu cầu:

Xây dựng một ứng dụng RESTful API để quản lý các sản phẩm và đơn hàng trong cửa hàng trực tuyến.

Cấu trúc dữ liệu:

Sản phẩm (Product):
Thuộc tính Mô tả
ID Khóa chính (Unique)
Tên sản phẩm Tên của sản phẩm
Mô tả Mô tả về sản phẩm
Giá Giá của sản phẩm
Số lượng tồn kho Số lượng sản phẩm còn trong kho
Đơn hàng (Order):
Thuộc tính Mô tả
ID Khóa chính (Unique)
Ngày tạo đơn hàng Ngày tạo đơn hàng
Tên khách hàng Tên của khách hàng
Địa chỉ Địa chỉ giao hàng
Email Địa chỉ email của khách hàng
Số điện thoại Số điện thoại của khách hàng
Trạng thái Trạng thái của đơn hàng
Số tiền thanh toán Số tiền cần thanh toán
Chi tiết đơn hàng (OrderDetail):

[Ghi chú]: Ứng viên được yêu cầu tự thiết kế cấu trúc cho bảng chi tiết đơn hàng này.

User Story:

  • Dưới góc độ của quản trị viên (Administrator):
    • Quản lý Sản phẩm:

      • USP01: Như một quản trị viên, tôi muốn có khả năng thêm một sản phẩm mới vào cửa hàng để cập nhật danh sách sản phẩm.
      • USP02: Như một quản trị viên, tôi muốn có khả năng xem thông tin chi tiết của một sản phẩm dựa trên ID để kiểm tra các thuộc tính của sản phẩm.
      • USP03: Như một quản trị viên, tôi muốn có khả năng cập nhật thông tin của một sản phẩm để điều chỉnh giá cả hoặc mô tả sản phẩm.
      • USP04: Như một quản trị viên, tôi muốn có khả năng xóa một sản phẩm dựa trên ID để loại bỏ các sản phẩm không còn cần thiết.
      • USP05: Như một quản trị viên, tôi muốn có khả năng lấy danh sách tất cả các sản phẩm để xem toàn bộ danh sách sản phẩm có sẵn trong cửa hàng.
      • USP06: Như một quản trị viên, tôi muốn có khả năng tìm kiếm sản phẩm dựa trên tên hoặc mô tả để dễ dàng tìm kiếm sản phẩm cụ thể.
    • Quản lý Đơn hàng:

      • UOD01: Như một quản trị viên, tôi muốn có khả năng tạo đơn hàng mới với thông tin cá nhân và danh sách sản phẩm để hỗ trợ khách hàng đặt hàng.
      • UOD02: Như một quản trị viên, tôi muốn có khả năng xem thông tin chi tiết của một đơn hàng dựa trên ID để kiểm tra tình trạng đơn hàng.
      • UOD03: Như một quản trị viên, tôi muốn có khả năng cập nhật thông tin của một đơn hàng để phục vụ yêu cầu vận hành và yêu cầu của khách hàng.
      • UOD04: Như một quản trị viên, tôi muốn có khả năng lấy danh sách tất cả các đơn hàng để quản lý tình trạng của các đơn hàng.
      • UOD05: Như một quản trị viên, tôi muốn có khả năng tìm kiếm đơn hàng dựa trên tên khách hàng hoặc ID đơn hàng để dễ dàng tìm kiếm đơn hàng cụ thể.

Yêu cầu kỹ thuật:

  • Ưu tiên sử dụng Spring Boot framework để xây dựng ứng dụng.
  • Sử dụng Maven hoặc Gradle để quản lý dependencies.
  • Sử dụng MySQL hoặc PostgreSQL làm cơ sở dữ liệu.

Điểm phụ:

  • Cấu trúc mã nguồn trong sáng, rõ ràng.
  • Xử lý các tình huống ngoại lệ và lỗi một cách hợp lý.
  • Viết unit test.
  • Có áp dụng các giải pháp tối ưu hiệu năng phù hợp.

Ghi chú:

  • Đề xuất thời gian làm bài: 5-7 ngày.
  • Yêu cầu ứng viên nộp mã nguồn và tài liệu hướng dẫn cách chạy ứng dụng.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment