ABP vNext微服务架构详细教程(补充篇)——单层模板(下)

业务代码

2

聚合服务

657faae15aaaa8597d4ec230bea3b5c5.gif

聚合服务层和基础服务层相同的道理,在Demo.Core.Contracts增加Services文件夹,并添加Notifications子文件夹,在其中添加Dtos文件夹并添加两个DTO与基础服务对应:

using Volo.Abp.Application.Dtos;


namespace Demo.Core.Contracts.Services.Notifications.Dtos;


public class CoreNotificationCreateDto:EntityDto
{
    /// 
    /// 接受着用户ID
    /// 
    public Guid ReceiverId { get; set; }


    /// 
    /// 标题
    /// 
    public string Title { get; set; }


    /// 
    /// 内容
    /// 
    public string Content { get; set; }


    /// 
    /// 是否已读
    /// 
    public bool IsRead { get; set; }
}
using Volo.Abp.Auditing;


namespace Demo.Core.Contracts.Services.Notifications.Dtos;


public class CoreNotificationDto : CoreNotificationCreateDto,ICreationAuditedObject
{
    /// 
    /// 创建时间
    /// 
    public DateTime CreationTime { get; set; }
    
    /// 
    /// 创建人
    /// 
    public Guid? CreatorId { get; set; }
}

3a38f91be55db85c41930fd3f6679993.gif

在Demo.Core.Contracts项目中Services/Notifications下添加接口ICoreNotificationAppService如下:

using Demo.Core.Contracts.Services.Notifications.Dtos;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;


namespace Demo.Core.Contracts.Services.Notifications;


public interface ICoreNotificationAppService:IApplicationService
{
    Task> GetAllAsync(PagedAndSortedResultRequestDto request);


    Task CreatAsync(CoreNotificationCreateDto request);
}

fb4b3102cd07b9953b77ca5ec52f1f38.gif

在Demo.Core项目中的Services下创建Notifications文件夹并添加实现类CoreNotificationAppService:

using Demo.Core.Contracts.Services.Notifications;
using Demo.Core.Contracts.Services.Notifications.Dtos;
using Demo.NotificationManager.Contracts.Services.Notifications;
using Demo.NotificationManager.Contracts.Services.Notifications.Dtos;
using Mapster;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;


namespace Demo.Core.Services.Notifications;


public class CoreNotificationAppService:ApplicationService,ICoreNotificationAppService
{
    private readonly INotificationAppService _notificationAppService;


    public CoreNotificationAppService(INotificationAppService notificationAppService)
    {
        _notificationAppService = notificationAppService;
    }


    public async Task> GetAllAsync(PagedAndSortedResultRequestDto request)
    {
        var ret = await _notificationAppService.GetListAsync(request);
        return new PagedResultDto(ret.TotalCount, ret.Items.Adapt>());
    }


    public async Task CreatAsync(CoreNotificationCreateDto request)
    {
        var notification = request.Adapt();
        await _notificationAppService.CreateAsync(notification);
        return true;
    }
}

24ae24e70a7280a5663081eee0817553.gif

修改Demo.Core项目appsettings.json文件如下:

{
  "urls": "http://*:6003",
  "RemoteServices": {
    "NitificationManager": {
      "BaseUrl": "http://localhost:5003/"
    }
  }
}

1b8f3bde9f40dd2da464dd5f5e4bcd8f.png

到这里,我们最基础的一个聚合层服务和基础层服务都创建完毕。

补充说明

fde94b7e60b305fb7ab1561d22cbf692.png

如果我们使用的是单一服务或者没有使用聚合层,可以只使用基础服务的用法。

4e0f911d03e6745c4a1128a199381a45.png

如果想继续使用AutoMapper框架作为实体映射,可在创建项目时保留AutoMapper相关内容。

fa4988ef1f4ac1cc10fda1c1aa82ad25.png

这篇文章中我们完成了删减的过程,依据我们的需要,我们再增加所需要的缓存、鉴权、当前用户传递等代码,具体可参见《ABP vNext微服务架构详细教程》系列完整文章。

46b7032531a5555210afbafab0cb9fec.png

为大家创建单层应用方便,我将编写一个单层模板项目代码生成器,上传至https://gitee.com/lightnehum/abp-single-layer-builder,请大家关注并使用。

ABP vNext微服务架构详细教程(补充篇)——单层模板(下)_第1张图片

9f2787ec0614c55912e58346c90e28c2.png

关注我获得

更多精彩

你可能感兴趣的:(java,python,数据库,大数据,spring)