first commit

This commit is contained in:
yanpeng200212
2026-10-08 10:43:59 +08:00
commit 8430ba0452
288 changed files with 29595 additions and 0 deletions
@@ -0,0 +1,49 @@
using F9WebAiTest.Application.Common.Exceptions;
using F9WebAiTest.Application.Interfaces.SnowflakeID;
using F9WebAiTest.Application.Interfaces.UOW;
using F9WebAiTest.Domain.Entities.SYS.Departments;
using F9WebAiTest.Domain.Interfaces.SYS.Departments;
using F9WebAiTest.Domain.Interfaces.SYS.RBAC.Users;
using MediatR;
namespace F9WebAiTest.Application.CQRS.SYS.RBAC.Users.Commands;
/// <summary>命令定义</summary>
public record User_UpdateCommand(long Id, string UserName, string PhoneNumber, string LoginName, long DepartmentId, int SortOrder) : IRequest<bool>;
/// <summary>命令处理器</summary>
public class User_UpdateCommandHandler(
IUnitOfWork_F9 unitOfWork,
ISnowflakeIdGenerator snowflakeIdGenerator,
IUserWriteRepository userWriteRepository,
IDepartmentUserRepository departmentUserRepository) : IRequestHandler<User_UpdateCommand, bool>
{
public async Task<bool> Handle(User_UpdateCommand command, CancellationToken cancellationToken)
{
if (command.Id <= 0) throw new F9OperationException("用户ID不能为空");
if (string.IsNullOrWhiteSpace(command.UserName)) throw new F9OperationException("用户名不能为空");
if (command.DepartmentId <= 0) throw new F9OperationException("部门不能为空");
return await unitOfWork.ExecuteWithUow(async () =>
{
// 获取数据库用户
var dbUser = await userWriteRepository.GetByIdAsync(command.Id);
if (dbUser == null) throw new F9NotFoundException("用户", command.Id);
// 移除原部门关系
await departmentUserRepository.RemoveAsync(dbUser.DepartmentId, dbUser.Id);
// 领域更新
dbUser.Update(command.UserName, command.PhoneNumber, command.LoginName, command.DepartmentId, command.SortOrder);
// 持久化
var result = await userWriteRepository.UpdateAsync(dbUser);
// 添加新部门关系
await departmentUserRepository.AssignAsync(new DepartmentUser(
snowflakeIdGenerator.CreateId(), dbUser.DepartmentId, dbUser.Id));
return result;
});
}
}