【开发笔记241211】论“俯瞰”的重要性
2024.12初
我司零工平台,为合作企业客户提供向税地服务商充值的功能,我们内部叫在线分账。我们的在线分账功能,包括充值、分账、提现、通知上账这几个步骤。具体来讲,
- ①充值:充值指的是客户将资金转入到我们为客户开通的银行虚户里。一般有两种途径,一种是客户线下自行转入,一种是通过我司平台提供的B2B网银充值页面来操作。我们系统中这个的充值步骤,指的是后者。对于前者,我们系统会忽略此步骤。
- ②分账:某些合作模式下,我司平台会向客户收取管理费。这时,客户充值的资金,是客户的结算服务费 和 平台管理费 这两者的总和。我们平台依托背后的银行或三方支付通道,会将这笔资金进行分拆,一笔转入税地服务商虚户,一笔转入我司虚户。这个功能,我们称作“分账”。
- ③提现:提现指的是我司平台依托背后的银行或三方支付通道,将税地服务商虚户的资金 提现到 税地服务商的银行账户中。
- ④通知上账:提现完成后,我们会调用税地服务商API,上送客户id和客户的充值金额,通知服务商给客户上账。
在线分账功能在我们的交易中台(zhongtai-trans)里。在zhongtai-trans中,除了在线分账服务以外,还有付款、银行虚户转账等服务。
近期,我司零工平台有一个需求,是通过支付宝通道,为客户在线开通支付宝账户,并完成客户向税地服务商的支付宝账户之间的转账。
支付宝通道的在线开户,我们平台之前已经对接过。本次需求所要对接的,是支付宝的账户转账接口。
这其中,有一个重点是,我们使用的支付宝,只是支付宝账户之间的转账,不涉及从支付宝账户提现到银行账户的操作。就是说,在我们调用支付宝账户转账API完成后,即可通知税地服务商为客户充值上账。对应于我们的分账流程来说,不是②③④,而是②④。
在系统设计讨论中,有开发同学想到了使用zhongtai-trans的银行虚户转账功能,来实现这个需求,虚户转账完成后,触发④通知上账,几个同学也跟着逐步展开更详细设计的讨论。
在现场的我一开始没作声,在他们行将要拍板的时候,我及时发声制止。不能这么做,他们这几个司机,险些让我们正常运转中的系统火车偏离轨道。企业客户的充值,anyway,必然是属于充值功能,因此,自然要按我们的在线分账这块来靠。岂能基于zhongtai-trans的其他功能来实现呢?!
IPSF
IdNameVO
工程的思想
站在工程的角度
一个手续费计算的工具方法,涉及到舍入,然后我定义了一个MoneyRoundingMode的枚举...
Long calculateFee(BigDecimal amount, BigDecimal feeRate, MoneyRoundingMode roundingMode)
你可知道java.math.RoundingMode?如果不知道,说明你对java.math.BigDecimal不太了解,或缺乏琢磨。而倘若你做的是涉及金额计算的支付或结算系统,你还不太了解BigDecimal的一些操作,那你的技术能力就会引起质疑。
如果你对这个enum有印象,那么,请你直接使用java.math.RoundingMode,而无需画蛇添足,定义你的MoneyRoundingMode。
当看到一些不好的代码时,会发现我还算优秀;当看到优秀的代码时,也才意识到持续学习的重要!--buguge
本文来自博客园,转载请注明原文链接:https://www.cnblogs.com/buguge/p/18608293
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· 【全网最全教程】使用最强DeepSeekR1+联网的火山引擎,没有生成长度限制,DeepSeek本体
2021-12-18 (9/9)枚举通用接口&枚举使用规范
2021-12-18 解决maven构建时报错:xxx.jar was cached in the local repository
2021-12-18 SpringBoot日志打印程序执行的SQL语句
2018-12-18 fastjson序列化出现StackOverflowError
2018-12-18 mysql执行update语句受影响行数是0