Files
Docker/CloudBuilder/CloudBuilder.Master.Service/FamilyTreeService.auto.cs
T
2026-08-28 17:02:34 +08:00

114 lines
3.8 KiB
C#

using CloudBuilder.Core.DatabaseAccessor;
using CloudBuilder.Core.DatabaseAccessor.Entity;
using CloudBuilder.Core.Service;
using CloudBuilder.Master.Data;
using CloudBuilder.Master.Entity;
using CloudBuilder.Master.Policy;
using CloudBuilder.Master.SearchCriteria;
using Microsoft.AspNetCore.Authorization;
namespace CloudBuilder.Master.Service
{
public class FamilyTreeService : IFamilyTreeService
{
private readonly IApplicationService service;
private IRepository<FamilyTreeEntity> repository;
public FamilyTreeService(IApplicationService service)
{
this.service = service;
repository = service.GetRepository<IRepository<FamilyTreeEntity>>();
}
[PermissionOperate(name: MasterPermissionPolicy.FamilyTree, operate: Operate.Find)]
public FamilyTreeData FindByKey(string key)
{
FamilyTreeData data = new FamilyTreeData();
return data;// repository.DetachedEntities.Where(x => x.TreeId == key).FirstOrDefault()!;
}
[PermissionOperate(name: MasterPermissionPolicy.FamilyTree, operate: Operate.Find)]
public FamilyTreeResultData FindBySearchCriteria(FamilyTreeSearchCriteria criteria)
{
FamilyTreeResultData data = new FamilyTreeResultData();
FamilyTreeEntity[] list = null;
int count = 0;
string sqlWhere = null;
if (criteria.Filter != null && criteria.Filter.Length > 0)
{
sqlWhere = SearchFilter.ComposeWhereClause(criteria.Filter);
}
FamilyTreeEntity entity = FamilyTreeEntity.GetInstance(repository.GetDbContext().Database.ProviderName);
string sql = entity.GetSelectTopFrom(criteria.limit, criteria.page, criteria.orderby.StringToDbField(), criteria.orderbytag, sqlWhere);
string err = null;
try
{
list = repository.FromSql(sql).ToArray();
}
catch (System.Exception ex)
{
err = ex.Message;
}
if (list != null && list.Length > 0)
{
sql = entity.GetSelectCountFrom(sqlWhere);
count = Convert.ToInt32(repository.ExecuteScalar(sql));
}
data.Limit = criteria.limit;
data.Page = criteria.page;
data.Datas = list;
data.Total = count;
//data.Sql = sql;
data.ErrorMessage = err;
return data;
}
//[PermissionOperate(name: MasterPermissionPolicy.FamilyTree, operate: Operate.Print)]
public dynamic PrintBySearchCriteria(FamilyTreeSearchCriteria criteria)
{
throw new NotImplementedException();
}
[PermissionOperate(name: MasterPermissionPolicy.FamilyTree, operate: Operate.Insert)]
[UnitOfWork]
public FamilyTreeData Insert(FamilyTreeData data)
{
throw new NotImplementedException();
}
[PermissionOperate(name: MasterPermissionPolicy.FamilyTree, operate: Operate.Update)]
[UnitOfWork]
public FamilyTreeData Update(FamilyTreeData data)
{
throw new NotImplementedException();
}
[PermissionOperate(name: MasterPermissionPolicy.FamilyTree, operate: Operate.Delete)]
[UnitOfWork]
public void Delete(string key)
{
var ent= repository.DetachedEntities.Where(x => x.TreeId == key).FirstOrDefault()!;
if (ent != null) { repository.DeleteNow(ent); }
}
[PermissionOperate(name: MasterPermissionPolicy.FamilyTree, operate: Operate.Delete)]
[UnitOfWork]
public void Deletes(string[] keys)
{
foreach (string key in keys)
{
Delete(key);
}
}
}
}