IDCardOCRDto.cs 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. using FluentValidation;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. namespace OASystem.Domain.Dtos.Tencent
  8. {
  9. /// <summary>
  10. /// TencentOCR ID证件识别
  11. /// </summary>
  12. public class IDCardOCRDto:DtoBase
  13. {
  14. public int UserId { get; set; }
  15. /// <summary>
  16. /// 语言
  17. /// ch 中文
  18. /// en 英文
  19. /// </summary>
  20. public string Language { get; set; }
  21. /// <summary>
  22. /// 图片的 Base64 值。要求图片经Base64编码后不超过 7M,分辨率建议500*800以上,支持PNG、JPG、JPEG、BMP格式。建议卡片部分占据图片2/3以上。
  23. /// </summary>
  24. public string picBase64 { get; set; }
  25. /// <summary>
  26. /// 0 FRONT:身份证有照片的一面(人像面)
  27. /// 1 BACK:身份证有国徽的一面(国徽面)
  28. /// 该参数如果不填,将为您自动判断身份证正反面。
  29. /// </summary>
  30. public int CardSide { get; set; }
  31. }
  32. /// <summary>
  33. /// TencentOCR ID证件识别 DTO 验证
  34. /// </summary>
  35. public class IDCardOCRDtoFoalidator : AbstractValidator<IDCardOCRDto>
  36. {
  37. private readonly List<string> _languages = new List<string>() { "ch", "en" };
  38. public IDCardOCRDtoFoalidator()
  39. {
  40. RuleFor(it => it.UserId)
  41. .GreaterThan(0)
  42. .WithMessage($"请传入有效的用户UserId值") ;
  43. RuleFor(it => it.Language)
  44. .NotNull()
  45. .NotEmpty()
  46. .WithMessage($"Language:参数值为空")
  47. .Must(LanguageBeAllowedValue)
  48. .WithMessage($"Language:无效值");
  49. RuleFor(it => it.picBase64).NotNull().NotEmpty().WithMessage("picBase64为空");
  50. RuleFor(it => it.picBase64).Must(base64 => OCRVerifyMethod.ImageSize(base64)).WithMessage("图片不能大于7M!");
  51. RuleFor(it => it.picBase64).Must(base64 => OCRVerifyMethod.ImageType(base64)).WithMessage("图片格式不正确!只支持 PNG、JPG、JPEG、BMP格式的文件!");//
  52. RuleFor(it => it.CardSide).InclusiveBetween(0, 1).WithMessage("CardSide(超出范围):0 人像面 1 国徽面");
  53. }
  54. private bool LanguageBeAllowedValue(string value)
  55. {
  56. return _languages.Contains(value.ToLower());
  57. }
  58. }
  59. }