【问题标题】:Where does "Billing" belong in a DDD php project?“计费”在 DDD php 项目中属于哪里?
【发布时间】:2023-03-27 00:55:01
【问题描述】:

我正在构建一个新的 SaaS 应用程序并希望遵循 DDD 原则。

我正处于草拟想法的阶段,我遇到了这个问题。我希望人们能给我一些想法。我认为这不一定是对或错。但我很想听听你的想法......

基本上我不确定 Billing 属于哪里以及如何最好地实施它。

我不知道用户是否应该知道计费界面。是否由用户实体负责进行计费?

我认为用户实体知道他们是否有订阅是公平的,但不知道它是如何实现的。

在这个阶段,我认为领域层将指定 BillingInterace,而实现将存在于基础设施层中。 (我将使用 Stripe 开始)

您会创建一个计费服务并传递用户实体以在条带上创建客户帐户并执行计费功能吗?

或者您是否会编写一个特征,该特征会被放到用户实体上,以便用户可以自己计费($user->charge() - 或其他)。

希望这是有道理的。我只是想提出一些想法,因为我在网上找不到任何像样的指导。

谢谢!! 李

【问题讨论】:

    标签: php laravel domain-driven-design billing ddd-service


    【解决方案1】:

    用户实体是否有责任进行计费?

    我不这么认为。

    在这个阶段,我认为领域层将指定 BillingInterace,而实现将存在于基础设施层中。

    是域(业务)的计费部分吗?如果是,那么它应该在那里。

    帐单可能是聚合根域服务。查看this 帖子,其中PurchaseOrder(聚合)可能是您的帐单。在this,它解释了域服务。

    【讨论】:

    • 感谢您的回答!是的,我同意它不是用户的工作来计费。他们应该对自己的订阅状态有所了解,但不知道这在幕后是如何运作的。该业务与计费有关,仅在非付费用户无法获得所提供服务的情况下。但它不是域的工作来担心这是如何完成的,只是它可以完成。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-08
    • 2014-11-15
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 2017-04-03
    • 2012-12-24
    相关资源
    最近更新 更多