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

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

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

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

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

故地有明月, 何慕异乡圆.
wenber
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《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年前 评论

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