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.
75 lines
2.8 KiB
75 lines
2.8 KiB
3 weeks ago
|
# 业务逻辑层
|
||
|
|
||
|
在这里主要实现项目业务逻辑,原则上不能在【Wood.Service】中直接写需要的业务逻辑,这里是系统自带的一些业务的实现,可以新建一个Service,对其进行引用。这里有两种Service父类,一个Manager父类,Service实现里边的方法会被注册为接口,Manager实现则会被自动依赖注入。
|
||
|
### ApiCRUDService
|
||
|
这个父类提供了简单增删改查实现,继承了之后,自动提供简单增删改查接口,如有需要可以在子类中重写,实现自己的功能。
|
||
|
- T:实体
|
||
|
- TDTO:实体Detail查询的dto
|
||
|
- TAddParam:新增参数
|
||
|
- TUpdateParam:更新参数
|
||
|
- 提供方法:
|
||
|
- GetDetail 获取单个明细
|
||
|
- Add 新增
|
||
|
- Update 修改
|
||
|
- Delete 删除 接受数组参数,支持批量删除
|
||
|
```csharp
|
||
|
/// <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,这个父类里边没有任何实现,当然你也可以自定义实现。
|
||
|
```csharp
|
||
|
/// <summary>
|
||
|
/// 用户管理
|
||
|
/// </summary>
|
||
|
public class UserService : ApiService
|
||
|
{
|
||
|
......
|
||
|
}
|
||
|
```
|
||
|
### ApiManager
|
||
|
Manager用于封装一些在service中反复需要使用的功能。对实体进行Manager封装后,只用注入Manager即可,不需要再注入Repository。
|
||
|
- T:entity实体
|
||
|
- 封装Manager后必须要标注,注入类型,当然所有标注这些注入类型的类都会被自动扫描注入。
|
||
|
- IScoped 注册为Scoped
|
||
|
- ITransient 注册为Transient
|
||
|
- ISingleton 注册为Singleton
|
||
|
- ApiManager中的方法
|
||
|
- AsQueryable() 获取 ISugarQueryable<T>
|
||
|
- AsRepository() 获取 SqlSugarRepository<T>
|
||
|
```csharp
|
||
|
// 用户管理 ,瞬时生命周期注入
|
||
|
public class UserManager : ApiManager<UserEntity>, ITransient
|
||
|
{
|
||
|
......
|
||
|
}
|
||
|
```
|
||
|
### 一些接口说明
|
||
|
继承这些接口会实现相应的功能
|
||
|
- IScoped 注册为Scoped
|
||
|
- ITransient 注册为Transient
|
||
|
- ISingleton 注册为Singleton
|
||
|
- IDiff 标记,记录差异日志,用于实体
|
||
|
- IntegrationEvent 事件总线,事件类型
|
||
|
- IntegrationEventHandler<T> 事件处理器,T:(IntegrationEvent实现类)
|
||
|
- IEventLog 标记,记录事件日志,用于开启记录目标事件的事件日志
|