商城分析(怎么在修改商品窗口里面进行保存商品信息)
这次我们来写写怎么更新商品信息。
我们上一次写的是如何打开编辑后,显示以前商品参数的回显,回显是有了,但是如果我们要更改参数并且保存的话,那应该怎么做呢?其实这是一个商品参数更新的功能。
我们先看看这里,我们修改了商品的参数,并且点击保存,然后它显示的是保存失败。为什么会保存失败呢?因为我们没有编写对应的更新方法。
可以看到下面浏览器报的错误,下面总共有两个错误,一个是图片的错误(jpg),另外一个就是这个保存的错误,他错误在什么地方呢?405参数就是请求失败的意思,我们可以看一下他的请求方式是PUT,而我们之前写的请求方式都是Get或者Post,所以我们要在后端写上Put的请求方式
可以看到这些参数都是它的返回参数。也就是用户修改完这些数据之后传过来的整体数据,你需要有个东西去接收,但是需要什么实体类去接收呢?这个你就要看这里面有什么参数,然后实体类里面有什么参数。但是你要想清楚,就是你保存完这些信息之后,会返回一个什么值,你要去前端那里看,
可以看到前端这里,http里面的方法都是说了向后端传送的方法,然后有个then,这个then就是执行保存成功后要做的方法,他这里只是写返回一个成功或者失败,没有其他返回值,所以我们可以去写后端代码了。
我们可以看到浏览器传过来的参数这里,这些刚好又全部是SpuBo里面的参数,所以我们可以用SpuBo来接收。
看看我们编写的这个方法,为什么要用RequestBody而不是用RquestParam去接收,因为我们接收的是一个json对象,你也可以看到浏览器这么多数值,这些数字值组合成一个类,我们要接收的是这些所有数值组装成的类,所以也是需要用到RequestBody
只要更新和响应成功,我就要返回一个204,所以最终我们只需要返回一个204状态码就可以了,因为他前端那里是用了message.success方法,所以如果我们返回一个204,这也是代表一个成功方法,他就会做出对应的响应,保存失败也是一样的道理。
他这一次更新要涉及到四个的数据表,注意,这四张表是有先后顺序的,因为id层层相扣。
我们更新一次数据涉及到很多方法,为什么这么说呢?因为在一个表单里面,你修改数据的时候可能是新增了一个数据,也有可能是删除了一个数据,也有可能是修改了一个数据,但是如果我们把增删改的方法都添加到后台业务逻辑当中,那这个代码量是相当大,为了方便我们倒不如直接把原来的表删了,然后把数据重新新增上去。如果涉及很多数据表,我们要考虑这些数据表操作的先后顺序,是先操作哪个表,然后再操作哪个表,一般我们的规则就是删除的时候,先删子表,再删主表。新增的时候,先新增主表,再新增子表。
下面我们先从删除开始做起,我们先删除库存表,先来看看这些表的关联数据:
先获取spu的id
才能通过spu的id获取sku的id
然后通过sku的id获取当前数据的stock库存量信息。
虽然传入的spu的id只有一个,但是查出来的sku的id有多个,但是每一个sku的id对应一个库存,所以可以用遍历方法通过每一条sku的id删除库存。
如何通过Spu删除Sku信息呢?我们可以去获取Spu信息然后去删除Sku,
这里解释一下为什么可以通过Spu的id去删除Sku,因为我们在输入表单的时候,
从上面这几张图我们可以看出Spu的生成方式,每一个品牌,商品分类,还有一个Sku列表等等信息生成一个Spu的id,所以我们如果删掉特定一个SpuId对应的所有信息,那么也包括它这个特定的Sku信息,因为在我们的修改编辑的表单窗口中,一个SpuId的所有信息都在表单里面包括Sku列表,所以要更改这个SpuId数据里面的全部信息,删除掉Sku列表也不为过,把新的数据新增上去即可。
我们应该如何去新增Sku这一块呢?
可以看看浏览器,返回的参数,你Sku的数值很多,也是要一个个传进来,所以你需要用遍历方法去传。
所以我们需要用到这个遍历方法,也包括库存,库存也是需要根据Sku的id去新增。但是你可以看到这个方法在其他类里面我们该如何去使用它呢?
我们可以采用提炼的方法,也就是把这个方法单独提炼出来作为一个函数,给他取上函数名,函数名就是这个方法的作用,然后我们再在自己的那里面去使用这个函数。
可以看到这个方法没了,变成了这样,这不就是简洁多了吗?
因为在同一个类里面,所以我们直接用this就可以调用。
最后两个我们就直接进行更新就行了。
可以看到他这个更新方法的介绍,为什么我们不直接把这个更新方法用在更新SKU和库存Store上呢?因为Sku和库存都是列表型的,而我们这个方法只适用于某一条数据,所以不太适合。
但是这里要注意,有些东西是不能更新的,比如创建时间,最后一次更新时间,是否上架,是否有效等等。
所以我们要设置成这样,除了最后一次修改时间能改之外,其他的都要设置为null,为什么要设置为null呢?因为要防止别人去篡改。
最后还有个事务不要忘记了
测试一下,点击保存
商城分析(怎么在修改商品窗口里面进行保存商品信息)相关推荐
- Java网络商城项目 SpringBoot+SpringCloud+Vue 网络商城(SSM前后端分离项目)十(商品的规格类型以及参数管理)
一.商品规格数据结构 商品中都有属性,不同商品,属性往往不同,这一部分数据很重要,我们一起来看看: 1.规格属性内容 (1) 我们看下京东中商品的规格属性︰ -款华为手机的属性: (2)横表和竖表 值 ...
- pb 修改数据窗口种指定字段位置_如何在PB数据窗口中修改数据---设置数据窗口的更新属性...
如何在 PB 数据窗口中修改数据 --- 设置数据窗口的更新属性 数据窗口对象非常强大的原因之一就是能够很容易地修改数据库.当用户修 改了数据窗口中的数据,插入了新的数据行或者删除了数据行以后,只要调 ...
- 修改DOS窗口编码格式
1.打开CMD.exe命令行窗口 2.通过 chcp命令改变代码页,UTF-8的代码页为65001 F:\trash> chcp 65001 执行该操作后,代码页就被变成UTF-8了.但是, ...
- 修改ECSHOP后台的商品列表里显示该商品品牌
如何在在ECSHOP后台的商品列表中也显示商品的品牌". 下面就来最模板讲一下如何来修改.此方法只保证在ECSHOP2.7.2版本下有效,其他版本请参照修改. 第一步: 首先我们来打开程序文 ...
- 小红书商城店铺所有商品接口(整店商品API接口)
小红书商城店铺所有商品接口(整店商品API接口)代码对接如下: 1.公共参数 名称 类型 必须 描述 key String 是 调用key(必须以GET方式拼接在URL中,点击获取请求key和secr ...
- 如何修改Win10窗口底色/背景颜色/护眼模式?
如何修改Win10窗口底色/背景颜色/护眼模式? 1.按下win+r组合键,输入regedit 回车 2.定位到:HKEY_CURRENT_USER\Control Panel\Colors ,找到W ...
- 如何修改PyCharm窗口背景颜色?
如何修改PyCharm窗口背景颜色? 前言 PyCharm是一种Python IDE,它可以提高用户在使用Python语言时的开发效率,它的默认窗口颜色是白色,但有时候我们希望窗口颜色较深一些,这样有 ...
- pb 修改数据窗口种指定字段位置_PB数据窗口对象之字段的修改属性
数据窗口只能修改一个数据表.当数据窗口的数据来源于不止一个数据表时,可以用脚本控制数据窗口的修改属性来对数据表逐个进行修改. 当数据窗口是用来接受用户的手工录入数据时,应该设置两方面的属性才能确保数据 ...
- Android通过WindowManager.LayoutParams修改Activity窗口亮度流程
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_38059988/article/ ...
最新文章
- Python延迟打印字符
- Ubuntu 下安装Beyond Compare 安装解决方案
- 信号与系统 chapter2 冲激偶函数与阶跃函数
- Groovy新手教程
- 【Python 每天进步一点点】昨天把接口自动化测试框架部署在 测试环境 Linux 上,并且加入持续集成 Jenkins...
- 5.3(将千克转换成磅)
- media encoder中文2022已上线
- 信号与系统何子述课后习题_信号与系统高等教育何子述版课后习题答案完整版.ppt...
- 【机器人学导论知识点+习题笔记2.1~2.13】(间歇性更新)
- 字体推荐——sarasa更纱黑体
- 树莓派网易云音乐播放器
- Windows 10免费影音制作下载(Windows Movie Maker 2012)
- 体系结构笔记------动态调度中的Tomasulo算法
- UnsatisfiedDependencyException: Error creating bean with name XXXController'
- 【NOIP2010普及组】三国游戏题解
- opening registry key Software\Javasoft\Java Runtime Environment
- Android混淆篇 small-video-record(ffmpeg)视频压缩框架混淆
- 数据库关系运算:自然连接,投影,交,除,并
- 做人要厚道,转帖请贴出原帖url
- Python可以自学吗?
热门文章
- 使用modbus4j通过串口解析modbus协议(java)
- Django设置html背景图片失败,出现“GET /images/2.png HTTP/1.1“ 404 2552
- BitStorm Lite-国产的 BT 下载客户端
- 基于Chebyshev混沌映射的麻雀搜索算法-附代码
- I.MX RT1170 PXP 图形加速器
- 2022年中国人工智能芯片行业发展现状及发展趋势分析:芯片需求持续增长,发展空间大[图]
- 倒谱分析 matlab,倒谱分析
- MySQL之索引的使用
- 服务器上文件名太长,Git add命令失败,说“文件名太长”
- ENScanGo主域名批量提取脚本