当前位置: 首页 > news >正文

优秀简洁网站设计动漫制作专业专升本对应的专业

优秀简洁网站设计,动漫制作专业专升本对应的专业,做淘宝详情页的网站,北京市企业信用信息查询网这篇文章我们将结合主币种设置以及收支记录实现切换主币种后重新计算以前记录的转换后的金额。那么#xff0c;为什么要在切换主币种后要重新计算转换后的金额呢#xff1f;有以下两个原因#xff1a; 统一的币种#xff0c;方便我们统计数据方便用户按照当地的币种查看收…这篇文章我们将结合主币种设置以及收支记录实现切换主币种后重新计算以前记录的转换后的金额。那么为什么要在切换主币种后要重新计算转换后的金额呢有以下两个原因 统一的币种方便我们统计数据方便用户按照当地的币种查看收支 下面我们就一起来实现吧。 一、实现逻辑 我们先来看一下要实现这个功能所需要的数据 新的主币种转换前币种转换前金额 接着我们一起把实现的思路写出来。首先我们要修改主币种配置将旧的主币种替换成新的主币种主币种配置修改成后我们会利用消息队列发送一条主币种修改通知负责重新计算转换后的金额的代码订阅这个通知当它收到通知后就开始执行重新计算记录转换后的金额。负责重新计算转换后的金额的代码会先去查询当前用户全部记录然后对账本中每条记录进行重新计算转换后的金额最后将修改结果更新到数据库。 二、实现 我们根据上一小节的思路先自己实现切换主币种的全部功能然后把自己的代码和下面的代码核对一下看看哪里不一样。这里提醒一下我们订阅主币种修改通知的代码应放在RabbitMQBackgroundService类中。 2.1 修改主币种 ConfigController /// summary /// 更新用户配置 /// /summary /// param nameconfigViewModel/param /// returns/returns [HttpPut] [Route(Update)] public ActionResultResponseDatabool Update([FromBody] ConfigViewModel configViewModel) {try{string userId GetUserId();bool isExist _configServer.IsExist(userId, configViewModel.Id);if (!isExist){return Ok(new ResponseDatabool(HttpStatusCode.NotFound, 用户配置不存在));}_configServer.Update(userId, configViewModel.Id, configViewModel.Value);//如果切换的是主币种那么就将以前的所有金额全部转换成新的主币种的金额if (configViewModel.ConfigTypeEnum ConfigTypeEnum.Currency){_ _rabbitMqPublisher.PublishMainCurrency(UpdateConversionAmount, UpdateConversionAmount,new MainCurrency(){UserId userId,Currency configViewModel.Value});}return Ok(new ResponseDatabool(HttpStatusCode.OK, data: true));}catch (Exception ex){return Ok(new ResponseDatabool(HttpStatusCode.InternalServerError, 服务器异常));} }这段代码的作用是更新用户配置并在特定条件下触发与主币种切换相关的业务逻辑。首先代码通过 GetUserId() 方法获取当前操作用户的唯一标识符 userId。随后通过 _configServer.IsExist 方法检查用户配置是否存在。如果配置不存在返回包含 NotFound 状态的响应提示“用户配置不存在”。如果配置存在调用 _configServer.Update 方法更新指定的配置值 configViewModel.Value。接着代码进一步判断 configViewModel.ConfigTypeEnum 是否为 Currency 类型即当前更新的配置是否为主币种。当更新的配置是主币种时通过 _rabbitMqPublisher.Publish 方法向消息队列发送一条 UpdateConversionAmount 消息其中包含用户 Id 和新的主币种Id。这一步的目的是通知其他系统或模块执行与主币种切换相关的金额转换逻辑。 2.2 重新计算转换后的金额 RabbitMQBackgroundService //more codeawait _subscriberService.SubscribeAsyncMainCurrency(UpdateConversionAmount, UpdateConversionAmount, async (mainCurrency) {//1.获取所有收支记录var recordService _serviceProvider.GetRequiredServiceIIncomeExpenditureRecordServer();var records recordService.QueryByUserId(mainCurrency.UserId);//2.将所有记录的金额转换为新的主币种记录中的币种转换为新的主币种var currencyServer _serviceProvider.GetRequiredServiceICurrencyServer();var exchangeRateRecordServer _serviceProvider.GetRequiredServiceIExchangeRateRecordServer();Currency? query currencyServer.Query( mainCurrency.Currency);if (query null){return;}for (int i 0; i records.Count; i){var record records[i];var currency record.Currency;//获取记录币种和主币种的汇率ExchangeRateRecord? exchangeRateRecord exchangeRateRecordServer.Query(${query.Abbreviation}_{currency.Abbreviation});if (exchangeRateRecord ! null)record.AfterAmount exchangeRateRecord.ExchangeRate * record.BeforAmount;}//3.更新所有记录recordService.UpdateRecord(records); });//more code这段代码实现了一个异步消息订阅和处理的逻辑用于在主币种发生变更时更新所有收支记录的金额。代码逻辑通过订阅消息队列中的 UpdateConversionAmount 主题来触发。 核心流程是通过 _subscriberService.SubscribeAsync 方法订阅名为 UpdateConversionAmount 的消息并注册一个异步处理函数。在处理函数中首先从依赖注入容器中获取 IIncomeExpenditureRecordServer 服务查询出指定用户的所有收支记录。接着使用 ICurrencyServer 查询新的主币种信息确保其存在然后通过 IExchangeRateRecordServer 获取当前记录的币种和新的主币种之间的汇率。如果汇率数据存在则将记录中的金额 (BeforAmount) 转换为以新的主币种为单位的金额 (AfterAmount)。最后通过 recordService.UpdateRecord 将更新后的记录批量保存到数据库中。 三、总结 通过主币种切换的业务场景探讨了如何在用户更改主币种配置后重新计算历史收支记录的转换金额。这一功能的实现基于两个核心需求统一币种便于统计数据以及方便用户按照本地币种查看收支信息。实现过程中首先修改主币种配置当用户设置新的主币种后系统通过消息队列发送变更通知。相关处理逻辑通过 RabbitMQBackgroundService 订阅该通知触发重新计算金额的操作。具体流程包括查询当前用户的所有收支记录获取新的主币种和原币种之间的汇率并根据汇率计算每条记录的转换金额最后更新数据库中的记录。 该方案采用分层设计和异步消息机制将主币种的配置管理与金额转换逻辑解耦提升了系统的可扩展性和维护性。整体流程清晰代码实现规范为类似场景的开发提供了良好的参考。
http://www.tj-hxxt.cn/news/133189.html

相关文章:

  • 车网站建设策划网页设计岗位介绍
  • 网站seo检测报告金华建设局政务网站
  • 求职网站怎么做套用模板网站
  • php网站开发软件python网站开发集成环境
  • 山东省聊城建设学校网站河南5G网站基站建设信息
  • 自己怎么做淘宝客网站qq免费注册网站
  • 百度云服务器做网站稳定吗建众智业公司简介
  • 陕西建设网网站集群html5 php 网站源码
  • 网站建设动态网站建设实训总结
  • 广州设计企业网站织梦怎么做企业网站
  • 公司建站文案给网站公司看的网站域名备案系统
  • 可以做请柬的网站合肥专业网站设计公司价格
  • 网站做tips网站开发人员岗位描述
  • 域名注册管理中心网站百度号码认证
  • 网站开发技术路线与规范wordpress页面没有
  • 如何做网站的seo优化wordpress 更换空间阿里云
  • 上海建站模板搭建中国刚刚发生8件大事
  • 网站开发台州关于电子商务的推广软文
  • 四川省住房和城乡建设厅网站无法进入网站备案 域名证书
  • 工商网站查询企业信息官网全国网站主机要多少钱
  • 网站建设与客户价格谈判技巧开发网站开票名称是什么
  • 钓鱼网站下载汽车网站建设工作室
  • 商城系统开源英文seo是什么意思
  • 淘宝网站开发语言企业标识系统
  • 大连做网站谁家好城市建设游戏模拟网站
  • 定制网站 报价外链管理
  • 一个完整的企业网站网站建设和优
  • wordpress营销型主题关键词优化一般收费价格
  • 潍坊网站定制公司企业营销型网站建设规划
  • 绩溪做网站做机械设备哪个网站好