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.Entity; using Microsoft.AspNetCore.Authorization; namespace CloudBuilder.AI.Service { public class AiBookService : IAiBookService { private readonly IApplicationService service; private IRepository repository; public AiBookService(IApplicationService service) { this.service = service; repository = service.GetRepository>(); } [PermissionOperate(name: AIPermissionPolicy.AiBook, operate: Operate.Find)] public AiBookEntity FindByKey(string key) { return repository.DetachedEntities.Where(x => x.Guid == key).FirstOrDefault()!; } [PermissionOperate(name: AIPermissionPolicy.AiBook, operate: Operate.Find)] public AiBookEntity FindByTitle(string title) { return repository.DetachedEntities.Where(x => x.Title == title).FirstOrDefault()!; } //[PermissionOperate(name: AIPermissionPolicy.AiBook, operate: Operate.Find)] public dynamic FindBySearchCriteria(AiBookSearchCriteria criteria) { throw new NotImplementedException(); } //[PermissionOperate(name: AIPermissionPolicy.AiBook, operate: Operate.Print)] public dynamic PrintBySearchCriteria(AiBookSearchCriteria criteria) { throw new NotImplementedException(); } [PermissionOperate(name: AIPermissionPolicy.AiBook, operate: Operate.Insert)] [UnitOfWork] public AiBookEntity Insert(AiBookEntity data) { throw new NotImplementedException(); } [PermissionOperate(name: AIPermissionPolicy.AiBook, operate: Operate.Insert)] [UnitOfWork] public void Insert(AiBookData data) { AiBookEntity entity = repository.DetachedEntities.Where(x => x.Title == data.AiBook.Title).FirstOrDefault(); if (entity != null) { throw new ValidatedException("记录已存在."); } repository.InsertNow(data.AiBook); IRepository repositoryAiChapterEntity = repository.GetRepository>(); repositoryAiChapterEntity.InsertNow(data.AiChapters); } [PermissionOperate(name: AIPermissionPolicy.AiBook, operate: Operate.Update)] [UnitOfWork] public AiBookEntity Update(AiBookEntity data) { throw new NotImplementedException(); } [PermissionOperate(name: AIPermissionPolicy.AiBook, operate: Operate.Delete)] [UnitOfWork] public void Delete(string key) { var ent = repository.DetachedEntities.Where(x => x.Guid == key).FirstOrDefault()!; if (ent != null) { repository.DeleteNow(ent); } } } }