program编程代做、SQL编程语言代写
Online Shopping App Requirements
Create a Shopping application which supports the following:
High Level Design(HLD):
● Use Spring Boot, Hibernate (HQL, Criteria), MySQL, Spring Security + JWT, Spring AOP,
Spring Validation to develop the backend.
○ You CAN NOT use JDBC/JdbcTemplate, JPA repository, CRUD repository, or the
native query.
○ At least one of the DAO functions needs to be implemented with Criteria.
○ Using Spring AOP to handle all exception throws in the controller and return
HTTP response
● Use Angular to develop the frontend.
● RESTful application required following a layered architecture: RestController, service,
repository.
● Use Postman to present your project by calling your RESTful endpoints.
● All required functionalities should be implemented.
● If you are using a version control tool such as GitHub, please make your repository
PRIVATE!!!
The retailer tycoon, Super Duper Mart™, requires your assistance in setting up their online
shopping website. The following is the requirement they sent over. Based on these
requirements, please come up with a RESTful application that is equipped with the necessary
endpoints to return the needed information for each of their requirements.
User (Buyer)
The users are able to shop for different products from Super Duper Mart™.
1. Registration [POST]
a. Before being able to purchase products, a user has to first register.
i. Your application should prevent registration using the same username
and email.
ii. Only username, email and password are required to register an account.
iii. Password should be encrypted (Bonus)
2. Login [POST]
a. If the user has entered the correct credentials, they may proceed to the
corresponding page based on their authorities.
b. If the user has entered incorrect credentials, a custom named exception
‘InvalidCredentialsException’ should be thrown and handled by the Exception
handler. The message the user will get is: “Incorrect credentials, please try
again.”
3. Home Pagea. The user is able to view all of the products. An out of stock product should NOT
be shown to the user. [GET]
b. When a user clicks on one product, the user should be redirected to the detail
page of that product, including the description and price (retail_price) of the
product. (The user should NOT be able to see the actual quantity of any items).
[GET]
c. After purchasing the product, the user should be able to view order details
including, order placement time and order status which is Processing,
Completed or Canceled. [GET]
4. Purchasing
a. The user should be able to purchase listing items with a specified quantity by
creating a “Processing” order. After a user places an order, the item’s stock
should be deducted accordingly. [POST]
i. The user should be able to purchase multiple different items within a
single order.
b. If the quantity of an item that the user is purchasing is greater than the item’s
stock, throw a custom exception named ‘NotEnoughInventoryException’ using
Exception Handler and the order should not be placed.
c. The user should be able to cancel an order by updating the status from
“Processing” to “Canceled”. If so, the item’s stock should be incremented
accordingly to offset the auto-deduction that took place when the order is first
placed. However, a “Completed” order cannot be changed to “Canceled”.
[PATCH]
5. Product Watchlist
a. The user can add/remove products to/from their watchlist.
i. The user should not be able to add a product that is already on the
watchlist [POST]
ii. The user should not be able to remove a product that is not on the
watchlist [DELETE]
b. The user can view all in stock products within their watchlist. [GET]
i. When viewing the watchlist, products which are out of stock will not be
shown to the user.
6. Summary
a. The user should be able to view all their orders. [GET]
i. Note that the wholesale_price and retail_price of a product can be
adjusted by the seller, implement something to prevent the adjustments
from affecting previous orders.
b. The user can then click and look into any one specific order created by them,
completed with the items included in that order. [GET]
c. The user should be able to view their top 3 most frequently purchased items.
(excluding canceled order, use item ID as tie breaker) [GET]
d. The user can also view their top 3 most recently purchased items. (excluding
canceled order, use item id as tie breaker) [GET]Admin (Seller)
The seller, Super Duper Mart™, is able to list different products to sell. There is one and ONLY
one seller, thus no need to keep user_id foreign keys in the product table.
1. Home Page
a. The seller should be able to view a dashboard, consisting of the following:
i. Order information, with details of order placed time, users who placed
the order and the order status (Processing, Completed, Canceled).
[GET]
1. A page should only have 5 orders (Bonus)
2. The seller can click and see information regarding any single
order, completed with the items involved in the order.
ii. Listing information, the current products that are listed to sell. When the
seller clicks on one product, the seller should be redirected to the detail
page of that product, including the description, wholesale_price,
retail_price and stock’s quantity of the product; the seller should be
able to modify the wholesale_price, retail_price, description and
quantity of a product. [GET]
2. Listing
a. The seller should be able to add products. A product has fields including
description, wholesale_price, retail_price and stock’s quantity. [POST]
i. The wholesale price is the price which the seller paid for the product.
ii. The retail price is the price which customers pay for the product.
3. Selling
a. When one product is sold, the quantity of that product should be deducted
accordingly. And such quantity should be reflected on the dashboard.
4. Order
a. The seller should be able to complete a “Processing” order by updating its
status to “Completed”. [PATCH]
b. The seller should also be able to cancel an order for some reasons, such as that
the product is sold out locally, by updating the order status to “Canceled”. If so,
the item’s stock should be incremented accordingly to offset the auto-deduction
that took place when the order is first placed. However, a “Canceled” order
cannot be completed, nor can a “Completed” order be canceled. [PATCH]
5. Summary
a. The seller can see which product brings the most profit. [GET]
i. The profit is calculated as (retail price - wholesale price).
ii. Note: This should address situations where the seller alters either the
wholesale_price or retail_price, causing a discrepancy when comparing
between the past orders and the current updated product details.
iii. This should not include “Processing” and “Canceled” orders.
b. The seller can see which 3 products are the most popular/sold (excluding
canceled and ongoing order). [GET]c. The seller can also see the amount of total items sold successfully (excluding
canceled and ongoing order). [GET]
6. Additional Features (Bonus)
a. This part would be evaluated by your creativity and completeness of the design.
Be creative and think outside of the box :) if you have time
Spring Validation
Using Spring Validation to validate the request in at least one POST request.
Security
Protect your application endpoints using Spring Security + JWT:
1. Authentication: Guests cannot access any endpoints other than for login or registration
usage.
2. Authorization: A user with the corresponding authorities can access certain pages that
they are granted access to.
a. They should not be able to access information that they don’t have access to:
i. Any of seller’s functionality
ii. Any of other user’s order information
iii. Any other relevant information
Exception Handling
1. Your application must not crash during the presentation. Therefore, if an exception
occurs, you must handle it with Spring AOP and display the exception as a message to
help yourself and others debug.

热门主题

课程名

mktg2509 csci 2600 38170 lng302 csse3010 phas3226 77938 arch1162 engn4536/engn6536 acx5903 comp151101 phl245 cse12 comp9312 stat3016/6016 phas0038 comp2140 6qqmb312 xjco3011 rest0005 ematm0051 5qqmn219 lubs5062m eee8155 cege0100 eap033 artd1109 mat246 etc3430 ecmm462 mis102 inft6800 ddes9903 comp6521 comp9517 comp3331/9331 comp4337 comp6008 comp9414 bu.231.790.81 man00150m csb352h math1041 eengm4100 isys1002 08 6057cem mktg3504 mthm036 mtrx1701 mth3241 eeee3086 cmp-7038b cmp-7000a ints4010 econ2151 infs5710 fins5516 fin3309 fins5510 gsoe9340 math2007 math2036 soee5010 mark3088 infs3605 elec9714 comp2271 ma214 comp2211 infs3604 600426 sit254 acct3091 bbt405 msin0116 com107/com113 mark5826 sit120 comp9021 eco2101 eeen40700 cs253 ece3114 ecmm447 chns3000 math377 itd102 comp9444 comp(2041|9044) econ0060 econ7230 mgt001371 ecs-323 cs6250 mgdi60012 mdia2012 comm221001 comm5000 ma1008 engl642 econ241 com333 math367 mis201 nbs-7041x meek16104 econ2003 comm1190 mbas902 comp-1027 dpst1091 comp7315 eppd1033 m06 ee3025 msci231 bb113/bbs1063 fc709 comp3425 comp9417 econ42915 cb9101 math1102e chme0017 fc307 mkt60104 5522usst litr1-uc6201.200 ee1102 cosc2803 math39512 omp9727 int2067/int5051 bsb151 mgt253 fc021 babs2202 mis2002s phya21 18-213 cege0012 mdia1002 math38032 mech5125 07 cisc102 mgx3110 cs240 11175 fin3020s eco3420 ictten622 comp9727 cpt111 de114102d mgm320h5s bafi1019 math21112 efim20036 mn-3503 fins5568 110.807 bcpm000028 info6030 bma0092 bcpm0054 math20212 ce335 cs365 cenv6141 ftec5580 math2010 ec3450 comm1170 ecmt1010 csci-ua.0480-003 econ12-200 ib3960 ectb60h3f cs247—assignment tk3163 ics3u ib3j80 comp20008 comp9334 eppd1063 acct2343 cct109 isys1055/3412 math350-real math2014 eec180 stat141b econ2101 msinm014/msing014/msing014b fit2004 comp643 bu1002 cm2030
联系我们
EMail: 99515681@qq.com
QQ: 99515681
留学生作业帮-留学生的知心伴侣!
工作时间:08:00-21:00
python代写
微信客服:codinghelp
站长地图