commit: 完善CartItem Product 相关

master
liwa 3 years ago
parent 7708fcfe24
commit 15a4ebeac6

@ -1,6 +1,7 @@
package com.ywp.shoppingcartbackend.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ywp.shoppingcartbackend.domain.CartItem;
import com.ywp.shoppingcartbackend.service.CartItemService;
@ -25,6 +26,19 @@ public class CartController {
return ResponseEntity.ok(cartItem);
}
@PostMapping("/decrease/{productId}")
public ResponseEntity<CartItem> decreaseQuantity(@PathVariable Integer userId, @PathVariable Integer productId,
@RequestParam Integer quantity) {
CartItem cartItem = cartItemService.decreaseQuantity(userId, productId, quantity);
if (cartItem == null) {
// 如果 cartItem 为 null表示商品数量已经减少到 0返回 HTTP 204 No Content 响应
return ResponseEntity.noContent().build();
} else {
// 否则,返回包含更新后的 cartItem 的 200 OK 响应
return ResponseEntity.ok(cartItem);
}
}
@PostMapping("/remove/{productId}")
public void removeFromCart(@PathVariable Integer userId, @PathVariable Integer productId) {
cartItemService.removeFromCart(userId, productId);
@ -34,10 +48,8 @@ public class CartController {
public ResponseEntity<List<CartItem>> getCartItems(@PathVariable Integer userId,
@RequestParam(required = false, defaultValue = "0") Integer pageNum,
@RequestParam(required = false, defaultValue = "10") Integer pageSize) {
Page<CartItem> page = new Page<>(pageNum, pageSize);
QueryWrapper<CartItem> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("user_id", userId);
Page<CartItem> result = cartItemService.page(page, queryWrapper);
return ResponseEntity.ok(result.getRecords());
IPage<CartItem> cartItems = cartItemService.getCartItems(userId, pageNum, pageSize);
return ResponseEntity.ok(cartItems.getRecords());
}
}

@ -1,5 +1,7 @@
package com.ywp.shoppingcartbackend.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ywp.shoppingcartbackend.domain.Product;
import com.ywp.shoppingcartbackend.service.ProductService;
import org.springframework.beans.factory.annotation.Autowired;
@ -16,22 +18,16 @@ public class ProductController {
@Autowired
private ProductService productService;
@PostMapping("/addToCart/{productId}")
public ResponseEntity<Product> addToCart(@PathVariable Integer productId, @RequestParam Integer quantity) {
Product product = productService.addToCart(productId, quantity);
return ResponseEntity.ok(product);
@GetMapping("")
public ResponseEntity<IPage<Product>> getAllProducts(@RequestParam(required = false, defaultValue = "0") Integer pageNum,
@RequestParam(required = false, defaultValue = "10") Integer pageSize) {
IPage<Product> products = productService.getAllProducts(pageNum, pageSize);
return ResponseEntity.ok(products);
}
@PostMapping("/removeFromCart/{productId}")
public ResponseEntity<Product> removeFromCart(@PathVariable Integer productId) {
Product product = productService.removeFromCart(productId);
@GetMapping("/{productId}")
public ResponseEntity<Product> getProductById(@PathVariable Integer productId) {
Product product = productService.getProductById(productId);
return ResponseEntity.ok(product);
}
@GetMapping("/cart")
public ResponseEntity<List<Product>> getProductsInCart() {
List<Product> products = productService.getProductsInCart();
return ResponseEntity.ok(products);
}
}

@ -0,0 +1,17 @@
package com.ywp.shoppingcartbackend.exception;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus;
/**
*
*
* @author liwa
*/
@ResponseStatus(value = HttpStatus.NOT_FOUND)
public class ResourceNotFoundException extends RuntimeException {
public ResourceNotFoundException(String message) {
super(message);
}
}

@ -35,7 +35,7 @@ public interface CartItemService extends IService<CartItem> {
* @param userId ID
* @return
*/
IPage<CartItem> getCartItems(Integer userId, int pageNumber, int pageSize)
IPage<CartItem> getCartItems(Integer userId, int pageNumber, int pageSize);
CartItem decreaseQuantity(Integer userId, Integer productId, Integer quantity);

@ -9,5 +9,7 @@ import com.ywp.shoppingcartbackend.domain.User;
* @createDate 2023-05-13 20:39:44
*/
public interface UserService extends IService<User> {
User register(User user);
User login(String username, String password);
User updateLocation(Integer userId, String location);
}

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ywp.shoppingcartbackend.domain.Product;
import com.ywp.shoppingcartbackend.exception.ResourceNotFoundException;
import com.ywp.shoppingcartbackend.mapper.ProductMapper;
import com.ywp.shoppingcartbackend.service.ProductService;
import org.springframework.stereotype.Service;
@ -28,6 +29,11 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
@Override
public Product getProductById(Integer productId) {
// 使用 MyBatis Plus 的 getById 方法来获取指定id的商品
return this.getById(productId);
Product product = this.getById(productId);
if (product == null) {
throw new ResourceNotFoundException("Product with id " + productId + " not found");
}
return product;
}
}

@ -5,6 +5,7 @@ import com.ywp.shoppingcartbackend.domain.User;
import com.ywp.shoppingcartbackend.mapper.UserMapper;
import com.ywp.shoppingcartbackend.service.UserService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* @author asus
@ -12,7 +13,27 @@ import org.springframework.stereotype.Service;
* @createDate 2023-05-13 20:39:44
*/
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User>
implements UserService {
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
@Override
@Transactional
public User register(User user) {
// 检查用户名是否已存在
// 如果用户名存在,抛出异常
// 否则,将用户信息保存到数据库
}
@Override
@Transactional
public User login(String username, String password) {
// 检查用户名和密码是否正确
// 如果用户名或密码错误,抛出异常
// 否则,返回用户信息
}
@Override
@Transactional
public User updateLocation(Integer userId, String location) {
// 更新用户的地址信息
}
}

Loading…
Cancel
Save