Files
Yi.Admin/Yi.Abp.Net8/src/Yi.Abp.Application/Services/TestService.cs
2024-02-26 13:42:37 +08:00

137 lines
4.2 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using Mapster;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.RateLimiting;
using Volo.Abp.Application.Services;
using Volo.Abp.Uow;
using Yi.Framework.Bbs.Application.Contracts.Dtos.Banner;
using Yi.Framework.Bbs.Domain.Entities.Forum;
using Yi.Framework.Rbac.Domain.Authorization;
using Yi.Framework.Rbac.Domain.Extensions;
using Yi.Framework.SqlSugarCore.Abstractions;
namespace Yi.Abp.Application.Services
{
/// <summary>
/// 常用魔改及扩展示例
/// </summary>
public class TestService : ApplicationService
{
/// <summary>
/// 属性注入
/// 不推荐,坑太多,容易把自己玩死,简单的东西可以用一用
/// </summary>
public ISqlSugarRepository<BannerEntity> sqlSugarRepository { get; set; }
/// <summary>
/// 动态Api
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
[HttpGet("hello-world")]
public string GetHelloWorld(string? name)
{
//会自动添加前缀,而不是重置,更符合习惯
//如果需要重置以"/"根目录开头即可
//你好世界
return name ?? "HelloWord";
}
/// <summary>
/// SqlSugar
/// </summary>
/// <returns></returns>
public async Task<object> GetSqlSugarDbAsync()
{
//用户体验优先可直接使用Db操作依赖抽象
return await sqlSugarRepository._DbQueryable.ToListAsync();
}
/// <summary>
/// 工作单元
/// </summary>
/// <returns></returns>
public async Task GetUowAsync()
{
//魔改
// 用户体验优先,万金油模式,支持高并发。支持单、多线程并发安全,支持多线程工作单元,支持多线程无工作单元,支持。。。
// 自动在各个情况处理db客户端最优解之一
int i = 10;
List<Task> tasks = new List<Task>();
while (i > 0)
{
tasks.Add(Task.Run(async () =>
{
await sqlSugarRepository.InsertAsync(new BannerEntity { Name = "插入2" });
using (var uow = UnitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
{
await sqlSugarRepository.InsertAsync(new BannerEntity { Name = "插入1" });
await uow.CompleteAsync();
}
}));
await sqlSugarRepository.InsertAsync(new BannerEntity { Name = "插入3" });
i--;
}
await Task.WhenAll(tasks);
}
/// <summary>
/// 当前用户
/// </summary>
/// <returns></returns>
public void GetCurrentUser()
{
//当token鉴权之后可以直接获取
if (CurrentUser.Id is not null)
{
//权限
CurrentUser.GetPermissions();
//角色信息
CurrentUser.GetRoleInfo();
//部门id
CurrentUser.GetDeptId();
}
}
/// <summary>
/// 数据权限
/// </summary>
public void GetDataFilter()
{
//这里会数据权限过滤
using (DataFilter.DisablePermissionHandler())
{
//这里不会数据权限过滤
}
//这里会数据权限过滤
}
/// <summary>
/// 对象映射
/// </summary>
public void GetMapper()
{
//直接无脑Adapt无需配置
var entity = new BannerEntity();
var dto = entity.Adapt<BannerGetListOutputDto>();
}
/// <summary>
/// 速率限制
/// </summary>
/// <returns></returns>
// [DisableRateLimiting]
//[EnableRateLimiting("sliding")]
public int GetRateLimiting()
{
RequestNumber++;
return RequestNumber;
}
private static int RequestNumber { get; set; } = 0;
}
}