请教下大家, 关于商品生成sku的问题

1. 一个商品的基本销售属性

请教下大家, 关于商品生成sku的问题
在将该商品的所有规格及规格值创建完毕后, 得到如下图:

请教下大家, 关于商品生成sku的问题

这时, 分别选中了性别,类型这两规格, 生成sku的笛卡积. 但是这样会导致一些原本不存在的规格组合的产生.
例如性别这个规格, 规格值为儿童时, 是没有类型规格中的升级规格值的. 以些类推, 为了兼顾所有, 生成了所有规格及规格值的笛卡积后, 会增加太多的原本商品销售属性不存在的规格组合.
原本想的是, 生成后, 再依次将生成的所有组合中不存在的依次禁用, 但是太多了, 感觉这种方式不适合.
来请教下大家, 在这种业务场景中是如何生成正确的sku的.

故地有明月, 何慕异乡圆.
wenber
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 10

照你的想法,在添加规格的时候配置来限制,选中的时候根据规格限制来生成数据

2年前 评论

file 我是类似这种让商家自己填写规格值,规格名关联商品。这样就可以填写需要的规格就可以了。不会存在无效规格信息

2年前 评论

可以考虑设计一个筛选器,一次性禁用符合条件的 SKU

2年前 评论
IceBay (作者) 2年前
wenber (楼主) 2年前

你这种情况应该让用户自己添加的。设计web页面,让用户自己选择,用户选什么就生成什么。不建议自己去生成sku,因为会有无效的。

2年前 评论
wenber (楼主) 2年前
yyy123456 (作者) 2年前
Buffett-Cai

个人建议先设置可以组合的属性【type】(比如 {"id":1,"name":"尺码"}{"id":2,"name":"颜色"}),
然后再围绕这个属性把可用值【type_value】记录下来(比如:
{"id":1,"type_id":1,"name":"L"} {"id":2,"type_id":1,"name":"M"}
{"id":3,"type_id":2,"name":"原谅绿"} {"id":2,"type_id":4,"name":"猛男粉"}
把【type_value】的数据筛选出来,然后在前端组合一遍,把组合出来的所有适用的值已表格的形式呈现出来,旁边加个删除按钮,用户不需要的组合就让他自己点击去掉(在前端剔除),提交的时候拼出一个sku名称,比如: [{"sku_name":"L-原谅绿","sku_index":"1-3"}, {"sku_name":"L-猛男粉","sku_index":"TYPE_VALUE_ID-TYPE_VALUE_ID"},{"sku_name":"M-猛男粉","sku_index":"M这个值的ID-猛男粉这个值的ID"}]
{"sku_index":"M这个值的ID-猛男粉这个值的ID"}这里只是我的举例,实际你可以根据实际需求整一个index出来,其他端使用的时候按同样的规则拼出这个index就可以快速匹配这个SKU(如果没有就是没有)。 把它存到sku表里就得到了
{"sku_id":1, "sku_name":"L-原谅绿","sku_index":"1-3"}
{"sku_id":2, "sku_name":"L-猛男粉","sku_index":"1-4"}
{"sku_id":3, "sku_name":"M-猛男粉","sku_index":"2-4"}
其他端需要用的时候,数据的格式{"type":[{},{}],"example1":[{},{}],"example2":{"index1":{},"index2":{}}}比如:

{
    "type": [
        {
            "id": 1,
            "name": "尺码",
            "values": [
                {
                    "id": 1,
                    "name": "L"
                },
                {
                    "id": 2,
                    "name": "M"
                }
            ]
        },
        {
            "id": 2,
            "name": "颜色",
            "values": [
                {
                    "id": 3,
                    "name": "原谅绿"
                },
                {
                    "id": 4,
                    "name": "猛男粉"
                }
            ]
        }
    ],
    "example1": [
        {
            "sku_id": 1,
            "sku_name": "L-原谅绿",
            "sku_index": "1-3",
            "available_num": 100
        },
        {
            "sku_id": 2,
            "sku_name": "L-猛男粉",
            "sku_index": "1-4",
            "available_num": 200
        },
        {
            "sku_id": 3,
            "sku_name": "M-猛男粉",
            "sku_index": "2-4",
            "available_num": 167
        }
    ],
    "example2": {
        "1-4": {
            "sku_id": 2,
            "sku_name": "L-猛男粉",
            "available_num": 100
        },
        "1-3": {
            "sku_id": 1,
            "sku_name": "L-原谅绿",
            "available_num": 200
        },
        "2-4": {
            "sku_id": 3,
            "sku_name": "M-猛男粉",
            "available_num": 167
        }
    }
}
2年前 评论

习惯性每次都 delete 掉然后新建。

订单一定要存有商品的快照信息。

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!