CloudBuilder/CloudBuilder.Web.Entry/Controllers/Ai/AiBookController.auto.cs
owenchen 2e990e687f ow
2026-05-28 15:05:46 +08:00

272 lines
9.6 KiB
C#

using CloudBuilder.Core.DatabaseAccessor;
using CloudBuilder.Core.Policy;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using System.Transactions;
using CloudBuilder.Core.Service;
using CloudBuilder.AI.Service;
using CloudBuilder.Core.DatabaseAccessor.Entity;
using CloudBuilder.AI.Entity;
using System;
using CloudBuilder.AI.Data;
using CloudBuilder.AI.SearchCriteria;
using Microsoft.AspNetCore.Mvc;
namespace CloudBuilder.Web.Entry.Controllers.Ai
{
[Authorize(AuthorizePolicy.PERMISSION)]
[ApiController]
[Route("[controller]/[action]")]
public class AiBookController : ControllerBase
{
private readonly IApplicationService service;
private readonly IAiBookService aiBookService;
public AiBookController(IApplicationService service, IAiBookService aiBookService)
{
this.service = service;
this.aiBookService= aiBookService;
}
[PermissionOperate(name: "AiBook", operate: "Find")]
[HttpPost]
public dynamic FindByKey(string key)
{
try
{
var result = aiBookService.FindByKey(key);
return result;
}
catch (ValidatedException vex)
{
return vex;
}
catch (Exception ex)
{
return new ServiceErrorException(ex);
}
}
[PermissionOperate(name: "AiBook", operate: "Find")]
[HttpPost]
public dynamic FindByTitle(string title)
{
try
{
var result = aiBookService.FindByTitle(title);
return result;
}
catch (ValidatedException vex)
{
return vex;
}
catch (Exception ex)
{
return new ServiceErrorException(ex);
}
}
[PermissionOperate(name: "AiBook", operate: "Find")]
[HttpPost]
public dynamic FindBySearchCriteria(AiBookSearchCriteria criteria)
{
try
{
var result = aiBookService.FindBySearchCriteria(criteria);
return result;
}
catch (ValidatedException vex)
{
return vex;
}
catch (Exception ex)
{
return new ServiceErrorException(ex);
}
}
[PermissionOperate(name: "AiBook", operate: "Insert")]
[HttpPost]
[UnitOfWork]
public dynamic Insert(AiBookData data)
{
try
{
var result = aiBookService.Insert(data);
return result;
}
catch (ValidatedException vex)
{
return vex;
}
catch (Exception ex)
{
return new ServiceErrorException(ex);
}
}
[PermissionOperate(name: "AiBook", operate: "Update")]
[HttpPost]
[UnitOfWork]
public dynamic Update(AiBookData data)
{
try
{
var result = aiBookService.Update(data);
return result;
}
catch (ValidatedException vex)
{
return vex;
}
catch (Exception ex)
{
return new ServiceErrorException(ex);
}
}
[PermissionOperate(name: "AiBook", operate: "Delete")]
[HttpPost]
[UnitOfWork]
public dynamic Delete(string key){
try
{
aiBookService.Delete(key);
return string.Empty;
}
catch (ValidatedException vex)
{
return vex;
}
catch (Exception ex)
{
return new ServiceErrorException(ex);
}
}
[PermissionOperate(name: "AiBook", operate: "Delete")]
[HttpPost]
[UnitOfWork]
public dynamic Deletes(string[] keys){
try
{
aiBookService.Deletes(keys);
return string.Empty;
}
catch (ValidatedException vex)
{
return vex;
}
catch (Exception ex)
{
return new ServiceErrorException(ex);
}
}
public class ProcessBookCompositionData
{
public string key { get; set; }
public string encoding { get; set; }
public string pattern { get; set; }
}
[PermissionOperate(name: "AiBook", operate: "Update")]
[HttpPost]
[UnitOfWork]
public dynamic ProcessBook(ProcessBookCompositionData compositionData)
{
try
{
var result = aiBookService.ProcessBook(compositionData.key,compositionData.encoding,compositionData.pattern);
return result;
}
catch (ValidatedException vex)
{
return vex;
}
catch (Exception ex)
{
return new ServiceErrorException(ex);
}
}
[PermissionOperate(name: "AiBook", operate: "Update")]
[HttpPost]
[UnitOfWork]
public dynamic ExtractNames(string bookGuid){
try
{
aiBookService.ExtractNames(bookGuid);
return string.Empty;
}
catch (ValidatedException vex)
{
return vex;
}
catch (Exception ex)
{
return new ServiceErrorException(ex);
}
}
public class ExtractNamesByChapterGuidCompositionData
{
public string bookGuid { get; set; }
public string chapterGuid { get; set; }
}
[PermissionOperate(name: "AiBook", operate: "Update")]
[HttpPost]
[UnitOfWork]
public dynamic ExtractNamesByChapterGuid(ExtractNamesByChapterGuidCompositionData compositionData){
try
{
aiBookService.ExtractNamesByChapterGuid(compositionData.bookGuid,compositionData.chapterGuid);
return string.Empty;
}
catch (ValidatedException vex)
{
return vex;
}
catch (Exception ex)
{
return new ServiceErrorException(ex);
}
}
[PermissionOperate(name: "AiBook", operate: "Find")]
[HttpPost]
public dynamic GetTtsStream(string text)
{
try
{
var result = aiBookService.GetTtsStream(text);
return result;
}
catch (ValidatedException vex)
{
return vex;
}
catch (Exception ex)
{
return new ServiceErrorException(ex);
}
}
}
}