购物车商品查询

第1关:购物车商品查询

任务描述

本关任务:实现查询购物车功能。

相关知识

为了完成本关任务,你需要掌握:

  1. 查询购物车;
  2. 功能实现。
查询购物车

当我们浏览一个购物商城网站时,可能会在网页上方看到“我的购物车”这一按钮:

当我们点击它时就会跳往购物车页面,购物车页面如下:

这时服务器就会去数据库中将我们的商品查询出来返回给前端页面,前端页面将数据显示出来就是我们看到的购物车页面。

功能实现
  1. dao 层查询数据库: ShoppingCartDao 查询用户购物车商品:

     
      
    1. //根据用户 id 查询购物车表的信息
    2. @Select("select * from shoppingcart where user_id=#{user_id}")
    3. List<ShoppingCart> getShoppingCart(int user_id);

    ProductDao 查询商品具体信息:

     
      
    1. //根据商品id查询商品表的商品详细信息
    2. @Select("select * from product where product_id=#{product_id}")
    3. Product getProductByID(int product_id);
  2. service 层: 定义接口:

     
      
    1. //定义接口
    2. List<ShoppingCart> getShoppingCart(int user_id);
    3. //定义接口
    4. Map[] getShoppingCartData(List<ShoppingCart> shoppingCarts);

    impl 实现类:

     
      
    1. /*查询用户中购物车中的商品*/
    2. @Override
    3. public List<ShoppingCart> getShoppingCart(int user_id) {
    4. //调用 dao 层方法,根据用户 id 查询用户购物车商品
    5. return shoppingCartDao.getShoppingCart(user_id);
    6. }
    7. /*获取购物车相关信息*/
    8. @Override
    9. public Map[] getShoppingCartData(List<ShoppingCart> shoppingCarts) {
    10. //初始化需要返回的结果集 map
    11. Map[] ShoppingCartData = new Map[shoppingCarts.size()];
    12. //循环购物车中所有的商品
    13. for(int i=0;i<ShoppingCartData.length;i++){
    14. //取出当前商品
    15. ShoppingCart shoppingCart = shoppingCarts.get(i);
    16. //调用 service 层方法,根据商品 id 查询商品具体信息
    17. Product product = productDao.getProductByID(shoppingCart.getProduct_id());
    18. //初始化一个map,存储一个商品的所有信息
    19. HashMap<String, Object> tempData = new HashMap<>();
    20. //查询的商品信息存入 map
    21. tempData.put("id",shoppingCart.getId());
    22. tempData.put("productID",shoppingCart.getProduct_id());
    23. tempData.put("productName",product.getProduct_name());
    24. tempData.put("productImg",product.getProduct_picture());
    25. tempData.put("price",product.getProduct_selling_price());
    26. tempData.put("num",shoppingCart.getNum());
    27. tempData.put("maxNum",Math.floor(product.getProduct_num() / 2.0));
    28. tempData.put("check",true);
    29. //商品信息存入结果集map: ShoppingCartData
    30. ShoppingCartData[i] = tempData;
    31. }
    32. //返回结果集
    33. return ShoppingCartData;
    34. }
  3. controller 层:调用 service 层方法,查询当前用户的购物车的所有商品的信息。

     
      
    1. @RequestMapping("/getShoppingCart")
    2. public Map getShoppingCart(@RequestBody Map<String,Integer> paramMap){
    3. //获取参数用户id
    4. Integer user_id = paramMap.get("user_id");
    5. //初始化结果集 map
    6. HashMap<String, Object> map = new HashMap<>();
    7. //查询用户购物车中的商品
    8. List<ShoppingCart> shoppingCarts = shoppingCartService.getShoppingCart(user_id);
    9. //查询购物车中商品的具体信息
    10. Map[] shoppingCartData = shoppingCartService.getShoppingCartData(shoppingCarts);
    11. //返回结果集
    12. map.put("shoppingCartData",shoppingCartData);
    13. map.put("code","001");
    14. map.put("msg","成功获取购物车");
    15. return map;
    16. }
  4. 数据库结构如下: 商品表:

    字段名称类型备注
    product_idint(11)NOT NULL AUTO_INCREMENT'商品id'
    product_namechar(100)NOT NULL'商品名'
    category_idint(11)NOT NULL'类型id'
    product_titlechar(30)NOT NULL'商品标题'
    product_introtextNOT NULL'商品描述'
    product_picturechar(200)DEFAULT NULL'商品图片'
    product_pricedecimal(10,2)NOT NULL'商品价格'
    product_selling_pricedecimal(10,2)NOT NULL'商品售价'
    product_numint(11)NOT NULL'商品存量'
    product_salesint(11)NOT NULL'商品销售数量'
    statusint(11)DEFAULT NULL'商品状态'

    购物车表:

    字段名称类型备注
    idint(11)NOT NULL AUTO_INCREMENT'购物车id'
    user_idint(11)NOT NULL'用户id'
    product_idint(11)NOT NULL'商品id'
    numint(11)NOT NULL'商品数量'

编程要求

在右侧编辑器 ShoppingCartDao.java、ProductDao.java、ShoppingCartService.java、ShoppingCartServiceImpl.java、ShoppingCartController.java 文件 Begin-End 中根据提示补充代码,实现购物车商品查询功能。

测试说明

平台会对你编写的代码进行测试:发送一个请求检验返回的结果集是否正确。 预期输入:

 
  1. {
  2. "user_id":"1018"
  3. }

预期输出:

 
  1. {"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;

}

加油哦,同学们!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值