using Fengling.RiskControl.Application.Services; using MediatR; namespace Fengling.RiskControl.Application.Commands; public record EvaluateRiskCommand : IRequest { public long MemberId { get; init; } public string EntityType { get; init; } = string.Empty; public string EntityId { get; init; } = string.Empty; public string ActionType { get; init; } = string.Empty; public Dictionary Context { get; init; } = new(); } public class EvaluateRiskCommandHandler : IRequestHandler { private readonly IRiskEvaluationService _riskService; public EvaluateRiskCommandHandler(IRiskEvaluationService riskService) { _riskService = riskService; } public async Task Handle(EvaluateRiskCommand request, CancellationToken cancellationToken) { return await _riskService.EvaluateRiskAsync(new RiskEvaluationRequest { MemberId = request.MemberId, EntityType = request.EntityType, EntityId = request.EntityId, ActionType = request.ActionType, Context = request.Context }); } }