乐优商城第九天,第十天,(商品规格参数模版的新增,商品的新增)

匿名 (未验证) 提交于 2019-12-03 00:22:01

乐优商城第9,10两天,商品的新增,是整个后台系统最难的地方,尤其是前端页面,这里把中心放在后端代码和业务逻辑上


spu是一种商品的总称,比如小米8

商品的新增涉及4张表,spu,spudetail,sku,store

其实就是两张表spu和sku,但是spudetail数据量太为庞大,而且不常用,我们采取了垂直拆分的方式,而sku的库存,因为要经常读写,所以我们这里单独拆出了一张表stoke,为了读写分离。

我们想一下,商品的规格参数信息数不胜数,我们如何操作,才能够让规格参数更好操作呢,我们来事想到了,每一个分类对应一个模版,因为同一个细分领域的事物,他一般就有相同的属性,所以,我们这里以分类id为id,建立一个模版,一个分类具有一个json格式的模版,这样商品的规格模版问题就完美解决了。


那么,参数模版的问题就被顺利地解决了

我们可以开始商品的新增了

首先,点击页面的新增按钮,会弹出对话框,


此时,我们需要去数据库中查询商品的分类信息,当我们选择完毕之后,我们会根据选择的cid,去查询他对应的品牌的信息

接下来,是sku页面的显示,第一个页面是全局属性,是根据模版中的global来显示的


接下来,就是sku的特殊属性,特殊属性会根据笛卡尔积枢纽工程若干个,我们可以根据需求选择


最后,提交的时候,因为数据量过大,我们以json的格式进行提交


格式如下:

{






































}


这样,spu和sku的数据就齐全了,spu,spudetail,skus(一个sku的集合),这样就全了

下面,我们来到后端代码的书写

首先,我们是post方式提交,而且是json,我们用@ResquestBody来接收

@PostMapping public ResponseEntity<Void> addGoods(@RequestBody GoodsBo goods){     this.goodsService.addGoods(goods);     return ResponseEntity.status(HttpStatus.OK).body(null); }

goods是一个实体类,里面包含了我们要提交的所有数据

public class GoodsBo extends Spu {       private SpuDetail spuDetail;      private List<Sku> skus;

继承自spu,新增spudetail,skus,这样就可以完美接收传过来的数据了,然后就是四个表的数据的新增

,数据的新增很简单,直接亮出代码

public void addGoods(GoodsBo goods) {      //spu     Spu spu = new Spu();     BeanUtils.copyProperties(goods, spu);     long currentTimeMillis = System.currentTimeMillis();     Date date = new Date(currentTimeMillis);      spu.setSaleable(true);     spu.setValid(true);     spu.setCreateTime(date);      spu.setLastUpdateTime(date);     spuMapper.insertSelective(spu);      //spuDetail     SpuDetail spuDetail = goods.getSpuDetail();     spuDetail.setSpuId(spu.getId());     spuDetailMapper.insertSelective(spuDetail);      //skustore     List<Sku> skus = goods.getSkus();      for (Sku sku : skus) {         sku.setSpuId(spu.getId());         sku.setEnable(true);         sku.setCreateTime(date);         sku.setLastUpdateTime(date);          skuMapper.insertSelective(sku);         Stock stock = new Stock();         Long stocks = sku.getStock();          stock.setStock(stocks);         stock.setSkuId(sku.getId());         stockMapper.insertSelective(stock);     }

当然了,这当中,我肯定也遇到了各种问题,其中最叼的一个坑是数据类型的不一致,前端传过来的库存字段stock是一个对象,而我后端接收的是一个基本数据类型,这样导致,我的addGoods方法根本进不来。。。。。。。。这个是最大方的坑,可能以后还会经常遇到吧

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!