CloudBuilder/CloudBuilder.AI.Service/AiChapterService.auto.cs
owenchen 4ec2502778 ow
2026-05-29 13:02:41 +08:00

102 lines
3.5 KiB
C#

using CloudBuilder.AI.Data;
using CloudBuilder.AI.Entity;
using CloudBuilder.AI.Policy;
using CloudBuilder.AI.SearchCriteria;
using CloudBuilder.Core.DatabaseAccessor;
using CloudBuilder.Core.DatabaseAccessor.Entity;
using CloudBuilder.Core.Service;
using Microsoft.AspNetCore.Authorization;
namespace CloudBuilder.AI.Service
{
public class AiChapterService : IAiChapterService
{
private readonly IApplicationService service;
private IRepository<AiChapterEntity> repository;
public AiChapterService(IApplicationService service)
{
this.service = service;
repository = service.GetRepository<IRepository<AiChapterEntity>>();
}
[PermissionOperate(name: AIPermissionPolicy.AiBook, operate: Operate.Find)]
public AiChapterEntity FindByKey(AiChapterEntityKey key)
{
return repository.DetachedEntities.Where(x => x.ChapterId == key.ChapterId && x.BookId == key.BookId).FirstOrDefault()!;
}
[PermissionOperate(name: AIPermissionPolicy.AiBook, operate: Operate.Find)]
public AiChapterResultData FindBySearchCriteria(AiChapterSearchCriteria criteria)
{
AiChapterResultData data = new AiChapterResultData();
AiChapterEntity[] list = null;
int count = 0;
string sqlWhere = null;
if (criteria.Filter != null && criteria.Filter.Length > 0)
{
sqlWhere = SearchFilter.ComposeWhereClause(criteria.Filter);
}
AiChapterEntity entity = AiChapterEntity.GetInstance();
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 = (int)repository.ExecuteScalar(sql);
}
data.Limit = criteria.limit;
data.Page = criteria.page;
data.Datas = list.OrderBy(x => x.ChapterId).ToArray();
data.Total = count;
//data.Sql = sql;
data.ErrorMessage = err;
return data;
}
//[PermissionOperate(name: AIPermissionPolicy.AiBook, operate: Operate.Print)]
public dynamic PrintBySearchCriteria(AiChapterSearchCriteria criteria)
{
throw new NotImplementedException();
}
[PermissionOperate(name: AIPermissionPolicy.AiBook, operate: Operate.Insert)]
[UnitOfWork]
public AiChapterEntity Insert(AiChapterEntity data)
{
throw new NotImplementedException();
}
[PermissionOperate(name: AIPermissionPolicy.AiBook, operate: Operate.Update)]
[UnitOfWork]
public AiChapterEntity Update(AiChapterEntity data)
{
throw new NotImplementedException();
}
[PermissionOperate(name: AIPermissionPolicy.AiBook, operate: Operate.Delete)]
[UnitOfWork]
public void Delete(AiChapterEntityKey key)
{
var ent = repository.DetachedEntities.Where(x => x.ChapterId == key.ChapterId && x.BookId == key.BookId).FirstOrDefault()!;
if (ent != null) { repository.DeleteNow(ent); }
}
}
}