Skip to content
Silubaba trade > Blog > news > VOLEMI 产品汇率换算与价格展示完整开发方案

VOLEMI 产品汇率换算与价格展示完整开发方案

    业务需求总结

    1. 后台管理端(Admin)
      • 产品新增/编辑,录入基准价格:人民币(CNY)为主价格
      • 后台独立汇率管理页面:/admin/currency-exchange-rates,维护【CNY ↔ USD】实时汇率
      • 管理员修改汇率后,全站前台所有美金价格自动刷新生效
    2. 前台官网 + Flutter买家App
      • 对外展示以美金(USD)作为主展示货币
      • 换算逻辑:USD价格 = 产品人民币基准价 ÷ 后台配置汇率
      • 支持访客手动切换CNY/USD;GEO自动匹配默认展示币种
    3. 配套规则
      • 每月监控人民币与美金价差波动;汇率调整后无需逐个修改产品价格,统一全局生效
      • 产品原始价格永久保存人民币基准价,保证源头数据唯一,避免多币种价格维护混乱
      • 缓存联动:汇率变更主动清理产品价格缓存,前台立刻展示最新换算美金价格

    一、数据库结构设计

    1. 汇率主表 currency_exchange_rate(对应后台 /admin/currency-exchange-rates

    字段说明
    id主键ID
    base_currency基准货币 CNY
    target_currency目标货币 USD
    rate汇率数值(示例:1 USD = 7.25 CNY,rate=7.25)
    status启用状态 1启用 0禁用
    updated_at更新时间

    业务计算公式:
    USD Price = product_cny_price / rate

    2. 产品主表核心价格字段

    仅保留单一基准价格,不存储独立美金价格
    product_base_price DECIMAL(10,2) 【人民币基准出厂价】
    product_wholesale_price DECIMAL(10,2) 【人民币基准批发价】

    ❌ 不额外存储USD价格,所有美金价格实时动态换算,杜绝两套价格数据不一致问题

    二、后台功能逻辑(Admin Web + Admin Mobile App)

    2.1 汇率管理页面 /admin/currency-exchange-rates

    功能清单:

    1. 展示当前生效 CNY→USD 汇率
    2. 表单输入新汇率,提交保存
    3. 汇率保存成功触发事件:
      • 清除Redis中全部产品价格相关缓存
      • 清除FileCache页面静态缓存
      • 清除首页、分类页、产品详情页缓存
        > 实现:前台刷新页面立即读取新汇率换算后的美金价格
    4. 操作日志:记录操作人员、修改前汇率、修改后汇率、修改时间,方便月度价差核对

    2.2 产品新增 / 产品编辑页面

    1. 价格输入框仅展示人民币输入框(出厂价、批发价、MOQ价格等全部录入人民币)
    2. 页面增加实时预览:根据当前后台生效汇率,实时计算并预览对应美金价格(仅作管理员参考,不存入数据库)
    3. 保存产品时,只入库人民币基准价格,不存储美金价格
    4. 产品保存完成 → 自动清理该产品对应的Redis & FileCache缓存

    三、前台 Web + Buyer App 价格渲染逻辑

    3.1 基础换算规则

    USD展示价格 = 产品人民币基准价格 ÷ 当前后台有效汇率

    价格统一保留2位小数,四舍五入。

    3.2 默认展示策略

    1. 首次访问默认展示:USD(美金为主)
    2. GEO识别优化:
    • 中国大陆IP访客:默认展示CNY
    • 海外所有地区IP:默认展示USD
    1. 访客支持手动切换币种(USD / CNY),选择存入本地缓存,优先级高于GEO自动匹配

    3.3 前端页面全部统一规则

    适用页面:首页推荐产品、分类列表、产品详情、询价弹窗、结算页、订单中心、订单详情

    • 模式A:访客默认币种USD → 优先展示换算后的美金价格,可切换查看人民币
    • 模式B:访客手动切换CNY → 直接展示原始基准人民币价格

    3.4 Google Shopping Feed 适配

    Feed输出价格以USD换算价格为准;汇率更新后,Feed自动生成最新美金售价,无需人工重新编辑商品。

    四、缓存架构联动(核心关键点,配合现有MySQL+Redis+FileCache)

    1. 产品列表、产品详情页面缓存Key 携带当前生效汇率版本标识
    2. 管理员在 /admin/currency-exchange-rates 修改汇率
      ✅ 系统自动执行:
    • 删除全部产品价格Redis缓存
    • 删除所有产品页面FileCache静态缓存
    1. 用户再次访问页面,程序重新读取最新汇率,实时换算美金价格并生成新缓存

    效果:汇率修改完成,前台刷新页面立刻生效,不存在旧价格缓存滞留问题

    五、结算 & 订单模块规则

    1. 用户下单时,同时记录两组数据
    • 下单时刻生效汇率
    • 原始人民币基准价
    • 换算后的美金成交价格

    作用:订单历史价格锁定!后续后台修改汇率,不会改变已经生成订单的历史价格,杜绝订单金额变动纠纷。

    1. 订单详情页面:展示下单当时锁定的币种价格,附带汇率备注,便于财务对账。

    六、月度价差管理配套方案(业务需求)

    1. 汇率管理页面增加汇率变更历史记录列表,留存每次调整时间、新旧汇率
    2. 支持导出汇率变更报表,用于财务月度核算人民币、美金价差
    3. 可在后台设置汇率波动预警阈值;当汇率波动超过阈值,系统提醒运营评估是否调整报价策略

    七、多语言页面适配

    所有14种语言页面统一使用同一套换算逻辑;
    页面币种文字由语言包控制:
    USD = US Dollar
    CNY = Chinese Yuan
    价格符号自动随选中币种切换 $ / ¥

    八、边界异常处理

    1. 汇率未配置 / 汇率=0:系统设置保护默认汇率,前台正常展示,同时后台发送异常提醒
    2. 价格计算出现极小/负数:增加校验,前台展示占位提示,避免错误价格对外展示
    3. 汇率修改过程中瞬时并发访问:加简易分布式锁,防止缓存清理不完全导致价格错乱

    九、开发任务清单

    • [ ] 创建 currency_exchange_rate 数据表,开发后台 /admin/currency-exchange-rates 管理页面
    • [ ] 产品表移除USD价格字段,统一只保留CNY基准价格
    • [ ] 产品新增/编辑页面:仅人民币录入,增加实时USD预览
    • [ ] 汇率更新事件:自动清理Redis、FileCache全站产品缓存
    • [ ] 前台所有商品页面重构价格渲染逻辑:实时动态换算
    • [ ] GEO自动币种识别 + 用户手动币种切换功能开发
    • [ ] 订单数据表增加【下单汇率】字段,锁定订单成交价格
    • [ ] Google Shopping Feed适配动态换算USD价格
    • [ ] Flutter买家App统一对接价格换算接口,和网页逻辑保持一致
    • [ ] 汇率变更历史日志、导出功能,满足月度价差财务统计

    十、可选扩展优化

    增加「汇率定时自动同步」接口,可对接第三方汇率API,实现每日自动更新汇率,减少人工操作;运营人员仅需审核确认生效。

    如果你需要,我可以输出:

    1. 数据库SQL建表语句
    2. 前后端标准价格换算API接口文档
    3. 汇率变更缓存清理伪代码逻辑

    Leave a Reply