专栏首页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,库存数量

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);
        });
    }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • linux C++ pthread线程操作入门

    线程操作: 我们要做的1.创建线程 2.线程阻塞 (当线程结束后,主线程才结束) 3.线程返回 (获取线程返回的内容)

    多凡
  • SpringBoot Session管理工具类

    RequestHolder是获取每次请求的HttpServletRequest对象的工具类。

    多凡
  • mybatis动态sql语句

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

    多凡
  • 第三方rec无法挂载内部存储?——小文教你用ADB 推送刷机包(可root可救砖可刷机)

    神无月
  • 硅步提供Franka Emika七自由度机械臂--协作机器人的明星

    自从2016年在汉诺威机器人大赛获得冠军后,Franka Emika这个公司就获得了太多的关注,它的产品,拥有七个自由度的机械手臂Panda,有一个可爱...

    硅步机器人
  • Franka Emika开发支持AI的机器人助手,造价更低且更实用

    机器人助手,有时被称为合作机器人或协作机器人,该领域发展迅速,机器人变得更便宜、更灵活、更安全,可以用于越来越多的日常任务。总部位于慕尼黑的Franka Emi...

    AiTechYun
  • Python – Check if ke

    In Python, you can use the in operator to check if a key exists in a dictionary.

    用户2398817
  • Google用基于Debian的gLinux取代了基于Ubuntu的Goobuntu

    经过五年多的时间在内部使用其内部构建的基于Ubuntu的Goobuntu Linux发行版之后,Google决定用基于Debian Testing的gLinux...

    Debian社区
  • 后优步爱彼迎时代,CBinsights发布50家新独角兽潜力榜单,中国5公司上榜

    价值10亿美元的科技初创企业曾像独角兽一样罕见,但现在它们的数量已足够多,成立时间也足够久。

    大数据文摘
  • iSee:深度学习“摘眼镜”,用集成数据训练神经网络识别抽象物体

    【新智元导读】Saleforce Einstein 的机器学习工程师 Melissa Runfeldt 开发了一款可以摘除眼镜的深度学习应用方法——iSee,效...

    新智元

扫码关注云+社区

领取腾讯云代金券