mirror of https://github.com/abpframework/abp.git
140 changed files with 2621 additions and 628 deletions
@ -1,181 +0,0 @@ |
|||
# Getting Started ABP With Console Application |
|||
|
|||
This tutorial explains how to start ABP from scratch with minimal dependencies. You generally want to start with a **[startup template](https://abp.io/Templates)**. |
|||
|
|||
## Create A New Project |
|||
|
|||
Create a new Regular .Net Core Console Application from Visual Studio: |
|||
|
|||
 |
|||
|
|||
## Install Volo.Abp Package |
|||
|
|||
Volo.Abp.Core is the core nuget package to create ABP based applications. So, install it to your project: |
|||
|
|||
```` |
|||
Install-Package Volo.Abp.Core |
|||
```` |
|||
|
|||
## Create First ABP Module |
|||
|
|||
ABP is a modular framework and it requires a **startup (root) module** class derived from ``AbpModule``: |
|||
|
|||
````C# |
|||
using Microsoft.Extensions.DependencyInjection; |
|||
using Volo.Abp.Modularity; |
|||
|
|||
namespace AbpConsoleDemo |
|||
{ |
|||
public class AppModule : AbpModule |
|||
{ |
|||
|
|||
} |
|||
} |
|||
```` |
|||
|
|||
``AppModule`` is a good name for the startup module for an application. |
|||
|
|||
## Initialize The Application |
|||
|
|||
The next step is to bootstrap the application using the startup module created above: |
|||
|
|||
````C# |
|||
using System; |
|||
using Volo.Abp; |
|||
|
|||
namespace AbpConsoleDemo |
|||
{ |
|||
class Program |
|||
{ |
|||
static void Main(string[] args) |
|||
{ |
|||
using (var application = AbpApplicationFactory.Create<AppModule>()) |
|||
{ |
|||
application.Initialize(); |
|||
|
|||
Console.WriteLine("Press ENTER to stop application..."); |
|||
Console.ReadLine(); |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
```` |
|||
|
|||
``AbpApplicationFactory`` is used to create the application and load all modules taking ``AppModule`` as the startup module. ``Initialize()`` method starts the application. |
|||
|
|||
## Hello World! |
|||
|
|||
The application above does nothing. Let's create a service that does something: |
|||
|
|||
````C# |
|||
using System; |
|||
using Volo.Abp.DependencyInjection; |
|||
|
|||
namespace AbpConsoleDemo |
|||
{ |
|||
public class HelloWorldService : ITransientDependency |
|||
{ |
|||
public void SayHello() |
|||
{ |
|||
Console.WriteLine("Hello World!"); |
|||
} |
|||
} |
|||
} |
|||
|
|||
```` |
|||
|
|||
``ITransientDependency`` is a special interface of ABP that automatically registers the service as transient (see [dependency injection document](Dependency-Injection.md)). |
|||
|
|||
Now, we can resolve the ``HelloWorldService`` and say hello. Change the Program.cs as shown below: |
|||
|
|||
````C# |
|||
using System; |
|||
using Microsoft.Extensions.DependencyInjection; |
|||
using Volo.Abp; |
|||
|
|||
namespace AbpConsoleDemo |
|||
{ |
|||
class Program |
|||
{ |
|||
static void Main(string[] args) |
|||
{ |
|||
using (var application = AbpApplicationFactory.Create<AppModule>()) |
|||
{ |
|||
application.Initialize(); |
|||
|
|||
//Resolve a service and use it |
|||
var helloWorldService = |
|||
application.ServiceProvider.GetService<HelloWorldService>(); |
|||
helloWorldService.SayHello(); |
|||
|
|||
Console.WriteLine("Press ENTER to stop application..."); |
|||
Console.ReadLine(); |
|||
} |
|||
} |
|||
} |
|||
} |
|||
```` |
|||
|
|||
While it's enough for this simple code example, it's always suggested to create scopes in case of directly resolving dependencies from ``IServiceProvider`` (see the [Dependency Injection documentation](Dependency-Injection.md)). |
|||
|
|||
## Using Autofac as the Dependency Injection Framework |
|||
|
|||
While AspNet Core's Dependency Injection (DI) system is fine for basic requirements, Autofac provides advanced features like Property Injection and Method Interception which are required by ABP to perform advanced application framework features. |
|||
|
|||
Replacing AspNet Core's DI system by Autofac and integrating to ABP is pretty easy. |
|||
|
|||
1. Install [Volo.Abp.Autofac](https://www.nuget.org/packages/Volo.Abp.Autofac) package |
|||
|
|||
``` |
|||
Install-Package Volo.Abp.Autofac |
|||
``` |
|||
|
|||
1. Add ``AbpAutofacModule`` Dependency |
|||
|
|||
```c# |
|||
[DependsOn(typeof(AbpAutofacModule))] //Add dependency to the AbpAutofacModule |
|||
public class AppModule : AbpModule |
|||
{ |
|||
|
|||
} |
|||
``` |
|||
|
|||
1. Change ``Program.cs`` file as shown below: |
|||
|
|||
```c# |
|||
using System; |
|||
using Microsoft.Extensions.DependencyInjection; |
|||
using Volo.Abp; |
|||
|
|||
namespace AbpConsoleDemo |
|||
{ |
|||
class Program |
|||
{ |
|||
static void Main(string[] args) |
|||
{ |
|||
using (var application = AbpApplicationFactory.Create<AppModule>(options => |
|||
{ |
|||
options.UseAutofac(); //Autofac integration |
|||
})) |
|||
{ |
|||
application.Initialize(); |
|||
|
|||
//Resolve a service and use it |
|||
var helloWorldService = |
|||
application.ServiceProvider.GetService<HelloWorldService>(); |
|||
helloWorldService.SayHello(); |
|||
|
|||
Console.WriteLine("Press ENTER to stop application..."); |
|||
Console.ReadLine(); |
|||
} |
|||
} |
|||
} |
|||
} |
|||
``` |
|||
|
|||
Just called `options.UseAutofac()` method in the `AbpApplicationFactory.Create` options. |
|||
|
|||
## Source Code |
|||
|
|||
Get source code of the sample project created in this tutorial from [here](https://github.com/abpframework/abp-samples/tree/master/BasicConsoleApplication). |
|||
|
After Width: | Height: | Size: 30 KiB |
@ -1,124 +1,3 @@ |
|||
## 在控制台应用中使用ABP |
|||
|
|||
本教程将介绍如何从头开始以最小的依赖关系启动ABP. 你通常希望以 **[启动模板](https://abp.io/Templates)** 开头. |
|||
|
|||
### 创建一个新项目 |
|||
|
|||
使用Visual Studio创建一个新的.Net Core Console应用程序: |
|||
|
|||
 |
|||
|
|||
### 安装 Volo.Abp 包 |
|||
|
|||
Volo.Abp.Core是创建基于ABP的应用程序的核心nuget包. 所以,将它安装到你的项目中: |
|||
|
|||
```` |
|||
Install-Package Volo.Abp.Core |
|||
```` |
|||
|
|||
### 创建第一个ABP模块 |
|||
|
|||
ABP是一个模块化框架, 它需要一个从``AbpModule``类派生的 **启动(根)模块** 类: |
|||
|
|||
````C# |
|||
using Microsoft.Extensions.DependencyInjection; |
|||
using Volo.Abp.Modularity; |
|||
|
|||
namespace AbpConsoleDemo |
|||
{ |
|||
public class AppModule : AbpModule |
|||
{ |
|||
|
|||
} |
|||
} |
|||
```` |
|||
|
|||
``AppModule`` 是应用程序启动模块的好名称. |
|||
|
|||
### 初始化应用程序 |
|||
|
|||
下一步是使用上面创建的启动模块引导应用程序: |
|||
|
|||
````C# |
|||
using System; |
|||
using Volo.Abp; |
|||
|
|||
namespace AbpConsoleDemo |
|||
{ |
|||
class Program |
|||
{ |
|||
static void Main(string[] args) |
|||
{ |
|||
using (var application = AbpApplicationFactory.Create<AppModule>()) |
|||
{ |
|||
application.Initialize(); |
|||
|
|||
Console.WriteLine("Press ENTER to stop application..."); |
|||
Console.ReadLine(); |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
```` |
|||
|
|||
``AbpApplicationFactory`` 用于创建应用程序并加载所有以``AppModule``作为启动模块的模块. ``Initialize()``方法启动应用程序. |
|||
|
|||
### Hello World! |
|||
|
|||
上面的应用程序什么都不做, 让我们创建一个服务做一些事情: |
|||
|
|||
````C# |
|||
using System; |
|||
using Volo.Abp.DependencyInjection; |
|||
|
|||
namespace AbpConsoleDemo |
|||
{ |
|||
public class HelloWorldService : ITransientDependency |
|||
{ |
|||
public void SayHello() |
|||
{ |
|||
Console.WriteLine("Hello World!"); |
|||
} |
|||
} |
|||
} |
|||
|
|||
```` |
|||
|
|||
``ITransientDependency``是ABP的一个特殊接口, 它自动将服务注册为**Transient**(参见[依赖注入文档](Dependency-Injection.md)). |
|||
|
|||
现在,我们可以解析``HelloWorldService``并调用``SayHello``. 更改Program.cs, 如下所示: |
|||
|
|||
````C# |
|||
using System; |
|||
using Microsoft.Extensions.DependencyInjection; |
|||
using Volo.Abp; |
|||
|
|||
namespace AbpConsoleDemo |
|||
{ |
|||
class Program |
|||
{ |
|||
static void Main(string[] args) |
|||
{ |
|||
using (var application = AbpApplicationFactory.Create<AppModule>()) |
|||
{ |
|||
application.Initialize(); |
|||
|
|||
// 解析服务并使用它 |
|||
var helloWorldService = |
|||
application.ServiceProvider.GetService<HelloWorldService>(); |
|||
helloWorldService.SayHello(); |
|||
|
|||
Console.WriteLine("Press ENTER to stop application..."); |
|||
Console.ReadLine(); |
|||
} |
|||
} |
|||
} |
|||
} |
|||
```` |
|||
|
|||
这对于这个简单的代码示例已足够, 如果是直接从``IServiceProvider``解析建议创建**Scoped**依赖.(参见[依赖注入文档](Dependency-Injection.md)). |
|||
|
|||
### 源码 |
|||
|
|||
从[这里](https://github.com/abpframework/abp-samples/tree/master/BasicConsoleApplication)获取本教程中创建的示例项目的源代码. |
|||
ABP提供了控制台应用程序启动模板. 参阅[控制台应用程序启动模板]文档了解更多信息. |
|||
|
After Width: | Height: | Size: 30 KiB |
File diff suppressed because it is too large
@ -0,0 +1,32 @@ |
|||
using System; |
|||
using Microsoft.EntityFrameworkCore.Migrations; |
|||
|
|||
namespace Volo.CmsKit.Migrations |
|||
{ |
|||
public partial class Reaction_Comment_Multitenancy : Migration |
|||
{ |
|||
protected override void Up(MigrationBuilder migrationBuilder) |
|||
{ |
|||
migrationBuilder.AddColumn<Guid>( |
|||
name: "TenantId", |
|||
table: "CmsUserReactions", |
|||
nullable: true); |
|||
|
|||
migrationBuilder.AddColumn<Guid>( |
|||
name: "TenantId", |
|||
table: "CmsComments", |
|||
nullable: true); |
|||
} |
|||
|
|||
protected override void Down(MigrationBuilder migrationBuilder) |
|||
{ |
|||
migrationBuilder.DropColumn( |
|||
name: "TenantId", |
|||
table: "CmsUserReactions"); |
|||
|
|||
migrationBuilder.DropColumn( |
|||
name: "TenantId", |
|||
table: "CmsComments"); |
|||
} |
|||
} |
|||
} |
|||
@ -1,6 +1,6 @@ |
|||
using Volo.Abp.Modularity; |
|||
|
|||
namespace Volo.CmsKit |
|||
namespace Volo.CmsKit.Admin |
|||
{ |
|||
[DependsOn( |
|||
typeof(CmsKitCommonApplicationContractsModule) |
|||
@ -1,4 +1,4 @@ |
|||
namespace Volo.CmsKit |
|||
namespace Volo.CmsKit.Admin |
|||
{ |
|||
public class CmsKitAdminRemoteServiceConsts |
|||
{ |
|||
@ -1,6 +1,6 @@ |
|||
using Volo.Abp.Reflection; |
|||
|
|||
namespace Volo.CmsKit.Permissions |
|||
namespace Volo.CmsKit.Admin.Permissions |
|||
{ |
|||
public class CmsKitAdminPermissions |
|||
{ |
|||
@ -1,4 +1,4 @@ |
|||
namespace Volo.CmsKit |
|||
namespace Volo.CmsKit.Admin |
|||
{ |
|||
public abstract class CmsKitAdminAppService : CmsKitAppService |
|||
{ |
|||
@ -1,6 +1,6 @@ |
|||
using AutoMapper; |
|||
|
|||
namespace Volo.CmsKit |
|||
namespace Volo.CmsKit.Admin |
|||
{ |
|||
public class CmsKitAdminApplicationAutoMapperProfile : Profile |
|||
{ |
|||
@ -1,9 +1,8 @@ |
|||
using Microsoft.Extensions.DependencyInjection; |
|||
using Volo.Abp.Application; |
|||
using Volo.Abp.AutoMapper; |
|||
using Volo.Abp.Modularity; |
|||
|
|||
namespace Volo.CmsKit |
|||
namespace Volo.CmsKit.Admin |
|||
{ |
|||
[DependsOn( |
|||
typeof(CmsKitAdminApplicationContractsModule), |
|||
@ -1,7 +1,7 @@ |
|||
using Volo.Abp.AspNetCore.Mvc; |
|||
using Volo.CmsKit.Localization; |
|||
|
|||
namespace Volo.CmsKit |
|||
namespace Volo.CmsKit.Admin |
|||
{ |
|||
public abstract class CmsKitAdminController : AbpController |
|||
{ |
|||
@ -1,7 +1,7 @@ |
|||
using Microsoft.Extensions.DependencyInjection; |
|||
using Volo.Abp.Modularity; |
|||
|
|||
namespace Volo.CmsKit |
|||
namespace Volo.CmsKit.Admin |
|||
{ |
|||
[DependsOn( |
|||
typeof(CmsKitAdminApplicationContractsModule), |
|||
@ -0,0 +1,65 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Linq; |
|||
using System.Threading; |
|||
using System.Threading.Tasks; |
|||
using MongoDB.Driver.Linq; |
|||
using MongoDB.Driver; |
|||
using Volo.Abp; |
|||
using Volo.Abp.Domain.Repositories.MongoDB; |
|||
using Volo.Abp.MongoDB; |
|||
using Volo.CmsKit.Comments; |
|||
|
|||
namespace Volo.CmsKit.MongoDB.Comments |
|||
{ |
|||
public class MongoCommentRepository : MongoDbRepository<ICmsKitMongoDbContext, Comment, Guid>, ICommentRepository |
|||
{ |
|||
public MongoCommentRepository(IMongoDbContextProvider<ICmsKitMongoDbContext> dbContextProvider) : base(dbContextProvider) |
|||
{ |
|||
} |
|||
|
|||
public async Task<List<CommentWithAuthor>> GetListWithAuthorsAsync( |
|||
string entityType, |
|||
string entityId) |
|||
{ |
|||
Check.NotNullOrWhiteSpace(entityType, nameof(entityType)); |
|||
Check.NotNullOrWhiteSpace(entityId, nameof(entityId)); |
|||
|
|||
var authorsQuery = from comment in GetMongoQueryable() |
|||
join user in DbContext.CmsUsers on comment.CreatorId equals user.Id |
|||
where entityType == comment.EntityType && entityId == comment.EntityId |
|||
orderby comment.CreationTime |
|||
select user; |
|||
|
|||
var authors = await authorsQuery.ToListAsync(); |
|||
|
|||
var comments = await GetMongoQueryable() |
|||
.Where(c => c.EntityId == entityId && c.EntityType == entityType) |
|||
.OrderBy(c => c.CreationTime).ToListAsync(); |
|||
|
|||
return comments |
|||
.Select( |
|||
comment => |
|||
new CommentWithAuthor |
|||
{ |
|||
Comment = comment, |
|||
Author = authors.FirstOrDefault(a => a.Id == comment.CreatorId) |
|||
}).ToList(); |
|||
} |
|||
|
|||
public override async Task DeleteAsync(Guid id, bool autoSave = false, CancellationToken cancellationToken = default) |
|||
{ |
|||
var replies = await GetMongoQueryable() |
|||
.Where(x => x.RepliedCommentId == id) |
|||
.ToListAsync(GetCancellationToken(cancellationToken)); |
|||
|
|||
foreach (var reply in replies) |
|||
{ |
|||
//TODO: Discuss if it is better to mark it as deleted and show in the ui as "This is deleted" instead of deleting it and replies completely
|
|||
await base.DeleteAsync(reply.Id, autoSave, GetCancellationToken(cancellationToken)); |
|||
} |
|||
|
|||
await base.DeleteAsync(id, autoSave, GetCancellationToken(cancellationToken)); |
|||
} |
|||
} |
|||
} |
|||
@ -1,13 +1,19 @@ |
|||
using Volo.Abp.Data; |
|||
using MongoDB.Driver; |
|||
using Volo.Abp.Data; |
|||
using Volo.Abp.MongoDB; |
|||
using Volo.CmsKit.Comments; |
|||
using Volo.CmsKit.Reactions; |
|||
using Volo.CmsKit.Users; |
|||
|
|||
namespace Volo.CmsKit.MongoDB |
|||
{ |
|||
[ConnectionStringName(CmsKitDbProperties.ConnectionStringName)] |
|||
public interface ICmsKitMongoDbContext : IAbpMongoDbContext |
|||
{ |
|||
/* Define mongo collections here. Example: |
|||
* IMongoCollection<Question> Questions { get; } |
|||
*/ |
|||
IMongoCollection<UserReaction> UserReactions { get; } |
|||
|
|||
IMongoCollection<Comment> Comments { get; } |
|||
|
|||
IMongoCollection<CmsUser> CmsUsers { get; } |
|||
} |
|||
} |
|||
|
|||
@ -0,0 +1,75 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Linq; |
|||
using System.Threading.Tasks; |
|||
using MongoDB.Driver; |
|||
using MongoDB.Driver.Linq; |
|||
using Volo.Abp; |
|||
using Volo.Abp.Domain.Repositories.MongoDB; |
|||
using Volo.Abp.MongoDB; |
|||
using Volo.CmsKit.Reactions; |
|||
|
|||
namespace Volo.CmsKit.MongoDB.Reactions |
|||
{ |
|||
public class MongoUserReactionRepository : MongoDbRepository<ICmsKitMongoDbContext, UserReaction, Guid>, IUserReactionRepository |
|||
{ |
|||
public MongoUserReactionRepository(IMongoDbContextProvider<ICmsKitMongoDbContext> dbContextProvider) : base(dbContextProvider) |
|||
{ |
|||
} |
|||
|
|||
public async Task<UserReaction> FindAsync( |
|||
Guid userId, |
|||
string entityType, |
|||
string entityId, |
|||
string reactionName) |
|||
{ |
|||
Check.NotNullOrWhiteSpace(entityType, nameof(entityType)); |
|||
Check.NotNullOrWhiteSpace(entityId, nameof(entityId)); |
|||
Check.NotNullOrWhiteSpace(reactionName, nameof(reactionName)); |
|||
|
|||
return await GetMongoQueryable() |
|||
.Where(x => |
|||
x.CreatorId == userId && |
|||
x.EntityType == entityType && |
|||
x.EntityId == entityId && |
|||
x.ReactionName == reactionName) |
|||
.FirstOrDefaultAsync(); |
|||
} |
|||
|
|||
public async Task<List<UserReaction>> GetListForUserAsync( |
|||
Guid userId, |
|||
string entityType, |
|||
string entityId) |
|||
{ |
|||
Check.NotNullOrWhiteSpace(entityType, nameof(entityType)); |
|||
Check.NotNullOrWhiteSpace(entityId, nameof(entityId)); |
|||
|
|||
return await GetMongoQueryable() |
|||
.Where(x => |
|||
x.CreatorId == userId && |
|||
x.EntityType == entityType && |
|||
x.EntityId == entityId) |
|||
.ToListAsync(); |
|||
} |
|||
|
|||
public async Task<List<ReactionSummaryQueryResultItem>> GetSummariesAsync( |
|||
string entityType, |
|||
string entityId) |
|||
{ |
|||
Check.NotNullOrWhiteSpace(entityType, nameof(entityType)); |
|||
Check.NotNullOrWhiteSpace(entityId, nameof(entityId)); |
|||
|
|||
return await GetMongoQueryable() |
|||
.Where(x => |
|||
x.EntityType == entityType && |
|||
x.EntityId == entityId) |
|||
.GroupBy(x => x.ReactionName) |
|||
.Select(g => new ReactionSummaryQueryResultItem |
|||
{ |
|||
ReactionName = g.Key, |
|||
Count = g.Count() |
|||
}) |
|||
.ToListAsync(); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,15 @@ |
|||
using Volo.Abp.MongoDB; |
|||
using Volo.Abp.Users.MongoDB; |
|||
using Volo.CmsKit.Users; |
|||
|
|||
namespace Volo.CmsKit.MongoDB.Users |
|||
{ |
|||
public class MongoCmsUserRepository : MongoUserRepositoryBase<ICmsKitMongoDbContext, CmsUser>, ICmsUserRepository |
|||
{ |
|||
public MongoCmsUserRepository(IMongoDbContextProvider<ICmsKitMongoDbContext> dbContextProvider) |
|||
: base(dbContextProvider) |
|||
{ |
|||
} |
|||
|
|||
} |
|||
} |
|||
@ -1,6 +1,6 @@ |
|||
using Volo.Abp.Modularity; |
|||
|
|||
namespace Volo.CmsKit |
|||
namespace Volo.CmsKit.Public |
|||
{ |
|||
[DependsOn( |
|||
typeof(CmsKitCommonApplicationContractsModule) |
|||
@ -1,4 +1,4 @@ |
|||
namespace Volo.CmsKit |
|||
namespace Volo.CmsKit.Public |
|||
{ |
|||
public class CmsKitPublicRemoteServiceConsts |
|||
{ |
|||
@ -1,6 +1,6 @@ |
|||
using System; |
|||
|
|||
namespace Volo.CmsKit.Comments |
|||
namespace Volo.CmsKit.Public.Comments |
|||
{ |
|||
public class CmsUserDto |
|||
{ |
|||
@ -1,6 +1,6 @@ |
|||
using System; |
|||
|
|||
namespace Volo.CmsKit.Comments |
|||
namespace Volo.CmsKit.Public.Comments |
|||
{ |
|||
public class CommentDto |
|||
{ |
|||
@ -1,7 +1,7 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
|
|||
namespace Volo.CmsKit.Comments |
|||
namespace Volo.CmsKit.Public.Comments |
|||
{ |
|||
public class CommentWithDetailsDto |
|||
{ |
|||
@ -1,8 +1,9 @@ |
|||
using System; |
|||
using System.ComponentModel.DataAnnotations; |
|||
using Volo.Abp.Validation; |
|||
using Volo.CmsKit.Comments; |
|||
|
|||
namespace Volo.CmsKit.Comments |
|||
namespace Volo.CmsKit.Public.Comments |
|||
{ |
|||
public class CreateCommentInput |
|||
{ |
|||
@ -1,11 +1,9 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Threading.Tasks; |
|||
using JetBrains.Annotations; |
|||
using Volo.Abp.Application.Dtos; |
|||
using Volo.Abp.Application.Services; |
|||
|
|||
namespace Volo.CmsKit.Comments |
|||
namespace Volo.CmsKit.Public.Comments |
|||
{ |
|||
public interface ICommentPublicAppService : IApplicationService |
|||
{ |
|||
@ -1,8 +1,8 @@ |
|||
using System; |
|||
using System.ComponentModel.DataAnnotations; |
|||
using System.ComponentModel.DataAnnotations; |
|||
using Volo.Abp.Validation; |
|||
using Volo.CmsKit.Comments; |
|||
|
|||
namespace Volo.CmsKit.Comments |
|||
namespace Volo.CmsKit.Public.Comments |
|||
{ |
|||
public class UpdateCommentInput |
|||
{ |
|||
@ -1,6 +1,6 @@ |
|||
using Volo.Abp.Reflection; |
|||
|
|||
namespace Volo.CmsKit.Permissions |
|||
namespace Volo.CmsKit.Public.Permissions |
|||
{ |
|||
public class CmsKitPublicPermissions |
|||
{ |
|||
@ -1,4 +1,4 @@ |
|||
namespace Volo.CmsKit.Reactions |
|||
namespace Volo.CmsKit.Public.Reactions |
|||
{ |
|||
public class CreateReactionDto |
|||
{ |
|||
@ -1,4 +1,4 @@ |
|||
namespace Volo.CmsKit.Reactions |
|||
namespace Volo.CmsKit.Public.Reactions |
|||
{ |
|||
public class DeleteReactionDto |
|||
{ |
|||
@ -1,6 +1,6 @@ |
|||
using JetBrains.Annotations; |
|||
|
|||
namespace Volo.CmsKit.Reactions |
|||
namespace Volo.CmsKit.Public.Reactions |
|||
{ |
|||
public class ReactionDto |
|||
{ |
|||
@ -1,4 +1,4 @@ |
|||
namespace Volo.CmsKit.Reactions |
|||
namespace Volo.CmsKit.Public.Reactions |
|||
{ |
|||
public class ReactionWithSelectionDto |
|||
{ |
|||
@ -1,4 +1,4 @@ |
|||
namespace Volo.CmsKit |
|||
namespace Volo.CmsKit.Public |
|||
{ |
|||
public abstract class CmsKitPublicAppService : CmsKitAppService |
|||
{ |
|||
@ -1,9 +1,10 @@ |
|||
using AutoMapper; |
|||
using Volo.Abp.AutoMapper; |
|||
using Volo.CmsKit.Comments; |
|||
using Volo.CmsKit.Public.Comments; |
|||
using Volo.CmsKit.Users; |
|||
|
|||
namespace Volo.CmsKit |
|||
namespace Volo.CmsKit.Public |
|||
{ |
|||
public class PublicApplicationAutoMapperProfile : Profile |
|||
{ |
|||
@ -1,7 +1,8 @@ |
|||
using Microsoft.Extensions.DependencyInjection; |
|||
using Volo.Abp.Http.Client; |
|||
using Volo.Abp.Modularity; |
|||
|
|||
namespace Volo.CmsKit |
|||
namespace Volo.CmsKit.Public |
|||
{ |
|||
[DependsOn( |
|||
typeof(CmsKitPublicApplicationContractsModule), |
|||
@ -1,6 +1,6 @@ |
|||
using Volo.CmsKit.Controllers; |
|||
|
|||
namespace Volo.CmsKit |
|||
namespace Volo.CmsKit.Public |
|||
{ |
|||
public abstract class CmsKitPublicControllerBase : CmsKitControllerBase |
|||
{ |
|||
@ -1,7 +1,7 @@ |
|||
using Microsoft.Extensions.DependencyInjection; |
|||
using Volo.Abp.Modularity; |
|||
|
|||
namespace Volo.CmsKit |
|||
namespace Volo.CmsKit.Public |
|||
{ |
|||
[DependsOn( |
|||
typeof(CmsKitPublicApplicationContractsModule), |
|||
@ -1,11 +1,10 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Threading.Tasks; |
|||
using Microsoft.AspNetCore.Mvc; |
|||
using Volo.Abp; |
|||
using Volo.Abp.Application.Dtos; |
|||
|
|||
namespace Volo.CmsKit.Comments |
|||
namespace Volo.CmsKit.Public.Comments |
|||
{ |
|||
[RemoteService(Name = CmsKitPublicRemoteServiceConsts.RemoteServiceName)] |
|||
[Area("cms-kit")] |
|||
Some files were not shown because too many files changed in this diff
Loading…
Reference in new issue