目的介绍
实现一个类似于abp.zero的项目。在完成项目的过程中学习ABP框架知识。
功能列表
我们对项目做功能分析。归类出下以功能功知识点。
1.角色
2.测试项目
3.用户
4.权限
5.组织
6.登陆
7.菜单
8.日志
9.错误处理
10.并发处理
11.用队列方式解决高并发请求。
功能介绍
角色功能非常的简单。主要用做权限与用户之间的桥梁。用户通过所属的角色而确定系统中拥有的权限。所以角色也就变非常简单。
直接上代码
数据模型
public class SysRole : DbSetBase
{
public SysRole()
{
SystemId = "000";
}
[MaxLength(50)]
[Required]
public string RoleName { get; set; }
[MaxLength(50)]
[Required]
public string SystemId { get; set; }
}
DbSetBase[^1]是所呢数据模型的基类。
业务服务层
定义业务层接口
namespace Bxh.Application.SysApp
{
public interface ISysRoleAppService : IAppServiceBase<SysRoleDto, Guid, PageListInput, UpdateSysRoleDto, UpdateSysRoleDto>
{
}
}
定义业务层 实现类
namespace Bxh.Application.SysApp
{
public class SysRoleAppService : AppServiceBase<SysRole, SysRoleDto, Guid, PageListInput, UpdateSysRoleDto, UpdateSysRoleDto>,
ISysRoleAppService
{
public SysRoleAppService(
IRepository<SysRole, Guid> repository
)
: base(repository)
{
}
}
}
数据映射 DTO 层
列表展示映射
namespace Bxh.Application.SysApp.Dto
{
[AutoMapFrom(typeof(SysRole)), AutoMapTo(typeof(SysRole))]
public class SysRoleDto : EntityBaseDto
{
public string RoleName {get; set;}
public string SystemId {get; set;}
//public List<SysRoleSysUser> SysRoleSysUsers {get; set;}
}
}
修改新增映射
namespace Bxh.Application.SysApp.Dto
{
[AutoMapFrom(typeof(SysRole)), AutoMapTo(typeof(SysRole))]
public class UpdateSysRoleDto : EntityBaseDto
{
public string RoleName {get; set;}
public string SystemId {get; set;}
//public List<SysRoleSysUser> SysRoleSysUsers {get; set;}
}
}
实现起来也非常的方便,基本上只是跟据模板建好相应的类的行了,可以通过类式于T4之类的模板生成工具跟据Model自行就行了。
下面是自已对业务层实现数据操作调用说明。
当 调用业务层方法时(如Create方法)。调用AsyncCrudAppServicer 先将UpdateSysRoleDto能过AutoMap转成SysRole类.最后通过调用EF完成数据库操作。
下面是ABP项目组构图
角色创建这样就完成了,下面一章实现测试项目的创建及角色服务的测试。
注:因为前端界面还没有确定,所以功能都不设置到界面实现。界面实现以后面再统一完成。