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

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

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

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

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

故地有明月, 何慕异乡圆.
wenber
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 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年前 评论

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