首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

商城订单模块重构实践

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

1.8K30

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

目录 显示勾选商品 添加订单 接口:下订单 ​​​​​​​接口:更新库存 ​​​​​​​下订单分析 ​​​​​​​后端实现: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 =

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

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

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

29640

物流订单模块设计

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

2.2K22

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

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

29110

Java Web 网络商城案例演示十五 订单详情功能(提交订单支付界面)

订单详情功能(提交订单支付界面) 原理分析 步骤实现: 1、准备工作:order_list.jsp当中修改链接 提交当前订单编号 付款 2、OrderServlet —> findOrderByOid 获取订单的oid 调用业务层功能;根据订单编号查询订单信息...oid查询订单下所有的订单项以及订单项关联的商品 @Override public Order findOrderByOid(String oid) throws Exception {...// 根据订单oid查询订单以及对应的订单项,返回订单,其订单包括订单以及订单项的集合 String sql = "select * from orders where oid = ?"...id 查询订单下所有订单项以及所有的订单对应的商品信息 sql = "select * from orderitem o,product p where o.pid=o.pid where and

94520

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

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

1K10

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

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

54020

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 脚本所必须的。

1.4K20
领券