OpenAuth.Net/OpenAuth.App/Base/BaseTreeApp.cs
yubaolee 9fd0405721 同步openauth.Core:
采用代码生成器的表结构控制前端显示,删除以前按照dbset获取数据库结构
优化注释
升级EF及所有三方的版本
2021-10-18 00:42:29 +08:00

59 lines
1.7 KiB
C#

using System.Linq;
using Microsoft.EntityFrameworkCore;
using OpenAuth.App.Interface;
using OpenAuth.Repository.Core;
using OpenAuth.Repository.Interface;
namespace OpenAuth.App
{
/// <summary>
/// 树状结构处理
/// </summary>
/// <typeparam name="T"></typeparam>
/// /// <typeparam name="TDbContext"></typeparam>
public class BaseTreeApp<T,TDbContext> :BaseStringApp<T,TDbContext> where T : TreeEntity where TDbContext :DbContext
{
public BaseTreeApp(IUnitWork<TDbContext> unitWork, IRepository<T, TDbContext> repository, IAuth auth)
: base(unitWork, repository,auth)
{
}
/// <summary>
/// 更新树状结构实体
/// </summary>
/// <param name="obj"></param>
/// <typeparam name="U"></typeparam>
public void UpdateTreeObj<U>(U obj) where U : TreeEntity
{
CaculateCascade(obj);
//获取旧的的CascadeId
var cascadeId = Repository.FirstOrDefault(o => o.Id == obj.Id).CascadeId;
//根据CascadeId查询子部门
var objs = Repository.Find(u => u.CascadeId.Contains(cascadeId) && u.Id != obj.Id)
.OrderBy(u => u.CascadeId).ToList();
//更新操作
UnitWork.Update(obj);
//更新子模块的CascadeId
foreach (var a in objs)
{
a.CascadeId = a.CascadeId.Replace(cascadeId, obj.CascadeId);
if (a.ParentId == obj.Id)
{
a.ParentName = obj.Name;
}
UnitWork.Update(a);
}
UnitWork.Save();
}
}
}