芋道源码/yudao-cloud二次开发日记(商品sku数据归类为规格属性)

商品的每一条规格和属性在数据库里都是单一的一条数据,从数据库里查出来后,该怎么归类为对应的规格和属性值?如下图:

在商城模块,商品的单规格、多规格、单属性、多属性功能可以说是非常完整,如下图:

在多规格设置里,每添加一项属性,规格列表里都会增加一项,每添加一个属性值,规格列表里也会增加一条对应的项。

下图为表格里规格在数据库中的数据,直接存了字符串数据:

从数据库查出来以后得到的是多条数据,想处理为对应的规格和属性也有很多的方式和方法,可以在前端处理也可以在后端处理,本来我想在后端处理的,转换数据的方法前端一个函数是可以直接引入调用的,方法如下:

javascript 复制代码
/**
 * 获得商品的规格列表 - 商品相关的公共函数
 *
 * @param spu
 * @return PropertyAndValues 规格列表
 */
const getPropertyList = (spu: Spu): PropertyAndValues[] => {
  //  直接拿返回的 skus 属性逆向生成出 propertyList
  const properties: PropertyAndValues[] = []
  // 只有是多规格才处理
  if (spu.specType) {
    spu.skus?.forEach((sku) => {
      sku.properties?.forEach(({ propertyId, propertyName, valueId, valueName }) => {
        // 添加属性
        if (!properties?.some((item) => item.id === propertyId)) {
          properties.push({ id: propertyId!, name: propertyName!, values: [] })
        }
        // 添加属性值
        const index = properties?.findIndex((item) => item.id === propertyId)
        if (!properties[index].values?.some((value) => value.id === valueId)) {
          properties[index].values?.push({ id: valueId!, name: valueName! })
        }
      })
    })
  }
  return properties
}

这个函数体的文件目录是在views/mall/product/spu/components/index.ts,直接在需要使用的地方引入调用即可,打印一下。

javascript 复制代码
prodDetail.value.property = getPropertyList(data)
console.log(prodDetail.value.property);

处理过后的数据是这样的。如下图:

在这里已经处理好了,ok,处理完成。
相关推荐
Warren2Lynch几秒前
为什么选择 Flipbook 与 OpenDocs?用户体验分享
人工智能·架构·ux
Chars-D10 分钟前
FFmpeg源码深度剖析:架构、模块与转码流水线
架构·ffmpeg
xmlhcxr30 分钟前
kubernetes(K8s)基础配置及资源使用详解
docker·云原生·eureka·k8s
s1mple“”40 分钟前
大厂Java面试实录:从Spring Boot到AI技术的UGC内容社区场景深度解析
spring boot·redis·微服务·kafka·向量数据库·java面试·ai技术
tianyuanwo43 分钟前
服务器OS多架构CI流水线架构设计:单架构隔离与多架构融合的权衡之道
服务器·ci/cd·架构
尽兴-1 小时前
微服务日志采集与分析系统实战:ELK 架构全解析与落地
elk·微服务·架构·kibana·es·logstash·filebeat
亿牛云爬虫专家1 小时前
AIGC数据引擎的基石:图库抓取架构从单机到云原生的演进与实战
云原生·aigc·爬虫代理·自动化运维·数据抓取·图库·数据引擎
heimeiyingwang1 小时前
【架构实战】热点数据架构:本地缓存+多级缓存
缓存·架构
学嵌入式的小杨同学9 小时前
STM32 进阶封神之路(三十三):W25Q64 任意长度写入深度实战 —— 从页限制到工业级通用读写(附完整代码 + 避坑指南)
stm32·单片机·嵌入式硬件·架构·硬件架构·嵌入式·flash
搜佛说10 小时前
17-第17章-性能测试与基准测试
物联网·微服务·边缘计算·iot·嵌入式实时数据库