mirror of
https://gitee.com/ccnetcore/Yi
synced 2026-04-02 23:26:36 +08:00
chorm: 问题复现
This commit is contained in:
@@ -132,8 +132,8 @@ namespace Yi.Framework.Bbs.Application.Services.Forum
|
|||||||
/// <param name="input"></param>
|
/// <param name="input"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
/// <exception cref="UserFriendlyException"></exception>
|
/// <exception cref="UserFriendlyException"></exception>
|
||||||
[Permission("bbs:comment:add")]
|
// [Permission("bbs:comment:add")]
|
||||||
[Authorize]
|
// [Authorize]
|
||||||
public override async Task<CommentGetOutputDto> CreateAsync(CommentCreateInputVo input)
|
public override async Task<CommentGetOutputDto> CreateAsync(CommentCreateInputVo input)
|
||||||
{
|
{
|
||||||
var discuess = await _discussRepository.GetFirstAsync(x => x.Id == input.DiscussId);
|
var discuess = await _discussRepository.GetFirstAsync(x => x.Id == input.DiscussId);
|
||||||
|
|||||||
@@ -1,73 +1,73 @@
|
|||||||
using TencentCloud.Tbm.V20180129.Models;
|
// using TencentCloud.Tbm.V20180129.Models;
|
||||||
using Volo.Abp.DependencyInjection;
|
// using Volo.Abp.DependencyInjection;
|
||||||
using Volo.Abp.Domain.Entities.Events;
|
// using Volo.Abp.Domain.Entities.Events;
|
||||||
using Volo.Abp.EventBus;
|
// using Volo.Abp.EventBus;
|
||||||
using Volo.Abp.EventBus.Local;
|
// using Volo.Abp.EventBus.Local;
|
||||||
using Yi.Framework.Bbs.Domain.Entities;
|
// using Yi.Framework.Bbs.Domain.Entities;
|
||||||
using Yi.Framework.Bbs.Domain.Entities.Forum;
|
// using Yi.Framework.Bbs.Domain.Entities.Forum;
|
||||||
using Yi.Framework.Bbs.Domain.Shared.Consts;
|
// using Yi.Framework.Bbs.Domain.Shared.Consts;
|
||||||
using Yi.Framework.Bbs.Domain.Shared.Enums;
|
// using Yi.Framework.Bbs.Domain.Shared.Enums;
|
||||||
using Yi.Framework.Bbs.Domain.Shared.Etos;
|
// using Yi.Framework.Bbs.Domain.Shared.Etos;
|
||||||
using Yi.Framework.Rbac.Domain.Entities;
|
// using Yi.Framework.Rbac.Domain.Entities;
|
||||||
using Yi.Framework.SqlSugarCore.Abstractions;
|
// using Yi.Framework.SqlSugarCore.Abstractions;
|
||||||
|
//
|
||||||
namespace Yi.Framework.Bbs.Domain.EventHandlers
|
// namespace Yi.Framework.Bbs.Domain.EventHandlers
|
||||||
{
|
// {
|
||||||
/// <summary>
|
// /// <summary>
|
||||||
/// 评论创建的领域事件
|
// /// 评论创建的领域事件
|
||||||
/// </summary>
|
// /// </summary>
|
||||||
public class CommentCreatedEventHandler : ILocalEventHandler<EntityCreatedEventData<CommentAggregateRoot>>,
|
// public class CommentCreatedEventHandler : ILocalEventHandler<EntityCreatedEventData<CommentAggregateRoot>>,
|
||||||
ITransientDependency
|
// ITransientDependency
|
||||||
{
|
// {
|
||||||
private ILocalEventBus _localEventBus;
|
// private ILocalEventBus _localEventBus;
|
||||||
private ISqlSugarRepository<DiscussAggregateRoot> _discussRepository;
|
// private ISqlSugarRepository<DiscussAggregateRoot> _discussRepository;
|
||||||
private ISqlSugarRepository<UserAggregateRoot> _userRepository;
|
// private ISqlSugarRepository<UserAggregateRoot> _userRepository;
|
||||||
public CommentCreatedEventHandler(ILocalEventBus localEventBus, ISqlSugarRepository<DiscussAggregateRoot> discussRepository, ISqlSugarRepository<UserAggregateRoot> userRepository)
|
// public CommentCreatedEventHandler(ILocalEventBus localEventBus, ISqlSugarRepository<DiscussAggregateRoot> discussRepository, ISqlSugarRepository<UserAggregateRoot> userRepository)
|
||||||
{
|
// {
|
||||||
_userRepository = userRepository;
|
// _userRepository = userRepository;
|
||||||
_localEventBus = localEventBus;
|
// _localEventBus = localEventBus;
|
||||||
_discussRepository = discussRepository;
|
// _discussRepository = discussRepository;
|
||||||
}
|
// }
|
||||||
public async Task HandleEventAsync(EntityCreatedEventData<CommentAggregateRoot> eventData)
|
// public async Task HandleEventAsync(EntityCreatedEventData<CommentAggregateRoot> eventData)
|
||||||
{
|
// {
|
||||||
var commentEntity = eventData.Entity;
|
// var commentEntity = eventData.Entity;
|
||||||
|
//
|
||||||
//给创建者发布数量+1
|
// //给创建者发布数量+1
|
||||||
await _userRepository._Db.Updateable<BbsUserExtraInfoEntity>()
|
// await _userRepository._Db.Updateable<BbsUserExtraInfoEntity>()
|
||||||
.SetColumns(it => it.CommentNumber == it.CommentNumber + 1)
|
// .SetColumns(it => it.CommentNumber == it.CommentNumber + 1)
|
||||||
.Where(it => it.UserId == commentEntity.CreatorId)
|
// .Where(it => it.UserId == commentEntity.CreatorId)
|
||||||
.ExecuteCommandAsync();
|
// .ExecuteCommandAsync();
|
||||||
var disucssDto = await _discussRepository._DbQueryable
|
// var disucssDto = await _discussRepository._DbQueryable
|
||||||
.Where(x => x.Id == commentEntity.DiscussId)
|
// .Where(x => x.Id == commentEntity.DiscussId)
|
||||||
.LeftJoin<UserAggregateRoot>((dicuss, user) => dicuss.CreatorId == user.Id)
|
// .LeftJoin<UserAggregateRoot>((dicuss, user) => dicuss.CreatorId == user.Id)
|
||||||
.Select((dicuss, user) =>
|
// .Select((dicuss, user) =>
|
||||||
new
|
// new
|
||||||
{
|
// {
|
||||||
DiscussUserId = user.Id,
|
// DiscussUserId = user.Id,
|
||||||
DiscussTitle = dicuss.Title,
|
// DiscussTitle = dicuss.Title,
|
||||||
|
//
|
||||||
})
|
// })
|
||||||
.FirstAsync();
|
// .FirstAsync();
|
||||||
|
//
|
||||||
var commentUser = await _userRepository.GetFirstAsync(x => x.Id == commentEntity.CreatorId);
|
// var commentUser = await _userRepository.GetFirstAsync(x => x.Id == commentEntity.CreatorId);
|
||||||
|
//
|
||||||
//截取30个长度
|
// //截取30个长度
|
||||||
var content = commentEntity.Content.Length >= 30 ? commentEntity.Content.Substring(0, 30)+"..." : commentEntity.Content;
|
// var content = commentEntity.Content.Length >= 30 ? commentEntity.Content.Substring(0, 30)+"..." : commentEntity.Content;
|
||||||
//通知主题作者,有人评论
|
// //通知主题作者,有人评论
|
||||||
await _localEventBus.PublishAsync(new BbsNoticeEventArgs(disucssDto.DiscussUserId, string.Format(DiscussConst.CommentNotice, disucssDto.DiscussTitle, commentUser.UserName, content,commentEntity.DiscussId)), false);
|
// await _localEventBus.PublishAsync(new BbsNoticeEventArgs(disucssDto.DiscussUserId, string.Format(DiscussConst.CommentNotice, disucssDto.DiscussTitle, commentUser.UserName, content,commentEntity.DiscussId)), false);
|
||||||
|
//
|
||||||
//如果为空,表示根路径,没有回复者
|
// //如果为空,表示根路径,没有回复者
|
||||||
if (commentEntity.ParentId != Guid.Empty)
|
// if (commentEntity.ParentId != Guid.Empty)
|
||||||
{
|
// {
|
||||||
//通知回复者,有人评论
|
// //通知回复者,有人评论
|
||||||
await _localEventBus.PublishAsync(new BbsNoticeEventArgs(commentEntity.ParentId, string.Format(DiscussConst.CommentNoticeToReply, disucssDto.DiscussTitle, commentUser.UserName, content,commentEntity.DiscussId)), false);
|
// await _localEventBus.PublishAsync(new BbsNoticeEventArgs(commentEntity.ParentId, string.Format(DiscussConst.CommentNoticeToReply, disucssDto.DiscussTitle, commentUser.UserName, content,commentEntity.DiscussId)), false);
|
||||||
|
//
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
//最后发布任务触发事件
|
// //最后发布任务触发事件
|
||||||
await _localEventBus.PublishAsync(
|
// await _localEventBus.PublishAsync(
|
||||||
new AssignmentEventArgs(AssignmentRequirementTypeEnum.Comment, commentUser.Id),false);
|
// new AssignmentEventArgs(AssignmentRequirementTypeEnum.Comment, commentUser.Id),false);
|
||||||
|
//
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|||||||
@@ -41,7 +41,8 @@ namespace Yi.Framework.Bbs.Domain.Managers
|
|||||||
entity.Content = content;
|
entity.Content = content;
|
||||||
entity.ParentId = parentId;
|
entity.ParentId = parentId;
|
||||||
entity.RootId = rootId;
|
entity.RootId = rootId;
|
||||||
return await _commentRepository.InsertReturnEntityAsync(entity);
|
await _commentRepository.InsertAsync(entity);
|
||||||
|
return entity;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -4,28 +4,30 @@ using Yi.Abp.Web;
|
|||||||
|
|
||||||
//创建日志,可使用{SourceContext}记录
|
//创建日志,可使用{SourceContext}记录
|
||||||
Log.Logger = new LoggerConfiguration()
|
Log.Logger = new LoggerConfiguration()
|
||||||
.MinimumLevel.Debug()
|
.MinimumLevel.Debug()
|
||||||
.MinimumLevel.Override("Microsoft", LogEventLevel.Information)
|
.MinimumLevel.Override("Microsoft", LogEventLevel.Information)
|
||||||
.MinimumLevel.Override("Microsoft.AspNetCore.Hosting.Diagnostics", LogEventLevel.Error)
|
.MinimumLevel.Override("Microsoft.AspNetCore.Hosting.Diagnostics", LogEventLevel.Error)
|
||||||
.MinimumLevel.Override("Quartz", LogEventLevel.Warning)
|
.MinimumLevel.Override("Quartz", LogEventLevel.Warning)
|
||||||
.Enrich.FromLogContext()
|
.Enrich.FromLogContext()
|
||||||
.WriteTo.Async(c => c.File("logs/all/log-.txt", rollingInterval: RollingInterval.Day, restrictedToMinimumLevel: LogEventLevel.Debug))
|
.WriteTo.Async(c => c.File("logs/all/log-.txt", rollingInterval: RollingInterval.Day,
|
||||||
.WriteTo.Async(c => c.File("logs/error/errorlog-.txt", rollingInterval: RollingInterval.Day, restrictedToMinimumLevel: LogEventLevel.Error))
|
restrictedToMinimumLevel: LogEventLevel.Debug))
|
||||||
.WriteTo.Async(c => c.Console())
|
.WriteTo.Async(c => c.File("logs/error/errorlog-.txt", rollingInterval: RollingInterval.Day,
|
||||||
.CreateLogger();
|
restrictedToMinimumLevel: LogEventLevel.Error))
|
||||||
|
.WriteTo.Async(c => c.Console())
|
||||||
|
.CreateLogger();
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Log.Information("""
|
Log.Information("""
|
||||||
|
|
||||||
|
__ ___ ______ _
|
||||||
|
\ \ / (_) | ____| | |
|
||||||
|
\ \_/ / _ | |__ _ __ __ _ _ __ ___ _____ _____ _ __| | __
|
||||||
|
\ / | | | __| '__/ _` | '_ ` _ \ / _ \ \ /\ / / _ \| '__| |/ /
|
||||||
|
| | | | | | | | | (_| | | | | | | __/\ V V / (_) | | | <
|
||||||
|
|_| |_| |_| |_| \__,_|_| |_| |_|\___| \_/\_/ \___/|_| |_|\_\
|
||||||
|
|
||||||
__ ___ ______ _
|
""");
|
||||||
\ \ / (_) | ____| | |
|
|
||||||
\ \_/ / _ | |__ _ __ __ _ _ __ ___ _____ _____ _ __| | __
|
|
||||||
\ / | | | __| '__/ _` | '_ ` _ \ / _ \ \ /\ / / _ \| '__| |/ /
|
|
||||||
| | | | | | | | | (_| | | | | | | __/\ V V / (_) | | | <
|
|
||||||
|_| |_| |_| |_| \__,_|_| |_| |_|\___| \_/\_/ \___/|_| |_|\_\
|
|
||||||
|
|
||||||
""");
|
|
||||||
Log.Information("Yi框架-Abp.vNext,启动!");
|
Log.Information("Yi框架-Abp.vNext,启动!");
|
||||||
|
|
||||||
var builder = WebApplication.CreateBuilder(args);
|
var builder = WebApplication.CreateBuilder(args);
|
||||||
@@ -36,6 +38,18 @@ try
|
|||||||
builder.Host.UseSerilog();
|
builder.Host.UseSerilog();
|
||||||
await builder.Services.AddApplicationAsync<YiAbpWebModule>();
|
await builder.Services.AddApplicationAsync<YiAbpWebModule>();
|
||||||
var app = builder.Build();
|
var app = builder.Build();
|
||||||
|
app.Use(async (http, next) =>
|
||||||
|
{
|
||||||
|
var id = Guid.NewGuid();
|
||||||
|
Console.WriteLine("之前-----" + id);
|
||||||
|
http.Response.OnStarting(() =>
|
||||||
|
{
|
||||||
|
Console.WriteLine("之中-----" + id);
|
||||||
|
return Task.CompletedTask;
|
||||||
|
});
|
||||||
|
await next();
|
||||||
|
Console.WriteLine("之后-----" + id);
|
||||||
|
});
|
||||||
await app.InitializeApplicationAsync();
|
await app.InitializeApplicationAsync();
|
||||||
await app.RunAsync();
|
await app.RunAsync();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ namespace Yi.Abp.Web
|
|||||||
Configure<AbpAuditingOptions>(optios =>
|
Configure<AbpAuditingOptions>(optios =>
|
||||||
{
|
{
|
||||||
//默认关闭,开启会有大量的审计日志
|
//默认关闭,开启会有大量的审计日志
|
||||||
optios.IsEnabled = true;
|
optios.IsEnabled = false;
|
||||||
//审计日志过滤器
|
//审计日志过滤器
|
||||||
optios.AlwaysLogSelectors.Add(x => Task.FromResult(!x.Url.StartsWith("/api/app/file/")));
|
optios.AlwaysLogSelectors.Add(x => Task.FromResult(!x.Url.StartsWith("/api/app/file/")));
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user