首页
学习
活动
专区
圈层
工具
发布

微商城订单模块重构实践

作者:晓旭 & 茄子 & 时文涛 部门:有赞电商移动组 背景 订单是电商服务的核心场景之一,微商城客户端的订单模块已经服务了商家多年,功能和体验上和 PC 端有一定的差距。...为了弥补不足,提升商家的体验,产品经过一系列数据调研,发起了微商城订单模块的重构项目。 作为“乐于重构”的开发者,在此次重构中以增强代码维护性以及线上稳定性为目的,接受了这次挑战。...微商城移动端的订单列表重构项目,产品的需求、设计、交互、数据结构,相比过去的旧订单列表有很大的差异,如果直接在旧项目上进行修改,会有一些需要考虑的问题: 订单列表是微商城客户端的核心使用场景之一,直接全量发布难以保证线上稳定性...微商城的动态路由配置版本号,跟随客户端版本号 低版本客户端不存在新订单模块,无法支持新路由,未来也可能会存在其它不兼容的新路由;客户端版本号约束所有业务版本,可以保证跨业务的路由的一致性 路由组件自身增加降级处理...这种情况,在微商城客户端是存在的。

2.5K30

【畅购商城】订单模块之显示勾选商品和添加订单

目录 显示勾选商品 添加订单 接口:下订单 ​​​​​​​接口:更新库存 ​​​​​​​下订单分析 ​​​​​​​后端实现:JavaBean​​​​​​​ ​​​​​​​后端实现:更新库存 后端实现:...下订单 ​​​​​​​前端实现 显示勾选商品 步骤一:页面加载成功,查询已经勾选商品 async mounted() { // 查询收获人地址 this.getAddressFn(...​​​​​​​接口:下订单 POST http://localhost:10010/order-service/orders { "address_id": 1, "post_method": "...count=1 ​​​​​​​下订单分析 ​​​​​​​后端实现:JavaBean OrderVo:用于封装请求数据 OrderGoods:订单详情封装对象 Order:订单表封装对象 OrderVo...="addOrderFn">提交订单  步骤三:添加订单操作 async addOrderFn (){ //准备数据 let order =

1.1K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    谷粒商城:订单中心概念解析

    订单模块是电商系统的枢纽,在订单这个环节上需求获取多个模块的数据和信息,同时对这 些信息进行加工处理后流向下个环节,这一系列就构成了订单的信息流通。...用户可以添加 多个收货信息,用户等级信息可以用来和促销系统进行匹配,获取商品折扣,同时用户等级 还可以获取积分的奖励等 2、订单基础信息 订单基础信息是订单流转的核心,其包括订单类型、父/子订单、订单编号...(1)订单类型包括实体商品订单和虚拟订单商品等,这个根据商城商品和服务类型进行区 分。...(3)订单编号不多说了,需要强调的一点是父子订单都需要有订单编号,需要完善的时候 可以对订单编号的每个字段进行统一定义和诠释。...(4)订单状态记录订单每次流转过程,后面会对订单状态进行单独的说明。

    1.3K40

    物流订单模块设计

    当订单金额满足运费上设置的免邮金额,按照店铺运费模式计算, 不满足时,按照单品运费计算。...在实际的物流管理中,除了物流公司管理、配送区域、资费等主要 功能模块,还有地区物流公司管理、重量体积限制等细节。...电商企业在订单推送至WMS(仓库管理系统)后,就为订单锁定了物流单号,出库后将物流信息传送给物流公司,通知其揽件。 目前常见的物流单号来源于如下几种。(1)从菜鸟接口获取。...订单物流发出去了,就涉及给用户反馈物流状态。当订单出库后, 反馈物流单号给客户,并且实时更新物流状态,有时候还会将仓库的操 作状态融入到物流状态中,如下发至仓库、打单、拣货、复核、出库 等。...有了订单的详细配送情况信息,就可以对快递公司的各项KPI指 标进行低成本的量化。

    2.8K22

    (1)订单模块---创建订单和更新订单如何保证幂等

    存储系统最基本的原则是保证数据不能错前言.什么是幂等幂等:系统间多次重复请求,跟第一次请求产生的结果一样,而无其他的影响用户在立即购买点击下单时候,有可能重复点击下单按钮,如果后端根据请求的次数相应的创建多笔订单...,这是系统的bug,实际上用户只是点击一次下单,所以要保证下单接口的幂等性,对于业务订单的支付状态或者物流状态变更都是基于订单表进行的更新update操作,也需要保证幂等性知识点:数据库select update...创建订单 怎么保证幂等性其实就是给每个请求分配唯一的订单号,这个订单号要保证全局唯一,其次需要是递增,能看出下单请求的次序具体就是需要用户在下单前,先请求后台服务获取一个订单号,然后再带着订单号下单,具体后台处理逻辑就是...查询是为了保证不重复插入,如果查询有数据,直接返回给客户端,否则新增注意事项:或者直接新增,如果有报唯一索引冲突,说明之前有过相同的插入记录,此时需要返回客户端的是成功提示,而不是失败,提升用户体验2.订单更新...怎么保证幂等用户立即购买,并且支付后,订单的状态需要更新为支付成功可以直接利用数据库的更新操作保证幂等性,但是具体到业务场景,还需要避免ABA问题,这个时候,需要多加个维度保证数据更新的幂等,答案是维护一个版本号

    1.3K10

    vivo 全球商城:订单中心架构设计与实践

    订单模块是电商系统的交易核心,不断累积的数据即将达到单表存储瓶颈,系统难以支撑新品发布和大促活动期间的流量,服务化改造势在必行。...本文将介绍 vivo 商城 订单系统建设的过程中遇到的问题和解决方案,分享架构设计经验。...二、系统架构 将订单模块从商城拆分出来,独立为订单系统,使用独立的数据库,为商城相关系统提供订单、支付、物流、售后等标准化服务。...那么就可以将新老数据分开存储,将历史订单移入另一张表中,并对代码中的查询模块做一些相应改动,便能有效解决数据量大的问题。...将商城V1应用停机,确保旧库数据不再变化。 执行迁移程序,将第一步未迁移的订单同步到新库并进行稽核。 上线商城V2应用,开始测试验证,如果失败则回退到商城V1应用(新订单系统有双写旧库的开关)。

    1.8K10

    商城运费模板:改规则后历史订单金额怎么保持不变

    一、为什么"改运费模板"会波及历史订单大多数商城系统的运费是"实时计算"的:结算页根据当前生效的运费模板算运费,订单表里只存商品金额。...问题就在这——模板是同一份,规则一变,所有"还没走到运费这一步"的流程都会被影响:待付款订单重新结算时,运费按新规则算,金额跳变;售后/改价重算运费时,用的不是下单时的规则,对不上原订单;对账时"订单金额...改版前按这个清单过一遍:是否确认本次改动只影响"新下单",不影响待付款老订单(老订单用快照则天然隔离);待付款订单的运费是否仍用下单时快照展示,而不是实时重算;售后/整单改价重算运费时,是否以订单 freight_snapshot...A:不会,前提是下单时把生效的模板版本和规则快照整体存进订单。后续重算、售后、对账都读订单快照,与模板当前规则无关,改模板只影响新订单。Q:一单拆成多个包裹,运费怎么算才不出错?...用版本 + 快照把两者切开,改规则只影响新订单,老订单永远对得上账。方案按自身业务取舍即可。

    11010

    【第十八篇】商城系统-订单中心设计解决方案

    订单模块 一、资源整合   我们需要把相关的静态资源拷贝到nginx,然后动态模板文件拷贝到order项目的templates目录下,然后调整资源的路径。在网关中设置对应的路由即可。...三、订单中心   订单中心涉及到的模块 订单的状态: 待付款:提交订单,订单预下单 已付款/待发货:完成支付,订单系统需要记录支付时间,支付流水号便于对账,订单下放到wms系统,仓库进行调拨,配货,分拣...,出库等操作 待收款/已发货:仓库将商品出库,订单进入物流环节 已完成:用户确认收货,订单交易完成,后续支付侧进行结算,如果订单存在问题就进入售后状态 已取消:付款之前取消订单。...一个是需要生成订单信息一个是需要生成订单项信息。...(订单数据和订单项数据)我们就会操作锁库存的行为 锁定库存失败通过抛异常来使订单操作回滚

    1.2K20

    私域直播App开发全流程解析:从需求规划到正式上线

    php/** * 私域直播App需求定义示例 * 仅用于技术演示 */$requirements = [ "直播功能", "商品商城", "会员体系", "订单管理", "...完整的平台通常由多个业务模块组成:用户中心直播中心商品中心订单中心会员中心营销中心数据分析中心管理后台架构示意:PHP_EOL; }}liveFlow();?>这一流程贯穿整个用户转化链路。四、搭建直播间功能模块直播间通常包含多个功能区域。...六、商品商城系统开发直播带货离不开商城系统。商城模块通常包含:商品管理分类管理库存管理订单管理发货管理示例代码:商城系统与直播系统联动后,可以实现边看边买。七、订单中心建设订单中心负责管理所有交易数据。主要功能包括:创建订单支付状态管理发货管理售后管理示例代码:<?

    26410

    用PHP+Redis实现延迟任务 实现自动取消订单,自动完成订单

    需要注意此功能是在redis 2.8版本以后推出的,因此你服务器上的reids最少要是2.8版本以上; 业务场景: 1、当一个业务触发以后需要启动一个定时任务,在指定时间内再去执行一个任务(如自动取消订单...,自动完成订单等功能) 2、redis的keyspace notifications 会在key失效后发送一个事件,监听此事件的的客户端就可以收到通知 服务准备: 1、修改reids配置文件(redis.conf...redis-server --service-stop),再开启(redis-server --service-start) phpredis实现订阅Keyspace notification,可实现自动取消订单...,自动完成订单。.../usr/bin/env php 这是执行 php 脚本所必须的。

    2.3K20

    关于JAVA网上商城系统与PHP商城系统的不同之处

    目前,市场上有很多的网上商城系统,比如JAVA商城系统、ASP.NET商城系统、PHP商城系统等等,面对那么多种语言开发的系统,大家知道它们都有什么不同之处吗?...数商云小编今天就为大家介绍网络市场上的JAVA网上商城系统与PHP商城系统之间的区别所在。 商城系统架构对比 架构是一个商城系统的骨架,不同的语言有不同的架构建立方式。...php采用的是面向过程的开发方法,这就意味着php商城系统只能实现简单的分布式两层或三层的架构,这算是php语言不足的地方;而java使用面向对象的设计方法,JAVA网店系统运用MVC模式设计,实现多层的网络架构...Java网上商城系统的价格 在价格方面,JAVA网上商城系统所需要的费用是比PHP商城系统要高很多的。基本的技术员工资、服务器购买、以及一些维护费用都需要较高的费用。...JAVA商城系统比较适合一些中大型的企业使用。 网上商城系统数据库 数据库是一个网上商城系统不可缺少的部分。php可PHP可编译成具有与许多数据库相连接的函数,可以编写外围函数对数据库进行存取。

    6.6K50
    领券