From 0b7bcf0a7f3be4919721f9c32c2b68a529adea8c Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期四, 21 八月 2025 16:26:48 +0800 Subject: [PATCH] feat:开发 --- FlexJobApi.Core/Utils/StringUtils/StringUtils.cs | 79 ++++++++++++++++++++++++++++++++++++++- 1 files changed, 77 insertions(+), 2 deletions(-) diff --git a/FlexJobApi.Core/Utils/StringUtils/StringUtils.cs b/FlexJobApi.Core/Utils/StringUtils/StringUtils.cs index 9fcf514..1a0cf08 100644 --- a/FlexJobApi.Core/Utils/StringUtils/StringUtils.cs +++ b/FlexJobApi.Core/Utils/StringUtils/StringUtils.cs @@ -1,4 +1,7 @@ -锘縰sing System; +锘縰sing Furion.DataValidation; +using Furion.FriendlyException; +using Mapster.Utils; +using System; using System.Collections.Generic; using System.Data.SqlTypes; using System.Diagnostics.CodeAnalysis; @@ -33,15 +36,24 @@ return !str.IsNull(); } - public static Guid? ToGuid(this string str) + public static Guid? ToGuid(this string str, string requiredMessage = null) { if (str.IsNotNull() && Guid.TryParse(str, out var guid) && guid != Guid.Empty) return guid; + if (requiredMessage.IsNotNull()) throw Oops.Oh(EnumErrorCodeType.s400, requiredMessage); return null; } public static int? ToInt(this string str) { if (str.IsNotNull() && int.TryParse(str, out var @int)) return @int; + return null; + } + + public static T? ToEnum<T>(this string str, string requiredMessage = null) + where T : struct + { + if (str.IsNotNull() && Enum.TryParse<T>(str, out var @enum)) return @enum; + if (requiredMessage.IsNotNull()) throw Oops.Oh(EnumErrorCodeType.s400, requiredMessage); return null; } @@ -66,5 +78,68 @@ return singularName + "s"; } } + + public static bool CheckIsIdentityNumber18(this string identity) + { + return identity.IsNotNull() && identity.TryValidate(EnumValidationTypes.ValiIdentity).IsValid && identity.Length == 18; + } + + /// <summary> + /// 鑾峰彇鎬у埆 + /// </summary> + /// <param name="identity"></param> + /// <returns></returns> + public static EnumUserGender? GetGender(this string identity) + { + if (identity.CheckIsIdentityNumber18()) + { + return identity[16] % 2 == 0 + ? EnumUserGender.Female + : EnumUserGender.Male; + } + else + { + return null; + } + } + + /// <summary> + /// 鑾峰彇鐢熸棩 + /// </summary> + /// <param name="identity"></param> + /// <returns></returns> + public static DateTime? GetBirthday(this string identity) + { + if (identity.CheckIsIdentityNumber18()) + { + return new DateTime( + identity.Substring(6, 4).ToInt()!.Value, + identity.Substring(10, 2).ToInt()!.Value, + identity.Substring(12, 2).ToInt()!.Value); + } + else + { + return null; + } + } + + /// <summary> + /// 鑾峰彇骞撮緞 + /// </summary> + /// <param name="identity"></param> + /// <returns></returns> + public static int? GetAge(this string identity) + { + if (identity.CheckIsIdentityNumber18()) + { + var birthday = identity.GetBirthday(); + return birthday.GetAge(); + } + else + { + return null; + } + } + } } -- Gitblit v1.9.1