# shop-cloud **Repository Path**: nieps/shop-cloud ## Basic Information - **Project Name**: shop-cloud - **Description**: 分布式电商 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-04-10 - **Last Updated**: 2025-04-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 分布式项目 服务拆分: * 订单服务 ----订单、订单明细 、生成商户平台订单 +mq () * 支付服务 * 产品服务 商品库存相关信息 * 购物车服务 用redis实现 * 搜索服务 es +cannl * 会员服务 --- 会员服务 * ..... 多租户: ## 电商 * spu sku > ## **SKU和SPU的关系:** > > SKU是[Stock Keeping Unit](https://zhida.zhihu.com/search?content_id=240826430&content_type=Article&match_order=1&q=Stock+Keeping+Unit&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3NDQ0NDg4NzksInEiOiJTdG9jayBLZWVwaW5nIFVuaXQiLCJ6aGlkYV9zb3VyY2UiOiJlbnRpdHkiLCJjb250ZW50X2lkIjoyNDA4MjY0MzAsImNvbnRlbnRfdHlwZSI6IkFydGljbGUiLCJtYXRjaF9vcmRlciI6MSwiemRfdG9rZW4iOm51bGx9.fqoiAorV7_5s98JyNj1tzD4B9D5btIQgSgNC7mVmKGs&zhida_source=entity)的缩写。它作为计量库存进出的一个基本单位,是商品的具体实例,每个SKU都代表了**一个独特的商品**,具有唯一的编码。SKU描述了商品的所有属性,例如品牌、型号、颜色、尺码等,这有助于商家进行商品的管理和跟踪。 > > SPU是[Standard Product Unit](https://zhida.zhihu.com/search?content_id=240826430&content_type=Article&match_order=1&q=Standard+Product+Unit&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3NDQ0NDg4NzksInEiOiJTdGFuZGFyZCBQcm9kdWN0IFVuaXQiLCJ6aGlkYV9zb3VyY2UiOiJlbnRpdHkiLCJjb250ZW50X2lkIjoyNDA4MjY0MzAsImNvbnRlbnRfdHlwZSI6IkFydGljbGUiLCJtYXRjaF9vcmRlciI6MSwiemRfdG9rZW4iOm51bGx9.JS9aq9tRSbdSjz3pCpdN_DLfSR-a1mlzATVi2JJ1yFc&zhida_source=entity)的缩写,它代表了一组具有**相同基本属性**的商品集合。一个SPU可以包含多个SKU,SKU是SPU的具体化。 * 秒杀 超卖 * 订单未支付 自动取消 ## 文件存储 [minio](https://minio.org.cn/docs/minio/container/index.html) ## 电商术语 ### SPU - **全称**:Standard Product Unit(标准化产品单元)。 - **含义**:是商品信息聚合的最小单位,是一组可复用、易检索的标准化信息的集合,该集合描述了一个产品的特性。通俗来讲,SPU 是一个抽象的概念,比如苹果 iPhone 14 256GB 蓝色手机,这就是一个 SPU,它包含了该款手机的品牌、型号、存储容量、颜色等关键属性信息,这些信息可以用来区分不同的产品种类。 ### SKU - **全称**:Stock Keeping Unit(库存保有单位)。 - **含义**:是指库存进出计量的基本单元,可以是以件、盒、托盘等为单位。SKU 是电商运营中最小的库存管理单位,每个 SKU 都有唯一的编码,对应着实际库存中的具体商品。例如,在上述苹果 iPhone 14 256GB 蓝色手机的例子中,每一部具体的手机都有其唯一的 SKU 编码,通过这个编码可以准确地管理库存、跟踪销售情况等。 ### 订单超时未支付 - **含义**:指顾客在电商平台上下单后,在规定的时间内没有完成支付操作。不同的电商平台对于订单超时未支付的时间规定可能不同,一般为 30 分钟到 24 小时不等。当订单超时未支付时,系统会自动取消订单,以释放库存,避免因顾客长时间未支付而导致商品库存被占用,影响其他顾客的购买。 ### 超卖 - **含义**:是指电商平台上商品的实际销售数量超过了库存数量。这种情况通常是由于系统故障、库存同步不及时、并发操作等原因导致的。例如,多个顾客同时购买同一款商品,而系统在处理订单时没有及时更新库存,导致商品被多次销售,最终出现超卖现象。超卖可能会给电商企业带来一系列问题,如无法按时发货、顾客投诉、品牌形象受损等。 ### GMV(Gross Merchandise Volume) - **含义**:商品交易总额,是衡量电商平台业务规模的重要指标,包括已付款和未付款的订单金额,涵盖了所有商品的销售额,无论这些商品是否最终完成交易。 - **示例**:一个电商平台在一个月内,所有用户下单的商品金额总计为 1000 万元,那么这个月该平台的 GMV 就是 1000 万元,其中可能包含部分用户未支付或后续退款的订单金额。 ### UV(Unique Visitor) - **含义**:独立访客数,指在一定时间内访问电商网站或应用的不同用户数量,通常以一天为统计周期,同一用户在一天内多次访问只计为一个 UV。 - **示例**:某电商平台一天内有 10 万个不同的用户访问了网站,那么当天的 UV 就是 10 万。 ### PV(Page View) - **含义**:页面浏览量,指用户在电商平台上浏览的页面数量,每打开一个页面就会记录一次 PV,用户多次刷新或访问同一页面会使 PV 累计增加。 - **示例**:一个用户在电商平台上浏览了 5 个商品详情页、3 个分类页面和 2 个购物车页面,那么这个用户的 PV 就是 10。如果当天有 1000 个用户访问平台,他们浏览的页面总数为 10000,那么当天平台的 PV 就是 10000。 ### 转化率 - **含义**:指在一定时间内,完成特定目标(如购买、注册、加入购物车等)的用户数量与总访问用户数量的比率。常见的转化率有下单转化率、支付转化率等。 - **示例**:假设一天内有 1000 个用户访问了电商平台,其中有 100 个用户下了订单,那么下单转化率就是(100÷1000)×100% = 10%。如果这 100 个下单用户中有 80 个完成了支付,那么支付转化率就是(80÷100)×100% = 80%。 ### 客单价 - **含义**:平均每个顾客在一次购物中花费的金额,计算方法是总销售额除以订单数量。 - **示例**:某电商店铺一天的总销售额为 10000 元,共产生了 100 个订单,那么客单价就是 10000÷100 = 100 元。 ### 复购率 - **含义**:指在一定时间内,重复购买商品的顾客数量与总顾客数量的比率,体现了顾客对商品或品牌的忠诚度和满意度。 - **示例**:一个月内,某电商平台共有 1000 个顾客购买了商品,其中有 200 个顾客在该月内再次购买了商品,那么复购率就是(200÷1000)×100% = 20%。 ### RFM 模型 - **含义**:是一种通过客户的近期购买行为(Recency)、购买频率(Frequency)和购买金额(Monetary)三个维度来衡量客户价值和客户创利能力的模型。通过对这三个维度的分析,将客户分为不同的类别,以便企业采取相应的营销策略。 - **示例**:近期购买行为较近、购买频率较高、购买金额较大的客户通常被视为高价值客户,企业可以对这类客户提供更优质的服务和个性化的营销活动,以保持他们的忠诚度和消费频次。 ### SEO(Search Engine Optimization) - **含义**:搜索引擎优化,指通过优化电商网站的内容、结构和代码等,提高网站在搜索引擎结果页面中的排名,从而增加自然流量。 - **示例**:电商企业通过优化商品标题、描述、关键词等元素,使自己的商品页面在用户搜索相关关键词时能够更靠前地展示在搜索结果中,提高被用户点击和购买的机会。 ### SEM(Search Engine Marketing) - **含义**:搜索引擎营销,是一种通过向搜索引擎付费来提高网站在搜索结果页面中的曝光度和流量的营销方式,主要包括搜索引擎广告等形式。 - **示例**:电商商家在搜索引擎上投放关键词广告,当用户搜索特定关键词时,商家的广告会展示在搜索结果页面的显著位置,用户点击广告进入商家的电商网站,商家需要为此支付一定的费用。 ### CPC(Cost Per Click) - **含义**:每次点击成本,是一种广告计费模式,即广告主按照用户点击广告的次数来支付费用。 - **示例**:某电商平台的广告投放采用 CPC 模式,广告主设定每个点击的价格为 1 元,当用户点击广告 100 次时,广告主需要支付 100 元的广告费用。 ### CPM(Cost Per Mille) - **含义**:每千次展示成本,是一种按照广告展示次数来计费的模式,通常以每千次展示为单位计算费用。 - **示例**:广告主与电商平台约定 CPM 价格为 10 元,那么当广告展示次数达到 1000 次时,广告主需要支付 10 元。如果广告在一段时间内展示了 10000 次,广告主则需支付 100 元。 ### CRM(Customer Relationship Management) - **含义**:客户关系管理,是指电商企业通过收集、分析客户信息,建立和维护与客户之间的良好关系,以提高客户满意度和忠诚度,促进客户重复购买和推荐新客户的一种管理理念和技术手段。 - **示例**:电商企业通过 CRM 系统记录客户的购买历史、偏好、投诉反馈等信息,根据这些信息对客户进行分类和个性化营销,如向老客户发送专属的优惠券、生日祝福等,以增强客户与企业之间的联系和互动。 ### CPS(Cost Per Sale) - **含义**:按销售付费,是一种广告计费模式。广告主根据广告带来的实际销售业绩向广告发布者支付费用,只有当用户通过广告链接完成购买等特定转化行为后,广告主才需要支付相应的广告费用。 - **示例**:某电商与广告联盟合作,采用 CPS 模式推广商品。联盟中的推广者帮助电商推广商品,当有用户通过推广者的链接购买了商品,电商按照商品销售额的一定比例(如 10%)给推广者支付佣金。 ### ROI(Return on Investment) - **含义**:投资回报率,用于衡量电商运营中各项投资活动的收益情况。通过计算投入成本与获得收益之间的比率,来评估投资是否值得,是判断电商运营策略是否有效的重要指标之一。 - **示例**:某电商店铺投入 10 万元用于广告推广,通过该推广活动带来了 50 万元的额外销售额,假设毛利率为 30%,则毛利为 50×30% = 15 万元。ROI = (15 - 10)÷10×100% = 50%,这意味着每投入 1 元能获得 0.5 元的利润回报。 ### 展现量 - **含义**:指商品或广告在电商平台上展示的次数。无论用户是否点击查看,只要商品或广告出现在用户的浏览页面中,就被计为一次展现。它是衡量商品或广告曝光程度的指标。 - **示例**:某商品在搜索结果页面、推荐位等位置一天内被展示了 1000 次,那么该商品当天的展现量就是 1000。 ### 跳失率 - **含义**:指用户进入电商网站或页面后,仅浏览了一个页面就离开的访问次数占总访问次数的比例。跳失率高通常说明页面内容或用户体验存在问题,未能吸引用户进一步浏览或操作。 - **示例**:一天内有 1000 个用户访问了电商平台的某个商品详情页,其中有 300 个用户只看了这一个页面就离开了,那么该页面的跳失率就是(300÷1000)×100% = 30%。 ### 停留时长 - **含义**:用户在电商平台的某个页面或整个网站上停留的时间长度。通过分析停留时长,可以了解用户对页面内容的兴趣程度和参与度,以及平台的用户体验是否良好。 - **示例**:用户 A 在某电商平台上浏览商品详情页用了 5 分钟,在购物车页面停留了 2 分钟,在结算页面停留了 3 分钟,那么用户 A 在该平台上的总停留时长就是 10 分钟。 ### 关联销售 - **含义**:也叫搭配销售,是指电商企业根据商品之间的关联性,将不同商品组合在一起进行销售,以提高顾客的购买金额和客单价。通常是将互补品或相关产品进行搭配推荐。 - **示例**:在销售手机时,同时推荐手机壳、耳机、充电器等相关配件,引导顾客一起购买。 ### 店铺权重 - **含义**:是电商平台根据店铺的各种数据和表现,如店铺的信誉、商品质量、服务水平、销售额、转化率等,综合评估得出的一个数值,用于衡量店铺在平台上的相对重要性和搜索排名的竞争力。 - **示例**:店铺权重高的店铺,在用户搜索相关商品时,其商品更有可能排在搜索结果的前列,获得更多的曝光和流量。 ### 关键词权重 - **含义**:指在电商平台的搜索算法中,每个关键词对于商品或店铺搜索排名的影响力。关键词权重越高,商品在用户搜索该关键词时的排名就越靠前。 - **示例**:如果 “运动鞋男” 这个关键词在某电商平台上对于某店铺的商品有较高的权重,那么当用户搜索 “运动鞋男” 时,该店铺中相关商品就更容易出现在搜索结果的前面。 ### 活动坑位 - **含义**:指电商平台举办促销活动时,在活动页面中为商品或店铺预留的展示位置。这些位置通常具有较高的曝光度,能够吸引更多用户的关注,是电商运营中争夺的重要资源。 - **示例**:在 “双 11” 促销活动中,电商平台会在活动首页设置不同的坑位,如轮播图坑位、热门推荐坑位等,商家通过报名和平台审核后,将自己的商品展示在这些坑位上,以获得更多的流量和销售机会。 ### SKU 动销率 - **含义**:指在一定时间内,有销售记录的 SKU 数量与总 SKU 数量的比率。它反映了库存商品的销售情况和流转速度,是评估电商库存管理效率的重要指标。 - **示例**:某电商店铺共有 1000 个 SKU 的商品,一个月内有 800 个 SKU 的商品有销售记录,则该店铺这个月的 SKU 动销率为(800÷1000)×100% = 80%。 ### 库存周转率 - **含义**:反映了电商企业库存商品的周转速度,是衡量库存管理水平的重要指标。它通过计算一定时期内库存商品的销售成本与平均库存余额的比率来得出。 - **示例**:某电商企业一年的销售成本为 1000 万元,平均库存余额为 200 万元,则库存周转率 = 1000÷200 = 5 次。这意味着该企业的库存商品在一年内平均周转了 5 次。 ### 品牌调性 - **含义**:指品牌在消费者心目中所呈现出的独特风格、形象和气质,包括品牌的价值观、文化内涵、设计风格、传播语气等方面,是品牌区别于其他竞争对手的重要特征,有助于塑造品牌的独特性和消费者的认同感。 - **示例**:苹果公司的品牌调性以简洁、高端、创新为主,其产品设计、广告宣传、门店装修等都围绕着这一调性展开,让消费者一提到苹果就会联想到高品质、时尚和科技感。在电商运营中,品牌调性需要通过店铺页面设计、商品展示、客服沟通等各个环节来体现和强化。 ## 电商行业常用的数据分析指标 ### 用户指标 - **活跃用户数**:指在一定时间内(如日、周、月)登录或使用电商平台的用户数量,反映平台的用户活跃度和粘性。 - **新用户数**:一定时期内新注册或首次使用电商平台的用户数量,体现平台的用户增长能力。 - **用户留存率**:包括次日留存率、7 日留存率、30 日留存率等,即某一时间段内继续使用平台的用户数与初始用户数的比率,衡量用户对平台的忠诚度和满意度。 ### 流量指标 - **PV(页面浏览量)**:用户在平台上浏览的页面总数,可了解用户对平台内容的兴趣程度和平台的内容吸引力。 - **UV(独立访客数)**:一定时间内访问平台的不同用户数量,用于评估平台的流量规模和受众覆盖范围。 - **平均访问深度**:用户平均每次访问平台浏览的页面数量,反映用户对平台的参与度和内容的丰富度。 ### 销售指标 - **GMV(商品交易总额)**:平台上所有商品的成交金额总和,是衡量电商平台规模和业务量的关键指标。 - **销售额**:实际完成支付的订单金额,体现平台的实际销售业绩。 - **客单价**:每个顾客在一次购物中平均花费的金额,反映顾客的购买能力和平台的商品定价策略、营销组合效果。 ### 转化率指标 - **购买转化率**:完成购买的用户数量与总访问用户数量的比率,是衡量电商运营效果和营销活动成效的关键指标之一。 - **加购转化率**:将商品加入购物车的用户数量与总访问用户数量的比率,反映商品对用户的吸引力和购物车功能的易用性。 - **支付转化率**:完成支付的订单数量与已加购或已下单订单数量的比率,可分析支付流程的优化空间和用户在支付环节的流失原因。 ### 营销指标 - **CPC(每次点击成本)**:广告主按照用户点击广告的次数向广告平台支付的费用,用于评估广告投放的成本效益。 - **CTR(点击率)**:广告或链接被用户点击的次数与展示次数的比率,反映广告或链接的吸引力。 - **ROI(投资回报率)**:用于衡量营销活动的投资收益情况,计算公式为(收益 - 成本)/ 成本 ×100%,体现营销活动的盈利能力。 ### 商品指标 - **商品库存周转率**:一定时间内商品库存的周转次数,反映商品的销售速度和库存管理效率。 - **商品动销率**:有销售记录的商品数量与总商品数量的比率,可了解商品的销售情况和受欢迎程度,帮助优化商品品类和库存结构。 - **商品退货率**:退回商品的数量或金额与销售商品的数量或金额的比率,有助于分析商品质量、描述准确性以及客户服务等方面的问题。 ## 微信支付 [参考](https://pay.weixin.qq.com/doc/v3/merchant/4012076498) 下载demo ![image-20250411113541513](assets/image-20250411113541513.png) ## 设计模式 ### 创建型模式 - **单例模式**:确保一个类只有一个实例,并提供全局访问点。像配置管理类,整个系统只需一个实例来统一管理配置信息;Windows 系统的任务管理器也是单例,避免多个实例造成资源冲突。 - **工厂方法模式**:定义创建对象的接口,让子类决定实例化哪个类。适用于创建对象逻辑复杂的场景,比如游戏开发中,根据不同关卡需求,用工厂方法创建不同类型的敌人。 - **抽象工厂模式**:提供创建一系列相关对象的接口,无需指定具体类。常用于创建具有多个相关部分的对象族,如不同操作系统下的界面组件,使用抽象工厂可创建出适合该系统的按钮、文本框等。 - **建造者模式**:将复杂对象的构建与表示分离,同一构建过程可创建不同表示。比如构建电脑,可根据不同配置需求(如高性能、低功耗),使用建造者模式逐步构建电脑的各个组件。 - **原型模式**:通过复制现有对象创建新对象。在图形编辑软件中,复制图形元素时,使用原型模式能快速得到新的图形实例。 ### 结构型模式 - **代理模式**:为其他对象提供代理以控制访问。远程代理可用于访问远程服务器资源;虚拟代理能在加载大资源时,先显示占位信息,等资源加载完成再替换。 - **适配器模式**:将一个类的接口转换成客户期望的另一个接口,使不兼容的类能协同工作。比如系统中使用第三方库,但库接口与现有系统不匹配,可用适配器模式进行转换。 - **桥接模式**:将抽象部分与实现部分分离,使它们可独立变化。在图形绘制系统中,图形的抽象概念(圆形、矩形)和具体绘制实现(不同平台绘制)可通过桥接模式分离,便于扩展。 - **装饰器模式**:动态给对象添加额外职责。在 Java 的输入输出流中,可通过装饰器模式为流对象添加缓冲、加密等功能。 - **外观模式**:为子系统的一组接口提供统一界面,简化子系统使用。比如整合多个第三方服务时,用外观模式提供一个简单的高层接口给外部调用。 - **享元模式**:运用共享技术支持大量细粒度对象。如文本编辑器中,字母、数字等字符可共享同一对象实例,节省内存。 - **组合模式**:将对象组合成树形结构表示 “部分 - 整体” 层次,统一处理单个和组合对象。文件系统中,文件和文件夹构成树形结构,可统一进行操作。 ### 行为型模式 - **策略模式**:定义一系列算法并封装,可相互替换。电商系统中,根据不同促销活动(满减、折扣),使用不同的价格计算策略。 - **模板方法模式**:定义算法骨架,部分步骤延迟到子类实现。在制作饮品时,煮水、冲泡等步骤有固定流程,但具体冲泡的饮品(咖啡、茶)可在子类中实现。 - **观察者模式**:对象间存在一对多依赖,一个对象状态改变时通知依赖对象更新。股票交易系统中,股票价格变化时,通知所有关注该股票的投资者。 - **迭代器模式**:提供顺序访问聚合对象元素的方法,不暴露内部表示。遍历数组、链表等集合时,使用迭代器可方便地访问元素。 - **责任链模式**:多个对象依次处理请求,避免请求发送者和接收者耦合。请假审批流程中,请求依次经过不同领导审批,直到有领导处理。 - **命令模式**:将请求封装为对象,可对请求进行参数化、排队、记录日志和撤销操作。文本编辑器的撤销和重做功能,可将每个编辑操作封装成命令对象。 - **备忘录模式**:在不破坏封装性的前提下,保存和恢复对象状态。游戏中的存档功能,可保存游戏角色当前状态,后续恢复。 - **状态模式**:对象根据内部状态改变行为。电梯系统根据运行状态(上升、下降、停止)执行不同操作。 - **访问者模式**:在不改变对象类的前提下,对对象元素定义新操作。对不同类型图形组成的集合,可使用不同访问者实现计算面积、周长等操作。 - **中介者模式**:用中介对象封装对象间交互,降低耦合。多人聊天系统中,中介者负责管理用户间消息传递,避免用户直接复杂交互。 - **解释器模式**:定义语言文法表示和解释器,解释语言中的句子。解析数学表达式、配置文件等场景可使用解释器模式。 ## 购物车 实现方式: * 前端实现 购物信息存储到终端 > 优点: 快速 本地存储 > > 缺点: 如果清理了本地缓存 ,购物车信息丢失 ; 如果是多系终端的情况,购物车信息无法同步 * 服务端实现 信息存储到服务器端 > 优点: 多终端同步, 记录用户行为 数据分析 推送商品。。。 * 加入购物车 > 用redis实现:购物车如何存储? > > List : > > 基本的逻辑:如何区分不同用户的购物车?redis中的key使用userId相关 。。 > > 商品A: ----查看购物车list中是否存在商品A ,如果存在直接修改数量 ,不存在则加入list.add() > > 使用hash key field value 存储 > > 同一个商品: > > 1. 商品名称 图片地址 规格 价格 数量 商品id 是否购买默认为true * 查看购物车 * 选中、反选的功能 * 更改商品数量 加入购物车: * 只传递 用户id 商品id 数量 -------节省内存 ,可以存储更多用户的购物车信息 > 优点:简单 > > 缺点: > > 1. 无法记录用户是否购买的状态 > 2. 查看购物车时 需要遍历查看商品信息 * 传递 用户id 商品id 数量 商品名称 图片 价格 是否选 中.... ## 定时任务 每天凌晨1点,扫描redis内存,找到所有的购物车信息,将购物车信息持久到数据库中,同时将购物车信息从redis中移除。 SpringTask ![image-20250417141208230](assets/image-20250417141208230.png) ## 订单 * 保存订单 订单明细 收货地址 (主要)30ms > 微信支付: 生成微信商户平台订单 ----返回交易标识 (记录到我们的本地订单里),用于支付使用 * 更新库存------锁定库存 15ms (异步处理) * 更新会员积分-----(异步处理) * 更新优惠券状态 * 清除购物车.....