测算应用在源码中的领域名是 suanming。它不是一个单独部署的网站,而是 Easy Admin SaaS 内部拥有独立领域模型的业务应用:租户负责产品与运营配置,用户通过 PC 或移动端选择项目、提交资料并取得结果,账号、支付和租户能力继续由平台公共层提供。

代码与入口

层次 源码位置 主要职责
PC 用户端 pc/pages/suan-ming、pc/api/suanming.ts 产品列表、资料填写、订单、结果与分销中心
移动用户端 uniapp/src/packages/pages/suan_ming H5、小程序和 App 的测算流程
租户后台 tenant/src/views/suanming 产品、订单、分销商、佣金、提现和应用设置
用户 API server/app/api/*/suanming 产品读取、输入校验、下单、结果与用户资产查询
租户 API server/app/tenantapi/*/suanming 产品运营、订单与分销审核
领域服务 server/app/common/service/suanming 产品目录、测算引擎、安装同步、旧数据适配与分销结算

核心领域对象

对象 作用 关键约束
SuanMingProduct 定义项目编码、分类、表单结构、价格和展示信息 项目编码稳定;上下架不修改历史订单
SuanMingOrder 保存购买人、产品快照、输入、支付状态和结果 未支付订单不能返回结果;结果属于下单用户
SuanMingDistributor 保存推广码、上下级和佣金汇总 绑定关系不能形成环,也不能绑定自己
SuanMingCommission 记录订单产生的分销佣金 订单和层级组合保持幂等
SuanMingWithdrawal 表示提现申请、审核、打款或拒绝 申请时冻结余额,拒绝时解冻,打款后扣除冻结额

用户主流程

flowchart LR
  Catalog[读取产品目录] --> Form[按 form_schema 填写资料]
  Form --> Validate[服务端校验输入]
  Validate --> Price{是否付费}
  Price -- 免费 --> Engine[测算引擎]
  Price -- 付费 --> Order[创建待支付订单]
  Order --> Pay[统一支付]
  Pay --> Engine
  Engine --> Snapshot[结果写入订单快照]
  Snapshot --> Result[用户查看结果]
  Pay --> Settle[分销佣金结算]

产品的 form_schema 决定需要填写的字段,SuanMingEngineService 根据产品编码选择八字、姓名、生肖星座、数字、抽签、塔罗等计算路径。免费项目可以直接计算;付费项目先保存清洗后的输入并创建订单,支付完成后再生成结果。订单查询会对未支付结果进行隐藏,避免只靠前端遮挡。

输入与结果都应保存在订单中作为本次交易快照。以后调整产品说明或计算规则时,不能重新解释已经交付的历史订单;进一步演进时还应把规则版本写入订单,便于复算和审计。

分销与提现

用户可以通过推广码建立上下级关系。订单支付完成后,结算服务按照当时配置计算一级和二级佣金,并以“订单 + 层级”防止重复入账。佣金流水解释余额变化,total_amount、available_amount 和 frozen_amount 只作为汇总投影。

提现申请在数据库事务中锁定分销账户并把可用余额转入冻结余额。审核拒绝时退回可用余额,审核通过后才能确认打款;收款账户和真实姓名属于敏感信息,后台展示、导出和日志都应脱敏。

边界与风险

  • 结果属于传统文化或娱乐参考,页面必须保留免责声明,不能包装成医疗、法律或投资结论;
  • 产品、输入、结果和支付状态由服务端判断,客户端不能直接提交价格或“已支付”;
  • 计算失败可以重试,但必须复用原业务订单,避免重复支付和重复结算佣金;
  • 每个产品、订单、佣金和提现记录都应携带租户范围,后台统计也不能跨租户聚合;
  • 旧数据适配只负责迁移和兼容,不应长期成为新订单的主写入口。

站内搜索

没有找到内容!