前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >乐优商数据库表关系

乐优商数据库表关系

作者头像
多凡
发布2019-11-03 13:06:18
8210
发布2019-11-03 13:06:18
举报
文章被收录于专栏:sringboot

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/weixin_44580977/article/details/102840308

这里给大家分析一下乐优商城是如何进行商品的表设计以及后端插入的流程 如有错误,欢迎指正

1.表的结构

1.tb_spu表是存储共同属性的商品集 有外键 brand_id ,category_id (3级别)

2.tb_sku表是存储每个tb_spu表对应商品的几种不同类型,外键是spu_id

3.tb_spec_group表为spu的从表,不同caregory_id有不同的共有属性,外键是category_id

4.tb_spec_params表为tb_spec_group表的从表,通过group_id查找每个主体里面的属性,外键是group_id

5.tb_spu_detail表为tb_spu表内商品对应公共参数值和一些特殊参数值(手机红的,白的)

brand和category 就没必要说了

2.表关系

ps:箭头请勿理会,本表关系,围绕spu商品展开,其余之间关系未标注

3.后端插入商品流程

savegoods 要做的事情

1.插入spu,其内容包括,标题,副标题,三级cid,品牌id,是否上架默认不上架,是否有效,默认有效,添加时间,修改时间

2.插入sup_detail,其内容包括,商品描述(富文本),商品通用规格参数对象,商品特有规格参数集合对象(自定义的颜色内存等),包装清单,售后服务

3.插入sku,具体商品,其内容包括,spu_id,商品标题,商品图片,售价,特有属性的值(便于发给前端),自定义规格(颜色,内容)具体的值(这里对应一个具体的商品),是否有效,添加时间,修改时间

4.插入stock,其内容包括可秒杀库存,秒杀总数量(前两个这暂时用不到),sku_id,库存数量

代码语言:javascript
复制
service 层代码
    /**
     * 新增商品
     * @param spuBo
     */
    @Transactional
    public void saveGoods(SpuBo spuBo) {
        System.out.println(spuBo);
        // 新增spu
        // 设置默认字段
        spuBo.setId(null);
        spuBo.setSaleable(true);
        spuBo.setValid(true);
        spuBo.setCreateTime(new Date());
        spuBo.setLastUpdateTime(spuBo.getCreateTime());
        this.goodsMapper.insertSelective(spuBo);

        // 新增spuDetail
        SpuDetail spuDetail = spuBo.getSpuDetail();
        spuDetail.setSpuId(spuBo.getId());
        spuDetailMapper.insertSelective(spuDetail);

        saveSkuAndStock(spuBo);
    }

    /**
     * Goods增加  增加sku特有属性对应的实际商品和库存
     * @param spuBo
     */
    private void saveSkuAndStock(SpuBo spuBo) {
        spuBo.getSkus().forEach(sku -> {
            // 新增sku
            sku.setSpuId(spuBo.getId());
            sku.setCreateTime(new Date());
            sku.setLastUpdateTime(sku.getCreateTime());
            skuMapper.insertSelective(sku);

            // 新增库存
            Stock stock = new Stock();
            stock.setSkuId(sku.getId());
            stock.setStock(sku.getStock());
            stockMapper.insertSelective(stock);
            System.out.println("请看下面 sku 和 stock");
            System.out.println(sku);
            System.out.println(stock);
        });
    }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/10/31 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.表的结构
  • 2.表关系
  • 3.后端插入商品流程
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档