cf650cecafe2cd7b7f56b03b4cca64b51827dd90..5c61fbbd976d95ee4cfa1c0e0c7c43a8bb4bfa3b
3 天以前 owen
Merge branch 'master' of http://github.youjiala.com/r/Clo...
5c61fb 对比 | 目录
3 天以前 owen
ow
f16340 对比 | 目录
4 天以前 owenchen
ow
67635d 对比 | 目录
已添加22个文件
已修改1个文件
1073 ■■■■■ 文件已修改
CloudBuilder.CodeGenerator/Config/tool-init-config.xml 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CloudBuilder.Novel.Service/BookService.auto.cs 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CloudBuilder.Novel.Service/ChapterService.auto.cs 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CloudBuilder.Novel.Service/CloudBuilder.Novel.Service.csproj 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CloudBuilder.Novel.Service/ParagraphService.auto.cs 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CloudBuilder.Novel.Service/SentenceService.auto.cs 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CloudBuilder.Novel/CloudBuilder.Novel.csproj 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CloudBuilder.Novel/Data/PersonInfo.cs 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CloudBuilder.Novel/Entity/BookEntity.auto.cs 128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CloudBuilder.Novel/Entity/ChapterEntity.auto.cs 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CloudBuilder.Novel/Entity/CloudBuilderNovelRegistEntity.auto.cs 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CloudBuilder.Novel/Entity/ParagraphEntity.auto.cs 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CloudBuilder.Novel/Entity/SentenceEntity.auto.cs 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CloudBuilder.Novel/Policy/NovelPermissionPolicy.auto.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CloudBuilder.Novel/Policy/NovelPermissionPolicy.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CloudBuilder.Novel/SearchCriteria/BookSearchCriteria.auto.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CloudBuilder.Novel/SearchCriteria/ChapterSearchCriteria.auto.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CloudBuilder.Novel/SearchCriteria/ParagraphSearchCriteria.auto.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CloudBuilder.Novel/SearchCriteria/SentenceSearchCriteria.auto.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CloudBuilder.Novel/Service/IBookService.auto.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CloudBuilder.Novel/Service/IChapterService.auto.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CloudBuilder.Novel/Service/IParagraphService.auto.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CloudBuilder.Novel/Service/ISentenceService.auto.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CloudBuilder.CodeGenerator/Config/tool-init-config.xml
@@ -258,6 +258,87 @@
      <Namespace>CloudBuilder.Web.Entry.Controllers.Hr</Namespace>
      <FileNameSuffix>.ts</FileNameSuffix>
    </NamespaceObject>
    <NamespaceObject>
      <TemplateType>Entity</TemplateType>
      <TemplateFileName>IEntity.cshtml</TemplateFileName>
      <OutFilePath>D:\NET8\CloudBuilder\CloudBuilder.Novel\Entity</OutFilePath>
      <Assembly>CloudBuilder.Novel</Assembly>
      <Namespace>CloudBuilder.Novel</Namespace>
      <FileNameSuffix>Entity.auto.cs</FileNameSuffix>
    </NamespaceObject>
    <NamespaceObject>
      <TemplateType>IEntityKey</TemplateType>
      <TemplateFileName>IEntityKey.cshtml</TemplateFileName>
      <OutFilePath>D:\NET8\CloudBuilder\CloudBuilder.Novel\Entity</OutFilePath>
      <Assembly>CloudBuilder.Novel</Assembly>
      <Namespace>CloudBuilder.Novel</Namespace>
      <FileNameSuffix>EntityKey.auto.cs</FileNameSuffix>
    </NamespaceObject>
    <NamespaceObject>
      <TemplateType>IService</TemplateType>
      <TemplateFileName>IService.cshtml</TemplateFileName>
      <OutFilePath>D:\NET8\CloudBuilder\CloudBuilder.Novel\Service</OutFilePath>
      <Assembly>CloudBuilder.Novel</Assembly>
      <Namespace>CloudBuilder.Novel</Namespace>
      <FileNameSuffix>Service.auto.cs</FileNameSuffix>
      <FileNamePrefix>I</FileNamePrefix>
    </NamespaceObject>
    <NamespaceObject>
      <TemplateType>Permission</TemplateType>
      <TemplateFileName>Permission.cshtml</TemplateFileName>
      <OutFilePath>D:\NET8\CloudBuilder\CloudBuilder.Novel\Policy</OutFilePath>
      <Assembly>CloudBuilder.Novel</Assembly>
      <Namespace>CloudBuilder.Novel</Namespace>
      <FileNameSuffix>PermissionPolicy.auto.cs</FileNameSuffix>
    </NamespaceObject>
    <NamespaceObject>
      <TemplateType>RegistEntity</TemplateType>
      <TemplateFileName>RegistEntity.cshtml</TemplateFileName>
      <OutFilePath>D:\NET8\CloudBuilder\CloudBuilder.Novel\Entity</OutFilePath>
      <Assembly>CloudBuilder.Novel</Assembly>
      <Namespace>CloudBuilder.Novel</Namespace>
      <FileNameSuffix>RegistEntity.auto.cs</FileNameSuffix>
    </NamespaceObject>
    <NamespaceObject>
      <TemplateType>SearchCriteria</TemplateType>
      <TemplateFileName>SearchCriteria.cshtml</TemplateFileName>
      <OutFilePath>D:\NET8\CloudBuilder\CloudBuilder.Novel\SearchCriteria</OutFilePath>
      <Assembly>CloudBuilder.Novel</Assembly>
      <Namespace>CloudBuilder.Novel</Namespace>
      <FileNameSuffix>SearchCriteria.auto.cs</FileNameSuffix>
    </NamespaceObject>
    <NamespaceObject>
      <TemplateType>Service</TemplateType>
      <TemplateFileName>Service.cshtml</TemplateFileName>
      <OutFilePath>D:\NET8\CloudBuilder\CloudBuilder.Novel.Service</OutFilePath>
      <Assembly>CloudBuilder.Novel</Assembly>
      <Namespace>CloudBuilder.Novel</Namespace>
      <FileNameSuffix>Service.auto.cs</FileNameSuffix>
    </NamespaceObject>
    <NamespaceObject>
      <TemplateType>TypeScript</TemplateType>
      <TemplateFileName>TypeScript.cshtml</TemplateFileName>
      <OutFilePath>D:\NET8\Webmaster\src\data\auto</OutFilePath>
      <Assembly>CloudBuilder.Novel</Assembly>
      <Namespace>CloudBuilder.Novel</Namespace>
      <FileNameSuffix>.ts</FileNameSuffix>
    </NamespaceObject>
    <NamespaceObject>
      <TemplateType>Controller</TemplateType>
      <TemplateFileName>Controller.cshtml</TemplateFileName>
      <OutFilePath>D:\NET8\CloudBuilder\CloudBuilder.Web.Entry\Controllers\Novel</OutFilePath>
      <Assembly>CloudBuilder.Novel.Service</Assembly>
      <Namespace>CloudBuilder.Web.Entry.Controllers.Novel</Namespace>
      <FileNameSuffix>Controller.auto.cs</FileNameSuffix>
    </NamespaceObject>
    <NamespaceObject>
      <TemplateType>TypeScriptService</TemplateType>
      <TemplateFileName>TypeScriptService.cshtml</TemplateFileName>
      <OutFilePath>D:\NET8\Webmaster\src\service\Novel</OutFilePath>
      <Assembly>CloudBuilder.Novel.Service</Assembly>
      <Namespace>CloudBuilder.Web.Entry.Controllers.Novel</Namespace>
      <FileNameSuffix>.ts</FileNameSuffix>
    </NamespaceObject>
  </NamespaceObjects>
  <AssemblyReferences>
    <AssemblyReference>
CloudBuilder.Novel.Service/BookService.auto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,61 @@
using CloudBuilder.Core.DatabaseAccessor.Entity;
using Microsoft.AspNetCore.Authorization;
using CloudBuilder.Core.DatabaseAccessor;
using CloudBuilder.Novel.Entity;
using CloudBuilder.Novel.Policy;
using CloudBuilder.Novel.SearchCriteria;
namespace CloudBuilder.Novel.Service
{
    public class BookService : IBookService
    {
        private readonly IApplicationService service;
        private IRepository<BookEntity> repository;
        public BookService(IApplicationService service)
        {
            this.service = service;
            repository = service.GetRepository<IRepository<BookEntity>>();
        }
        [PermissionOperate(name: NovelPermissionPolicy.Book, operate: Operate.Find)]
        public BookEntity FindByKey(string key)
        {
            return repository.DetachedEntities.Where(x => x.Guid == key).FirstOrDefault()!;
        }
        //[PermissionOperate(name: NovelPermissionPolicy.Book, operate: Operate.Find)]
        public dynamic FindBySearchCriteria(BookSearchCriteria criteria)
        {
            throw new NotImplementedException();
        }
        //[PermissionOperate(name: NovelPermissionPolicy.Book, operate: Operate.Print)]
        public dynamic PrintBySearchCriteria(BookSearchCriteria criteria)
        {
            throw new NotImplementedException();
        }
        [PermissionOperate(name: NovelPermissionPolicy.Book, operate: Operate.Insert)]
        [UnitOfWork]
        public BookEntity Insert(BookEntity data)
        {
            throw new NotImplementedException();
        }
        [PermissionOperate(name: NovelPermissionPolicy.Book, operate: Operate.Update)]
        [UnitOfWork]
        public BookEntity Update(BookEntity data)
        {
            throw new NotImplementedException();
        }
        [PermissionOperate(name: NovelPermissionPolicy.Book, 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); }
        }
    }
}
CloudBuilder.Novel.Service/ChapterService.auto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,61 @@
using CloudBuilder.Core.DatabaseAccessor.Entity;
using Microsoft.AspNetCore.Authorization;
using CloudBuilder.Core.DatabaseAccessor;
using CloudBuilder.Novel.Entity;
using CloudBuilder.Novel.Policy;
using CloudBuilder.Novel.SearchCriteria;
namespace CloudBuilder.Novel.Service
{
    public class ChapterService : IChapterService
    {
        private readonly IApplicationService service;
        private IRepository<ChapterEntity> repository;
        public ChapterService(IApplicationService service)
        {
            this.service = service;
            repository = service.GetRepository<IRepository<ChapterEntity>>();
        }
        [PermissionOperate(name: NovelPermissionPolicy.Chapter, operate: Operate.Find)]
        public ChapterEntity FindByKey(string key)
        {
            return repository.DetachedEntities.Where(x => x.Guid == key).FirstOrDefault()!;
        }
        //[PermissionOperate(name: NovelPermissionPolicy.Chapter, operate: Operate.Find)]
        public dynamic FindBySearchCriteria(ChapterSearchCriteria criteria)
        {
            throw new NotImplementedException();
        }
        //[PermissionOperate(name: NovelPermissionPolicy.Chapter, operate: Operate.Print)]
        public dynamic PrintBySearchCriteria(ChapterSearchCriteria criteria)
        {
            throw new NotImplementedException();
        }
        [PermissionOperate(name: NovelPermissionPolicy.Chapter, operate: Operate.Insert)]
        [UnitOfWork]
        public ChapterEntity Insert(ChapterEntity data)
        {
            throw new NotImplementedException();
        }
        [PermissionOperate(name: NovelPermissionPolicy.Chapter, operate: Operate.Update)]
        [UnitOfWork]
        public ChapterEntity Update(ChapterEntity data)
        {
            throw new NotImplementedException();
        }
        [PermissionOperate(name: NovelPermissionPolicy.Chapter, 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); }
        }
    }
}
CloudBuilder.Novel.Service/CloudBuilder.Novel.Service.csproj
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,47 @@
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>
  <ItemGroup>
    <Compile Remove="Utility\**" />
    <EmbeddedResource Remove="Utility\**" />
    <None Remove="Utility\**" />
  </ItemGroup>
    <ItemGroup>
        <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="8.0.0" />
        <PackageReference Include="Microsoft.AspNetCore.Authorization" Version="8.0.0" />
        <PackageReference Include="ClosedXML" Version="0.102.1" />
        <PackageReference Include="Microsoft.AspNetCore.SpaServices.Extensions" Version="8.0.0" />
        <PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.0" />
        <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="8.0.0" />
        <PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.0" />
        <PackageReference Include="Microsoft.VisualStudio.OLE.Interop" Version="17.8.37221" />
        <PackageReference Include="Microsoft.Extensions.Configuration" Version="8.0.0" />
        <PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="8.0.0" />
        <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="8.0.0" />
        <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0" />
        <PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="8.0.0" />
        <PackageReference Include="Microsoft.Extensions.DependencyModel" Version="8.0.0" />
    </ItemGroup>
    <ItemGroup>
        <Reference Include="CloudBuilder.Core">
          <HintPath>..\CloudBuilder.Core\bin\Debug\net8.0\CloudBuilder.Core.dll</HintPath>
        </Reference>
        <Reference Include="CloudBuilder.Novel">
          <HintPath>..\CloudBuilder.Novel\bin\Debug\net8.0\CloudBuilder.Novel.dll</HintPath>
        </Reference>
        <Reference Include="CloudBuilder.Security">
          <HintPath>..\CloudBuilder.Security\bin\Debug\net8.0\CloudBuilder.Security.dll</HintPath>
        </Reference>
    </ItemGroup>
    <Target Name="PostBuild" AfterTargets="PostBuildEvent">
        <Exec Command="D:\NET8\CloudBuilder\CodeGenerator\bin\Debug\net8.0-windows\CodeGenerator.exe $(TargetPath)" />
    </Target>
</Project>
CloudBuilder.Novel.Service/ParagraphService.auto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,61 @@
using CloudBuilder.Core.DatabaseAccessor.Entity;
using Microsoft.AspNetCore.Authorization;
using CloudBuilder.Core.DatabaseAccessor;
using CloudBuilder.Novel.Entity;
using CloudBuilder.Novel.Policy;
using CloudBuilder.Novel.SearchCriteria;
namespace CloudBuilder.Novel.Service
{
    public class ParagraphService : IParagraphService
    {
        private readonly IApplicationService service;
        private IRepository<ParagraphEntity> repository;
        public ParagraphService(IApplicationService service)
        {
            this.service = service;
            repository = service.GetRepository<IRepository<ParagraphEntity>>();
        }
        [PermissionOperate(name: NovelPermissionPolicy.Paragraph, operate: Operate.Find)]
        public ParagraphEntity FindByKey(string key)
        {
            return repository.DetachedEntities.Where(x => x.Guid == key).FirstOrDefault()!;
        }
        //[PermissionOperate(name: NovelPermissionPolicy.Paragraph, operate: Operate.Find)]
        public dynamic FindBySearchCriteria(ParagraphSearchCriteria criteria)
        {
            throw new NotImplementedException();
        }
        //[PermissionOperate(name: NovelPermissionPolicy.Paragraph, operate: Operate.Print)]
        public dynamic PrintBySearchCriteria(ParagraphSearchCriteria criteria)
        {
            throw new NotImplementedException();
        }
        [PermissionOperate(name: NovelPermissionPolicy.Paragraph, operate: Operate.Insert)]
        [UnitOfWork]
        public ParagraphEntity Insert(ParagraphEntity data)
        {
            throw new NotImplementedException();
        }
        [PermissionOperate(name: NovelPermissionPolicy.Paragraph, operate: Operate.Update)]
        [UnitOfWork]
        public ParagraphEntity Update(ParagraphEntity data)
        {
            throw new NotImplementedException();
        }
        [PermissionOperate(name: NovelPermissionPolicy.Paragraph, 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); }
        }
    }
}
CloudBuilder.Novel.Service/SentenceService.auto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,61 @@
using CloudBuilder.Core.DatabaseAccessor.Entity;
using Microsoft.AspNetCore.Authorization;
using CloudBuilder.Core.DatabaseAccessor;
using CloudBuilder.Novel.Entity;
using CloudBuilder.Novel.Policy;
using CloudBuilder.Novel.SearchCriteria;
namespace CloudBuilder.Novel.Service
{
    public class SentenceService : ISentenceService
    {
        private readonly IApplicationService service;
        private IRepository<SentenceEntity> repository;
        public SentenceService(IApplicationService service)
        {
            this.service = service;
            repository = service.GetRepository<IRepository<SentenceEntity>>();
        }
        [PermissionOperate(name: NovelPermissionPolicy.Sentence, operate: Operate.Find)]
        public SentenceEntity FindByKey(string key)
        {
            return repository.DetachedEntities.Where(x => x.Guid == key).FirstOrDefault()!;
        }
        //[PermissionOperate(name: NovelPermissionPolicy.Sentence, operate: Operate.Find)]
        public dynamic FindBySearchCriteria(SentenceSearchCriteria criteria)
        {
            throw new NotImplementedException();
        }
        //[PermissionOperate(name: NovelPermissionPolicy.Sentence, operate: Operate.Print)]
        public dynamic PrintBySearchCriteria(SentenceSearchCriteria criteria)
        {
            throw new NotImplementedException();
        }
        [PermissionOperate(name: NovelPermissionPolicy.Sentence, operate: Operate.Insert)]
        [UnitOfWork]
        public SentenceEntity Insert(SentenceEntity data)
        {
            throw new NotImplementedException();
        }
        [PermissionOperate(name: NovelPermissionPolicy.Sentence, operate: Operate.Update)]
        [UnitOfWork]
        public SentenceEntity Update(SentenceEntity data)
        {
            throw new NotImplementedException();
        }
        [PermissionOperate(name: NovelPermissionPolicy.Sentence, 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); }
        }
    }
}
CloudBuilder.Novel/CloudBuilder.Novel.csproj
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,52 @@
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>
    <ItemGroup>
        <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="8.0.0" />
        <PackageReference Include="Microsoft.AspNetCore.Authorization" Version="8.0.0" />
        <PackageReference Include="Microsoft.AspNetCore.SpaServices.Extensions" Version="8.0.0" />
        <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="8.0.0" />
        <PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.0" />
        <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="8.0.0" />
        <PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.0" />
        <PackageReference Include="Microsoft.VisualStudio.OLE.Interop" Version="17.8.37221" />
        <PackageReference Include="RazorEngineCore" Version="2023.11.2" />
        <PackageReference Include="Microsoft.Extensions.Configuration" Version="8.0.0" />
        <PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="8.0.0" />
        <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="8.0.0" />
        <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0" />
        <PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="8.0.0" />
        <PackageReference Include="Microsoft.Extensions.DependencyModel" Version="8.0.0" />
    </ItemGroup>
    <ItemGroup>
      <Folder Include="Linkup\" />
      <Folder Include="Publisher\" />
      <Folder Include="SearchCriteria\" />
      <Folder Include="Service\" />
      <Folder Include="Subscriber\" />
      <Folder Include="Utility\" />
    </ItemGroup>
    <ItemGroup>
      <Reference Include="CloudBuilder.Core">
        <HintPath>..\CloudBuilder.Core\bin\Debug\net8.0\CloudBuilder.Core.dll</HintPath>
      </Reference>
      <Reference Include="CloudBuilder.Security">
        <HintPath>..\CloudBuilder.Security\bin\Debug\net8.0\CloudBuilder.Security.dll</HintPath>
      </Reference>
    </ItemGroup>
    <Target Name="PreBuild" BeforeTargets="PreBuildEvent">
    </Target>
    <Target Name="PostBuild" AfterTargets="PostBuildEvent">
      <Exec Command="D:\NET8\CloudBuilder\CodeGenerator\bin\Debug\net8.0-windows\CodeGenerator.exe $(TargetPath)" />
    </Target>
</Project>
CloudBuilder.Novel/Data/PersonInfo.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CloudBuilder.Novel.Data
{
    public class PersonInfo
    {
        public PersonInfo() { }
        public int Count { get; set; }
        public string Name { get; set; }
        public string Rule { get; set; }
        public int Confidence { get; set; }
        public List<string> Paragraphs { get; set; }
        public List<string> Chapters { get; set; }
    }
}
CloudBuilder.Novel/Entity/BookEntity.auto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,128 @@
using CloudBuilder.Core.Authorization;
using CloudBuilder.Core.DatabaseAccessor.Entity;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace CloudBuilder.Novel.Entity
 {
    [TypeScript]
    [Table("book")]
    public class BookEntity : EntityBase<string>
    {
    public BookEntity()
    {
    }
    [Column("created_datetime")]
    public DateTime CreatedDatetime  { get; set; }
    [Column("created_by")]
    public string CreatedBy  { get; set; }
    [Column("updated_datetime")]
    public DateTime UpdatedDatetime  { get; set; }
    [Column("updated_by")]
    public string UpdatedBy  { get; set; }
    [Key]
    [Column("guid")]
    public string Guid  { get; set; }
    [Column("title")]
    public string Title  { get; set; }
    [Column("author")]
    public string Author  { get; set; }
    [Column("description")]
    public string Description  { get; set; }
    [Column("book_type")]
    public string BookType  { get; set; }
    [Column("file_path")]
    public string FilePath  { get; set; }
    public const string CREATED_DATETIME = "CreatedDatetime";
    public const string CREATED_BY = "CreatedBy";
    public const string UPDATED_DATETIME = "UpdatedDatetime";
    public const string UPDATED_BY = "UpdatedBy";
    public const string GUID = "Guid";
    public const string TITLE = "Title";
    public const string AUTHOR = "Author";
    public const string DESCRIPTION = "Description";
    public const string BOOK_TYPE = "BookType";
    public const string FILE_PATH = "FilePath";
    public const string DB_NAME_BOOK = "book";
    public const string DB_NAME_FIELDS="created_datetime,created_by,updated_datetime,updated_by,guid,title,author,description,book_type,file_path";
    public const string DB_CREATED_DATETIME = "created_datetime";
    public const string DB_CREATED_BY = "created_by";
    public const string DB_UPDATED_DATETIME = "updated_datetime";
    public const string DB_UPDATED_BY = "updated_by";
    public const string DB_GUID = "guid";
    public const string DB_TITLE = "title";
    public const string DB_AUTHOR = "author";
    public const string DB_DESCRIPTION = "description";
    public const string DB_BOOK_TYPE = "book_type";
    public const string DB_FILE_PATH = "file_path";
    public static BookEntity GetInstance()
    {
        return new BookEntity();
    }
    public virtual void CopyFrom(BookEntity source)
    {
        CopyFrom(source, true);
    }
    public virtual void CopyFrom(BookEntity source, bool includeSystemFields)
    {
        if (source == null)
        {
            throw new NullReferenceException("Source entity is null.");
        }
        this.CreatedDatetime =  source.CreatedDatetime;
        this.CreatedBy =  source.CreatedBy;
        this.UpdatedDatetime =  source.UpdatedDatetime;
        this.UpdatedBy =  source.UpdatedBy;
        this.Guid =  source.Guid;
        this.Title =  source.Title;
        this.Author =  source.Author;
        this.Description =  source.Description;
        this.BookType =  source.BookType;
        this.FilePath =  source.FilePath;
        if (includeSystemFields)
        {
        this.CreatedDatetime =  source.CreatedDatetime;
        this.CreatedBy =  source.CreatedBy;
        this.UpdatedDatetime =  source.UpdatedDatetime;
        this.UpdatedBy =  source.UpdatedBy;
        }
    }
    public override string GetSelectFrom()
    {
        return $" select {DB_NAME_FIELDS} from { DB_NAME_BOOK}  with(nolock) ";
    }
    public override string GetSelectCountFrom(string sqlWhere)
    {
        return $" select count(*) from { DB_NAME_BOOK}  with(nolock) where 1=1 {sqlWhere}";
    }
    public override string GetSelectTopFrom(int limit, int start,string orderby,string orderbytag,  string sqlWhere)
    {
            if (string.IsNullOrEmpty(orderbytag)  || orderbytag.Trim() != "desc") orderbytag = "asc";
            if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby =  DB_GUID ;
        string top = limit > 0 ? $"top {limit}" : "";
        return $" select {top} {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS}  ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_BOOK}  with(nolock) where 1=1 {sqlWhere} ) a where num> {limit * (start - 1)}";
    }
    public BookEntity Clone()
    {
        BookEntity result = new BookEntity();
        result.CopyFrom(this);
        return result;
    }
    }
}
CloudBuilder.Novel/Entity/ChapterEntity.auto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,118 @@
using CloudBuilder.Core.Authorization;
using CloudBuilder.Core.DatabaseAccessor.Entity;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace CloudBuilder.Novel.Entity
 {
    [TypeScript]
    [Table("chapter")]
    public class ChapterEntity : EntityBase<string>
    {
    public ChapterEntity()
    {
    }
    [Column("created_datetime")]
    public DateTime CreatedDatetime  { get; set; }
    [Column("created_by")]
    public string CreatedBy  { get; set; }
    [Column("updated_datetime")]
    public DateTime UpdatedDatetime  { get; set; }
    [Column("updated_by")]
    public string UpdatedBy  { get; set; }
    [Key]
    [Column("guid")]
    public string Guid  { get; set; }
    [Column("chapter_index")]
    public int ChapterIndex  { get; set; }
    [Column("title")]
    public string Title  { get; set; }
    [Column("context")]
    public string Context  { get; set; }
    public const string CREATED_DATETIME = "CreatedDatetime";
    public const string CREATED_BY = "CreatedBy";
    public const string UPDATED_DATETIME = "UpdatedDatetime";
    public const string UPDATED_BY = "UpdatedBy";
    public const string GUID = "Guid";
    public const string CHAPTER_INDEX = "ChapterIndex";
    public const string TITLE = "Title";
    public const string CONTEXT = "Context";
    public const string DB_NAME_CHAPTER = "chapter";
    public const string DB_NAME_FIELDS="created_datetime,created_by,updated_datetime,updated_by,guid,chapter_index,title,context";
    public const string DB_CREATED_DATETIME = "created_datetime";
    public const string DB_CREATED_BY = "created_by";
    public const string DB_UPDATED_DATETIME = "updated_datetime";
    public const string DB_UPDATED_BY = "updated_by";
    public const string DB_GUID = "guid";
    public const string DB_CHAPTER_INDEX = "chapter_index";
    public const string DB_TITLE = "title";
    public const string DB_CONTEXT = "context";
    public static ChapterEntity GetInstance()
    {
        return new ChapterEntity();
    }
    public virtual void CopyFrom(ChapterEntity source)
    {
        CopyFrom(source, true);
    }
    public virtual void CopyFrom(ChapterEntity source, bool includeSystemFields)
    {
        if (source == null)
        {
            throw new NullReferenceException("Source entity is null.");
        }
        this.CreatedDatetime =  source.CreatedDatetime;
        this.CreatedBy =  source.CreatedBy;
        this.UpdatedDatetime =  source.UpdatedDatetime;
        this.UpdatedBy =  source.UpdatedBy;
        this.Guid =  source.Guid;
        this.ChapterIndex =  source.ChapterIndex;
        this.Title =  source.Title;
        this.Context =  source.Context;
        if (includeSystemFields)
        {
        this.CreatedDatetime =  source.CreatedDatetime;
        this.CreatedBy =  source.CreatedBy;
        this.UpdatedDatetime =  source.UpdatedDatetime;
        this.UpdatedBy =  source.UpdatedBy;
        }
    }
    public override string GetSelectFrom()
    {
        return $" select {DB_NAME_FIELDS} from { DB_NAME_CHAPTER}  with(nolock) ";
    }
    public override string GetSelectCountFrom(string sqlWhere)
    {
        return $" select count(*) from { DB_NAME_CHAPTER}  with(nolock) where 1=1 {sqlWhere}";
    }
    public override string GetSelectTopFrom(int limit, int start,string orderby,string orderbytag,  string sqlWhere)
    {
            if (string.IsNullOrEmpty(orderbytag)  || orderbytag.Trim() != "desc") orderbytag = "asc";
            if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby =  DB_GUID ;
        string top = limit > 0 ? $"top {limit}" : "";
        return $" select {top} {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS}  ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_CHAPTER}  with(nolock) where 1=1 {sqlWhere} ) a where num> {limit * (start - 1)}";
    }
    public ChapterEntity Clone()
    {
        ChapterEntity result = new ChapterEntity();
        result.CopyFrom(this);
        return result;
    }
    }
}
CloudBuilder.Novel/Entity/CloudBuilderNovelRegistEntity.auto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
using CloudBuilder.Core.DependencyInjection.EFCore;
using Microsoft.EntityFrameworkCore;
using System.Reflection;
namespace CloudBuilder.Policy.Entity
{
    public class CloudBuilderNovelRegistEntity : IMasterRegistEntityType<ModelBuilder>
        {
        ///<summary>
        ///注入模块内的所有实体类
        ///</summary>
        ///<param name="builder"></param>
        public void RegistEntity(ModelBuilder builder)
        {
            string _assemblyName = Assembly.GetExecutingAssembly().GetName().Name;
            //注入所有Entity实体类
            AddEntityType(builder, _assemblyName);
            //如果Entity实体类不是单一主键,要单独重写注入
            RegistKeys(builder);
        }
        public void AddEntityType(ModelBuilder builder, string _assemblyName)
        {
            RegistEntityHelper.AddMasterEntityType(builder, _assemblyName);
        }
        ///<summary>
        ///如果存在多个主键的,要在RegistKeys方法注入
        ///builder.Entity<xxxxxxEntity>().HasKey(c => new { c.TableName, c.FieldName });
        ///builder.Entity<xxxxxxEntity>(eb => { eb.HasNoKey(); });
        ///</summary>
        ///<param name="builder"></param>
        public void RegistKeys(ModelBuilder builder)
        {
            //***BEGIN***
            //***END***
        }
    }
}
CloudBuilder.Novel/Entity/ParagraphEntity.auto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,113 @@
using CloudBuilder.Core.Authorization;
using CloudBuilder.Core.DatabaseAccessor.Entity;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace CloudBuilder.Novel.Entity
 {
    [TypeScript]
    [Table("paragraph")]
    public class ParagraphEntity : EntityBase<string>
    {
    public ParagraphEntity()
    {
    }
    [Column("created_datetime")]
    public DateTime CreatedDatetime  { get; set; }
    [Column("created_by")]
    public string CreatedBy  { get; set; }
    [Column("updated_datetime")]
    public DateTime UpdatedDatetime  { get; set; }
    [Column("updated_by")]
    public string UpdatedBy  { get; set; }
    [Key]
    [Column("guid")]
    public string Guid  { get; set; }
    [Column("paragraph_index")]
    public int ParagraphIndex  { get; set; }
    [Column("context")]
    public string Context  { get; set; }
    public const string CREATED_DATETIME = "CreatedDatetime";
    public const string CREATED_BY = "CreatedBy";
    public const string UPDATED_DATETIME = "UpdatedDatetime";
    public const string UPDATED_BY = "UpdatedBy";
    public const string GUID = "Guid";
    public const string PARAGRAPH_INDEX = "ParagraphIndex";
    public const string CONTEXT = "Context";
    public const string DB_NAME_PARAGRAPH = "paragraph";
    public const string DB_NAME_FIELDS="created_datetime,created_by,updated_datetime,updated_by,guid,paragraph_index,context";
    public const string DB_CREATED_DATETIME = "created_datetime";
    public const string DB_CREATED_BY = "created_by";
    public const string DB_UPDATED_DATETIME = "updated_datetime";
    public const string DB_UPDATED_BY = "updated_by";
    public const string DB_GUID = "guid";
    public const string DB_PARAGRAPH_INDEX = "paragraph_index";
    public const string DB_CONTEXT = "context";
    public static ParagraphEntity GetInstance()
    {
        return new ParagraphEntity();
    }
    public virtual void CopyFrom(ParagraphEntity source)
    {
        CopyFrom(source, true);
    }
    public virtual void CopyFrom(ParagraphEntity source, bool includeSystemFields)
    {
        if (source == null)
        {
            throw new NullReferenceException("Source entity is null.");
        }
        this.CreatedDatetime =  source.CreatedDatetime;
        this.CreatedBy =  source.CreatedBy;
        this.UpdatedDatetime =  source.UpdatedDatetime;
        this.UpdatedBy =  source.UpdatedBy;
        this.Guid =  source.Guid;
        this.ParagraphIndex =  source.ParagraphIndex;
        this.Context =  source.Context;
        if (includeSystemFields)
        {
        this.CreatedDatetime =  source.CreatedDatetime;
        this.CreatedBy =  source.CreatedBy;
        this.UpdatedDatetime =  source.UpdatedDatetime;
        this.UpdatedBy =  source.UpdatedBy;
        }
    }
    public override string GetSelectFrom()
    {
        return $" select {DB_NAME_FIELDS} from { DB_NAME_PARAGRAPH}  with(nolock) ";
    }
    public override string GetSelectCountFrom(string sqlWhere)
    {
        return $" select count(*) from { DB_NAME_PARAGRAPH}  with(nolock) where 1=1 {sqlWhere}";
    }
    public override string GetSelectTopFrom(int limit, int start,string orderby,string orderbytag,  string sqlWhere)
    {
            if (string.IsNullOrEmpty(orderbytag)  || orderbytag.Trim() != "desc") orderbytag = "asc";
            if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby =  DB_GUID ;
        string top = limit > 0 ? $"top {limit}" : "";
        return $" select {top} {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS}  ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_PARAGRAPH}  with(nolock) where 1=1 {sqlWhere} ) a where num> {limit * (start - 1)}";
    }
    public ParagraphEntity Clone()
    {
        ParagraphEntity result = new ParagraphEntity();
        result.CopyFrom(this);
        return result;
    }
    }
}
CloudBuilder.Novel/Entity/SentenceEntity.auto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,113 @@
using CloudBuilder.Core.Authorization;
using CloudBuilder.Core.DatabaseAccessor.Entity;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace CloudBuilder.Novel.Entity
 {
    [TypeScript]
    [Table("sentence")]
    public class SentenceEntity : EntityBase<string>
    {
    public SentenceEntity()
    {
    }
    [Column("created_datetime")]
    public DateTime CreatedDatetime  { get; set; }
    [Column("created_by")]
    public string CreatedBy  { get; set; }
    [Column("updated_datetime")]
    public DateTime UpdatedDatetime  { get; set; }
    [Column("updated_by")]
    public string UpdatedBy  { get; set; }
    [Key]
    [Column("guid")]
    public string Guid  { get; set; }
    [Column("sentence_index")]
    public int SentenceIndex  { get; set; }
    [Column("context")]
    public string Context  { get; set; }
    public const string CREATED_DATETIME = "CreatedDatetime";
    public const string CREATED_BY = "CreatedBy";
    public const string UPDATED_DATETIME = "UpdatedDatetime";
    public const string UPDATED_BY = "UpdatedBy";
    public const string GUID = "Guid";
    public const string SENTENCE_INDEX = "SentenceIndex";
    public const string CONTEXT = "Context";
    public const string DB_NAME_SENTENCE = "sentence";
    public const string DB_NAME_FIELDS="created_datetime,created_by,updated_datetime,updated_by,guid,sentence_index,context";
    public const string DB_CREATED_DATETIME = "created_datetime";
    public const string DB_CREATED_BY = "created_by";
    public const string DB_UPDATED_DATETIME = "updated_datetime";
    public const string DB_UPDATED_BY = "updated_by";
    public const string DB_GUID = "guid";
    public const string DB_SENTENCE_INDEX = "sentence_index";
    public const string DB_CONTEXT = "context";
    public static SentenceEntity GetInstance()
    {
        return new SentenceEntity();
    }
    public virtual void CopyFrom(SentenceEntity source)
    {
        CopyFrom(source, true);
    }
    public virtual void CopyFrom(SentenceEntity source, bool includeSystemFields)
    {
        if (source == null)
        {
            throw new NullReferenceException("Source entity is null.");
        }
        this.CreatedDatetime =  source.CreatedDatetime;
        this.CreatedBy =  source.CreatedBy;
        this.UpdatedDatetime =  source.UpdatedDatetime;
        this.UpdatedBy =  source.UpdatedBy;
        this.Guid =  source.Guid;
        this.SentenceIndex =  source.SentenceIndex;
        this.Context =  source.Context;
        if (includeSystemFields)
        {
        this.CreatedDatetime =  source.CreatedDatetime;
        this.CreatedBy =  source.CreatedBy;
        this.UpdatedDatetime =  source.UpdatedDatetime;
        this.UpdatedBy =  source.UpdatedBy;
        }
    }
    public override string GetSelectFrom()
    {
        return $" select {DB_NAME_FIELDS} from { DB_NAME_SENTENCE}  with(nolock) ";
    }
    public override string GetSelectCountFrom(string sqlWhere)
    {
        return $" select count(*) from { DB_NAME_SENTENCE}  with(nolock) where 1=1 {sqlWhere}";
    }
    public override string GetSelectTopFrom(int limit, int start,string orderby,string orderbytag,  string sqlWhere)
    {
            if (string.IsNullOrEmpty(orderbytag)  || orderbytag.Trim() != "desc") orderbytag = "asc";
            if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby =  DB_GUID ;
        string top = limit > 0 ? $"top {limit}" : "";
        return $" select {top} {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS}  ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_SENTENCE}  with(nolock) where 1=1 {sqlWhere} ) a where num> {limit * (start - 1)}";
    }
    public SentenceEntity Clone()
    {
        SentenceEntity result = new SentenceEntity();
        result.CopyFrom(this);
        return result;
    }
    }
}
CloudBuilder.Novel/Policy/NovelPermissionPolicy.auto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
namespace CloudBuilder.Novel.Policy
{
    public partial class NovelPermissionPolicy
    {
        //***BEGIN***
        public const string Book = "Book";
        public const string Chapter = "Chapter";
        public const string Sentence = "Sentence";
        public const string Paragraph = "Paragraph";
        //***END***
    }
}
CloudBuilder.Novel/Policy/NovelPermissionPolicy.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CloudBuilder.Novel.Policy
{
    public partial class NovelPermissionPolicy
    {
    }
}
CloudBuilder.Novel/SearchCriteria/BookSearchCriteria.auto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
using CloudBuilder.Core.Authorization;
using CloudBuilder.Core.Service;
namespace CloudBuilder.Novel.SearchCriteria
{
    [TypeScript]
    public class BookSearchCriteria: AbstractSearchCriteria
    {
     }
}
CloudBuilder.Novel/SearchCriteria/ChapterSearchCriteria.auto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
using CloudBuilder.Core.Authorization;
using CloudBuilder.Core.Service;
namespace CloudBuilder.Novel.SearchCriteria
{
    [TypeScript]
    public class ChapterSearchCriteria: AbstractSearchCriteria
    {
     }
}
CloudBuilder.Novel/SearchCriteria/ParagraphSearchCriteria.auto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
using CloudBuilder.Core.Authorization;
using CloudBuilder.Core.Service;
namespace CloudBuilder.Novel.SearchCriteria
{
    [TypeScript]
    public class ParagraphSearchCriteria: AbstractSearchCriteria
    {
     }
}
CloudBuilder.Novel/SearchCriteria/SentenceSearchCriteria.auto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
using CloudBuilder.Core.Authorization;
using CloudBuilder.Core.Service;
namespace CloudBuilder.Novel.SearchCriteria
{
    [TypeScript]
    public class SentenceSearchCriteria: AbstractSearchCriteria
    {
     }
}
CloudBuilder.Novel/Service/IBookService.auto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
using CloudBuilder.Novel.Entity;
using CloudBuilder.Novel.SearchCriteria;
using CloudBuilder.Core.Service;
namespace CloudBuilder.Novel.Service
{
    public  interface IBookService :IServiceBase<BookEntity, string ,BookSearchCriteria>
    {
    }
}
CloudBuilder.Novel/Service/IChapterService.auto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
using CloudBuilder.Novel.Entity;
using CloudBuilder.Novel.SearchCriteria;
using CloudBuilder.Core.Service;
namespace CloudBuilder.Novel.Service
{
    public  interface IChapterService :IServiceBase<ChapterEntity, string ,ChapterSearchCriteria>
    {
    }
}
CloudBuilder.Novel/Service/IParagraphService.auto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
using CloudBuilder.Novel.Entity;
using CloudBuilder.Novel.SearchCriteria;
using CloudBuilder.Core.Service;
namespace CloudBuilder.Novel.Service
{
    public  interface IParagraphService :IServiceBase<ParagraphEntity, string ,ParagraphSearchCriteria>
    {
    }
}
CloudBuilder.Novel/Service/ISentenceService.auto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
using CloudBuilder.Novel.Entity;
using CloudBuilder.Novel.SearchCriteria;
using CloudBuilder.Core.Service;
namespace CloudBuilder.Novel.Service
{
    public  interface ISentenceService :IServiceBase<SentenceEntity, string ,SentenceSearchCriteria>
    {
    }
}