【雷丰阳-谷粒商城 】【分布式基础篇-全栈开发篇】【06】【商品服务】接口文档地址_三级分类_SPU_SKU


持续学习&持续更新中…

学习态度:守破离


【雷丰阳-谷粒商城 】【分布式基础篇-全栈开发篇】【06】【商品服务】接口文档地址_三级分类_SPU_SKU

  • 接口文档地址
  • 三级分类
    • 效果图
    • 建表
    • 后台组建数据的树形结构
    • 在人人(后台管理系统)中实现管理商品的三级分类
    • 路径规则
    • 使用ElementUI构建三级分类
    • 前后端联调
    • 使用逻辑删除
    • 调整日志级别
  • SPU与SKU
  • 基本属性【规格参数】与销售属性
    • 【属性分组-规格参数-销售属性-三级分类】关联关系
    • SPU-SKU属性表
  • 注意
  • 参考

接口文档地址

可以按照接口的规范来开发其他剩余的功能。

https://easydoc.net/s/78237135/ZUqEdvA4/hKJTcbfd

在这里插入图片描述

在这里插入图片描述

三级分类

效果图

在这里插入图片描述

建表

在这里插入图片描述

create table if not exists gulimall_pms.pms_category
(cat_id        bigint auto_increment comment '分类id'primary key,name          char(50)  null comment '分类名称',parent_cid    bigint    null comment '父分类id',cat_level     int       null comment '层级',show_status   tinyint   null comment '是否显示[0-不显示,1显示]',sort          int       null comment '排序',icon          char(255) null comment '图标地址',product_unit  char(50)  null comment '计量单位',product_count int       null comment '商品数量'
)comment '商品三级分类';

后台组建数据的树形结构

在这里插入图片描述

@Service("categoryService")
public class CategoryServiceImpl extends ServiceImpl<CategoryDao, CategoryEntity> implements CategoryService {// ......@Overridepublic List<CategoryEntity> listTree() {// 查出所有分类List<CategoryEntity> entities = baseMapper.selectList(null);/// 组装父子结构:// 查出一级分类List<CategoryEntity> level1 = entities.stream().filter(entity -> entity.getParentCid() == 0).map(entity -> {entity.setChildren(getChildren(entity, entities));return entity;})// 0 是排序的默认值.sorted((menu1, menu2) -> (menu1.getSort() == null ? 0 : menu1.getSort()) - (menu2.getSort() == null ? 0 : menu2.getSort())).collect(Collectors.toList());return level1;}// 递归查找所有子分类private List<CategoryEntity> getChildren(CategoryEntity root, List<CategoryEntity> all) {List<CategoryEntity> collect = all.stream().filter(entity -> entity.getParentCid() == root.getCatId()).map(entity -> {entity.setChildren(getChildren(entity, all));return entity;}).sorted((menu1, menu2) -> (menu1.getSort() == null ? 0 : menu1.getSort()) - (menu2.getSort() == null ? 0 : menu2.getSort())).collect(Collectors.toList());return collect;}}

在人人(后台管理系统)中实现管理商品的三级分类

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

路径规则

以角色管理为例:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

所以刚才我们给分类维护设置的/product/category,浏览器应该访问http://localhost:8001/#/product-category,对应代码中的src\views\modules\product\category.vue

使用ElementUI构建三级分类

在这里插入图片描述

前后端联调

在这里插入图片描述

给网关配置路由规则:

spring:cloud:gateway:routes:
#        - id: product_route
#          uri: lb://gulimall-product
#          predicates:
#            - Path=/api/product/**
#          filters:
#            - RewritePath=/api/(?<segment>.*),/$\{segment}
#          #需要把精确的路由放到上面【/api/product/**比/api/**更精确】- id: admin_routeuri: lb://renren-fastpredicates:- Path=/api/**
# 规则:前端项目都带上/api/前缀
#renrenfast代表的是renren-fast的url+port,也就是:localhost:8080
# 默认是这样子转发的 http://localhost:88/api/captcha.jpg  ==》 http://renrenfast/api/captcha.jpg
# 希望这样子转发 http://renrenfast/renren-fast/captcha.jpgfilters:- RewritePath=/api/?(?<segment>.*),/renren-fast/$\{segment}

在这里插入图片描述

使用逻辑删除

【MybatisPlus】https://baomidou.com/guides/logic-delete/

在这里插入图片描述
局部配置:
在这里插入图片描述
全局配置:
在这里插入图片描述
在这里插入图片描述
注:上图注释的文字应该是:这个方法不推荐直接使用,推荐使用逻辑删除

调整日志级别

logging:level: com.atguigu.gulimall: debug

SPU与SKU

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

基本属性【规格参数】与销售属性

  • 基本属性:SPU

商品介绍/规格与包装,这些都是SPU的属性,代表了一类商品

在这里插入图片描述

  • 销售属性:SKU

能决定售价与库存的叫做:销售属性

在这里插入图片描述

  • 总结
    在这里插入图片描述

【属性分组-规格参数-销售属性-三级分类】关联关系

在这里插入图片描述

SPU-SKU属性表

  • 网络/像素,是商品的基本属性【组成了一个SPU,比如华为V20】
  • 内存/容量,决定商品的价格和库存,是销售属性【组成了一个SKU,比如华为V20(6G+128G版)】

在这里插入图片描述

注意

  • nacos中不同命名空间的服务不能直接调用,可以使用其他方法【所以把所有服务都注册到public命名空间下】
  • 每个服务可以设置给自己的配置设置命名空间,做到配置隔离

参考

雷丰阳: Java项目《谷粒商城》Java架构师 | 微服务 | 大型电商项目).


本文完,感谢您的关注支持!


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/848250.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

声临其境!当ChatTTS遇上腾讯云HAI,定制你的专属智能语音服务

引言 ​ 「语音」作为人工智能的「启蒙钥匙」&#xff0c;不仅率先踏出实验室大门&#xff0c;步入寻常百姓家&#xff0c;也成为了人类与AI初次触电的「桥接技术」。初期&#xff0c;智能语音技术的研究重心落在了语音识别领域&#xff0c;致力于使机器具备理解人类语言的能…

身份证数字识别DBNET

采用DBNET检测身份证数字所在区域&#xff0c;然后使用切割字符的方法&#xff0c;使用PCASVM训练和分类&#xff0c;支持C/PYTHON开发&#xff0c;只需要OPENCV 身份证数字识别DBNETPCASVM

虚拟环境导致的段错误

虚拟环境导致的段错误 这两天遇到一个奇怪的错误&#xff0c;简单记录一下&#xff0c;报错如下&#xff1a; 段错误(核心已转储)事情开始是我想把代码复制到另一台服务器跑&#xff0c;所以代码是一模一样的&#xff0c;但是在配置环境之后运行训练代码却出现了这个错误。网上…

solus linux 简介

Solus Linux 是一个独立的 Linux 发行版&#xff0c;它具有以下几个显著的优势&#xff1a; 1. **独立性**&#xff1a;Solus Linux 不基于任何其他 Linux 系统&#xff0c;它是从零开始独立构建的&#xff0c;拥有自己的软件仓库和包管理系统。 2. **简洁现代的设计**&#…

【ARM Cache 及 MMU 系列文章 6 -- Cache 寄存器 CTR | CLIDR | CCSIDR | CSSELR 使用详解 1】

请阅读【ARM Cache 及 MMU/MPU 系列文章专栏导读】 及【嵌入式开发学习必备专栏】 文章目录 Cache 常用寄存器Cache CSSELR 寄存器Cache CSSELR 使用场景Cache CSSELR 操作示例 Cache CLIDR 寄存器LoUU 介绍LoUU 使用 LoUIS 介绍CLIDR 使用 Cache CCSIDR 寄存器 Cache 常用寄存…

计算机基础之:fork进程与COW机制

在Unix-like操作系统中&#xff0c;fork()是一个系统调用&#xff0c;用于创建一个与调用进程&#xff08;父进程&#xff09;几乎完全相同的新进程&#xff08;子进程&#xff09;&#xff0c;包括父进程的内存空间、环境变量、文件描述符等。这个过程是通过写时复制&#xff…

mysql引入表名称的注意事项

1、遇到问题 mapper中的文件是这样的 解析出来的sql是这样的 sql显示为&#xff1a;select * from ‘tableName’ 2、解决方法 mapper文件种使用${tableName}而不是#{tableName}

网工内推 | 联通公司,云计算售前,AWS认证优先

01 联通数字科技有限公司 &#x1f537;招聘岗位&#xff1a;云计算售前工程师 &#x1f537;职责描述&#xff1a; 1.了解私有云&#xff0c;公有云&#xff0c;混合云等云计算技术知识&#xff0c;了解云计算行业现状及发展趋势。 2.承担区域项目售前工作支持&#xff0c;为…

【iOS】UI学习——UITableView

UI学习&#xff08;四&#xff09; UITableView基础UITableView协议UITableView高级协议和单元格 UITableView基础 dateSource:数据代理对象 delegate:普通代理对象 numberOfSectionInTableView:获得组数协议 numberOfRowsInSection:获得行数协议 cellForRowAtIndexPath:创建单…

JavaScript:从基础到进阶的全面介绍

JavaScript&#xff1a;从基础到进阶的全面介绍 JavaScript&#xff08;简称JS&#xff09;是一种广泛用于Web开发的编程语言。它是一种轻量级的、解释型或即时编译的语言&#xff0c;具有函数优先的特点。JS最初是为了实现网页的动态效果而设计的&#xff0c;如今已发展成为前…

数字取证技术(Digital Forensics Technology)实验课II

数字取证技术(Digital Forensics Technology)实验课II 本文是我本学期的教学课题目,不包含任何博客知识分享,无关的读者可忽略; 实验练习题 (♞思考):请对工作邮件进行签名;“problem3_1.txt"里存储的是由John Doe撰写的真实的邮件,而"problem3_2.txt"里存储的…

ORPC-851(工业级)晶体管光耦,兼容替代LTV-851、PC851

提供隔离反馈 逻辑电路之间的接口 带基极引脚高可靠晶体管输出光耦 电平转换 DC和AC输入 SMPS中的调节反馈电路 消除接地环路 特征 电流传输比 &#xff08; CTR &#xff1a; 最低 50% IF 5mA&#xff0c; VCE 5V &#xff09; 宽工作温度范围 -55~100C 高输入输出隔离…

【python010】获取任意多边形区域内的经纬度点并可视化

1.熟悉、梳理、总结项目研发实战中的Python开发日常使用中的问题、知识点等&#xff0c;如获取任意多边形区域内的经纬度点并可视化&#xff0c;找了N篇文章没发现有效的解决方案。 2.欢迎点赞、关注、批评、指正&#xff0c;互三走起来&#xff0c;小手动起来&#xff01; 3.欢…

【一步一步了解Java系列】:重磅多态

看到这句话的时候证明&#xff1a;此刻你我都在努力 加油陌生人 个人主页&#xff1a;Gu Gu Study专栏&#xff1a;一步一步了解Java 喜欢的一句话&#xff1a; 常常会回顾努力的自己&#xff0c;所以要为自己的努力留下足迹 喜欢的话可以点个赞谢谢了。 作者&#xff1a;小闭…

######## mysql各章节终篇索引 ########

关系图&#xff1a; 事务特性 原子性 持久性 隔离性 隔离级别&#xff08;RC、RR等4个&#xff09; 锁 mvcc 一致性 1、索引 【聚集(聚簇)/非聚集(非聚簇)/二级索引、覆盖索引、主键自增的影响】#### 聚集(聚簇)、非聚集(非聚簇)、二级索引&#xff0c;覆盖索引&#xff0c;及…

低代码开发平台一般都有哪些功能和模块?

在当今快速变化的数字化时代&#xff0c;企业对于高效、灵活且经济的软件开发解决方案的需求愈发迫切。低代码开发平台应运而生&#xff0c;成为众多企业实现数字化转型的首选工具。本文将详细探讨低代码开发平台一般具备的主要功能和模块&#xff0c;以及它们如何助力企业提升…

6月5日 C++day3

#include <iostream>using namespace std;class Per { private:string name;int age;int *high;double *weight; public:Per(){cout << "Per的无参构造" << endl;}Per(string name,int age,int high,double weight):\name(name),age(age),high(new…

trace32 显示用户进程用户态调用栈

在只加载了linux vmlinux符号表的情况下&#xff0c;trace32 只能显示内核态的调用栈函数信息&#xff0c;无法显示用户态调用栈的函数信息&#xff1a; 查看进程maps 确认地址0x40616C为进程/bin/box的虚拟地址&#xff1b;而0xFFFF904E12FC为/lib/libc-2.30.so的地址&#x…

代码随想录算法训练营day44 | 01背包问题 二维、01背包问题 一维、416. 分割等和子集

01背包问题 二维 1. 确定dp数组以及下标的含义 dp[i][j] 表示从下标为[0-i]的物品里任意取&#xff0c;放进容量为j的背包&#xff0c;价值总和最大是多少。 2. 确定递推公式 dp[i][j] max(dp[i - 1][j], dp[i - 1][j - weight[i]] value[i]) 3. dp数组如何初始化 首先从…

有多少苹果用来分赃

题目描述&#xff1a; 有5个人偷了一堆苹果&#xff0c;他们准备在第二天进行分赃。晚上&#xff0c;有一个溜出来&#xff0c;他把所有苹果分成了5份&#xff0c;但是多了一个&#xff0c;他顺手把多的一个苹果扔给树上的猴子&#xff0c;自己先拿1/5藏了起来。没想…