You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.8 KiB
2.8 KiB
业务逻辑层
在这里主要实现项目业务逻辑,原则上不能在【Wood.Service】中直接写需要的业务逻辑,这里是系统自带的一些业务的实现,可以新建一个Service,对其进行引用。这里有两种Service父类,一个Manager父类,Service实现里边的方法会被注册为接口,Manager实现则会被自动依赖注入。
ApiCRUDService
这个父类提供了简单增删改查实现,继承了之后,自动提供简单增删改查接口,如有需要可以在子类中重写,实现自己的功能。
- T:实体
- TDTO:实体Detail查询的dto
- TAddParam:新增参数
- TUpdateParam:更新参数
- 提供方法:
- GetDetail 获取单个明细
- Add 新增
- Update 修改
- Delete 删除 接受数组参数,支持批量删除
/// <summary>
/// 职位管理
/// </summary>
public class PositionService : ApiCRUDService<PositionEntity, PositionEntity, PositionAddParam, PositionUpdateParam>
{
public PositionService(SqlSugarRepository<PositionEntity> repository) : base(repository)
{
}
/// <summary>
/// 分页查询职位
/// </summary>
/// <param name="param"></param>
/// <returns></returns>
public async Task<TDataPaged<PositionEntity>> Paged(PositionPagedParam param)
{
return await _repository.AsQueryable()
.WhereIF(!string.IsNullOrEmpty(param.Name), it => it.PositionName.Contains(param.Name!) || it.FormCode.Contains(param.Name!))
.ToPagedListAsync(param);
}
}
ApiService
这个父类标记目标类为需要注册为api,这个父类里边没有任何实现,当然你也可以自定义实现。
/// <summary>
/// 用户管理
/// </summary>
public class UserService : ApiService
{
......
}
ApiManager
Manager用于封装一些在service中反复需要使用的功能。对实体进行Manager封装后,只用注入Manager即可,不需要再注入Repository。
- T:entity实体
- 封装Manager后必须要标注,注入类型,当然所有标注这些注入类型的类都会被自动扫描注入。
- IScoped 注册为Scoped
- ITransient 注册为Transient
- ISingleton 注册为Singleton
- ApiManager中的方法
- AsQueryable() 获取 ISugarQueryable
- AsRepository() 获取 SqlSugarRepository
// 用户管理 ,瞬时生命周期注入
public class UserManager : ApiManager<UserEntity>, ITransient
{
......
}
一些接口说明
继承这些接口会实现相应的功能
- IScoped 注册为Scoped
- ITransient 注册为Transient
- ISingleton 注册为Singleton
- IDiff 标记,记录差异日志,用于实体
- IntegrationEvent 事件总线,事件类型
- IntegrationEventHandler 事件处理器,T:(IntegrationEvent实现类)
- IEventLog 标记,记录事件日志,用于开启记录目标事件的事件日志