78 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C#
		
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C#
		
	
	
using AutoMapper.QueryableExtensions;
 | 
						|
using EntityFrameworkCore.Triggered;
 | 
						|
using System;
 | 
						|
using System.Collections.Generic;
 | 
						|
using System.Linq;
 | 
						|
using System.Text;
 | 
						|
using System.Threading.Tasks;
 | 
						|
 | 
						|
namespace IRaCIS.Core.Application.Triggers.AfterSaveTrigger
 | 
						|
{
 | 
						|
    /// <summary>
 | 
						|
    /// 账户日志 记录账户每次操作的信息
 | 
						|
    /// </summary>
 | 
						|
    /// <param name="_identityUserRepository"></param>
 | 
						|
    public class UserLogAfterTrigger(IRepository<IdentityUser> _identityUserRepository) : IAfterSaveTrigger<UserLog>
 | 
						|
    {
 | 
						|
        public async Task AfterSave(ITriggerContext<UserLog> context, CancellationToken cancellationToken)
 | 
						|
        {
 | 
						|
            var userlog = context.Entity;
 | 
						|
 | 
						|
            if (context.ChangeType == ChangeType.Added)
 | 
						|
            {
 | 
						|
 | 
						|
                if (userlog.TargetIdentityUserId != null)
 | 
						|
                {
 | 
						|
 | 
						|
                    //判断是否需要记录详情
 | 
						|
 | 
						|
                    if (userlog.OptType == UserOptType.AddUser || userlog.OptType == UserOptType.UpdateUser || userlog.OptType == UserOptType.UpdateUserRole
 | 
						|
                      || userlog.OptType == UserOptType.AccountEnable || userlog.OptType == UserOptType.AccountLocked)
 | 
						|
                    {
 | 
						|
                        var obj = await _identityUserRepository.Where(t => t.Id == userlog.TargetIdentityUserId).Select(t => new UserLogJsonObj()
 | 
						|
                        {
 | 
						|
                            DepartmentName = t.DepartmentName,
 | 
						|
                            EMail = t.EMail,
 | 
						|
                            FirstName = t.FirstName,
 | 
						|
                            LastName = t.LastName,
 | 
						|
                            OrganizationName = t.OrganizationName,
 | 
						|
                            Phone = t.Phone,
 | 
						|
                            PositionName = t.PositionName,
 | 
						|
                            Sex = t.Sex,
 | 
						|
                            Status = t.Status,
 | 
						|
                            UserCode = t.UserCode,
 | 
						|
                            UserName = t.UserName,
 | 
						|
                            UserRoleList = t.UserRoleList.Select(t => new UserRoleLogObj()
 | 
						|
                            {
 | 
						|
                                IsUserRoleDisabled = t.IsUserRoleDisabled,
 | 
						|
                                UserTypeEnum = t.UserTypeEnum,
 | 
						|
                                UserTypeShortName = t.UserTypeRole.UserTypeShortName
 | 
						|
                            }).ToList()
 | 
						|
 | 
						|
                        }).FirstOrDefaultAsync();
 | 
						|
 | 
						|
 | 
						|
 | 
						|
                        userlog.JsonObj = obj.ToJsonStr();
 | 
						|
                    }
 | 
						|
 | 
						|
 | 
						|
 | 
						|
                }
 | 
						|
 | 
						|
                if (userlog.ActionIdentityUserId != null && userlog.ActionUserName.IsNullOrWhiteSpace())
 | 
						|
                {
 | 
						|
                    userlog.ActionUserName = await _identityUserRepository.Where(t => t.Id == userlog.ActionIdentityUserId).Select(t => t.UserName).FirstOrDefaultAsync();
 | 
						|
                }
 | 
						|
 | 
						|
                await _identityUserRepository.SaveChangesAsync();
 | 
						|
 | 
						|
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
 | 
						|
}
 |