分類和品牌關聯

文章目錄

    • 1.數據庫表設計
        • 1.多表關聯設計
        • 2.創建表
    • 2.使用renren-generator生成CRUD
        • 1.基本配置檢查
          • 1.generator.properties
          • 2.application.yml
        • 2.生成代碼
          • 1.進入localhost:81生成代碼
          • 2.將main目錄覆蓋sunliving-commodity模塊的main目錄
        • 3.代碼檢查
          • 1.注釋掉CategoryBrandRelationController.java的@RequiresPermissions注解即可
          • 2.接口測試(通過網關訪問)
            • 1.http://localhost:5050/api/sunliving-commodity/commodity/categorybrandrelation/list
            • 2.http://localhost:5050/api/sunliving-commodity/commodity/categorybrandrelation/save
    • 3.第五次部署
        • 1.后端部署
          • 1.由于沒有添加新模塊,所以不需區分多環境,網關也不需要改
          • 2.將sunliving-commodity模塊激活為prod
          • 3.maven打包
          • 4.測試執行
          • 5.部署上線
          • 6.啟動成功
        • 2.前端部署
          • 1.根目錄打包
          • 2.切換到node16,dist目錄執行serve
          • 3.Nacos將上線四個后端項目
          • 4.測試無誤
          • 5.部署上線
          • 6.測試依然無誤
    • 4.前端顯示界面 brand.vue
        • 1.新增關聯分類的按鈕
          • 1.新增按鈕
          • 2.實現方法
        • 2.引入品牌和分類關聯的對話框
          • 1.最后的div前面引入
          • 2.數據池中定義信息
          • 3.方法顯示對話框
        • 3.顯示關聯分類的級聯菜單
          • 1.添加方法,獲取分類列表,帶層級
          • 2.初始化時調用這個方法
          • 3.結果展示
    • 5.添加分類關聯
        • 1.前端 brand.vue
          • 1.點擊關聯分類按鈕,將品牌id放到數據池的brandId中
          • 2.編寫addBrandCategoryRelation,發送新增關聯的請求
        • 2.后端 sunliving-commodity模塊
          • 1.service層
            • 1.CategoryBrandRelationService.java 新增方法
            • 2.CategoryBrandRelationServiceImpl.java 實現方法
          • 2.controller層
            • CategoryBrandRelationController.java 編寫接口
        • 3.測試
        • 4.兩個小問題
          • 1.添加成功之后關閉彈窗
          • 2.下一次點擊新增關聯時不保存上一次記錄
    • 6.顯示分類關聯列表
        • 1.后端sunliving-commodity模塊
          • 1.service層
            • 1.CategoryBrandRelationService.java
            • 2.CategoryBrandRelationServiceImpl.java
          • 2.controller層
          • 3.測試
        • 2.前端 brand.vue
          • 1.找到列表綁定的屬性
          • 2.找到點擊關聯按鈕觸發的方法,為屬性賦值
          • 3.查看結果
        • 3.幾個小問題
          • 1.在新增關聯之后并沒有刷新分類列表
            • 1.只需在addBrandCategoryRelation這個新增關聯的方法操作成功后刷新表格即可
            • 2.展示
          • 2.已經有關聯了,但是還會重復插入的問題
            • 1.修改后端CategoryBrandRelationServiceImpl.java的saveRelationById方法,先檢測是否表中已經有關聯信息了
            • 2.重啟測試
    • 7.刪除分類關聯列表
        • 1.后端sunliving-commodity模塊
          • 1.CategoryBrandRelationController.java 已經提供了根據id刪除的接口
        • 2.前端brand.vue
          • 1.發現移除按鈕,使用的是插槽機制,可以直接獲取當前行的id和brandId
          • 2.編寫deleteCateRelationHandle方法
          • 3.測試

1.數據庫表設計

1.多表關聯設計

image-20240418195253885

2.創建表
use sunliving_commodity;CREATE TABLE commodity_category_brand_relation
(id            BIGINT NOT NULL AUTO_INCREMENT,brand_id      BIGINT COMMENT '品牌 id',category_id   BIGINT COMMENT '分類 id',brand_name    VARCHAR(255) COMMENT '品牌名稱',category_name VARCHAR(255) COMMENT '分類名稱',PRIMARY KEY (id)
) CHARSET = utf8mb4 COMMENT ='品牌分類關聯表';SELECT *
FROM `commodity_category_brand_relation`;

2.使用renren-generator生成CRUD

1.基本配置檢查
1.generator.properties

image-20240418195944810

2.application.yml

image-20240418200023765

2.生成代碼
1.進入localhost:81生成代碼

image-20240418200124912

2.將main目錄覆蓋sunliving-commodity模塊的main目錄

image-20240418200502230

image-20240418200552845

3.代碼檢查
1.注釋掉CategoryBrandRelationController.java的@RequiresPermissions注解即可

image-20240418200917839

2.接口測試(通過網關訪問)
1.http://localhost:5050/api/sunliving-commodity/commodity/categorybrandrelation/list

image-20240418201554073

2.http://localhost:5050/api/sunliving-commodity/commodity/categorybrandrelation/save

image-20240418202057349

3.第五次部署

1.后端部署
1.由于沒有添加新模塊,所以不需區分多環境,網關也不需要改
2.將sunliving-commodity模塊激活為prod
3.maven打包

image-20240418203435669

4.測試執行

image-20240418203605883

5.部署上線

image-20240418203829855

6.啟動成功

image-20240418203911794

2.前端部署
1.根目錄打包

image-20240418204118744

2.切換到node16,dist目錄執行serve

image-20240418204217618

3.Nacos將上線四個后端項目

image-20240418204330705

4.測試無誤

image-20240418204522400

5.部署上線

image-20240418204826925

6.測試依然無誤

image-20240418204953485

4.前端顯示界面 brand.vue

1.新增關聯分類的按鈕
1.新增按鈕

image-20240419093623315

2.實現方法

image-20240419093711833

2.引入品牌和分類關聯的對話框
1.最后的div前面引入
    <!-- 品牌和分類關聯的對話框 --><el-dialog title="關聯分類" :visible.sync="cateRelationDialogVisible" width="30%"><el-popover placement="right-end" v-model="popCatelogSelectVisible"><!-- <category-cascader :catelogPath.sync="catelogPath"></category-cascader>--><!-- 這里我們加入分類的 Cascader 級聯選擇器, 前面我們使用過 --><el-cascaderv-model="cascadedCategoryId" :options="categorys" :props="props"></el-cascader><div style="text-align: right; margin: 0"><el-button size="mini" type="text" @click="popCatelogSelectVisible = false">取 消</el-button><el-button type="primary" size="mini" @click="addBrandCategoryRelation"> 確 定</el-button></div><el-button slot="reference">新增關聯</el-button></el-popover><el-table :data="cateRelationTableData" style="width: 100%"><el-table-column prop="id" label="#"></el-table-column><el-table-column prop="brandName" label="品牌名"></el-table-column><el-table-column prop="categoryName" label="分類名"></el-table-column><el-table-column fixed="right" header-align="center" align="center" label="操作"><template slot-scope="scope"><el-buttontype="text" size="small" @click="deleteCateRelationHandle(scope.row.id,scope.row.brandId)">移除</el-button></template></el-table-column></el-table><span slot="footer" class="dialog-footer"><el-button @click="cateRelationDialogVisible = false">取 消</el-button><el-button type="primary" @click="cateRelationDialogVisible = false"> 確 定</el-button></span></el-dialog>
2.數據池中定義信息
      cateRelationDialogVisible: false, // 品牌和分類關聯的對話框cateRelationTableData: [], // 品牌和分類關聯的表格數據cascadedCategoryId: [], // 級聯選擇器的值,從 categories 中取popCatelogSelectVisible: false, // 是否顯示分類選擇器props: { //顯示返回的家居分類的哪些字段/信息value: "id", // 級聯選擇器的值label: "name", // 級聯選擇器的顯示標簽children: "childrenCategories" // 級聯選擇器的子選項},categorys: [], //所有的家居分類brandId: 0, //品牌 id, 默認為 0
3.方法顯示對話框

image-20240419093946923

image-20240419094002089

3.顯示關聯分類的級聯菜單
1.添加方法,獲取分類列表,帶層級
    // 獲取分類列表(帶層級)getCategories() {this.$http({url: process.env.COMMODITY_BASEPATH + '/commodity/category/list/tree',method: 'get'}).then(({data}) => { // 解構了datathis.categorys = data.data;})}
2.初始化時調用這個方法

image-20240419094516747

3.結果展示

image-20240419094247215

5.添加分類關聯

1.前端 brand.vue
1.點擊關聯分類按鈕,將品牌id放到數據池的brandId中

image-20240419095645659

2.編寫addBrandCategoryRelation,發送新增關聯的請求
    // 新增關聯addBrandCategoryRelation() {// 獲取品牌 id 和分類 idthis.$http({// 向品牌分類關聯表的接口發送請求,要求得到品牌名和分類名url: process.env.COMMODITY_BASEPATH + '/commodity/categorybrandrelation/relation',method: 'post',params: this.$http.adornParams({brandId: this.brandId,categoryId: this.cascadedCategoryId[this.cascadedCategoryId.length - 1]})}).then(({data}) => {if (data && data.code === 0) {this.$message({message: '操作成功',type: 'success',duration: 1500})this.cateRelationDialogVisible = false} else {this.$message.error(data.msg)}})}
2.后端 sunliving-commodity模塊
1.service層
1.CategoryBrandRelationService.java 新增方法
    /*** 獲取品牌分類關聯信息* @param brandId* @param categoryId* @return*/void saveRelationById(Long brandId, Long categoryId);
2.CategoryBrandRelationServiceImpl.java 實現方法

image-20240419110605445

    @Overridepublic void saveRelationById(Long brandId, Long categoryId) {// 根據brandId和categoryId查詢品牌名和分類名String brandName = brandDao.selectById(brandId).getName();String categoryName = categoryDao.selectById(categoryId).getName();// 插入到關聯表中CategoryBrandRelationEntity categoryBrandRelationEntity = new CategoryBrandRelationEntity();categoryBrandRelationEntity.setBrandName(brandName);categoryBrandRelationEntity.setCategoryId(categoryId);categoryBrandRelationEntity.setCategoryName(categoryName);categoryBrandRelationEntity.setBrandId(brandId);categoryBrandRelationDao.insert(categoryBrandRelationEntity);}
2.controller層
CategoryBrandRelationController.java 編寫接口
    /*** 關聯*/@RequestMapping("/relation")// @RequiresPermissions("commodity:categorybrandrelation:list")public R relation(@RequestParam Map<String, Object> params){long brandId = Long.parseLong(params.get("brandId").toString());long categoryId = Long.parseLong(params.get("categoryId").toString());categoryBrandRelationService.saveRelationById(brandId, categoryId);return R.ok();}
3.測試

image-20240419110629470

image-20240419110619989

4.兩個小問題
1.添加成功之后關閉彈窗

image-20240419110915704

image-20240419110935565

2.下一次點擊新增關聯時不保存上一次記錄

image-20240419111307317

image-20240419111259069

6.顯示分類關聯列表

1.后端sunliving-commodity模塊
1.service層
1.CategoryBrandRelationService.java
    /*** 根據品牌id獲取關聯的分類* @param brandId* @return*/List<CategoryBrandRelationEntity> getCateRelationTableDataById(Long brandId);
2.CategoryBrandRelationServiceImpl.java
    @Overridepublic List<CategoryBrandRelationEntity> getCateRelationTableDataById(Long brandId) {return categoryBrandRelationDao.selectList(new QueryWrapper<CategoryBrandRelationEntity>().eq("brand_id", brandId));}
2.controller層
    /*** 根據brandId查詢關聯的分類*/@RequestMapping("/list/{brandId}")// @RequiresPermissions("commodity:categorybrandrelation:list")public R getCateRelationTableDataById(@PathVariable("brandId") Long brandId){// 根據brandId查詢關聯的分類return R.ok().put("data", categoryBrandRelationService.getCateRelationTableDataById(brandId));}
3.測試

image-20240419113554394

2.前端 brand.vue
1.找到列表綁定的屬性

image-20240419113756264

2.找到點擊關聯按鈕觸發的方法,為屬性賦值
    // 關聯分類relateCategoryHandle(id) {// 顯示分類信息this.$http({url: process.env.COMMODITY_BASEPATH + '/commodity/categorybrandrelation/list/' + id,method: 'get'}).then(({data}) => {if (data && data.code === 0) {this.cateRelationTableData = data.data} else {this.cateRelationTableData = []}})// 點擊關聯分類按鈕,得到品牌 id,并放到 brandId 中this.brandId = idthis.cateRelationDialogVisible = true}
3.查看結果

image-20240419114728799

3.幾個小問題
1.在新增關聯之后并沒有刷新分類列表
1.只需在addBrandCategoryRelation這個新增關聯的方法操作成功后刷新表格即可

image-20240419115339506

2.展示

image-20240419115608631

2.已經有關聯了,但是還會重復插入的問題
1.修改后端CategoryBrandRelationServiceImpl.java的saveRelationById方法,先檢測是否表中已經有關聯信息了
        // 查詢一下是否已經存在關聯關系,如果有就不插入List<CategoryBrandRelationEntity> categoryBrandRelationEntities = categoryBrandRelationDao.selectList(new QueryWrapper<CategoryBrandRelationEntity>().eq("brand_id", brandId).eq("category_id", categoryId));if (categoryBrandRelationEntities.size() > 0) {return;}

image-20240419120159719

2.重啟測試

image-20240419120235271

image-20240419120248294

7.刪除分類關聯列表

1.后端sunliving-commodity模塊
1.CategoryBrandRelationController.java 已經提供了根據id刪除的接口

image-20240419134427521

2.前端brand.vue
1.發現移除按鈕,使用的是插槽機制,可以直接獲取當前行的id和brandId

image-20240419134558267

2.編寫deleteCateRelationHandle方法
    // 根據id刪除品牌和分類的關聯deleteCateRelationHandle(id, brandId) {this.$http({url: process.env.COMMODITY_BASEPATH + '/commodity/categorybrandrelation/delete',method: 'post',// 數組的形式傳入id參數data: this.$http.adornData([id], false)}).then(({data}) => {if (data && data.code === 0) {this.$message({message: '操作成功',type: 'success',duration: 1500})this.relateCategoryHandle(brandId)} else {this.$message.error(data.msg)}})}
3.測試

image-20240419134857206

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

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

相關文章

Tencent : TBDS簡介

Tencent TBDS&#xff08;Tencent Big Data Suite&#xff09;是騰訊公司推出的大數據處理套件&#xff0c;它基于騰訊多年海量數據處理經驗&#xff0c;依托云原生技術和泛Hadoop生態開源技術&#xff0c;為用戶提供可靠、安全、易用的大數據處理平臺。 TBDS可以在公有云、私…

JavaWeb基礎(HTML,CSS,JS)

這些知識用了三四天左右學完&#xff0c;因為是JavaWeb&#xff0c;并不是前端&#xff0c;所以只是夠用&#xff0c;不是深入&#xff0c;但是這確實是學校一個學期交的東西&#xff08;JavaWeb課程&#xff09;。 總結一下網頁分為三部分&#xff1a;HTML(內容結構),CSS&…

MySql--SQL語言

目錄 SQl---DDL 結構定義 創建、刪除 數據庫 代碼 運行 設計表 數據類型 整數 浮點數 主鍵 約束 主鍵自增長 默認值 字段注釋 創建、刪除 表 代碼 運行 代碼 代碼 運行 SQL---DML 數據操縱 插入數據 代碼 運行 代碼 運行 代碼 運行 代碼 …

【實戰教程】使用Spring AOP和自定義注解監控接口調用

一、背景 隨著項目的長期運行和迭代&#xff0c;積累的功能日益繁多&#xff0c;但并非所有功能都能得到用戶的頻繁使用或實際上根本無人問津。 為了提高系統性能和代碼質量&#xff0c;我們往往需要對那些不常用的功能進行下線處理。 那么&#xff0c;該下線哪些功能呢&…

貪心算法: 單調遞增的數字

參考資料&#xff1a;代碼隨想錄 題目鏈接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 倒序遍歷每個數字&#xff0c;遇到前一個比后一個大的就減一&#xff0c;最后統一把后面幾位置為9 String str n"";char[] chars str.toCharArray();int flag c…

docker部署kafka實戰

目錄 一、部署kafaka、zookeeper 二、測試信息發送與接收 三、kafka進階 一、部署kafaka、zookeeper 請提前安裝docker、docker-compose 安裝docker&#xff1a;docker--安裝docker-ce-CSDN博客 安裝docker-compose&#xff1a; 安裝docker-compose_安裝 docker-compose-CSD…

云下到云上,麗迅物流如何實現數據庫降本50% | OceanBase案例

在2024年3月20日的首場OceanBase數據庫城市行活動中&#xff0c;專注于物流及供應鏈解決方案的麗迅物流的架構師陽磊&#xff0c;圍繞“OB Cloud在麗迅物流的實踐”這一主題&#xff0c;進行了精彩的演講。本文為此次演講的內容回顧。 在麗迅物流&#xff08;Lesoon Logistics…

小demo - 列表hide or not (含代碼)

直接上代碼 <!DOCTYPE html> <html><head><style>.menu {width: 220px;height: 800px;border: 1px solid #dddddd;}.item {cursor: pointer;}.menu .header {padding: 10px 5px;background-color: goldenrod;}.menu .content a {display: block;paddi…

線程安全-1 synchronized鎖升級

一.說一下synchronized關鍵字的底層原理 1.synchronized又叫同步鎖&#xff0c;采用互斥的方式使同一時刻只能有一個線程持有鎖。 2.jdk1.6及以前&#xff0c;synchronized底層是用monitor實現的。monitor是jvm級別的對象&#xff0c;由c實現。每一個對象對應一個monitor&…

9.1 Go語言入門(環境篇)

Go語言入門&#xff08;環境篇&#xff09; 目錄一、什么是Go語言二、下載安裝配置Go語言開發環境1. 下載2. 安裝3. 配置環境變量4. 安裝環境驗證 三、 開發工具1. 下載2. 安裝3. 激活4. 配置SDK 四、 創建go工程文件并運行1. 創建go工程2. 示例代碼3. 運行代碼 目錄 一、什么…

軟件開源協議與QT的開源協議介紹

一.常見的六種開源協議 1.BSD協議 BSD協議全稱為“Berkely Software Distribution”&#xff0c;中文譯為“伯克利軟件發行版”。其最早用于伯克利UNIX操作系統上的開源貢獻。 主要特點&#xff1a; 允許修改源碼 允許源碼再發布 允許商業軟件發布和銷售 約束&#xff1…

shell 腳本筆記2

3.env與set區別 env用于查看系統環境變量 set用于查看系統環境變量自定義變量函數 4.常用環境變量 變量名稱含義PATH命令搜索的目錄路徑, 與windows的環境變量PATH功能一樣LANG查詢系統的字符集HISTFILE查詢當前用戶執行命令的歷史列表 Shell變量&#xff1a;自定義變量 目標…

HCIP【VRRP、MSTP、VLAN綜合實驗】

目錄 一、實驗拓撲圖&#xff1a; ?編輯二、實驗要求 三、實驗思路 四、實驗步驟 &#xff08;1&#xff09; eth-trunk技術配置 &#xff08;2&#xff09;vlan 技術配置 &#xff08;3&#xff09;配置SW1、SW2、AR1、ISP的IP地址 &#xff08;4&#xff09;在交換機…

FBB-Frontiers in Bioengineering and Biotechnology

文章目錄 一、期刊簡介二、征稿信息三、期刊表現四、投稿須知五、投稿咨詢 一、期刊簡介 Frontiers in Bioengineering and Biotechnology是專注生物工程和生物技術領域的開放獲取期刊。 研究范圍涵蓋生物材料、生物力學、生物工藝工程、生物安全和生物安保&#xff0c;生物傳…

QT項目-歡樂斗地主游戲

QT項目-歡樂斗地主游戲 游戲概述游戲規則牌型牌型的大小游戲角色游戲規則游戲的勝負游戲計分規則 游戲相關的類介紹卡牌類玩家類窗口類游戲控制類游戲策略類線程類音頻類 游戲主要組件卡牌玩家窗口 游戲控制源碼 游戲概述 游戲規則 不同地域游戲規則可能有些許差異&#xff0c…

MySQL之Schema與數據類型優化(三)

Schema與數據類型優化 BLOB和TEXT類型 BLOB和TEXT都是為存儲很大的數據而設計的字符串數據類型&#xff0c;分別采用二進制和字符方式存儲。 實際上它們分別屬于兩組不同的數據類型家族:字符類型是TINYTEXT&#xff0c;SMALLTEXT,TEXT&#xff0c;MEDIUMTEXT&#xff0c;LONG…

Spring Cloud整合Sentinel

1、引入依賴 鏈接: 點擊查看依賴關系 父pom <spring.cloud.version>Hoxton.SR12</spring.cloud.version> <spring.cloud.alibaba.version>2.2.10-RC1</spring.cloud.alibaba.version>Sentinel應用直接引用starter <dependency><groupId&…

【UE5.1】* 動畫重定向 (讓你的角色可以使用小白人全部動畫)

前言 這里以小白人動畫重定向給商城資產“Adventure Character”中的角色為例&#xff0c;闡述如何使用UE5.1進行動畫重定向。 步驟 1. 創建一個IK綁定 這里選擇小白人的骨骼網格體 這里命名為“IKRig_Mannequin” 2. 再新建一個IK綁定&#xff0c;這里使用你要替換給的角色…

MyBatis入門——MyBatis XML配置文件(3)

目錄 一、配置連接字符串和MyBatis 二、寫持久層代碼 1、添加 mapper 接口 2、添加 USerInfoXmlMapper.xml 3、測試類代碼 三、增刪改查操作 1、增&#xff08;Insert&#xff09; 返回自增 id 2、刪&#xff08;Delete&#xff09; 3、改&#xff08;update&#xf…

軟考--試題六--中介者模式(Mediator)

中介者模式(Meditor) 意圖 用一個中介對象來封裝一系列的對象交互。中介者使各對象不需要顯式地相互引用&#xff0c;從而使其耦合松散&#xff0c;而且可以獨立地改變它們之間的交互 結構 適用性 1、一組對象以定義良好但是復雜的方式進行通信&#xff0c;產生的相互依賴關…