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

news2025/1/15 20:02:21

持续学习&持续更新中…

学习态度:守破离


【雷丰阳-谷粒商城 】【分布式基础篇-全栈开发篇】【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 {

    // ......

    @Override
    public 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_route
          uri: lb://renren-fast
          predicates:
            - 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.jpg
          filters:
            - 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.coloradmin.cn/o/1791148.html

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

相关文章

DRIVEN|15分的CNN+LightGBM怎么做特征分类,适用于转录组

说在前面 今天分享一篇做深度学习模型的文章&#xff0c;这是一篇软硬结合的研究&#xff0c;排除转换实体产品&#xff0c;我们做生信基础研究的可以学习模仿这个算法&#xff0c;适用且不局限于临床资料&#xff0c;转录组数据&#xff0c;GWAS数据。 今天给大家分享的一篇文…

创新入门|营销中的视频内容:不可或缺的策略

视频在营销中日益重要。你是否也发现,视频内容最近似乎无处不在?它占据着社交媒体的推文、网站首页,甚至电子邮件中的位置。事实上,并不是你一个人有这样的感受。在过去十年中,视频作为一种营销手段日益成熟和强大。这是因为,人类天生就是视觉动物。我们大脑处理视觉信息的速度…

补上缺失的一环----一种数据库系统主动对外推送表的增删改实时变动数据的实践

在实践中&#xff0c;一些应用程序或模块需要实时获取某些数据库表的增删改变动数据。 对此需求&#xff0c;常见的方案有: 1、应用程序通过轮循查询数据库方式获取数据库表的增删改变动数据. 2、应用程序在把数据写入数据库表之前&#xff0c;通过事件方式向外通知数据库表的增…

安徽某高校数据挖掘作业6

1 根据附件中year文件&#xff0c;编辑Python程序绘制年销售总额分布条形图和年净利润分布条形图&#xff0c;附Python程序和图像。 2 根据附件中quarter和quarter_b文件&#xff0c;编辑Python程序绘制2018—2020年销售额和净利润折线图&#xff0c;附Python程序和图像。 3 …

城市之旅:使用 LLM 和 Elasticsearch 简化地理空间搜索(二)

我们在之前的文章 “城市之旅&#xff1a;使用 LLM 和 Elasticsearch 简化地理空间搜索&#xff08;一&#xff09;”&#xff0c;在今天的练习中&#xff0c;我将使用本地部署来做那里面的 Jupyter notebook。 安装 Elasticsearch 及 Kibana 如果你还没有安装好自己的 Elasti…

C#-foreach循环语句

foreach循环语句 语法&#xff1a; foreach(数据类型 变量名 in 数组或集合对象) { 语句块; } foreach 会在每次循环的过程中&#xff0c;依次从数组或集合对象中取出一个新的元素放foreach( )里定义的变量中&#xff0c;直到所有元素都成功取出后退出循环。 foreach循环…

[AI资讯·0605] GLM-4系列开源模型,OpenAI安全疑云,ARM推出终端计算子系统,猿辅导大模型备案……

AI资讯 1毛钱1百万token&#xff0c;写2遍红楼梦&#xff01;国产大模型下一步还想卷什么&#xff1f;AI「末日」突然来临&#xff0c;公司同事集体变蠢&#xff01;只因四大聊天机器人同时宕机OpenAI员工们开始反抗了&#xff01;AI手机PC大爆发&#xff0c;Arm从软硬件到生态…

搭建大型分布式服务(三十九)SpringBoot 整合多个kafka数据源-支持Aware模式

系列文章目录 文章目录 系列文章目录前言一、本文要点二、开发环境三、原项目四、修改项目五、测试一下五、小结 前言 本插件稳定运行上百个kafka项目&#xff0c;每天处理上亿级的数据的精简小插件&#xff0c;快速上手。 <dependency><groupId>io.github.vipjo…

【成品设计】基于物联网技术的养老院老人健康监控系统的设计与实现

《基于物联网技术的养老院老人健康监控系统的设计与实现》 老年人监护系统的核心任务是分析老年人在日常生活中是否存在意外事件和异常行为并提供相关帮助。正确分析出老年人的突发意外和行为异常&#xff0c;不仅可以有效地降低老年人因意外事故造成的生命风险&#xff0c;还…

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

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

Vue的APP实现下载文件功能,并将文件保存到手机中

Vue的APP实现下载文件功能&#xff0c;并将文件保存到手机中 文字说明后台核心代码前台核心代码运行截图项目链接 文字说明 本文介绍Vue实现的APP&#xff0c;将文件下载并保存到手机中&#xff0c;为系统提供导出功能&#xff1b;同时支持导入&#xff0c;即选择本地的文件后&…

C++STL---list知识汇总

前言 学习完list&#xff0c;我们会对STL中的迭代器有进一步的认识。list底层有很多经典的东西&#xff0c;尤其是他的迭代器。而list的结构是一个带头双向循环链表。 list没有reserve和resize&#xff0c;因为它底层不是连续的空间&#xff0c;它是用时随时申请&#xff0c;…

18.使用__asm实现调用hp减伤害

上一个内容&#xff1a;17.调用游戏本身的hp减伤害函数实现秒杀游戏角色 17.调用游戏本身的hp减伤害函数实现秒杀游戏角色 以它的代码为基础进行修改 首先禁用安全检查 然后再把优化关闭 编译代码时使用Release方式&#xff0c;debug方式会加一些代码&#xff0c;如果这些代码…

【机器学习】深度探索:从基础概念到深度学习关键技术的全面解析——梯度下降、激活函数、正则化与批量归一化

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 一、机器学习的基本概念与原理二、深度学习与机器学习的关系2.1 概念层次的关系2.2 技术特点差异2.3 机器学习示例&#xff1a;线性回归&#xff08;使用Python和scikit-learn库&#xff09;2.4 深度学习示例&#xff1a;简…

【网络编程开发】4.socket套接字及TCP的实现框架 5.TCP多进程并发

4.socket套接字及TCP的实现框架 Socket套接字 Socket套接字是网络编程中用于实现不同计算机之间通信的一个基本构建块。 在现代计算机网络中&#xff0c;Socket套接字扮演着至关重要的角色。它们为应用程序提供了一种方式&#xff0c;通过这种方式&#xff0c;程序能够通过网…

【技巧】系统语音是英文 影刀如何设置中文-作者:【小可耐教你学影刀RPA】

写在前面 嘿哈&#xff01; 有些跨境或香港的小伙伴&#xff0c;可能需要使用英文操作界面的影刀 该功能目前还没有现成的可视化按钮&#x1f518; 但其实这个效果可以实现&#xff5e; 1、效果图 2、实现原理 %影刀安装目录%\ShadowBot-版本号\ShadowBot.Shell.dll.confi…

十四、返回Insert操作自增索引值

分为两部分&#xff0c;解析初始化和使用 拿含有selectkey标签的insert语句解析来说 解析部分 1.解析时看有没有selectkey标签&#xff0c;有的话先解析selectkey的内容&#xff0c;包括对其SQL的解析并封装成一个MappedStatement和创建KeyGenerator放入configuration中 2.解…

Android WebView上传文件/自定义弹窗技术,附件的解决方案

安卓内核开发 其实是Android的webview默认是不支持<input type"file"/>文件上传的。现在的前端页面需要处理的是&#xff1a; 权限 文件路径AndroidManifest.xml <uses-permission android:name"android.permission.WRITE_EXTERNAL_STORAGE"/&g…

NumPy应用(一)

NumPy学习篇1 NumPy是一个强大的Python库&#xff0c;它提供了高效的多维数组对象和各种用于数组操作的函数。以下是NumPy学习大纲&#xff0c;详细介绍了NumPy的核心功能和概念。 1. NumPy 简介 NumPy是一个用于处理多维数组的Python库&#xff0c;它提供了一个强大的数组对…

测试记录3:WLS2运行Linux界面

1.WLS1转到WLS2 &#xff08;1&#xff09;根据自己的平台&#xff0c;下载WLS2安装包 x64: https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi arm64: https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_arm64.msi &#xff08;2&…