领域服务层
基本概念
实现特定于某个领域的任务。当某个操作”不适合”放在聚合(实体)或值对像上时,那么可以使用领域服务
操作内容
1、操作多个聚合根
2、也可以调用仓储层
3、代码可以相对灵活一些
4、命名一般要能直接描述出该代码业务的功能
譬如我们认为(也许你不这么认为)用户登录这块不方便放在聚合方法中
于是编写一个领域服务
type UserLoginService struct {
userRepo repos.IUserRepo
}
func(this *UserLoginService) UserLogin(userName string,userPwd string ) (string,error) {
user:=this.userRepo.FindByName(userName)
if user.UserId>0{ //有这个用户
if user.UserPwd==utils.Md5(userPwd){
//记录登录日志
return "1000200",nil
}else{
return "1000400",fmt.Errorf("密码不正确")
}
}else{
return "1000404",fmt.Errorf("用户不存在")
}
}
还是那句话,领域驱动根据业务不同 允许有不同的理解
最后更新于
这有帮助吗?