完成商品SPU管理页面

2024-05-25 11:52
文章标签 页面 管理 完成 商品 spu

本文主要是介绍完成商品SPU管理页面,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 1.引入前端界面
        • 1.将前端界面放到commodity下
        • 2.创建菜单
        • 3.进入前端项目,使用npm添加依赖
          • 1.根目录下输入
          • 2.报错 chromedriver@2.27.2的问题
          • 3.点击链接下载压缩包,然后使用下面的命令安装
          • 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 缓存**
          • 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.上架
          • 2.下架

1.引入前端界面

1.将前端界面放到commodity下

image-20240425102701357

2.创建菜单

image-20240425102456260

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

image-20240425111335785

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

image-20240425112344526

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

image-20240425112724067

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

image-20240425112520767

image-20240425112510036

2.spuinfo.vue

image-20240425113111081

image-20240425113122509

image-20240425113130283

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

image-20240425113354374

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

image-20240425114306367

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.修改一下分页信息,然后查看页面,发现基本分页已经完成

image-20240425114824634

image-20240425114838475

image-20240425114906967

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

image-20240425115244934

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

image-20240425115503685

image-20240425115540002

image-20240425115600822

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

image-20240425132739528

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

image-20240425132858783

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

image-20240425133532792

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

image-20240425133629153

image-20240425133645058

5.分析得出传入后端的搜索条件
  • 品牌id
  • 分类id
  • 检索的key:要求检索时根据id精准查询或者根据名称模糊查询
  • 上架状态:0:新建,1:上架,2:下架
2.后端 sunliving-commodity模块
1.SpuInfoService.java 新增方法根据条件查询分页列表
    /*** 根据条件查询分页列表* @param params* @return*/PageUtils queryPageByCondition(Map<String, Object> params);
2.SpuInfoServiceImpl.java 实现方法
    @Overridepublic PageUtils queryPageByCondition(Map<String, Object> params) {QueryWrapper<SpuInfoEntity> wrapper = new QueryWrapper<>();// 按检索条件-spu 名字String key = (String) params.get("key");if (!StringUtils.isEmpty(key)) {wrapper.and((w) -> { // 注意这里的 and 会把后面两个条件括起来w.eq("id", key).or().like("spu_name", key);});}// 加入状态String status = (String) params.get("status");if (!StringUtils.isEmpty(status)) {wrapper.eq("publish_status", status);}// 加入品牌 idString brandId = (String) params.get("brandId");if (!StringUtils.isEmpty(brandId) && !"0".equalsIgnoreCase(brandId)) {wrapper.eq("brand_id", brandId);}// 加入分类 idString 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")// @RequiresPermissions("commodity:spuinfo:list")public R list(@RequestParam Map<String, Object> params) {PageUtils page = spuInfoService.queryPageByCondition(params);return R.ok().put("page", page);}
3.前后端联调
1.查询性价比手机的分类

image-20240425153526797

image-20240425153547126

2.查询二手手机分类

image-20240425153607755

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

image-20240425153701729

4.新建状态

image-20240425153730085

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

image-20240425153835599

3.SPU上架和下架

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

image-20240425154306200

2.上架函数 productUp

image-20240425154516240

3.下架函数 productDown

image-20240425154607860

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

image-20240425160653493

2.下架

image-20240425160710564

这篇关于完成商品SPU管理页面的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1001435

相关文章

在macOS上安装jenv管理JDK版本的详细步骤

《在macOS上安装jenv管理JDK版本的详细步骤》jEnv是一个命令行工具,正如它的官网所宣称的那样,它是来让你忘记怎么配置JAVA_HOME环境变量的神队友,:本文主要介绍在macOS上安装... 目录前言安装 jenv添加 JDK 版本到 jenv切换 JDK 版本总结前言China编程在开发 Java

Spring Boot Actuator应用监控与管理的详细步骤

《SpringBootActuator应用监控与管理的详细步骤》SpringBootActuator是SpringBoot的监控工具,提供健康检查、性能指标、日志管理等核心功能,支持自定义和扩展端... 目录一、 Spring Boot Actuator 概述二、 集成 Spring Boot Actuat

MySQL多实例管理如何在一台主机上运行多个mysql

《MySQL多实例管理如何在一台主机上运行多个mysql》文章详解了在Linux主机上通过二进制方式安装MySQL多实例的步骤,涵盖端口配置、数据目录准备、初始化与启动流程,以及排错方法,适用于构建读... 目录一、什么是mysql多实例二、二进制方式安装MySQL1.获取二进制代码包2.安装基础依赖3.清

一文详解如何使用Java获取PDF页面信息

《一文详解如何使用Java获取PDF页面信息》了解PDF页面属性是我们在处理文档、内容提取、打印设置或页面重组等任务时不可或缺的一环,下面我们就来看看如何使用Java语言获取这些信息吧... 目录引言一、安装和引入PDF处理库引入依赖二、获取 PDF 页数三、获取页面尺寸(宽高)四、获取页面旋转角度五、判断

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

Navicat数据表的数据添加,删除及使用sql完成数据的添加过程

《Navicat数据表的数据添加,删除及使用sql完成数据的添加过程》:本文主要介绍Navicat数据表的数据添加,删除及使用sql完成数据的添加过程,具有很好的参考价值,希望对大家有所帮助,如有... 目录Navicat数据表数据添加,删除及使用sql完成数据添加选中操作的表则出现如下界面,查看左下角从左

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔

Python中bisect_left 函数实现高效插入与有序列表管理

《Python中bisect_left函数实现高效插入与有序列表管理》Python的bisect_left函数通过二分查找高效定位有序列表插入位置,与bisect_right的区别在于处理重复元素时... 目录一、bisect_left 基本介绍1.1 函数定义1.2 核心功能二、bisect_left 与

Spring中管理bean对象的方式(专业级说明)

《Spring中管理bean对象的方式(专业级说明)》在Spring框架中,Bean的管理是核心功能,主要通过IoC(控制反转)容器实现,下面给大家介绍Spring中管理bean对象的方式,感兴趣的朋... 目录1.Bean的声明与注册1.1 基于XML配置1.2 基于注解(主流方式)1.3 基于Java