完成商品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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/14856.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/14856.shtml
英文地址,請注明出處:http://en.pswp.cn/web/14856.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【超詳細】固態硬盤新盤驗貨檢測教程

觀前聲明&#xff1a; 本文使用的固態硬盤為作者自費購買&#xff0c;同時也帶有作者一定的主觀意見&#xff0c;無任何軟件和硬件的推廣。 作者本人也正處于學習階段&#xff0c;本文若有錯誤或有待改進的地方&#xff0c;歡迎評論區友善討論~ 一、產品外包裝信息檢查 PS&…

Golang | Leetcode Golang題解之第109題有序鏈表轉換二叉搜索樹

題目&#xff1a; 題解&#xff1a; var globalHead *ListNodefunc sortedListToBST(head *ListNode) *TreeNode {globalHead headlength : getLength(head)return buildTree(0, length - 1) }func getLength(head *ListNode) int {ret : 0for ; head ! nil; head head.Next…

Java_多線程

有了多線程&#xff0c;我們就可以讓程序同時做多件事情 作用&#xff1a; 提高效率 應用場景&#xff1a; 只要想讓多個事情同時運行就需要用到多線程 比如&#xff1a;軟件中的耗時操作、所有的聊天軟件、所有的服務器... 并發和并行 并發&#xff1a;在同一時刻&#xff0…

AI是否可統計人類理性和感性的非線性?

一、背景 從控制理論的角度來看&#xff0c;“人類理性和感性的非線性”可以類比為動態系統中非線性元件的行為特性。在控制理論中&#xff0c;非線性意味著系統的輸出不再嚴格與其輸入成比例&#xff0c;也就是說&#xff0c;同樣的輸入條件下可能會導致不同的結果&#xff0…

為什么defineComponent組件名字和文件名字不能一樣

今天在開發新組件時&#xff0c;在使用defineComponent定義組件時&#xff0c;把name寫成了文件名的首字母大寫法導致項目一直報錯。找了很久才知道是名字的問題。 defineComponent組件名字和文件名字不能一樣 在某些情況下&#xff0c;將組件的名稱與文件名相同可能會導致一些…

當面試官問出“Unsafe”類時,我就知道這場面試廢了,祖墳都能給你問出來!

一、寫在開頭 依稀記得多年以前的一場面試中&#xff0c;面試官從Java并發編程問到了鎖&#xff0c;從鎖問到了原子性&#xff0c;從原子性問到了Atomic類庫&#xff08;對著JUC包進行了刨根問底&#xff09;&#xff0c;從Atomic問到了CAS算法&#xff0c;緊接著又有追問到了…

【c語言】函數遞歸

在C語言中&#xff0c;函數遞歸是一種函數調用自身的技術。遞歸函數通常用于解決可以分解為更小、類似子問題的問題。遞歸函數有兩個基本部分&#xff1a; 基本情況&#xff08;Base Case&#xff09;&#xff1a;這是遞歸的終止條件&#xff0c;即函數停止遞歸并返回值的條件…

Mysql with 用法

什么是 with 語句 WITH 子句是 MySQL 中的一種 SQL 結構&#xff0c;又稱為 Common Table Expression (CTE)。它在不影響原有 SQL 語句的情況下&#xff0c;允許開發人員臨時創建一個內存中的結果集&#xff0c;然后對其進行操作。 with 語句用法 語法格式 WITH cte_name (…

JVM-調優之-高cpu線程問題排查

這里主要是對jstack命令的使用&#xff1b; 程序在運行過程中卡主&#xff0c;前端無法訪問&#xff0c;一看服務器CPU占用達到200到300%多。 排查思路 1&#xff09;找出占用高的進程 2&#xff09;找出占用高的線程 3&#xff09;找出具體的代碼 分析步驟&#xff1a; …

C++里的vector詳細講解

在C的標準模板庫&#xff08;STL&#xff09;中&#xff0c;vector是一個非常有用的動態數組容器。它允許我們存儲可變大小的同類型元素序列&#xff0c;并且能夠動態地增長和縮小。由于其靈活性和易用性&#xff0c;vector在C編程中得到了廣泛的應用。 一、vector的基本操作 …

Java異常處理:最佳實踐與常見模式

在Java編程中&#xff0c;異常處理是保證程序健壁性和穩定性的重要方面。良好的異常處理不僅可以幫助程序在面對錯誤情況時恢復到正常狀態&#xff0c;還可以提供錯誤診斷的信息&#xff0c;輔助開發者快速定位問題。本文將探討Java中的異常處理機制&#xff0c;包括異常的分類…

esp32 Micropython 長按按鍵動作一次代碼

1. 長按按鍵&#xff0c;松手后動作 from machine import Pin import timeEnter_key Pin(15, Pin.IN, Pin.PULL_UP) Enter_key_flag 0 Enter_key_flag_temp 0while True:if Enter_key.value() 0:time.sleep_ms(10)while Enter_key.value() 0:Enter_key_flag_temp not En…

System.Collections.Generic 中的接口和類型區分

System.Collections.Generic 命名空間包含了許多與泛型集合相關的接口和類。這些接口定義了一組通用的集合行為&#xff0c;而具體的實現&#xff08;如 List、Dictionary<TKey, TValue> 等&#xff09;則遵循這些接口&#xff0c;從而提供具體的集合功能。以下是 System…

前后端開發入門全攻略:零基礎學起

新書上架~&#x1f447;全國包郵奧~ python實用小工具開發教程http://pythontoolsteach.com/3 歡迎關注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目錄 一、前后端開發概覽 二、后端開發基礎&#xff1a;Flask框架入門 代碼案例&#xff1a;Hel…

vue3之使用圖片實現類似于 el-radio 的單選框功能,并且可實現選中和取消選中

背景 我們在工作中常用的一般都是使用類似于 element-plus 中的 el-radio 或者是 el-checkbox 來實現單選或者多選 若有一天我們遇到了一個新的業務需求,需要使用 圖片 來實現類似于 el-radio 的功能,并且要求實現第一次點擊時處于選中狀態,當我們再次點擊時處于非選中狀態…

談戀愛沒經驗?那就來刷談戀愛經驗寶寶吧

??作者主頁&#xff1a;小虛竹 ??作者簡介&#xff1a;大家好,我是小虛竹。2022年度博客之星評選TOP 10&#x1f3c6;&#xff0c;Java領域優質創作者&#x1f3c6;&#xff0c;CSDN博客專家&#x1f3c6;&#xff0c;華為云享專家&#x1f3c6;&#xff0c;掘金年度人氣作…

自動駕駛---Tesla的自動駕駛技術進化史(PerceptionPlanning)

1 前言 筆者在專欄《自動駕駛Planning模塊》中已經詳細講解了傳統自動駕駛Planning模塊的內容&#xff1a;包括行車的Behavior Planning和Motion Planning&#xff0c;以及低速記憶泊車的Planning&#xff08;最開始有15篇&#xff0c;目前逐漸更新到17篇&#xff09;。讀者對整…

【Spring】SSM介紹_SSM整合

1、SSM介紹 1.1簡介 SSM&#xff08;Spring SpringMVC MyBatis&#xff09;整合是一種流行的Java Web應用程序框架組合&#xff0c;它將Spring框架的核心特性、SpringMVC作為Web層框架和MyBatis作為數據訪問層框架結合在一起。這種整合方式提供了從數據訪問到業務邏輯處理再…

5.18 TCP機械臂模擬

#include <netinet/tcp.h>//包含TCP選項的頭文件 #include <arpa/inet.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <linux/input.h>//讀取輸入事件 #include <sys/types.h> #include <sys/stat.h&…

對于mybatis和mybatisplus的選擇

對于mybatis和mybatisplus的選擇 1. 問題2. MP單表操作2.1 單表普通查詢2.2 單表分頁查詢 3. mybatis多表操作3.1 多表普通查詢3.2 多表分頁查詢 1. 問題 mybatis 和 mybatisplus作為當下主流的持久層框架&#xff0c;各有優劣勢。依據個人經驗&#xff1a;mybatis可以定制化輸…