gulimall基础篇回顾Day-12

前言

本文继续记录B站谷粒商城项目视频 P83-86 的内容,做到知识点的梳理和总结的作用,接口文档地址:gulimall接口文档

一、获取所有会员等级

1.需求描述

1.1.1 点击发布商品模块,前端发送获取所有会员等级请求,后台查询出所有会员等级的功能。
在这里插入图片描述
若前端没有发送请求,执行下面操作即可

1、npm install --save pubsub-js
2、在src下的main.js中引用:
import PubSub from 'pubsub-js'
Vue.prototype.PubSub = PubSub

2.代码实现

@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params){
    PageUtils page = memberService.queryPage(params);

    return R.ok().put("page", page);
}

将会员服务注册到Nacos注册中心

spring:
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
  application:
    name: gulimall-member

将会员服务配置到Nacos配置中心

#nacos服务配置中心
spring.application.name=gulimall-member
spring.cloud.nacos.config.server-addr=127.0.0.1:8848

gateway网关配置会员服务的路由规则

spring:
  cloud:
    gateway:
      routes:
        - id: product_route
          uri: lb://gulimall-product
          predicates:
            - Path=/api/product/**
          filters:
            - RewritePath=/api(?<segment>/?.*),/$\{segment}

        - id: third_party_route
          uri: lb://gulimall-third-party
          predicates:
            - Path=/api/thirdparty/**
          filters:
            - RewritePath=/api/thirdparty/(?<segment>.*),/$\{segment}

        - id: member_route
          uri: lb://gulimall-member
          predicates:
            - Path=/api/member/**
          filters:
            - RewritePath=/api/(?<segment>.*),/$\{segment}

配置上述信息后,重启会员服务,添加会员信息显示如下
在这里插入图片描述

二、获取分类下关联的品牌

1.需求描述

2.1.1 选择分类选中手机分类,前端能够根据手机分类id发送请求查询出对应分类下的品牌。
在这里插入图片描述

2.代码实现

2.2.1 Controller 层

/**
 *  获取分类下关联的品牌
 *  1、Controller:处理请求,接受和校验数据
 *  2、Service接受controller传来的数据,进行业务处理
 *  3、Controller接受Service处理完的数据,封装页面指定的vo
 */
@GetMapping("/brands/list")
public R relationBrandsList(@RequestParam(value = "catId",required = true)Long catId){
    List<BrandEntity> vos = categoryBrandRelationService.getBrandsByCatId(catId);

    List<BrandVo> collect = vos.stream().map(item -> {
        BrandVo brandVo = new BrandVo();
        brandVo.setBrandId(item.getBrandId());
        brandVo.setBrandName(item.getName());

        return brandVo;
    }).collect(Collectors.toList());

    return R.ok().put("data",collect);
}

2.2.2 Service 层

@Override
public List<BrandEntity> getBrandsByCatId(Long catId) {
    //查询分类与品牌关联关系表 catelog_id 分类id等于前端传进来的catId
    List<CategoryBrandRelationEntity> catelogId = relationDao.selectList(new QueryWrapper<CategoryBrandRelationEntity>().eq("catelog_id", catId));
    List<BrandEntity> collect = catelogId.stream().map(item -> {
        Long brandId = item.getBrandId();
        BrandEntity byId = brandService.getById(brandId);
        return byId;
    }).collect(Collectors.toList());
    return collect;
}

2.2.3 实现效果
在这里插入图片描述

三、获取分类下所有分组及属性

1.需求描述

3.1.1 填写商品的基本信息之后,点击下一步设置基本参数,F12打开控制台前端发送请求来获取分类下所有分组及属性。如下图所示
在这里插入图片描述
在这里插入图片描述

2.代码实现

3.2.1 Controller 层

/**
 * 获取分类下所有分组关联属性
 * @param catelogId
 * @return
 */
@GetMapping("/{catelogId}/withattr")
public R getAttrGroupWithAttrs(@PathVariable("catelogId")Long catelogId){
    //1、查出当前分类下的所有属性分组,
    //2、查出每个属性分组的所有属性
    List<AttrGroupWithAttrsVo> vos =  attrGroupService.getAttrGroupWithAttrsByCatelogId(catelogId);
    return R.ok().put("data",vos);
}

3.2.2 Service 层

/**
 * 根据分类id查出所有的分组以及这些组里面的属性
 * @param catelogId
 * @return
 */
@Override
public List<AttrGroupWithAttrsVo> getAttrGroupWithAttrsByCatelogId(Long catelogId) {
    //com.atguigu.gulimall.product.vo
    //1、查询分组信息
    List<AttrGroupEntity> attrGroupEntities = this.list(new QueryWrapper<AttrGroupEntity>().eq("catelog_id", catelogId));

    //2、查询所有属性
    List<AttrGroupWithAttrsVo> collect = attrGroupEntities.stream().map(group -> {
        AttrGroupWithAttrsVo attrsVo = new AttrGroupWithAttrsVo();
        BeanUtils.copyProperties(group,attrsVo);
        List<AttrEntity> attrs = attrService.getRelationAttr(attrsVo.getAttrGroupId());
        attrsVo.setAttrs(attrs);
        return attrsVo;
    }).collect(Collectors.toList());

    return collect;
}

3.2.3 实现效果
在这里插入图片描述

四、商品新增VO抽取

1.实体类提取

4.1.1 点击发布商品模块,填写基本信息,规格参数及销售属性后点击下一步保存商品信息,控制台显示商品信息如下图所示。
在这里插入图片描述
4.1.2 复制上述商品信息,打开网页进行JSON格式化,将JSON数据转为实体类,解压导入项目即可。网址:https://www.sojson.com/json2entity.html

在这里插入图片描述
注意:价格,重量等数值使用 BigDecimal 修饰,避免精度丢失问题。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值