CloudBuilder/CloudBuilder.AI.Service/AiSentenceService.auto.cs
owenchen 5f1062c010 ow
2026-06-23 15:32:12 +08:00

121 lines
4.4 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 CloudBuilder.Security.Data;
using CloudBuilder.Security.Entity;
using Microsoft.AspNetCore.Authorization;
namespace CloudBuilder.AI.Service
{
public class AiSentenceService : IAiSentenceService
{
private readonly IApplicationService service;
private IRepository<AiSentenceEntity> repository;
public AiSentenceService(IApplicationService service)
{
this.service = service;
repository = service.GetRepository<IRepository<AiSentenceEntity>>();
}
[PermissionOperate(name: AIPermissionPolicy.AiBook, operate: Operate.Find)]
public AiSentenceEntity FindByKey(long key)
{
return repository.DetachedEntities.Where(x => x.SentenceId == key).FirstOrDefault()!;
}
[PermissionOperate(name: AIPermissionPolicy.AiBook, operate: Operate.Find)]
public AiSentenceViewEntity[] FindByChapterId(string bookId, long chapterId)
{
IRepository<AiSentenceViewEntity> repositoryAiSentenceViewEntity = repository.GetRepository<IRepository<AiSentenceViewEntity>>();
return repositoryAiSentenceViewEntity.DetachedEntities.Where(x => x.BookId == bookId && x.ChapterId == chapterId).OrderBy(x => x.ParagraphId).ThenBy(x => x.SentenceIndex).ToArray();
}
[PermissionOperate(name: AIPermissionPolicy.AiBook, operate: Operate.Find)]
public AiSentenceViewResultData FindBySearchCriteria(AiSentenceSearchCriteria criteria)
{
AiSentenceViewResultData data = new AiSentenceViewResultData();
AiSentenceViewEntity[] list = null;
IRepository<AiSentenceViewEntity> repositoryAiSentenceViewEntity = repository.GetRepository<IRepository<AiSentenceViewEntity>>();
int count = 0;
string sqlWhere = null;
if (criteria.Filter != null && criteria.Filter.Length > 0)
{
sqlWhere = SearchFilter.ComposeWhereClause(criteria.Filter);
}
AiSentenceViewEntity entity = AiSentenceViewEntity.GetInstance();
string sql = entity.GetSelectTopFrom(criteria.limit, criteria.page, criteria.orderby.StringToDbField(), criteria.orderbytag, sqlWhere);
string err = null;
try
{
list = repositoryAiSentenceViewEntity.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;
data.Total = count;
//data.Sql = sql;
data.ErrorMessage = err;
return data;
}
//[PermissionOperate(name: AIPermissionPolicy.AiBook, operate: Operate.Print)]
public dynamic PrintBySearchCriteria(AiSentenceSearchCriteria criteria)
{
throw new NotImplementedException();
}
[PermissionOperate(name: AIPermissionPolicy.AiBook, operate: Operate.Insert)]
[UnitOfWork]
public AiSentenceEntity Insert(AiSentenceEntity data)
{
throw new NotImplementedException();
}
[PermissionOperate(name: AIPermissionPolicy.AiParagraph, operate: Operate.Insert)]
[UnitOfWork]
public void Inserts(AiSentenceEntity[] datas)
{
repository.InsertNow(datas);
}
[PermissionOperate(name: AIPermissionPolicy.AiBook, operate: Operate.Update)]
[UnitOfWork]
public AiSentenceEntity Update(AiSentenceEntity data)
{
throw new NotImplementedException();
}
[PermissionOperate(name: AIPermissionPolicy.AiBook, operate: Operate.Delete)]
[UnitOfWork]
public void Delete(long key)
{
var ent = repository.DetachedEntities.Where(x => x.SentenceId == key).FirstOrDefault()!;
if (ent != null) { repository.DeleteNow(ent); }
}
}
}