Code Monkey home page Code Monkey logo

bookshopweb's Introduction

About me 👋

Hi, I like simple things.

Languages

Java  TypeScript  JavaScript  HTML  CSS

Libraries & Frameworks

React  Spring

Tools

npm  MySQL  Git  Visual Studio Code  JetBrains  Docker  Figma

bookshopweb's People

Contributors

buithienhao-nlu avatar dangfsix avatar joshuanguyen6820 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

bookshopweb's Issues

Xây dựng Trang đơn hàng

Đặc tả Trang đơn hàng /order

  • Dựng phần view (orderView.jsp) dựa trên giao diện interface/order.html và các file JSP tương tự (xem mẫu homeView.jsp)
  • Tạo OrderServlet trong package servlet.client để forward path "/order" (khai báo trong @WebServlet) đến orderView.jsp (hàm doGet)
  • Hiển thị bảng danh sách đơn hàng của người dùng hiện tại, bao gồm:
  1. Mã đơn hàng (orders.id)
  2. Ngày mua (orders.createdAt)
  3. Sản phẩm: Nếu chỉ có 1 sản phẩm trong đơn hàng thì hiển thị như ví dụ "Tiếng Việt lớp 1", nếu có nhiều sản phẩm thì hiển thị "Tiếng Việt lớp 2 ...và n sản phẩm khác" (cần join bảng ordersorder_item)
  4. Tổng tiền: Nếu order_item.discount = 0 thì cộng dồn theo công thức order_item.price * order_item.quantity, nếu order_item.discount khác 0 thì cộng dồn theo công thức (order_item.price * (100 - order_item.discount) / 100) * order_item.quantity (làm tròn thành số nguyên). Về phía JSP, cần format giá tiền bằng thẻ fmt:formatNumber, tham khảo productView.jsp.
  5. Trạng thái đơn hàng: Nếu orders.status = 1 thì hiển thị tag "Đang giao hàng", = 2 là tag "Giao hàng thành công", = 3 là tag "Hủy đơn hàng". Mỗi tag có màu sắc riêng như giao diện đã thể hiện.
  6. Nút [Xem đơn hàng] dẫn đến liên kết Trang chi tiết đơn hàng tương ứng, có dạng /orderDetail?id={orderId}.
  • Cần có chức năng phân trang (tham khảo CategoryServlet), 3 đơn hàng/1 trang.
  • Nếu chưa đăng nhập thì hiển thị dòng "Vui lòng đăng nhập để sử dụng trang này." và xóa phần nội dung chính (tham khảo Trang giỏ hàng).

Người thực hiện: @buithienhao-nlu

Thời gian hoàn thành: 19/06/2022

Xây dựng Trang người dùng

Đặc tả Trang người dùng /user

  • Dựng phần view (userView.jsp) dựa trên giao diện interface/user.html và các file JSP tương tự (xem mẫu homeView.jsp)
  • Tạo UserServlet trong package servlet.client để forward path "/user" (khai báo trong @WebServlet) đến userView.jsp (hàm doGet)
  • Hiển thị các thông tin như giao diện thể hiện (tên người dùng, email, địa chỉ), có thể lấy thông tin từ đối tượng currentUser trong session (luôn có khi đã đăng nhập), xem lại Bài 4: Khởi tạo Trang đăng nhập.
  • Nếu chưa đăng nhập thì hiển thị dòng "Vui lòng đăng nhập để sử dụng trang này." và xóa phần nội dung chính (tham khảo Trang giỏ hàng).
  • [Nâng cao] Hiển thị tổng số sản phẩm trong giỏ hàng, tổng số đơn hàng, tổng số sản phẩm đang giao (các đơn hàng có status = 1), tổng số sản phẩm đã nhận (các đơn hàng có status = 2) của người dùng hiện tại (theo giao diện).

Người thực hiện: @joshuaNguyen6820

Thời gian hoàn thành: 19/06/2022

Xây dựng Trang thiết đặt

Đặc tả Trang thiết đặt /setting

  • Dựng phần view (settingView.jsp) dựa trên giao diện interface/setting.html và các file JSP tương tự (xem mẫu homeView.jsp)
  • Tạo SettingServlet trong package servlet.client để forward path "/setting" (khai báo trong @WebServlet) đến settingView.jsp (hàm doGet)
  • Hiển thị các thông tin của currentUser trong session vào trong các ô input (Tên đăng nhập, Họ tên, Email, Số điện thoại, Địa chỉ), nút radio (Nam/Nữ).
  • Nếu chưa đăng nhập thì hiển thị dòng "Vui lòng đăng nhập để sử dụng trang này." và xóa phần nội dung chính (tham khảo Trang giỏ hàng).

Người thực hiện: @joshuaNguyen6820

Thời gian hoàn thành: 7/8/2022

Viết mã giao diện Trang sản phẩm (Product)

Công việc

  • Viết mã giao diện Trang sản phẩm (Product) product.html

Yêu cầu

Người thực hiện: @buithienhao-nlu

Thời gian hoàn thành: 30/11/2021

Viết mã giao diện Trang giỏ hàng (Cart)

Công việc

  • Viết mã giao diện Trang giỏ hàng (Cart) cart.html

Yêu cầu

Người thực hiện: @buithienhao-nlu

Thời gian hoàn thành: Sáng 28/12/2021

Viết mã giao diện Trang người dùng (User)

Công việc

  • Viết mã giao diện Trang người dùng (User) user.html

Yêu cầu

Người thực hiện: @joshuaNguyen6820

Thời gian hoàn thành: Sáng 28/12/2021

Viết mã giao diện Trang đăng ký (Singup)

Công việc

  • Viết mã giao diện Trang đăng ký (Singup) signup.html

Yêu cầu

Người thực hiện: @joshuaNguyen6820

Thời gian hoàn thành: 30/11/2021

Viết mã giao diện Trang thể loại (Category)

Công việc

  • Viết mã giao diện Trang thể loại (Category) category.html

Yêu cầu

Người thực hiện: @buithienhao-nlu

Thời gian hoàn thành: 19/11/2021

Xây dựng codebase dự án

Các thành phần trong codebase dự án

1. Trang đăng ký /signup

  • Có form đăng ký, cho phép người dùng nhập thông tin và đăng ký tài khoản.
  • Nếu nhập không đúng yêu cầu thì sẽ có thông báo lỗi.
  • Nếu nhập đúng yêu cầu thì đăng ký tài khoản thành công.

2. Trang đăng nhập /signin

  • Có form đăng nhập, cho phép người dùng nhập thông tin và đăng nhập tài khoản.
  • Nếu nhập không đúng yêu cầu thì sẽ có thông báo lỗi.
  • Nếu nhập đúng yêu cầu thì đăng nhập tài khoản thành công và redirect về Trang chủ.

💡 Có thể thử với username user1 và password 123.

3. Chức năng đăng xuất /signout

  • Xóa các attribute trong session và redirect về Trang chủ.

4. Trang chủ /

  • Hiển thị danh sách 12 thể loại, có liên kết đến từng thể loại.
  • Hiển thị danh sách 12 sản phẩm, xếp theo ngày tạo (createdAt), chiều giảm dần (DESC), có liên kết đến từng sản phẩm.

5. Trang thể loại /category?id={id}

  • Hiển thị thông tin thể loại (tên thể loại, thanh breadcrumb).
  • Hiển thị danh sách sản phẩm theo thể loại, liên kết đến từng sản phẩm.
  • Lọc theo Nhà xuất bản
  • Lọc theo Giá bán
  • Sắp xếp theo 3 thuộc tính: Bán chạy nhất (totalBuy), Mới nhất (createdAt), Giá thấp nhất (price).
  • Phân trang

6. Trang sản phẩm /product?id={id}

  • Hiển thị thông tin, hình ảnh, mô tả sản phẩm.
  • Hiển thị tên thể loại trên thanh breadcrumb.
  • Hiển thị tổng số đánh giá (productReview) của sản phẩm.
  • Hiển thị danh sách đánh giá sản phẩm.
  • Phân trang danh sách đánh giá sản phẩm.
  • Có form tạo đánh giá sản phẩm nếu đã đăng nhập (cho sao, nhập nội dung đánh giá).
  • Cho phép xóa đánh giá sản phẩm (theo tài khoản), có hộp thoại xác nhận.
  • Hiển thị danh sách sản phẩm liên quan (cùng thuộc thể loại của sản phẩm hiện tại).
  • Chức năng nút [Mua ngay], [Thêm vào giỏ hàng]

7. Trang giỏ hàng /cart

  • Hiển thị giỏ hàng trống, nút [Đặt hàng] và hai nút radio [Hình thức giao hàng] bị disabled
  • Hiển thị danh sách cartItem (có hiệu ứng loading)
  • Hiển thị cartItem: hình, tên, liên kết, giá gốc, giá khuyến mãi, % khuyến mãi, số lượng.
  • Hiển thị [Hình thức giao hàng] và có thể lựa chọn (tạm thời)
  • Hiển thị giá tạm tính, phí vận chuyển, tổng cộng.
  • Xóa cartItem (có hộp thoại xác nhận, có thông báo thành công/thất bại)
  • Cập nhật số lượng của cartItem (có thông báo thành công/thất bại)
  • Đặt hàng (có hộp thoại xác nhận, có thông báo thành công/thất bại)

Thông tin

Người thực hiện: @markiusphan

Thời gian hoàn thành: 14/06/2022

Xây dựng các trang quản lý và chức năng còn lại

Các thành phần trong issue

1. Trang chủ Admin /admin

  • Hiển thị tổng số người dùng, thể loại, sản phẩm và đơn hàng.

2.1 Trang quản lý người dùng /admin/userManager

  • Hiển thị danh sách người dùng với thông tin vắn tắt, được phân trang.
  • Có nút [Thêm người dùng], [Xem], [Sửa], [Xóa].

2.2 Trang chi tiết người dùng /admin/userManager/detail?id={id}

  • Hiển thị thông tin chi tiết của người dùng theo id.

2.3 Trang thêm người dùng /admin/userManager/create

  • Có form nhập thông tin người dùng.
  • Validation phía front-end lẫn back-end.
  • Form có nút [Thêm], [Mặc định], [Hủy].
  • Nếu nhập không đúng yêu cầu thì sẽ có thông báo lỗi.
  • Nếu nhập đúng yêu cầu thì thêm thành công.

2.4 Trang sửa người dùng /admin/userManager/update?id={id}

  • Có form sửa thông tin người dùng.
  • Validation phía front-end lẫn back-end.
  • Form có nút [Sửa], [Mặc định], [Hủy].
  • Nếu nhập không đúng yêu cầu thì sẽ có thông báo lỗi.
  • Nếu nhập đúng yêu cầu thì sửa thành công.
  • Mật khẩu không được echo, nếu không nhập thì giữ mật khẩu cũ, nếu nhập thì thêm mới.

2.5 Chức năng xóa người dùng /admin/userManager/delete?id={id}

  • Xóa người dùng theo id.
  • Nếu xóa thành công thì thông báo thành công.
  • Nếu xóa thất bại thì thông báo thất bại.

3.1 Trang quản lý thể loại /admin/categoryManager

  • Hiển thị danh sách thể loại với thông tin vắn tắt, có hình đại diện, được phân trang.
  • Có nút [Thêm thể loại], [Xem], [Sửa], [Xóa].

3.2 Trang chi tiết thể loại /admin/categoryManager/detail?id={id}

  • Hiển thị thông tin chi tiết của thể loại theo id.

3.3 Trang thêm thể loại /admin/categoryManager/create

  • Có form nhập thông tin thể loại.
  • Validation phía front-end lẫn back-end.
  • Form có nút [Thêm], [Mặc định], [Hủy].
  • Nếu nhập không đúng yêu cầu thì sẽ có thông báo lỗi.
  • Nếu nhập đúng yêu cầu thì thêm thành công.
  • Cho phép upload hình đại diện, lưu tại /var/webapp/images

3.4 Trang sửa thể loại /admin/categoryManager/update?id={id}

  • Có form sửa thông tin thể loại.
  • Validation phía front-end lẫn back-end.
  • Form có nút [Sửa], [Mặc định], [Hủy].
  • Nếu nhập không đúng yêu cầu thì sẽ có thông báo lỗi.
  • Nếu nhập đúng yêu cầu thì sửa thành công.
  • Cho phép upload hình đại diện mới nếu chưa có, thay và xóa hình hiện tại.

3.5 Chức năng xóa thể loại /admin/categoryManager/delete?id={id}

  • Xóa thể loại theo id.
  • Nếu xóa thành công thì thông báo thành công.
  • Nếu xóa thất bại thì thông báo thất bại.

4.1 Trang quản lý sản phẩm /admin/productManager

  • Hiển thị danh sách sản phẩm với thông tin vắn tắt, có hình đại diện, được phân trang.
  • Tính giá bán dựa vào giá gốc (price) và khuyến mãi (discount).
  • Có nút [Thêm sản phẩm], [Xem], [Sửa], [Xóa].

4.2 Trang chi tiết sản phẩm /admin/productManager/detail?id={id}

  • Hiển thị thông tin chi tiết của sản phẩm theo id.

4.3 Trang thêm sản phẩm /admin/productManager/create

  • Có form nhập thông tin sản phẩm.
  • Validation phía front-end lẫn back-end.
  • Form có nút [Thêm], [Mặc định], [Hủy].
  • Nếu nhập không đúng yêu cầu thì sẽ có thông báo lỗi.
  • Nếu nhập đúng yêu cầu thì thêm thành công.
  • Cho phép upload hình đại diện, lưu tại /var/webapp/images

4.4 Trang sửa sản phẩm /admin/productManager/update?id={id}

  • Có form sửa thông tin sản phẩm.
  • Validation phía front-end lẫn back-end.
  • Form có nút [Sửa], [Mặc định], [Hủy].
  • Nếu nhập không đúng yêu cầu thì sẽ có thông báo lỗi.
  • Nếu nhập đúng yêu cầu thì sửa thành công.
  • Cho phép upload hình đại diện mới nếu chưa có, thay và xóa hình hiện tại.

4.5 Chức năng xóa sản phẩm /admin/productManager/delete?id={id}

  • Xóa sản phẩm theo id.
  • Nếu xóa thành công thì thông báo thành công.
  • Nếu xóa thất bại thì thông báo thất bại.

5.1 Trang quản lý đánh giá /admin/reviewManager

  • Hiển thị danh sách đánh giá với thông tin vắn tắt, có sao, được phân trang.
  • Có nút [Xem], [Ẩn | Hiện].

5.2 Trang chi tiết đánh giá /admin/reviewManager/detail?id={id}

  • Hiển thị thông tin chi tiết của đánh giá theo id.

5.3 Chức năng ẩn/hiện đánh giá /admin/reviewManager/update?id={id}

  • Ẩn đánh giá nếu đang hiện và ngược lại.
  • Thông báo truy vấn thành công/thất bại.

6.1 Trang quản lý đơn hàng /admin/orderManager

  • Hiển thị danh sách đơn hàng với thông tin vắn tắt, được phân trang.
  • Đơn hàng được giao hàng nhanh có icon xe tải chỗ Tổng tiền.
  • Có nút [Xem], [Xác nhận đã giao], [Hủy đơn hàng], [Đặt lại trạng thái là đang giao hàng].

6.2 Trang chi tiết đơn hàng /admin/orderManager/detail?id={id}

  • Hiển thị thông tin chi tiết của đơn hàng theo id.

6.3 Chức năng thay đổi trạng thái đơn hàng /admin/orderManager/update?id={id}

  • Nếu đơn hàng có trạng thái là Đang giao hàng (1), thì chỉ được bấm nút [Xác nhận đã giao] hoặc [Hủy đơn hàng].
  • Nếu đơn hàng có trạng thái là Giao hàng thành công (2) hoặc Hủy đơn hàng (3), thì chỉ được bấm nút [Đặt lại trạng thái là đang giao hàng].
  • Thông báo truy vấn thành công/thất bại.

7. Trang đăng nhập Admin /admin/signin

  • Có form đăng nhập, cho phép người dùng nhập thông tin và đăng nhập tài khoản.
  • Nếu nhập không đúng yêu cầu thì sẽ có thông báo lỗi.
  • Nếu nhập đúng yêu cầu thì đăng nhập tài khoản thành công và redirect về Trang chủ Admin.
  • Chỉ người dùng có role ADMIN hoặc EMPLOYEE mới đăng nhập Admin được.

8. Chức năng đăng xuất Admin /admin/signout

  • Xóa các attribute trong session và redirect về Trang đăng nhập Admin.

9. Phân quyền với AuthorizationFilter /admin/*

  • Nếu người dùng chưa đăng nhập hoặc đã đăng nhập nhưng có role CUSTOMER thì khi truy cập /admin/* sẽ bị redirect về /admin/signin.
  • Chỉ người dùng có role ADMIN hoặc EMPLOYEE mới được phép truy cập /admin/* sau khi đã đăng nhập (từ trang đăng nhập của phía Client lẫn Admin).
  • Người dùng role EMPLOYEE không được phép truy cập một số trang thuộc /admin/* như /admin/userManager và các trang con, cố tình truy cập sẽ được redirect về /admin/401.
  • Người dùng role ADMIN được phép truy cập không giới hạn /admin/*.

10. Trang tìm kiếm /search?q={query}

  • Có input để nhập từ khóa tìm kiếm.
  • Kết quả tìm kiếm là danh sách sản phẩm có tên chứa từ khóa, được phân trang, tô màu từ khóa.

11. Trang sửa đánh giá /editProductReview?id={id}

  • Chỉ được sửa đánh giá của chính mình.
  • Có form để sửa đánh giá (sửa số sao, nội dung).
  • Form có nút [Sửa], [Mặc định], [Hủy].
  • Nếu nhập không đúng yêu cầu thì sẽ có thông báo lỗi.
  • Nếu nhập đúng yêu cầu thì sửa thành công.

12. Chức năng thêm sản phẩm yêu thích /wishlist (PUT)

  • Trang sản phẩm có nút hình trái tim để thêm sản phẩm yêu thích.
  • Bấm nút để thêm sản phẩm vào danh sách yêu thích.
  • Thông báo truy vấn thành công/thất bại.
  • Sản phẩm đã được thêm vào danh sách yêu thích thì nút này bị disabled.

13. Các cập nhật đáng chú ý khác

  • Hoàn chỉnh database.
    • Cập nhật hình đại diện cho category
    • Thêm role cho user
    • Thêm isShow cho product_review
  • Thêm @Nullable cho các thuộc tính có khả năng null của các bean.
  • Dùng /WEB-INF (tuyệt đối) thay vì WEB-INF (tương đối) trong các lệnh forward (sơ suất).
  • Thiết lập default value cho các thẻ img.
  • Hiển thị discount bên cạnh price.
  • Thiết lập đoạn văn cho các thuộc tính description, content (TextUtils.toParagraph)
  • Thêm hình mặc định 280px.png
  • Tạo _navPanel.jsp để tránh lặp code.

Thông tin

Người thực hiện: @markiusphan

Thời gian hoàn thành: 15/8/2022

Xây dựng Trang sản phẩm yêu thích

Đặc tả Trang sản phẩm yêu thích /wishlist

  • Dựng phần view (wishlistView.jsp) dựa trên giao diện interface/wishlist.html và các file JSP tương tự (xem mẫu homeView.jsp)
  • Tạo WishlistServlet trong package servlet.client để forward path "/wishlist" (khai báo trong @WebServlet) đến wishlistView.jsp (hàm doGet)
  • Tạo bean WishlistItem (theo bảng wishlist_item của sơ đồ CSDL), WishlistItemDAO, WishlistItemService (tham khảo các DAO, service cơ bản như CategoryDAO, CategoryService)
  • Viết hàm getByUserId trả về List<WishlistItem> trong WishlistItemDAO, WishlistItemService
  • Trong WishlistServlet, hàm doGet, lấy danh sách WishlistItem bằng getByUserId của WishlistItemService (userId lấy từ currentUser trong session). Duyệt qua list này, lấy thông tin từng product theo productId bằng hàm getById của ProductService. Dùng thông tin product gom lại thành một danh sách (products) gửi cho JSP để hiển thị theo template.
  • Nếu chưa đăng nhập thì hiển thị dòng "Vui lòng đăng nhập để sử dụng trang này." và xóa phần nội dung chính (tham khảo Trang giỏ hàng).
  • [Lưu ý]: Theo CSDL hiện tại, thì chỉ có user4, user5 mới có các sản phẩm yêu thích (xem bảng wishlist_item).

Người thực hiện: @buithienhao-nlu

Thời gian hoàn thành: 5/8/2022

Xây dựng Trang đổi mật khẩu

Đặc tả Trang đổi mật khẩu /changePassword

  • Dựng phần view (changePasswordView.jsp) dựa trên giao diện interface/changePassword.html và các file JSP tương tự (xem mẫu homeView.jsp)
  • Tạo ChangePasswordServlet trong package servlet.client để forward path "/changePassword" (khai báo trong @WebServlet) đến changePasswordView.jsp (hàm doGet)
  • Chỉ tiến hành đổi mật khẩu khi đảm bảo điều kiện: (1) Mật khẩu ô "Nhập mật khẩu hiện tại" giống với mật khẩu lưu trong database, (2) Mật khẩu ở 2 ô "Nhập mật khẩu mới" và "Nhập mật khẩu mới một lần nữa" giống nhau, và mật khẩu mới cần được hash trước khi lưu vào database. Có thông báo thành công nếu đổi mật khẩu thành công.
  • Bất kỳ trường hợp nào ngoài trường hợp trên đều sinh lỗi và có thông báo lỗi (thông qua các list violations). Tham khảo kỹ 2 bài: Bài 3: Khởi tạo Trang đăng kýBài 4: Khởi tạo Trang đăng nhập.
  • Nếu chưa đăng nhập thì hiển thị dòng "Vui lòng đăng nhập để sử dụng trang này." và xóa phần nội dung chính (tham khảo Trang giỏ hàng).

Người thực hiện: @joshuaNguyen6820

Thời gian hoàn thành: 5/8/2022

Thiết kế template

Project BookShopWeb (Web Bán Sách) dự kiến sẽ có các trang chức năng và template tương ứng như sau:

Template

  • 0. Trang mẫu -- prototype.html

Client

  • 1. Trang chủ -- home.html -- path: /
  • 2. Trang đăng nhập -- signin.html -- path: /signin
  • 3. Trang đăng ký -- signup.html -- path: /signup
  • 4. Trang thể loại -- category.html -- path: /category
  • 5. Trang sản phẩm -- product.html -- path: /product
  • 6. Trang giỏ hàng -- cart.html -- path: /cart
  • 7. Trang người dùng -- user.html -- path: /user
  • 8. Trang đơn hàng -- order.html -- path: /order
  • 9. Trang chi tiết đơn hàng -- orderDetail.html -- path: /orderDetail
  • 10. Trang sản phẩm yêu thích -- wishlist.html -- path: /wishlist
  • 11. Trang thiết đặt -- setting.html -- path: /setting
  • 12. Trang đổi mật khẩu -- changePassword.html -- path: /changePassword

Admin

  • 1. Trang đăng nhập Admin -- path: /admin/signin
  • 2. Trang chủ Admin -- path: /admin
  • 3. Trang quản lý người dùng (xem, thêm, sửa, xóa) -- path: /admin/userManager
  • 4. Trang quản lý thể loại (xem, thêm, sửa, xóa) -- path: /admin/categoryManager
  • 5. Trang quản lý sản phẩm (xem, thêm, sửa, xóa) -- path: /admin/productManager
  • 6. Trang quản lý giỏ hàng (xem, xóa) -- path: /admin/cartManager
  • 7. Trang quản lý đơn hàng (xem, xóa) -- path: /admin/orderManager

Hình thiết kế template

  • 1_xxx_Extra-small (500px)
  • 2_xxx_Small_sm (600px)
  • 3_xxx_Medium_md (800px)
  • 4_xxx_Large_lg (1100px)
  • 5_xxx_Extra-large-xl (1300px)
  • 6_xxx_Extra-extra-large_xxl (1500px)

Tài liệu

Xây dựng Trang chi tiết đơn hàng

Đặc tả Trang chi tiết đơn hàng /orderDetail?id={id}

  • Dựng phần view (orderDetailView.jsp) dựa trên giao diện interface/orderDetail.html và các file JSP tương tự (xem mẫu homeView.jsp)
  • Tạo OrderDetailServlet trong package servlet.client để forward path "/orderDetail" (khai báo trong @WebServlet) đến orderDetailView.jsp (hàm doGet)
  • Trang chi tiết đơn hàng cần kiểm tra id lấy từ đường dẫn URL, mỗi lần truy cập /orderDetail?id={id} thì sẽ hiện thông tin một đơn hàng với id bất kỳ. Nếu đơn hàng với id đó có tồn tại thì hiển thị nội dung, không thì redirect về Trang chủ. Tham khảo servlet của các trang cũng sử dụng id như Trang thể loại, Trang sản phẩm.
  • Thông tin một đơn hàng trên trang chi tiết đơn hàng gồm có:
  1. Tiêu đề: "Thông tin đơn hàng #{order.id}"
  2. "Mã đơn hàng: {order.id}"
  3. "Ngày mua: {order.createdAt}"
  4. "Địa chỉ người nhận": Các thông tin của người dùng hiện tại, lấy từ đối tượng currentUser trong session
  5. "Hình thức thanh toán":
  • Nếu order.deliveryMethod = 1 thì hiện "Giao tiêu chuẩn", nếu = 2 thì hiện "Giao nhanh"
  • "Tạm tính: xxx₫" → Cần lấy danh sách orderItems của đơn hàng (order) này (bằng OrderItemService, hàm getByOrderId), rồi tính giá tạm tính như tính biến total trong OrderServlet.
  • "Phí vận chuyển: {order.deliveryPrice}₫"
  • "Tổng cộng: xxx₫" = Giá tạm tính + Phí vận chuyển
  1. Hiển thị danh sách mặt hàng (orderItem) của đơn hàng (order), lấy dữ liệu bằng OrderItemService, hàm getByOrderId.
  2. [Nâng cao] Nhấn nút Hủy đơn hàng thì status của order bị sửa thành 3 (sửa trong database, viết hàm updateStatus trong OrderService). Có thể triển khai trong hàm doPost của OrderDetailServlet.
  • Nếu chưa đăng nhập thì hiển thị dòng "Vui lòng đăng nhập để sử dụng trang này." và xóa phần nội dung chính (tham khảo Trang giỏ hàng).

Người thực hiện: @buithienhao-nlu

Thời gian hoàn thành: 2/8/2022

Viết mã giao diện Trang đăng nhập (Signin)

Công việc

  • Viết mã giao diện Trang đăng nhập (Signin) signin.html

Yêu cầu

Người thực hiện: @joshuaNguyen6820

Thời gian hoàn thành: 19/11/2021

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.