商品规格管理

SKU

stock keeping Unit 库存量单位,我更愿意把SK看成stock中S与K的缩写,称为库存最小单位。

SPU

standard product Unit 标准产品单位,包含产品的各种规格参数,称为商品最小单位。

SPU与分类

每个分类都应该有标准的规格模板。所以有这样的关系
在这里插入图片描述

SPU与SKU

  • 事实上,SPU中的规格参数与SKU的参数是有交集的,所以规格参数可以分为
    所有sku共享的规格属性(称为全局属性)
    每个sku不同的规格属性(称为特有属性)
    在这里插入图片描述看上去优点复杂
    这里用json来保存整个规格参数模板,不需要额外的表,一个字符串就够了。
    表结构
CREATE TABLE `tb_specification` (
  `category_id` bigint(20) NOT NULL COMMENT '规格模板所属商品分类id',
  `specifications` varchar(3000) NOT NULL DEFAULT '' COMMENT '规格参数模板,json格式',
  PRIMARY KEY (`category_id`)
) 

在这里插入图片描述specificatons:规格参数模板,json格式
因为规格参数分为很多组,也就是把性能信息和大小信息等分开。

前端展示

用分类树的的组件展示。

分类树组件的基本原理

<template>
  <li>
    <!-- 点击折叠展开 -->
    <div @click="toggle">
      <!-- 显示内容 -->
      {{model.title}}
      <!-- 显示折叠展开的图标,如果没有下级目录的话,则不显示 -->
      <span v-if="isFolder">[{{open?'-':'+'}}]</span>
    </div>
    <!-- 控制是否显示下级目录 -->
    <ul v-show="open" v-if="isFolder">
      <!-- 重点代码,调用自身,实现递归,绑定数据 -->
      <Item v-for="model in model.children" :model="model" :key="model.title"></Item>
    </ul>
  </li>
</template>
<script>
export default {
  name: "Item",
  // 如果想使用此组件,则需要传递的数据
  props: {
    model: {
      type: Object,
      required: true
    }
  },
  data() {
    return {
      // 默认不显示下级目录
      open: false
    };
  },
  computed: {
    // 控制是否有下级目录和显示下级目录
    isFolder() {
      return this.model.children && this.model.children.length;
    }
  },
  methods: {
    // 点击折叠展开的方法
    toggle() {
      if (this.isFolder) {
        this.open = !this.open;
      }
    }
  }
};

如果有下一级目录就显式折叠图标。点击触发事件折叠展开。如果有children则递归调用自己。

后端使用通用mapper

  • 请求参数:商品分类ID
  • 返回结果:将查到的数据直接赋值给specification。

使用通用mapper的CRUD如queryByPrimaryKey就可以。

新增和修改规格参数模板就是把specifications中的内容传到后台进行相应的操作。

删除则是通过判断specifications的长度来决定。长度为0,分组就删除完毕。相应在数据库中根据ID删除。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

万码无虫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值