前段时间一位贷款中心的朋友跟我聊起一件趣事。一位客户在线申请贷款点击了提交申请。结果页面一直转圈没有任何提示。客户等了几秒钟有点着急。于是又点了一次。还是没有反应。他又连续点了三次。短短十几秒一共点击了 **5 次提交**。客户觉得很正常。 网络不好多点几次总有一次能提交成功吧。如果你是客户可能也会这样做。但对于银行来说如果后台真的把这 5 次点击都当成新的贷款申请那麻烦就大了。---## 真处理 5 次会发生什么假设客户申请的是 30 万元经营贷款。后台如果真的创建了 5 笔申请那么后面的流程都会被触发* 生成 5 条贷款申请记录* 发起 5 次风控审核* 调用 5 次征信接口* 给客户经理推送 5 条待办* 甚至可能生成 5 份合同。本来只是一位客户申请一次贷款。最后却像来了五位客户。真正浪费的不是服务器资源而是整个业务流程的人力成本。---## 可客户真的点了 5 次啊这也是很多业务人员容易疑惑的地方。客户确实点击了 5 次。银行为什么不老老实实处理 5 次原因很简单。**客户点击了 5 次并不代表他真的有 5 个贷款需求。**他真正想表达的只有一句话 **我想申请一笔贷款。**后面的四次点击只是因为他不知道第一次到底有没有成功。---## 银行一般怎么解决很多银行都会采用一个很简单但非常有效的方法。当客户第一次点击提交申请时系统会先生成一个**本次申请的唯一业务标识**。你可以把它理解成这笔贷款申请的身份证。例如text申请编号LOAN-20260705-9F8A73C21D这个编号在整个贷款申请过程中都不会改变。之后无论客户再点击多少次提交页面都会把同一个申请编号一起发送给后台。后台收到请求后第一件事不是重新创建贷款申请而是先检查 **这个申请编号我是不是已经处理过了**如果已经处理过。后台直接返回 您的贷款申请已提交请勿重复操作。整个过程不会再创建新的申请记录。---## 为什么不用身份证号判断有人可能会想到身份证号不是唯一的吗为什么不用身份证号判断重复因为现实业务远比想象复杂。例如同一个客户* 今天申请经营贷* 明天申请消费贷* 下个月再次申请经营贷* 或者第一次申请失败修改资料后重新提交。这些都是正常业务。如果只根据身份证号判断就会把很多合法申请一起拦截掉。所以银行真正判断的是 **是不是同一件业务而不是同一个客户。**---## 技术并不复杂难的是理解业务很多程序员在面试时都会讨论* 数据库唯一索引* Redis 防重复* 分布式锁* 消息队列。这些技术都可以实现。但如果没有理解业务很容易做出技术正确、业务错误的方案。真正的问题其实只有一句话 **客户只想申请一笔贷款系统就应该只受理一笔。**技术只是工具。业务规则才是一切设计的起点。---## 写在最后我越来越觉得银行系统很多看似复杂的设计背后其实都是在解决一个个很普通的问题。今天是贷款申请。明天可能是开户。后天可能是转账。每一个功能背后都有一个真实的业务场景。这个系列我不会讲高深的架构也不会堆砌技术名词。我更希望用真实的银行案例聊聊那些每天都在发生却很少有人解释清楚的系统设计。**因为好的技术从来不是让代码更复杂而是让业务更简单。**