文章目录
 - 1.引入前端界面
 - 1.将前端界面放到commodity下
 - 2.创建菜单
 - 3.进入前端项目,使用npm添加依赖
 - 1.根目录下输入
 - 2.报错 chromedriver@2.27.2的问题
 - 3.点击链接下载压缩包,然后使用下面的命令安装
 - 4.再次安装 pubsub-js 成功
 - 5.在main.js中引入这个组件
 
 - 4.修改两个vue文件的路径为环境变量 + 资源路径的形式
 -  
 - 5.启动vue项目
 - 1.报错,依赖有问题
 - 2.执行 npm i 即可,如果还有问题,有针对的解决
 - 3.此时可以访问SPU管理页面
 
 - 6.遇到依赖问题,进行彻底清理的做法(根目录下执行命令)
 - 1.**清除 npm 缓存**
 - 2.**删除 `node_modules` 文件夹**
 - 3.**删除 `package-lock.json` 文件**
 - 4.**运行 `npm install`**
 
 
 
 - 2.SPU信息分页查询
 - 1.前端 spuinfo.vue
 - 1.修改一下分页信息,然后查看页面,发现基本分页已经完成
 - 2.点击分类发现品牌没有显示出来
 - 3.查看请求,发现是404,中间少了一个/,加上就好了
 - 2.分析前端请求
 - 1.点击查询,调用searchSpuInfo方法
 - 2.这个方法会向后端发送dataForm的数据
 - 3.全局搜索一下dataForm,可以看到有四个信息
 - 4.打印一下会传递什么信息
 - 5.分析得出传入后端的搜索条件
 
 
 - 2.后端 sunliving-commodity模块
 - 1.SpuInfoService.java 新增方法根据条件查询分页列表
 - 2.SpuInfoServiceImpl.java 实现方法
 - 3.SpuInfoController.java 调用方法
 
 - 3.前后端联调
 - 1.查询性价比手机的分类
 - 2.查询二手手机分类
 - 3.性价比手机的小米品牌
 - 4.新建状态
 - 5.id为2或者名称为2的模糊查询
 
 
 
 - 3.SPU上架和下架
 - 1.前端 spuinfo.vue
 - 1.使用插槽机制获取当前行的publishStatus,根据这个值来决定上架还是下架
 - 2.上架函数 productUp
 - 3.下架函数 productDown
 
 - 2.后端 sunliving-commodity模块
 - 1. SpuInfoService.java 新增上架和下架的方法
 - 2.SpuInfoServiceImpl.java 实现方法
 - 3.SpuInfoController.java 编写接口
 
 - 3.前后端联调
 -  
 
 
 
 
 
  
 
1.引入前端界面
 
1.将前端界面放到commodity下
 

 
2.创建菜单
 

 
3.进入前端项目,使用npm添加依赖
 
1.根目录下输入
 
npm install --save pubsub-js
 
2.报错 chromedriver@2.27.2的问题
 

 
3.点击链接下载压缩包,然后使用下面的命令安装
 
npm install chromedriver --chromedriver_filepath=压缩包路径\chromedriver_win32.zip
 
4.再次安装 pubsub-js 成功
 

 
5.在main.js中引入这个组件
 

 
4.修改两个vue文件的路径为环境变量 + 资源路径的形式
 
1.spu.vue
 

 

 
2.spuinfo.vue
 

 

 

 
5.启动vue项目
 
1.报错,依赖有问题
 

 
2.执行 npm i 即可,如果还有问题,有针对的解决
 
3.此时可以访问SPU管理页面
 

 
6.遇到依赖问题,进行彻底清理的做法(根目录下执行命令)
 
1.清除 npm 缓存
 
npm cache clean --force
 
2.删除 node_modules 文件夹
 
rm -rf node_modules
 
3.删除 package-lock.json 文件
 
rm package-lock.json
 
4.运行 npm install
 
npm install
 
2.SPU信息分页查询
 
1.前端 spuinfo.vue
 
1.修改一下分页信息,然后查看页面,发现基本分页已经完成
 

 

 

 
2.点击分类发现品牌没有显示出来
 

 
3.查看请求,发现是404,中间少了一个/,加上就好了
 

 

 

 
2.分析前端请求
 
1.点击查询,调用searchSpuInfo方法
 

 
2.这个方法会向后端发送dataForm的数据
 

 
3.全局搜索一下dataForm,可以看到有四个信息
 

 
4.打印一下会传递什么信息
 

 

 
5.分析得出传入后端的搜索条件
 
- 品牌id
 - 分类id
 - 检索的key:要求检索时根据id精准查询或者根据名称模糊查询
 - 上架状态:0:新建,1:上架,2:下架
 
 
2.后端 sunliving-commodity模块
 
1.SpuInfoService.java 新增方法根据条件查询分页列表
 
    PageUtils queryPageByCondition(Map<String, Object> params);
 
2.SpuInfoServiceImpl.java 实现方法
 
    @Overridepublic PageUtils queryPageByCondition(Map<String, Object> params) {QueryWrapper<SpuInfoEntity> wrapper = new QueryWrapper<>();String key = (String) params.get("key");if (!StringUtils.isEmpty(key)) {wrapper.and((w) -> { w.eq("id", key).or().like("spu_name", key);});}String status = (String) params.get("status");if (!StringUtils.isEmpty(status)) {wrapper.eq("publish_status", status);}String brandId = (String) params.get("brandId");if (!StringUtils.isEmpty(brandId) && !"0".equalsIgnoreCase(brandId)) {wrapper.eq("brand_id", brandId);}String catelogId = (String) params.get("catelogId");if (!StringUtils.isEmpty(catelogId) && !"0".equalsIgnoreCase(catelogId)) {wrapper.eq("catalog_id", catelogId);}IPage<SpuInfoEntity> page = this.page(new Query<SpuInfoEntity>().getPage(params), wrapper);return new PageUtils(page);}
 
3.SpuInfoController.java 调用方法
 
    @RequestMapping("/list")public R list(@RequestParam Map<String, Object> params) {PageUtils page = spuInfoService.queryPageByCondition(params);return R.ok().put("page", page);}
 
3.前后端联调
 
1.查询性价比手机的分类
 

 

 
2.查询二手手机分类
 

 
3.性价比手机的小米品牌
 

 
4.新建状态
 

 
5.id为2或者名称为2的模糊查询
 

 
3.SPU上架和下架
 
1.前端 spuinfo.vue
 
1.使用插槽机制获取当前行的publishStatus,根据这个值来决定上架还是下架
 

 
2.上架函数 productUp
 

 
3.下架函数 productDown
 

 
2.后端 sunliving-commodity模块
 
1. SpuInfoService.java 新增上架和下架的方法
 
    void productUp(Long spuId);void productDown(Long spuId);
 
2.SpuInfoServiceImpl.java 实现方法
 
    @Overridepublic void productUp(Long spuId) {SpuInfoEntity spuInfoEntity = new SpuInfoEntity();spuInfoEntity.setId(spuId);spuInfoEntity.setPublishStatus(1);spuInfoEntity.setUpdateTime(new Date());this.updateById(spuInfoEntity);}@Overridepublic void productDown(Long spuId) {SpuInfoEntity spuInfoEntity = new SpuInfoEntity();spuInfoEntity.setId(spuId);spuInfoEntity.setPublishStatus(2);spuInfoEntity.setUpdateTime(new Date());this.updateById(spuInfoEntity);}
 
3.SpuInfoController.java 编写接口
 
    @RequestMapping("{id}/up")public R productUp(@PathVariable("id") Long spuId) {spuInfoService.productUp(spuId);return R.ok();}@RequestMapping("{id}/down")public R productDown(@PathVariable("id") Long spuId) {spuInfoService.productDown(spuId);return R.ok();}
 
3.前后端联调
 
1.上架
 

 
2.下架
 
