From 4cb79220f9687b2c98decc2050e464d00553add0 Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期五, 15 八月 2025 16:27:05 +0800
Subject: [PATCH] feat:开发

---
 FlexJobApi.Core/Utils/StringUtils/StringUtils.cs |   90 ++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 89 insertions(+), 1 deletions(-)

diff --git a/FlexJobApi.Core/Utils/StringUtils/StringUtils.cs b/FlexJobApi.Core/Utils/StringUtils/StringUtils.cs
index 35b74c5..1a0cf08 100644
--- a/FlexJobApi.Core/Utils/StringUtils/StringUtils.cs
+++ b/FlexJobApi.Core/Utils/StringUtils/StringUtils.cs
@@ -1,5 +1,9 @@
-锘縰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;
 using System.Linq;
 using System.Text;
@@ -32,6 +36,27 @@
             return !str.IsNull();
         }
 
+        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;
+        }
+
         /// <summary>
         /// 鑾峰彇澶嶆暟鑻辨枃鍚�
         /// </summary>
@@ -53,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