国内项目国际化后金额处理方案

打印 上一主题 下一主题

主题 877|帖子 877|积分 2633

 目标现状及问题

目标:已有的国内项目,需要部署国际化。需要考虑币种、金额货币精度、多语言、汇率、税等一系列问题。这里主要说的就是其中金额精度的处理。现状:日常国内项目里,界面输入的金额是元,然后数据库存储以及与其他系统交互都是用的分,也是就固定的货币精度系数100。问题:那么国际化项目后,存在不同地方存金额精度不一致问题,同时根据不同币种存储和展示精度系数不一致问题。需提供一个整体解决方案。比如KHR 瑞尔 有的规定最小就是精度为0,那么页面填写100,数据库存储也是100。前置

币种的精度系数有专门的配置系统里配置好的,直接读配置获取系数即可解决方案

根据以上问题,目前发现三个解决方案
方案名描述优缺点改动点
全量修改

  • 提供金额处理方法
  • 所有涉及到金额录入地方,前端入参后都调统一方法处理
  • 所有涉及到金额展示地方,后端返回前端前都调统一方法处理
 
优点:需要处理的金额则直接处理,精细度高。缺点:

  • 前端后端目前涉及金额的地方包括业务逻辑处都需处理,改动量大。
 
拦截器统一处理 

  • 去掉前后端所有金额处理地方,统一在垂直网关里,处理入参和出参。
 
优点:统一处理缺点:

  • 需罗列出哪些金额需要处理,哪些不需要处理,并支持配置


  • 增加拦截器
  • 增加精度接口查询以及出入参金额处理
  • 增加金额字段可配置
  • 增加实体金额展示字段,或者拦截器增加https://www.cnblogs.com/JaxYoun/p/13923703.html
  • 去掉前端后端所有处理金额的地方,并修改前端展示金额字段
前端修改

  • 前端增加处理金额统一方法
  • 前端提交和展示对应的方法的请求前后,统一处理方法
  
选定方案

经过考虑,使用拦截器统一处理的方案,首先哪个方案都需要梳理哪些地方涉及改动,但是拦截器的方案,后面有优化只需要修改一个地方即可。 方案图例


 
拦截器统一处理暂时无法在文档外展示此内容具体实现


  • 新增一个通用的金额处理方法,根据金额和精度得到最后的数据
伪代码--仅仅提供思路 注意


  • BigDecimal 除以后需要四舍五入或者四舍六入五成双
  • 入参里若是有MultipartFile 等特殊类型需要提前过滤
  • 出参统一类返回更好,不然需要多处理一些
后记

其实说白了就是利用aop的切面,增加项目中日志、鉴权等功能
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

用多少眼泪才能让你相信

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表