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

这篇具有很好参考价值的文章主要介绍了国内项目国际化后金额处理方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 

目标现状及问题

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

前置

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

解决方案

根据以上问题,目前发现三个解决方案
方案名
描述
优缺点
改动点
全量修改
  • 提供金额处理方法
  • 所有涉及到金额录入地方,前端入参后都调统一方法处理
  • 所有涉及到金额展示地方,后端返回前端前都调统一方法处理
 
优点:需要处理的金额则直接处理,精细度高。
缺点:
  1. 前端后端目前涉及金额的地方包括业务逻辑处都需处理,改动量大。
 
拦截器统一处理
 
  • 去掉前后端所有金额处理地方,统一在垂直网关里,处理入参和出参。
 
优点:统一处理
缺点:
  1. 需罗列出哪些金额需要处理,哪些不需要处理,并支持配置
  • 增加拦截器
  • 增加精度接口查询以及出入参金额处理
  • 增加金额字段可配置
  • 增加实体金额展示字段,或者拦截器增加https://www.cnblogs.com/JaxYoun/p/13923703.html
  • 去掉前端后端所有处理金额的地方,并修改前端展示金额字段
前端修改
  • 前端增加处理金额统一方法
  • 前端提交和展示对应的方法的请求前后,统一处理方法
   

选定方案

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

方案图例

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

 文章来源地址https://www.toymoban.com/news/detail-749563.html

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

具体实现

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

注意

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

后记

其实说白了就是利用aop的切面,增加项目中日志、鉴权等功能

到了这里,关于国内项目国际化后金额处理方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue项目配置国际化 $t(‘‘)的意思和用法

    vue 项目中 $t(\\\'\\\')直接在html中直接调用这个函数 {{ $t(\\\'login.title\\\') }} $t是引入国际化后,挂到了Vue.prototype上的一个方法,接受一个字符串作为参数 1.main.js中引入vue-i18n 2.浏览器的语言环境不同,相应设置不同的语言配置文件 3.创建不同语言标识对应的文件,以中文环境为例

    2024年02月16日
    浏览(100)
  • 全球顶尖开源项目相聚外滩大会,绘制国际化开源生态新蓝图

    在科技快速发展的当下,开放协作已成为技术创新的催化剂。在全球范围内,开源也是科技交流的永恒主题。 9月7日,2023外滩大会开源分论坛在上海举行。本次论坛由蚂蚁集团主办,以“打造国际化的开源开放创新生态”为主题,汇聚了国内外优秀开源基金会项目代表、投资

    2024年02月09日
    浏览(44)
  • electron+vue3全家桶+vite项目搭建【六】集成vue-i18n 国际化

    已发现 9.2.2版本的vue-i18n 如果使用cnpm安装,打包会报错,使用npm或者pnpm安装依赖没有问题 如果需要多语言支持,那么最好在项目搭建之初我们就集成好国际化 vue i18n官网 demo项目地址 关于多窗口国际化不同步更新状态的问题解决方案 1.我们现在src下面创建locals目录,里面创

    2023年04月12日
    浏览(87)
  • Shell脚本中文英文多语言国际化和命令行批处理(bash sh cmd bat)中定义函数的简单写法

    有时候为了方便别人使用,我们会选择去编写各种各样的命令行脚本:给Windows用户编写 .bat cmd批处理脚本,给macOS、Linux用户编写 .sh bash shell脚本。 面向国内用户当然应当首选中文作为脚本的显示语言,如果还要支持海外用户使用,那么能提供国际化多语言( i18n )支持那是

    2024年02月08日
    浏览(54)
  • 【国际化Intl】Flutter 国际化多语言实践

    提示:这里参考一下几个链接 例如: https://github.com/ThinkerWing/language https://juejin.cn/post/6844903823119482888 这篇也很详细,还有包括兼容中文的繁体简体… 可以看看 该分支对应的提交是使用Android Studio 和 Flutter Intl插件 并根据掘金这篇文章的实践,兼容汉字简体和繁体字 https://g

    2023年04月23日
    浏览(63)
  • hyperf 十四 国际化

    官方网址:Hyperf 文件结构:         /storage/languages/en/messages.php         /storage/languages/zh_CH/messages.php 创建文件 /config/autoload/translation.php。 多语言的调用从注入开始,即HyperfTranslationTranslator::__construct(TranslatorLoaderInterface $loader, string $locale)方法。根据配置文件Translato

    2024年02月11日
    浏览(58)
  • SpringBoot——国际化

    优质博文:IT-BLOG-CN 【1】编写国际化配置文件; 【2】使用 ResourceBundleMessageSource 管理国际化资源文件; 【3】在页面使用 ftp:message 取出国际化内容; 【1】创建 i18n 目录,并创建 login.properties 国际化默认配置文件,同时创建 login_zh_CN.properties 系统就会自动识别到是配置国际化

    2024年02月05日
    浏览(61)
  • C++国际化编程

    字节(octet)是一个八位的存储单元,取值范围一定是0~255。而字符(character,或者word)为语言意义上的符号,范围就不一定了。例如在UCS-2中定义的字符范围为0~65535,它的一个字符占用两个字节。 字符0xabcd如果存储为 AB CD,则称为Big Endian;如果存储为 CD AB,则称为Litt

    2024年02月10日
    浏览(77)
  • springcloud微服务国际化

    单体应用完成国际化还是比较简单的,可以看下面的示例代码。 引入必要的依赖 创建一个拦截器 创建一个配置类 然后在 resource 下创建 i18n 目录,选中右键 New = Resource Bundle 填入 base name ,选择 Project locales ,再 Add All ,确定即可。 打开配置文件,填写对应的中英文数据 配置

    2023年04月09日
    浏览(149)
  • SpringBoot复习:(36)国际化

    一、Resources目录下建立一个目录(比如international)来存储资源文件 message.properties 空的,但不能没有 message_zh_CN.properties message_en_us.properties 二、自动配置类MessageSourceAutoConfiguration 常量MESSAGE_SOURCE_BEAN_NAME为messageSource,也就是有这个名字的bean,则自动配置失效。 因为有@Conditional(R

    2024年02月13日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包