我正在将一个应用程序重构为 DDD,到目前为止一切都很好,但我对一些责任以及解决它的最佳方法是什么表示怀疑。
该应用程序是呼叫中心代理使用的 Web 应用程序,具有 CRM 功能,后端是 REST API。
用例如下:代理打电话给客户,需要收集一些信息/提供促销等。在打电话给客户并与他交谈后,他需要为这次联系尝试填写一些信息,其中一些信息是组合的从数据库中填充数据的框,并将带有实体 ID 的 POST 发送到端点以注册它。
所以我们有一个端点contactAttempt,它接收数据、customerId、agentId、一些组合框信息(subjectId、reasonId、extraInfo1、extraInfo2),额外信息不调用它,只是为了简化。
该信息被反序列化为传递给应用程序服务的 DTO 对象,应用程序服务咨询相应的存储库以检查 id 是否有效并返回实体,如果找不到实体,它会引发控制器捕获并回答的异常带有消息的客户端。
如果所有实体都有效,则有一些域规则,例如是否是第一次与客户联系、发送欢迎电子邮件等。
我的疑问是从存储库中获取实体的这个步骤,它应该是这样的,或者我应该在控制器中获取它,如果我需要的所有东西都存在,那么我只需要应用的逻辑就传递给域服务业务规则?
- 上述方法的优缺点是什么?
- 还有其他方法吗?
- 在 MVC 的上下文中,Controller 的职责是什么?