ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

根据分类id获得商品的品牌,并获得该品牌下的所有商品

2022-01-27 22:31:34  阅读:226  来源: 互联网

标签:product int brand 品牌 商品 pa limit id


1.获得该类下商品的所有品牌

数据库及流程分析

要获得品牌就要有product_id ,而product_id 是product表中的数据

sql语句如下:

SELECT disticnt brand FROM product_params WHERE product_id IN(SELECT product_id FROM product)

distinct是为了去重,显然不同商品一个牌子也是存在的
剩下的mapper,service,controller层过于简单,不做赘述

2.获得该品牌下的所有商品

2.1 获得商品的id

sql语句实现(以分类id=13举例)
SELECT p.product_id, p.product_name,p.category_id,p.root_category_id,p.sold_num,p.product_status,p.content, pa.param_id,pa.product_id,pa.product_place,pa.foot_period,pa.brand
FROM product p INNER JOIN product_params pa ON pa.product_id = p.product_id WHERE p.category_id = 13
AND pa.brand = "酒鬼"

2.2获得商品id下的所有套餐中sellPrice最低的套餐

SELECT * FROM product_sku WHERE product_id =19 ORDER BY sell_price LIMIT 0,1

3.后端实现

productVo 新增了品牌这一项

productMapper

    //根据三级分类id分页商品的brand 和category_id获得商品id,
    //根据商品id获得商品的所有套餐,选择套餐中sellprice最低的那个 还需要当前页的起始索引,当前页的查询记录数
public List<ProductVo> selectProductInfoByBrandsAndCIds(@Param("cid")int cid,@Param("brand") String brand,@Param("start") int start, @Param("pagesize") int pagesize);

productMapper.xml 依然是根据categoryid和品牌得到productId,然后用productId进行子连接

    <id column="product_id" jdbcType="VARCHAR" property="productId" />
    <result column="product_name" jdbcType="VARCHAR" property="productName" />
    <result column="category_id" jdbcType="INTEGER" property="categoryId" />
    <result column="root_category_id" jdbcType="INTEGER" property="rootCategoryId" />
    <result column="sold_num" jdbcType="INTEGER" property="soldNum" />
    <result column="product_status" jdbcType="INTEGER" property="productStatus" />
    <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
    <result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
    <result column="content" jdbcType="LONGVARCHAR" property="content" />
    <collection property="paramsList" ofType="com.qfedu.fmmall.entity.ProductParams" >
      <id column="param_id" jdbcType="VARCHAR" property="paramId" />
      <result column="product_id" jdbcType="VARCHAR" property="productId" />
      <result column="product_place" jdbcType="VARCHAR" property="productPlace" />
      <result column="foot_period" jdbcType="VARCHAR" property="footPeriod" />
      <result column="brand" jdbcType="VARCHAR" property="brand" />
    </collection>
    <!--根据商品id查询sellprice最低的套餐-->
    <collection property="skuList"
     select="com.qfedu.fmmall.dao.ProductSkuMapper.getLowerPriceByProductId"
     column="product_id"/>
  </resultMap>
  <select id="selectProductInfoByBrandsAndCIds" resultMap="ProductMap3">
    SELECT
      p.product_id,
      p.product_name,
      p.category_id,
      p.root_category_id,
      p.sold_num,
      p.product_status,
      p.content,
      pa.param_id,
      pa.product_id,pa.product_place,pa.foot_period,pa.brand
    FROM product p
    INNER JOIN product_params pa
    ON pa.product_id=p.product_id
    WHERE p.category_id =#{cid}
      AND pa.brand=#{brand}
    limit #{start},#{pagesize}
  </select>

productService

    //传参数还是当前的页码,每页最多由多少项数据
    public ResultVo getProductInfoByCidAndBrands(int categoryid,String brand,
                                                 int pageNum,int limit);

productServiceImpl

    public ResultVo getProductInfoByCidAndBrands(int categoryid, String brand, int pageNum, int limit) {
        //1.获得当前页的起始索引
        int start=(pageNum-1)*limit;
        List<ProductVo> productVos1 = productMapper.
                selectProductInfoByBrandsAndCIds(categoryid, brand, start, limit);
        //2.获得该条件下categoryAndProductId的总记录数
        int count=productVos1.size();
        //3.计算总页数
        int pageCount1=0;
        if(count%limit==0) pageCount1=count/limit;
        else pageCount1=count/limit +1;
        //把数据放进pageHelper里
        PageHelper<ProductVo> productVoPageHelper = new PageHelper<>(count, pageCount1, productVos1);
        return new ResultVo(ResStatus.OK,"success",productVoPageHelper);
    }

productController

@ApiOperation("根据商品的分类id和品牌来查询商品信息的接口")
    @GetMapping("/listByCidAndBrand/{cid}")
    //前端要传给后端4个参数,分类id,品牌, 哪一页的评论 该页有多少评论
    @ApiImplicitParams({
            @ApiImplicitParam(dataType = "int", name="pageNum",value="当前的页码数",required = true),
            @ApiImplicitParam(dataType = "int", name = "limit", value="每页最多显示多少条数据",required =true)
    })
    public ResultVo getProductByCidSAndBrands(@PathVariable("cid") int cid,String brand,int pageNum,int limit){
        ResultVo resultVo = productService.getProductInfoByCidAndBrands(cid, brand,pageNum, limit);
        return resultVo;
    }

4.前端实现

![](https://www.icode9.com/i/l/?n=22&i=blog/1859559/202201/1859559-20220127223038990-1895270164.png)

标签:product,int,brand,品牌,商品,pa,limit,id
来源: https://www.cnblogs.com/swifties270/p/15850305.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有