在这里学习 DDD。
有两种用户 Member 和 Staff。会员可以拥有订阅列表,并且可以随时购买额外的订阅。员工用户还可以向成员添加订阅。当员工用户向会员系统添加订阅时,应记住谁添加了此订阅。
成员和员工用户处于完全不同的有界上下文中。他们拥有不同的权利集和可以参加的不同群体。所以我创建了一个成员聚合根,其中包含单独的有界上下文“成员”中的订阅列表。然后我在单独的有界上下文员工中创建了员工聚合根”。
当成员想要购买额外订阅时,这很容易,MemberService 只需将新订阅附加到成员,因为订阅是成员聚合和成员有界上下文的一部分。
但是,当员工用户想要向用户添加新订阅时,问题就开始了,因为不再是购买自己订阅的成员,而是将订阅分配给成员的员工。
我在这里看到了多种解决方案,但似乎没有一个是完全正确的。
- 将订阅实体添加到员工聚合。(尴尬,因为员工没有订阅)
- 当员工用户添加订阅时,通过成员聚合引发将成员订阅添加到成员的事件。(尴尬,因为添加订阅的不是会员)
- 直接从员工服务调用成员聚合(违反 DDD 原则)。
- 在有界上下文中为其自身移动订阅并使其成为聚合根。(可能是错误的,因为会员与他/她的订阅有密切的关系)
我在这里想念什么?
子问题:
是否允许跨多个有界上下文服务使用相同的 DTO?