这次我们来写写怎么更新商品信息。

我们上一次写的是如何打开编辑后,显示以前商品参数的回显,回显是有了,但是如果我们要更改参数并且保存的话,那应该怎么做呢?其实这是一个商品参数更新的功能。

我们先看看这里,我们修改了商品的参数,并且点击保存,然后它显示的是保存失败。为什么会保存失败呢?因为我们没有编写对应的更新方法。


可以看到下面浏览器报的错误,下面总共有两个错误,一个是图片的错误(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呢?因为要防止别人去篡改。


最后还有个事务不要忘记了

测试一下,点击保存

商城分析(怎么在修改商品窗口里面进行保存商品信息)相关推荐

  1. Java网络商城项目 SpringBoot+SpringCloud+Vue 网络商城(SSM前后端分离项目)十(商品的规格类型以及参数管理)

    一.商品规格数据结构 商品中都有属性,不同商品,属性往往不同,这一部分数据很重要,我们一起来看看: 1.规格属性内容 (1) 我们看下京东中商品的规格属性︰ -款华为手机的属性: (2)横表和竖表 值 ...

  2. pb 修改数据窗口种指定字段位置_如何在PB数据窗口中修改数据---设置数据窗口的更新属性...

    如何在 PB 数据窗口中修改数据 --- 设置数据窗口的更新属性 数据窗口对象非常强大的原因之一就是能够很容易地修改数据库.当用户修 改了数据窗口中的数据,插入了新的数据行或者删除了数据行以后,只要调 ...

  3. 修改DOS窗口编码格式

    1.打开CMD.exe命令行窗口  2.通过 chcp命令改变代码页,UTF-8的代码页为65001  F:\trash> chcp 65001 执行该操作后,代码页就被变成UTF-8了.但是, ...

  4. 修改ECSHOP后台的商品列表里显示该商品品牌

    如何在在ECSHOP后台的商品列表中也显示商品的品牌". 下面就来最模板讲一下如何来修改.此方法只保证在ECSHOP2.7.2版本下有效,其他版本请参照修改. 第一步: 首先我们来打开程序文 ...

  5. 小红书商城店铺所有商品接口(整店商品API接口)

    小红书商城店铺所有商品接口(整店商品API接口)代码对接如下: 1.公共参数 名称 类型 必须 描述 key String 是 调用key(必须以GET方式拼接在URL中,点击获取请求key和secr ...

  6. 如何修改Win10窗口底色/背景颜色/护眼模式?

    如何修改Win10窗口底色/背景颜色/护眼模式? 1.按下win+r组合键,输入regedit 回车 2.定位到:HKEY_CURRENT_USER\Control Panel\Colors ,找到W ...

  7. 如何修改PyCharm窗口背景颜色?

    如何修改PyCharm窗口背景颜色? 前言 PyCharm是一种Python IDE,它可以提高用户在使用Python语言时的开发效率,它的默认窗口颜色是白色,但有时候我们希望窗口颜色较深一些,这样有 ...

  8. pb 修改数据窗口种指定字段位置_PB数据窗口对象之字段的修改属性

    数据窗口只能修改一个数据表.当数据窗口的数据来源于不止一个数据表时,可以用脚本控制数据窗口的修改属性来对数据表逐个进行修改. 当数据窗口是用来接受用户的手工录入数据时,应该设置两方面的属性才能确保数据 ...

  9. Android通过WindowManager.LayoutParams修改Activity窗口亮度流程

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_38059988/article/ ...

最新文章

  1. Python延迟打印字符
  2. Ubuntu 下安装Beyond Compare 安装解决方案
  3. 信号与系统 chapter2 冲激偶函数与阶跃函数
  4. Groovy新手教程
  5. 【Python 每天进步一点点】昨天把接口自动化测试框架部署在 测试环境 Linux 上,并且加入持续集成 Jenkins...
  6. 5.3(将千克转换成磅)
  7. media encoder中文2022已上线
  8. 信号与系统何子述课后习题_信号与系统高等教育何子述版课后习题答案完整版.ppt...
  9. 【机器人学导论知识点+习题笔记2.1~2.13】(间歇性更新)
  10. 字体推荐——sarasa更纱黑体
  11. 树莓派网易云音乐播放器
  12. Windows 10免费影音制作下载(Windows Movie Maker 2012)
  13. 体系结构笔记------动态调度中的Tomasulo算法
  14. UnsatisfiedDependencyException: Error creating bean with name XXXController'
  15. 【NOIP2010普及组】三国游戏题解
  16. opening registry key Software\Javasoft\Java Runtime Environment
  17. Android混淆篇 small-video-record(ffmpeg)视频压缩框架混淆
  18. 数据库关系运算:自然连接,投影,交,除,并
  19. 做人要厚道,转帖请贴出原帖url
  20. Python可以自学吗?

热门文章

  1. 使用modbus4j通过串口解析modbus协议(java)
  2. Django设置html背景图片失败,出现“GET /images/2.png HTTP/1.1“ 404 2552
  3. BitStorm Lite-国产的 BT 下载客户端
  4. 基于Chebyshev混沌映射的麻雀搜索算法-附代码
  5. I.MX RT1170 PXP 图形加速器
  6. 2022年中国人工智能芯片行业发展现状及发展趋势分析:芯片需求持续增长,发展空间大[图]
  7. 倒谱分析 matlab,倒谱分析
  8. MySQL之索引的使用
  9. 服务器上文件名太长,Git add命令失败,说“文件名太长”
  10. ENScanGo主域名批量提取脚本