添加工作单元测试

This commit is contained in:
陈淳
2022-12-29 09:53:45 +08:00
parent 9673aa7690
commit dbe020dc94
6 changed files with 29 additions and 12 deletions

View File

@@ -111,11 +111,10 @@ namespace Yi.Framework.ApiMicroservice.Controllers
}
[HttpGet]
public async Task<Result> TestUnitOfWork()
{
var userId = await _iUserService.AddInfo(new DTOModel.UserInfoDto { User = new UserEntity { Address = "", UserName = "lisi", Password = "123456" }.BuildPassword() });
throw new ApplicationException("测试uow");
await _iRoleService._repository.InsertReturnSnowflakeIdAsync(new RoleEntity { RoleName = "测试", RoleCode = "tt" });
await _iRoleService.UowTest();
return Result.Success();
}

View File

@@ -15,6 +15,12 @@ namespace Yi.Framework.Interface
/// <returns></returns>
Task<List<RoleEntity>> DbTest();
/// <summary>
/// 工作单元测试
/// </summary>
/// <returns></returns>
Task<bool> UowTest();
/// <summary>
/// 通过角色id获取角色实体包含菜单
/// </summary>

View File

@@ -8,22 +8,32 @@ using Yi.Framework.DTOModel;
using Yi.Framework.Interface;
using Yi.Framework.Model.Models;
using Yi.Framework.Repository;
using Yi.Framework.Uow.Interceptors;
namespace Yi.Framework.Service
{
public partial class RoleService
public partial class RoleService
{
public async Task<List<RoleEntity>> DbTest()
{
return await _repository._Db.Queryable<RoleEntity>().ToListAsync();
}
//添加工作单元特性
[UnitOfWork]
public async Task<bool> UowTest()
{
var res = await _repository.InsertReturnSnowflakeIdAsync(new RoleEntity { RoleName = "测试", RoleCode = "tt" });
throw new ApplicationException("测试uow");
return res>0;
}
public async Task<bool> GiveRoleSetMenu(List<long> roleIds, List<long> menuIds)
{
var _repositoryRoleMenu= _repository.ChangeRepository<Repository<RoleMenuEntity>>();
var _repositoryRoleMenu = _repository.ChangeRepository<Repository<RoleMenuEntity>>();
//多次操作,需要事务确保原子性
return await _repositoryRoleMenu.UseTranAsync(async () =>
{ //删除用户之前所有的用户角色关系(物理删除,没有恢复的必要)
await _repositoryRoleMenu.DeleteAsync(u => roleIds.Contains((long)u.RoleId) );
await _repositoryRoleMenu.DeleteAsync(u => roleIds.Contains((long)u.RoleId));
//遍历用户
foreach (var roleId in roleIds)
@@ -32,7 +42,7 @@ namespace Yi.Framework.Service
List<RoleMenuEntity> roleMenuEntity = new();
foreach (var menu in menuIds)
{
roleMenuEntity.Add(new RoleMenuEntity() { RoleId = roleId,MenuId=menu });
roleMenuEntity.Add(new RoleMenuEntity() { RoleId = roleId, MenuId = menu });
}
//一次性批量添加
@@ -46,7 +56,7 @@ namespace Yi.Framework.Service
public async Task<RoleEntity> GetInMenuByRoleId(long roleId)
{
return await _repository._Db.Queryable<RoleEntity>().Includes(u => u.Menus).InSingleAsync(roleId);
}
@@ -58,7 +68,7 @@ namespace Yi.Framework.Service
.WhereIF(!string.IsNullOrEmpty(role.RoleName), u => u.RoleName.Contains(role.RoleName))
.WhereIF(!string.IsNullOrEmpty(role.RoleCode), u => u.RoleCode.Contains(role.RoleCode))
.WhereIF(page.StartTime.IsNotNull() && page.EndTime.IsNotNull(), u => u.CreateTime >= page.StartTime && u.CreateTime <= page.EndTime)
.WhereIF(role.IsDeleted.IsNotNull(), u => u.IsDeleted == role.IsDeleted)
.WhereIF(role.IsDeleted.IsNotNull(), u => u.IsDeleted == role.IsDeleted)
.OrderBy(u => u.OrderNum, OrderByType.Desc)
.ToPageListAsync(page.PageNum, page.PageSize, total);
@@ -74,7 +84,7 @@ namespace Yi.Framework.Service
return !0.Equals(res1) && res2;
}
public async Task<bool> GiveRoleSetDept(List<long> roleIds,List<long> deptIds)
public async Task<bool> GiveRoleSetDept(List<long> roleIds, List<long> deptIds)
{
var _repositoryRoleDept = _repository.ChangeRepository<Repository<RoleDeptEntity>>();
//多次操作,需要事务确保原子性
@@ -103,12 +113,12 @@ namespace Yi.Framework.Service
var res1 = await _repository.UpdateIgnoreNullAsync(roleDto.Role);
var res2 = await GiveRoleSetMenu(new List<long> { roleDto.Role.Id }, roleDto.MenuIds);
var res3 = await GiveRoleSetDept(new List<long> { roleDto.Role.Id }, roleDto.DeptIds);
return res1 && res2&& res3;
return res1 && res2 && res3;
}
public async Task<bool> UpdateDataScpoce(RoleInfoDto roleDto)
{
var role= new RoleEntity();
var role = new RoleEntity();
role.Id = roleDto.Role.Id;
role.DataScope = roleDto.Role.DataScope;
var res1 = await _repository.UpdateIgnoreNullAsync(role);

View File

@@ -10,6 +10,7 @@
<ItemGroup>
<ProjectReference Include="..\Yi.Framework.Interface\Yi.Framework.Interface.csproj" />
<ProjectReference Include="..\Yi.Framework.Uow\Yi.Framework.Uow.csproj" />
</ItemGroup>
<ItemGroup>

View File

@@ -50,6 +50,7 @@ namespace Yi.Framework.WebCore.AutoFacExtend
.AsImplementedInterfaces()
.InstancePerLifetimeScope()
.EnableInterfaceInterceptors()
//开启工作单元拦截
.InterceptedBy(typeof(UnitOfWorkInterceptor));
///反射注册任务调度层