商城-学习整理-基础-商品服务API-属性分组(七)
目录
- 一、创建系统菜单
- 二、开发商品系统-平台属性-属性分组
- 1、将三级分类功能抽取出来
- 2、编写后端代码
- 3、属性分组新增功能
- 4、属性分组修改回显功能
- 三、商品系统-平台属性-规则参数
- 1、列表展示页面
- 2、新增规格参数页面
- 四、商品系统-平台属性-销售属性
- 1、列表展示页面
- 2、新增或者修改页面
- 五、商品系统-商品维护-spu管理&发布商品
- 1、SPU
- 2、SKU
- 3、列表展示页面
- 六、商品系统-商品维护-商品管理
- 1、列表展示
- 七、品牌管理
- 1、分页显示有点问题,使用MyBatis-Plus有点问题,需要使用分页插件,给容器中放一个
- 八、各种对象介绍
- 1.PO(persistant object) 持久对象
- 2.DO(Domain Object)领域对象
- 3.TO(Transfer Object) ,数据传输对象
- 4.DTO(Data Transfer Object)数据传输对象和TO一个概念
- 5.VO(value object) 值对象
- 6.BO(business object) 业务对象
- 7.POJO(plain ordinary java object) 简单无规则 java 对象
- 8.DAO(data access object) 数据访问对象
- 九、后续模块开发思路
一、创建系统菜单
在admin数据库里面创建表sys_menus.sql
查看页面
根据逆向生成的代码,剩余的前端代码和后端代码自己写,根据接口文档去编写。
二、开发商品系统-平台属性-属性分组
1、将三级分类功能抽取出来
在前端modules下创建common目录,创建category.vue文件。
在product目录下,创建属性分组attrgroup.vue文件。最终做成的效果就是左边是一个菜单,右边是一个表格。
1、使用Layout布局中的分栏间隔
2、将之前写的category.vue中的el-tree 拷贝过来,把span删掉(添加删除按钮),拖拽、默认展开节点功能都不要,也不显示复选框
3、将script中的需要内容拷贝过去
4、我们需要在attrgroup的菜单位置用公共组件category.vue,使用import中导入组件
5、将逆向生成的attrgroup.vue中的div拷贝到自己写的attrgroup.vue中的表格位置
6、将script中的内容也拷贝过去。
7、因为attrgroup.vue中引用了组件attrgroup-add-or-update.vue,将逆向生成的组件attrgroup-add-or-update.vue拷贝到项目里
8、使用父子组件传递数据,使用事件机制,子组件给父组件发送一个事件,携带上数据
- 父子组件传递数据
- 1)、子组件给父组件传递数据,事件机制;
- 子组件给父组件发送一个事件,携带上数据。
- // this.$emit(“事件名”,携带的数据…)
9、我们在组件attrgroup中引入了子组件catgegory,使用子组件给父组件传递数据,category中的数据被点击了,attrgroup可以知道,将下面的table数据返回。
10、给el-tree绑定单击事件,
11、向父组件发送事件treenodeclick,这样我们就知道点击了那个数据,根据这个数据再去查询属性。
2、编写后端代码
1)编写接口实现获取分类属性分组
3、属性分组新增功能
1、使用级联选择器Cascader
2、后端在实体类中CategoryEntity的children字段,加上注解@JsonInclude(JsonInclude.Include.NON_EMPTY)不为空
4、属性分组修改回显功能
在查询详情的时候,返回catelogId分类的完整路径.
在AttrGroupEntity添加catalogPath,路径不是数据库的字段,要在字段添加注解@TableField(exist=false)
在详情里面查询目录信息
使用对话框Dialog 中的closed,这样再点击新增就不会有回显了
修改属性分组 感知树节点被点击,刷新数据
修改common中的category
三、商品系统-平台属性-规则参数
1、列表展示页面
很明显,开发一个功能模块,肯定要具有增加、删除、修改、查询四个基础功能,因为围绕这个四个功能进行开发。
1、根据表名称可知,规格参数是表attr,因此根据renren-fast逆向生成的前端代码attr.vue,拷贝到前端模块进行修改,根据报错,解决依赖报错问题,导入对应的引用文件。
因为规格参数添加的菜单是用的baseattr,所以需要将文件名改为baseattr.vue,才会显示。因为路由规则是根据添加的菜单规则拼接的。
这样就显示了,然后进行后面的前端和后端修改。
需要修改展示列表的标题,以及查询模块参数名。
左边需要展示分类维护,类似之前的属性分组页面,因此需要将布局设为,行列展示,使用<el-row :gutter="20"> <el-col :span="6"> </el-col> <el-col :span="18"></el-col> </el-row>
进行布局。
使用了category的公共组件,因此需要引用
成为以下效果
需要新增一个查询全部的按钮,类型为成功按钮,并且点击获取全部数据列表。
将属性ID改为id;
是否需要检索,改为 可检索,加上√号和×号图标,如果搜索类型是1的话,可检索
并且根据内容判断是否多选可搜索,
将可选值进行修改,显示多个
去掉属性类型
将启用状态改为启用,并且根据内容展示为图标
添加所属分组
根据快速展示内容展示为图标
在引入的新增或者更新组件中,添加属性
如下展示,就是列表的展示情况:
最后修改批量删除的后台接口。
列表功能全部完成。
2、新增规格参数页面
前端:修改attr-add-or-update.vue文件等
后端:AttrController.java文件等
四、商品系统-平台属性-销售属性
1、列表展示页面
根据路径即可找到生成的文件:http://localhost:8001/#/product-saleattr
因此是saleattr.vue文件
2、新增或者修改页面
因为销售属性和规则参数,页面布局一样,因此可以引用修改规则参数写的前端组件
最终展示效果为:
因为和规则参数的差别只在属性分组,因此只需要修改属性分组列即可,添加属性::attrtype为1则展示,在规则参数中,为0则不展示在销售属性中。
五、商品系统-商品维护-spu管理&发布商品
1、SPU
:Standard Product Unit(标准化产品单元)是商品信息聚合的最小单位,是一组可复用、易检索的标准化信息的集合,该集合描述了一个产品的特性。
iphoneX 是 SPU
MI 8 是 SPU
2、SKU
:Stock Keeping Unit(库存量单位)即库存进出计量的基本单元,可以是以件,盒,托盘等为单位。SKU 这是对于大型连锁超市DC(配送中心)物流管理的一个必要的方法。现在已经被引申为产品统一编号的简称,每种产品均对应有唯一的 SKU 号。
iphoneX 64G 黑曜石 是 SKU
MI8 8+64G+黑色 是 SKU
3、列表展示页面
http://localhost:8001/#/product-spu
http://localhost:8001/#/product-spuadd
文件命名为spu.vue、spuadd.vue
需要在main.js中引入import PubSub from ‘pubsub-js’
全局使用组件,在main.js中引入,并安装pubsub-js
六、商品系统-商品维护-商品管理
1、列表展示
http://localhost:8001/#/product-manager
manager.vue
后台文件:SkuInfoController.java
七、品牌管理
1、分页显示有点问题,使用MyBatis-Plus有点问题,需要使用分页插件,给容器中放一个
八、各种对象介绍
1.PO(persistant object) 持久对象
PO 就是对应数据库中某个表中的一条记录,多个记录可以用 PO 的集合。 PO 中应该不包含任何对数据库的操作
,实体类不允许操作数据库。
每一张表对应一个实体类。
2.DO(Domain Object)领域对象
就是从现实世界中抽象出来的有形或无形的业务实体。
3.TO(Transfer Object) ,数据传输对象
不同的应用程序之间传输的对象,微服务之间远程调用数据对象就是。
4.DTO(Data Transfer Object)数据传输对象和TO一个概念
这个概念来源于 J2EE 的设计模式,原来的目的是为了 EJB 的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布式调用的性能和降低网络负载,但在这里,泛指用于展示层与服务层之间的数据传输对象。
5.VO(value object) 值对象
通常用于业务层之间的数据传递,和 PO 一样也是仅仅包含数据而已。但应是抽象出的业务对象 , 可以和表对应 , 也可以不 , 这根据业务的需要 。用 new 关键字创建,由GC 回收的。
View object:视图对象;
接受页面传递来的数据,封装对象
将业务处理完成的对象,封装成页面要用的数据
6.BO(business object) 业务对象
从业务模型的角度看 , 见 UML 元件领域模型中的领域对象。封装业务逻辑的 java 对
象 , 通过调用 DAO 方法 , 结合 PO,VO 进行业务操作。business object: 业务对象 主要作
用是把业务逻辑封装为一个对象。这个对象可以包括一个或多个其它的对象。 比如一个简
历,有教育经历、工作经历、社会关系等等。 我们可以把教育经历对应一个 PO ,工作经
历对应一个 PO ,社会关系对应一个 PO 。 建立一个对应简历的 BO 对象处理简历,每
个 BO 包含这些 PO 。 这样处理业务逻辑时,我们就可以针对 BO 去处理。
7.POJO(plain ordinary java object) 简单无规则 java 对象
传统意义的 java 对象
。就是说在一些 Object/Relation Mapping 工具中,能够做到维护数据库表记录的 persisent object 完全是一个符合 Java Bean 规范的纯 Java 对象,没有增加别的属性和方法。我的理解就是最基本的 java Bean ,只有属性字段及 setter 和 getter方法!。
POJO 是 DO/DTO/BO/VO 的统称。
8.DAO(data access object) 数据访问对象
是一个 sun 的一个标准 j2ee 设计模式, 这个模式中有个接口就是 DAO ,它负持久层的操作。为业务层提供接口。此对象用于访问数据库。通常和 PO 结合使用, DAO 中包含了各种数据库的操作方法。通过它的方法 , 结合 PO 对数据库进行相关的操作。夹在业务逻辑与数据库资源中间。配合 VO, 提供数据库的 CRUD 操作.
九、后续模块开发思路
参考已有代码进行前后端自己独立开发,记录笔记,将以下功能模块开发出来,唯有自己独立开发,才能更快更好的学习。
四、平台属性-规格参数
五、新增商品
六、优惠营销模块
七、库存系统
八、订单系统
九、用户系统
十、内容管理
相关文章:

商城-学习整理-基础-商品服务API-属性分组(七)
目录 一、创建系统菜单二、开发商品系统-平台属性-属性分组1、将三级分类功能抽取出来2、编写后端代码3、属性分组新增功能4、属性分组修改回显功能 三、商品系统-平台属性-规则参数1、列表展示页面2、新增规格参数页面 四、商品系统-平台属性-销售属性1、列表展示页面2、新增或…...

什么是响应式设计?列举几种实现响应式设计的方法。
聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 什么是响应式设计?⭐ 实现响应式设计的方法⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个专栏…...

Java类和对象(一文读懂)
文章目录 类、对象是什么?创建类构造器 创建对象 类、对象是什么? 类:类是一个模板,它描述一类对象的行为和状态。类可以看成是创建 Java 对象的模板。 对象:对象是类的一个实例(对象不是找个女朋友&#x…...

用友移动管理系统 任意文件上传漏洞复现(HW0day)
0x01 产品简介 用友移动系统管理是用友公司推出的一款移动办公解决方案,旨在帮助企业实现移动办公、提高管理效率和员工工作灵活性。它提供了一系列功能和工具,方便用户在移动设备上管理和处理企业的系统和业务。 0x02 漏洞概述 用友移动管理系统 uploa…...

启动springboot,出现Unable to start embedded Tomcat
报错信息 org.apache.catalina.core.ContainerBase : A child container failed during startjava.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].TomcatEmbedd…...
加密和安全
加密和安全 一.安全机制 安全攻击的几种典型方式: STRIDE Spoofing 假冒 Tampering 篡改 Repudiation 否认 Information Disclosure 信息泄漏 Denial of Service 拒绝服务 Elevation of Privilege 提升…...

Maven基础总结
前言 Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。 基本要求掌握 配置Maven环境直接查。 得会在IDEA创建Maven的java项目吧、会创建Maven的web项目吧、会创建多模块项目吧。 得会配置插件pligin、依赖dependency吧 一、Maven四大特性 1、…...
Java 编程实战:如何用 Java 编写一个简单而强大的 Tomcat
学习完了JavaWeb,为了深入了解tomcat,打算手撕tomcat搭建自己的tomcat,希望对来访小伙伴也有帮助 引言 Tomcat 是一个开源的 Web 服务器和 Servlet 容器,它可以提供动态 Web 内容的处理和交互功能。Tomcat 是用 Java 语言编写的&a…...

【JavaSE】数组的定义与使用
详解数组 数组的基本概念什么是数组数组的创建及初始化数组的使用 数组是引用类型基本类型变量与引用类型变量的区别引用变量认识 null 数组的应用场景数组练习二维数组 数组的基本概念 什么是数组 数组可以看成是相同类型元素的一个集合。在内存中是一段连续的空间。比如现实…...

银河麒麟安装php7.1.33
银河麒麟V10兼容CentOS 8 安装过程与CentOS类似。 TencentOS3.1安装PHPNginxredis测试系统_乐大师的博客-CSDN博客 可以参考之前我写的文章。 不过有2个细节不同,下面说下。 问题1:编译错误提示“error:off_t undefined” 解决方法: 编…...

Kubernetes集群部署上篇(安装部署,但是集群网络未部署)
第四阶段 时 间:2023年8月9日 参加人:全班人员 内 容: Kubernetes集群部署上篇 目录 一、Kubernetes部署方式 (一)minikube (二)二进制包 (三)Kubeadm Kubea…...
跨境电商中的安全挑战与隐擎Fox指纹浏览器的应用
随着全球互联网的蓬勃发展,跨境电商已经成为了国际贸易的重要组成部分。然而,跨境电商的迅速崛起也伴随着一系列安全挑战,其中之一就是恶意活动和隐私泄露。为了应对这些挑战,诸多技术手段被开发出来,其中隐擎Fox指纹浏…...

10. Docker Swarm(一)
目录 1、前言 2、Docker Swarm体系架构 2.1、简单介绍 2.2、体系架构 3、简单使用 3.1、环境准备 3.2、初始化master节点 3.3、建立worker节点 3.4、查看集群的节点信息 3.5、部署应用 3.5.1、创建Dockerfile文件 3.5.2、构建镜像 3.5.3、将镜像上传到Docker仓库 …...

【MySQL】InnoDB存储引擎详解
InnoDB引擎是MySQL5.5版本之后默认的存储引擎 逻辑存储结构 首先是表空间Tablespace(ibd文件):一个mysql实力可以对应多个表空间,用于存储及记录,索引等数据 这些存储记录,索引等数据中是用段(Segment)来…...
组合求和-矩阵连乘所有加括号方式_2023_08_12
矩阵链加括号方式总数 前言 矩阵链乘积的瓶颈在于其标量运算的次数,不同的结合次序对其时间性能影响远大于矩阵乘积运算本身,可以看到许多教材上把求解矩阵标量运算的最优解作为动态规划的示例,问题隐含动态规划两大特征: 最优子…...

《3D 数学基础》12 几何图元
目录 1 表达图元的方法 1.1 隐式表示法 1.2 参数表示 1.3 直接表示 2. 直线和射线 2.1 射线的不同表示法 2.1.1 两点表示 2.1.2 参数表示 2.1.3 相互转换 2.2 直线的不同表示法 2.2.1 隐式表示法 2.2.2 斜截式 2.2.3 相互转换 3. 球 3.1 隐式表示 1 表达图元的方…...

【设计模式——学习笔记】23种设计模式——备忘录模式Memento(原理讲解+应用场景介绍+案例介绍+Java代码实现)
案例引入 游戏角色有攻击力和防御力,在大战Boss前保存自身的状态(攻击力和防御力),当大战Boss后攻击力和防御力下降,可以从备忘录对象恢复到大战前的状态 传统设计方案 针对每一种角色,设计一个类来存储该角色的状态 【分析】…...

致谢丨感谢有你,JumpServer开源项目九周年致谢名单
2014年到2023年,JumpServer开源项目已经走过了九年的时间。感谢以下社区贡献者对JumpServer项目的帮助和支持。 因为有你,一切才能成真。 JumpServer开源项目贡献者奖杯将于近日邮寄到以上贡献者手中,同时JumpServer开源项目组还准备了一份小…...

使用 Python 和 Flask 构建简单的 Restful API 第 1 部分
一、说明 我将把这个系列分成 3 或 4 篇文章。在本系列的最后,您将了解使用flask构建 restful API 是多么容易。在本文中,我们将设置环境并创建将显示“Hello World”的终结点。 我假设你的电脑上安装了python 2.7和pip。我已经在python 2.7上测试了本文…...
【深度学习所有损失函数】在 NumPy、TensorFlow 和 PyTorch 中实现(2/2)
一、说明 在本文中,讨论了深度学习中使用的所有常见损失函数,并在NumPy,PyTorch和TensorFlow中实现了它们。 (二-五)见 六、稀疏分类交叉熵损失 稀疏分类交叉熵损失类似于分类交叉熵损失,但在真实标签作为整数而不是独热编码提…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
Mysql8 忘记密码重置,以及问题解决
1.使用免密登录 找到配置MySQL文件,我的文件路径是/etc/mysql/my.cnf,有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...
用鸿蒙HarmonyOS5实现中国象棋小游戏的过程
下面是一个基于鸿蒙OS (HarmonyOS) 的中国象棋小游戏的实现代码。这个实现使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chinesechess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├──…...
WEB3全栈开发——面试专业技能点P7前端与链上集成
一、Next.js技术栈 ✅ 概念介绍 Next.js 是一个基于 React 的 服务端渲染(SSR)与静态网站生成(SSG) 框架,由 Vercel 开发。它简化了构建生产级 React 应用的过程,并内置了很多特性: ✅ 文件系…...

Java后端检查空条件查询
通过抛出运行异常:throw new RuntimeException("请输入查询条件!");BranchWarehouseServiceImpl.java // 查询试剂交易(入库/出库)记录Overridepublic List<BranchWarehouseTransactions> queryForReagent(Branch…...

STM32标准库-ADC数模转换器
文章目录 一、ADC1.1简介1. 2逐次逼近型ADC1.3ADC框图1.4ADC基本结构1.4.1 信号 “上车点”:输入模块(GPIO、温度、V_REFINT)1.4.2 信号 “调度站”:多路开关1.4.3 信号 “加工厂”:ADC 转换器(规则组 注入…...
数据库正常,但后端收不到数据原因及解决
从代码和日志来看,后端SQL查询确实返回了数据,但最终user对象却为null。这表明查询结果没有正确映射到User对象上。 在前后端分离,并且ai辅助开发的时候,很容易出现前后端变量名不一致情况,还不报错,只是单…...
Yii2项目自动向GitLab上报Bug
Yii2 项目自动上报Bug 原理 yii2在程序报错时, 会执行指定action, 通过重写ErrorAction, 实现Bug自动提交至GitLab的issue 步骤 配置SiteController中的actions方法 public function actions(){return [error > [class > app\helpers\web\ErrorAction,],];}重写Error…...