edyang

我干了什么 究竟拿了时间换了什么
技术分享时间线软件开发、设备接入、视觉与运维实践

团购网站创业:商家上线先把履约条件说清楚

商家愿意提供优惠,不等于已经具备线上售卖条件。

商家愿意提供优惠,不等于已经具备线上售卖条件。售前确认要覆盖消费者真正会遇到的限制。 本文使用团购业务的虚构订单与关系数据模型,伪代码不连接真实支付。团购把用户购买、平台收款、商家履约与结算连接起来。下单、支付、成团、消费和退款必须保留各自状态,不能用一个布尔字段表达整个生命周期。 1. 从现象推到机制 可用门店、预约要求、不可用时段、套餐包含项与退款条件都影响履约。规则藏在长描述中容...

Java Web 部署:端口、上下文路径和代理地址

服务器能打开 Tomcat 首页,却打不开应用,说明网络入口和应用地址还需要继续区分。

服务器能打开 Tomcat 首页,却打不开应用,说明网络入口和应用地址还需要继续区分。 本文使用Java Web 小项目的演示工程与协作场景。初入团队时,重要的不只是写出功能,还包括让别人能够复现、审查和接手。本文使用匿名任务说明工作方法,不指代某家公司的内部流程或真实交付成绩。 1. 从现象推到机制 主机监听端口决定能否到达容器,Web 上下文决定请求交给哪个应用,控制器映射再决定具...

Java Web 工程:WAR 包要能从干净环境重新构建

开发目录可以运行,打包部署却失败,常常是某些依赖只存在于本机。

开发目录可以运行,打包部署却失败,常常是某些依赖只存在于本机。交付物应该由明确输入生成。 本文使用Java Web 小项目的演示工程与协作场景。初入团队时,重要的不只是写出功能,还包括让别人能够复现、审查和接手。本文使用匿名任务说明工作方法,不指代某家公司的内部流程或真实交付成绩。 1. 从现象推到机制 源码、依赖坐标、构建插件和资源文件共同决定产物。IDE 自动复制的 jar、未提交...

Java Web 工程:一条请求日志应该留下什么

报错只记一句异常信息,无法知道对应哪个请求。

报错只记一句异常信息,无法知道对应哪个请求。日志设计要围绕排查链路,而不是尽可能多打印对象。 本文使用Java Web 小项目的演示工程与协作场景。初入团队时,重要的不只是写出功能,还包括让别人能够复现、审查和接手。本文使用匿名任务说明工作方法,不指代某家公司的内部流程或真实交付成绩。 1. 从现象推到机制 入口生成关联编号,向服务调用和异常处理传递,记录阶段、耗时与结果类别。业务编号...

团购网站设计:券过期与商家结算不要共用一个状态

一张券过期,并不自动说明可以向商家结算。

一张券过期,并不自动说明可以向商家结算。消费资格、退款责任和资金结算是不同维度。 本文使用团购业务的虚构订单与关系数据模型,伪代码不连接真实支付。团购把用户购买、平台收款、商家履约与结算连接起来。下单、支付、成团、消费和退款必须保留各自状态,不能用一个布尔字段表达整个生命周期。 1. 从现象推到机制 券状态表示能否消费,结算状态表示某笔商家应付是否完成。到期任务要按业务时区和规则处理未...

团购网站设计:退款申请不等于资金已退回

用户提交退款后,系统若立即显示已退款,可能把审核、通道处理与到账几个阶段混为一谈。

用户提交退款后,系统若立即显示已退款,可能把审核、通道处理与到账几个阶段混为一谈。 本文使用团购业务的虚构订单与关系数据模型,伪代码不连接真实支付。团购把用户购买、平台收款、商家履约与结算连接起来。下单、支付、成团、消费和退款必须保留各自状态,不能用一个布尔字段表达整个生命周期。 1. 从现象推到机制 退款有自己的业务身份和状态,关联原支付流水与金额上限。多次部分退款的累计值不能超过已...

团购网站设计:消费券核销怎样避免重复使用

消费券二维码只是载体,核销是否成功需要由服务端以同一条券记录裁决。

消费券二维码只是载体,核销是否成功需要由服务端以同一条券记录裁决。 本文使用团购业务的虚构订单与关系数据模型,伪代码不连接真实支付。团购把用户购买、平台收款、商家履约与结算连接起来。下单、支付、成团、消费和退款必须保留各自状态,不能用一个布尔字段表达整个生命周期。 1. 从现象推到机制 券码不应包含可直接信任的余额或核销结果。商家发起核销时,服务器先验证商家与券的适用关系,再执行未使用...

团购网站设计:成团人数与支付状态分别建模

有人提交订单,不代表已经达到成团门槛。

有人提交订单,不代表已经达到成团门槛。成团口径决定人数统计与失败退款。 本文使用团购业务的虚构订单与关系数据模型,伪代码不连接真实支付。团购把用户购买、平台收款、商家履约与结算连接起来。下单、支付、成团、消费和退款必须保留各自状态,不能用一个布尔字段表达整个生命周期。 1. 从现象推到机制 先明确门槛计算支付订单、购买份数还是独立用户。业务到期时应在一致口径下判定,不能让未支付占位无限...

团购网站设计:最后一份库存怎样防止超卖

先查库存大于零再扣减,在并发请求下仍可能卖出超过库存的份数。

先查库存大于零再扣减,在并发请求下仍可能卖出超过库存的份数。判断和修改要落在同一约束中。 本文使用团购业务的虚构订单与关系数据模型,伪代码不连接真实支付。团购把用户购买、平台收款、商家履约与结算连接起来。下单、支付、成团、消费和退款必须保留各自状态,不能用一个布尔字段表达整个生命周期。 1. 从现象推到机制 把库存条件放进数据库更新语句,利用行更新的原子性决定是否成功。受影响行数为零时...

团购网站设计:商品、套餐与成交快照

商家修改套餐内容后,历史订单仍应能说明用户当时买了什么。

商家修改套餐内容后,历史订单仍应能说明用户当时买了什么。商品主数据与成交事实要分开。 本文使用团购业务的虚构订单与关系数据模型,伪代码不连接真实支付。团购把用户购买、平台收款、商家履约与结算连接起来。下单、支付、成团、消费和退款必须保留各自状态,不能用一个布尔字段表达整个生命周期。 1. 从现象推到机制 商品描述当前可售内容,套餐规格决定价格与权益,订单行保存成交时的标题、单价和使用规...