public async Task <bool> Handle(UpdateUserRuleCommand request, CancellationToken cancellationToken) { var user = await _userRepository.GetUserByIdIncludeRoleAndDataRule(request.UserId); if (user == null) { await _bus.RaiseEvent( new DomainNotification(request.UserId.ToString(), "未找到对应的数据", StatusCodes.Status404NotFound), cancellationToken); return(false); } await _userRuleRepository.DeleteRangeAsync(user.RulesList); user.RulesList.Clear(); user.RulesList.AddRange(request.UserRules); await _userRepository.UpdateAsync(user); if (await Commit()) { var key = GirvsEntityCacheDefaults <User> .ByIdCacheKey.Create(user.Id.ToString()); _bus.RaiseEvent(new RemoveCacheEvent(key), cancellationToken); _bus.RaiseEvent(new RemoveCacheListEvent(GirvsEntityCacheDefaults <User> .ListCacheKey.Create()), cancellationToken); _bus.RaiseEvent(new RemoveServiceCacheEvent(), cancellationToken); } return(true); }
public async Task SaveUserDataRule(Guid userId, [FromForm] List <SaveUserDataRuleViewModel> models) { if (models == null || models.Count == 0) { _logger.LogDebug("没有接到任何要保存的数据,默认为清除所有的数据规则授权"); } else { _logger.LogDebug($"接到要保存的数据条数为:{models.Count}"); _logger.LogDebug($"接到要保存的数据内容:{JsonSerializer.Serialize(models)}"); } // // models.Clear(); // userId = Guid.Parse("08d972d1-0e5f-424b-88be-d9768f229058"); // models.Add(new SaveUserDataRuleViewModel() // { // EntityDesc = "机构管理", // EntityTypeName= "ZhuoFan.Wb.OrganizationService.Domain.Models.OrganizationEntity", // UserType= UserType.GeneralUser, // FieldName = "OrganizationId", // FieldDesc = "机构", // FieldType = "System.Guid", // FieldValue = "08d97724-07fa-42f6-8a63-fe4dba762a92", // FieldValueText = "string", // ExpressionType = ExpressionType.Equal // }); var userRules = models.Select(dataRuleFieldModel => new UserRule() { EntityTypeName = dataRuleFieldModel.EntityTypeName, EntityDesc = dataRuleFieldModel.EntityDesc, FieldName = dataRuleFieldModel.FieldName, FieldDesc = dataRuleFieldModel.FieldDesc, FieldType = dataRuleFieldModel.FieldType, FieldValue = dataRuleFieldModel.FieldValue, FieldValueText = dataRuleFieldModel.FieldValueText, ExpressionType = dataRuleFieldModel.ExpressionType }) .ToList(); var command = new UpdateUserRuleCommand(userId, userRules); await _bus.SendCommand(command); if (_notifications.HasNotifications()) { var errorMessage = _notifications.GetNotificationMessage(); throw new GirvsException(StatusCodes.Status400BadRequest, errorMessage); } }