第1关:购物车商品查询
任务描述
本关任务:实现查询购物车功能。
相关知识
为了完成本关任务,你需要掌握:
- 查询购物车;
- 功能实现。
查询购物车
当我们浏览一个购物商城网站时,可能会在网页上方看到“我的购物车”这一按钮:
当我们点击它时就会跳往购物车页面,购物车页面如下:
这时服务器就会去数据库中将我们的商品查询出来返回给前端页面,前端页面将数据显示出来就是我们看到的购物车页面。
功能实现
-
dao 层查询数据库: ShoppingCartDao 查询用户购物车商品:
//根据用户 id 查询购物车表的信息
@Select("select * from shoppingcart where user_id=#{user_id}")
List<ShoppingCart> getShoppingCart(int user_id);
ProductDao 查询商品具体信息:
//根据商品id查询商品表的商品详细信息
@Select("select * from product where product_id=#{product_id}")
Product getProductByID(int product_id);
-
service 层: 定义接口:
//定义接口
List<ShoppingCart> getShoppingCart(int user_id);
//定义接口
Map[] getShoppingCartData(List<ShoppingCart> shoppingCarts);
impl 实现类:
/*查询用户中购物车中的商品*/
@Override
public List<ShoppingCart> getShoppingCart(int user_id) {
//调用 dao 层方法,根据用户 id 查询用户购物车商品
return shoppingCartDao.getShoppingCart(user_id);
}
/*获取购物车相关信息*/
@Override
public Map[] getShoppingCartData(List<ShoppingCart> shoppingCarts) {
//初始化需要返回的结果集 map
Map[] ShoppingCartData = new Map[shoppingCarts.size()];
//循环购物车中所有的商品
for(int i=0;i<ShoppingCartData.length;i++){
//取出当前商品
ShoppingCart shoppingCart = shoppingCarts.get(i);
//调用 service 层方法,根据商品 id 查询商品具体信息
Product product = productDao.getProductByID(shoppingCart.getProduct_id());
//初始化一个map,存储一个商品的所有信息
HashMap<String, Object> tempData = new HashMap<>();
//查询的商品信息存入 map
tempData.put("id",shoppingCart.getId());
tempData.put("productID",shoppingCart.getProduct_id());
tempData.put("productName",product.getProduct_name());
tempData.put("productImg",product.getProduct_picture());
tempData.put("price",product.getProduct_selling_price());
tempData.put("num",shoppingCart.getNum());
tempData.put("maxNum",Math.floor(product.getProduct_num() / 2.0));
tempData.put("check",true);
//商品信息存入结果集map: ShoppingCartData
ShoppingCartData[i] = tempData;
}
//返回结果集
return ShoppingCartData;
}
-
controller 层:调用 service 层方法,查询当前用户的购物车的所有商品的信息。
@RequestMapping("/getShoppingCart")
public Map getShoppingCart(@RequestBody Map<String,Integer> paramMap){
//获取参数用户id
Integer user_id = paramMap.get("user_id");
//初始化结果集 map
HashMap<String, Object> map = new HashMap<>();
//查询用户购物车中的商品
List<ShoppingCart> shoppingCarts = shoppingCartService.getShoppingCart(user_id);
//查询购物车中商品的具体信息
Map[] shoppingCartData = shoppingCartService.getShoppingCartData(shoppingCarts);
//返回结果集
map.put("shoppingCartData",shoppingCartData);
map.put("code","001");
map.put("msg","成功获取购物车");
return map;
}
-
数据库结构如下: 商品表:
字段名称 类型 备注 product_id
int(11) NOT NULL AUTO_INCREMENT '商品id' product_name
char(100) NOT NULL '商品名' category_id
int(11) NOT NULL '类型id' product_title
char(30) NOT NULL '商品标题' product_intro
text NOT NULL '商品描述' product_picture
char(200) DEFAULT NULL '商品图片' product_price
decimal(10,2) NOT NULL '商品价格' product_selling_price
decimal(10,2) NOT NULL '商品售价' product_num
int(11) NOT NULL '商品存量' product_sales
int(11) NOT NULL '商品销售数量' status
int(11) DEFAULT NULL '商品状态' 购物车表:
字段名称 类型 备注 id
int(11) NOT NULL AUTO_INCREMENT '购物车id' user_id
int(11) NOT NULL '用户id' product_id
int(11) NOT NULL '商品id' num
int(11) NOT NULL '商品数量'
编程要求
在右侧编辑器 ShoppingCartDao.java、ProductDao.java、ShoppingCartService.java、ShoppingCartServiceImpl.java、ShoppingCartController.java 文件 Begin-End 中根据提示补充代码,实现购物车商品查询功能。
测试说明
平台会对你编写的代码进行测试:发送一个请求检验返回的结果集是否正确。 预期输入:
{
"user_id":"1018"
}
预期输出:
{"msg":"成功获取购物车","code":"001","shoppingCartData":[{"productID":1,"price":1499.00,"num":1,"productImg":"public/imgs/phone/Redmi-k30.png","id":1,"check":true,"maxNum":50.0,"productName":"Redmi K30"},{"productID":2,"price":2599.00,"num":1,"productImg":"public/imgs/phone/Redmi-k30-5G.png","id":2,"check":true,"maxNum":5.0,"productName":"Redmi K30 5G"}]}
开始你的任务吧,祝你成功!
ProductDao.java
package com.www.dao;
import com.www.entity.Product;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
@Repository
public interface ProductDao {
/***************************Begin***************************/
//根据商品id查询商品表的商品详细信息
@Select("select * from product where product_id=#{product_id}")
Product getProductByID(int product_id);
/***************************End***************************/
}
ShoppingCartDao.java
package com.www.dao;
import com.www.entity.ShoppingCart;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface ShoppingCartDao {
/***************************Begin***************************/
//根据用户 id 查询购物车表的信息
@Select("select * from shoppingcart where user_id=#{user_id}")
List<ShoppingCart> getShoppingCart(int user_id);
/***************************End***************************/
}
ShoppingCartService.java
package com.www.service;
import com.www.entity.ShoppingCart;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
@Component
public interface ShoppingCartService {
//定义接口
/***************************Begin***************************/
List<ShoppingCart> getShoppingCart(int user_id);
//定义接口
Map[] getShoppingCartData(List<ShoppingCart> shoppingCarts);
/***************************End***************************/
}
ShoppingCartServiceImpl.java
package com.www.service.impl;
import com.www.dao.ProductDao;
import com.www.dao.ShoppingCartDao;
import com.www.entity.Product;
import com.www.entity.ShoppingCart;
import com.www.service.ShoppingCartService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service("shoppingCartService")
public class ShoppingCartServiceImpl implements ShoppingCartService {
@Autowired
private ShoppingCartDao shoppingCartDao;
@Autowired
private ProductDao productDao;
/*查询用户中购物车中的商品*/
@Override
public List<ShoppingCart> getShoppingCart(int user_id) {
//调用 dao 层方法,根据用户 id 查询用户购物车商品
/***************************Begin***************************/
return shoppingCartDao.getShoppingCart(user_id);
/***************************End***************************/
}
/*获取购物车相关信息*/
@Override
public Map[] getShoppingCartData(List<ShoppingCart> shoppingCarts) {
/***************************Begin***************************/
//初始化需要返回的结果集 map
Map[] ShoppingCartData = new Map[shoppingCarts.size()];
//循环购物车中所有的商品
for(int i=0;i<ShoppingCartData.length;i++){
//取出当前商品
ShoppingCart shoppingCart = shoppingCarts.get(i);
//调用 service 层方法,根据商品 id 查询商品具体信息
Product product = productDao.getProductByID(shoppingCart.getProduct_id());
//初始化一个map,存储一个商品的所有信息
HashMap<String, Object> tempData = new HashMap<>();
//查询的商品信息存入 map
tempData.put("id",shoppingCart.getId());
tempData.put("productID",shoppingCart.getProduct_id());
tempData.put("productName",product.getProduct_name());
tempData.put("productImg",product.getProduct_picture());
tempData.put("price",product.getProduct_selling_price());
tempData.put("num",shoppingCart.getNum());
tempData.put("maxNum",Math.floor(product.getProduct_num() / 2.0));
tempData.put("check",true);
//商品信息存入结果集map: ShoppingCartData
ShoppingCartData[i] = tempData;
}
//返回结果集
return ShoppingCartData;
/***************************End***************************/
}
}
ShoppingCartController.java
package com.www.controller;
import com.www.entity.ShoppingCart;
import com.www.service.ShoppingCartService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping(value = "/shoppingCart")
public class ShoppingCartController {
@Autowired
private ShoppingCartService shoppingCartService;
@RequestMapping("/getShoppingCart")
public Map getShoppingCart(@RequestBody Map<String,Integer> paramMap){
/***************************Begin***************************/
//获取参数用户id
Integer user_id = paramMap.get("user_id");
//初始化结果集 map
HashMap<String, Object> map = new HashMap<>();
//查询用户购物车中的商品
List<ShoppingCart> shoppingCarts = shoppingCartService.getShoppingCart(user_id);
//查询购物车中商品的具体信息
Map[] shoppingCartData = shoppingCartService.getShoppingCartData(shoppingCarts);
//返回结果集
map.put("shoppingCartData",shoppingCartData);
map.put("code","001");
map.put("msg","成功获取购物车");
return map;
/***************************End***************************/
}
}
Product.java
package com.www.entity;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
@Data
public class Product implements Serializable {
private int product_id;
private String product_name;
private int category_id;
private String product_title;
private String product_intro;
private String product_picture;
private BigDecimal product_price; //原价
private BigDecimal product_selling_price; //售价
private int product_num;
private int product_sales;
private int status;
}
ShoppingCart.java
package com.www.entity;
import lombok.Data;
import java.io.Serializable;
@Data
public class ShoppingCart implements Serializable {
private int id;
private int user_id;
private int product_id;
private int num;
}
加油哦,同学们!