从这篇文章开始,咱们开始介绍大健康行业直销系统领域层的实现。微信
先简单讲下业务方面的需求:直销系统会有一个顶级的经销商,经销商的基本信息中包括经销商的名字、联系人(由于在平台购买产品后,会寄送给联系人)、总的电子币(电子币是由经销商支付产生,购买产品后会扣减电子币)、总的奖金币(系统周期性根据经销商购买的东西来肯定奖金币,奖金币能够购买东西,也能够提现)、总PV(经销商购买时,会根据购买产品的PV进行累加)、卡的类型(根据经销商初次的电子币肯定卡的类型)、子经销商个数(子经销商的注册由父经销商进行,父经销商的直接子经销商不超过2个)、级别(根据周期消费总额肯定经销商级别);另外经销商有个层级结构,最后系统固然还要对应经销商的登陆信息,默认系统会有个登录密码;经销商在注册子经销商时,会从本身扣除一部分电子币附加到子经销商上。ui
从整个需求的理解并经过对DDD理解来看,咱们会有两个聚合,分别是经销商聚合(包括经销商、联系人、层级)和登录聚合。spa
public partial class Dealers:IAggregationRoot
{
public Dealers() { }
public string Code { get; set; }
[Key]
public Guid Id { get; set; }
public string Name { get; set; }
public string Tel { get; set; }
public decimal TotalEleMoney { get; set; }
public decimal JiangJInMoney { get; set; }
public decimal TotalPV { get; set; }
public CardType CardType { get; set; }
public Level Level { get; set; }
public int SubCount { get; set; }
public List<Contact> Contacts { get; set; }
public DealerTree DealerTree { get; set; }
}
public enum CardType : int
{
普通会员=1,
银卡会员=2,
金卡会员=3
}
public enum Level : int
{
片区经理=1,
省区经理=2,
大区经理=3,
董事=4
}
复制代码
public partial class Contact : IValueObject
{
public Contact() { }
public Guid Id { get; set; }
public string ContactName { get; set; }
public string ContactTel { get; set; }
public string Province { get; set; }
public string City { get; set; }
public string Zero { get; set; }
public string Street { get; set; }
public IsDefaultContact IsDefault { get; set; }
}
public enum IsDefaultContact : int
{
默认=1,
非默认=2
}
复制代码
public partial class DealerTree : IValueObject
{
public DealerTree() { }
public Guid Id { get; set; }
public Guid DealerId { get; set; }
public Guid? ParentDealerId { get; set; }
public int Layer { get; set; }
}
复制代码
从经销商聚合你们能够看到,在建立一个经销商时,除了有经销商的基本信息外,还必须同时建立联系人与层次结构,这样一个经销商才是完整的,并且经销商也引用到了联系人与层次结构。code
public partial class Login : IAggregationRoot
{
public Login() { }
//表明登陆的电话号码
public string Code { get; set; }
public string Password { get; set; }
public Guid DealerId { get; set; }
[Key]
public Guid Id { get ; set ; }
}
复制代码
关于如何讲经销商界限上下文映射到数据访问上下文,请参考产品上下文的相关实现,这里就再也不累述了。cdn
下一篇文章开始讲经销商上下文仓储的实现,由于在注册子经销商的领域逻辑中,会经过仓储去判断当前经销商是否子经销商个数超过2个。视频
DDD实战进阶视频请关注微信公众号:对象