From b8cf451145b72ff7ce728c101adad3574e722697 Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期二, 09 九月 2025 08:59:50 +0800
Subject: [PATCH] fix: s

---
 FlexJobApi.Core/Utils/StringUtils/StringUtils.cs |   94 ++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 92 insertions(+), 2 deletions(-)

diff --git a/FlexJobApi.Core/Utils/StringUtils/StringUtils.cs b/FlexJobApi.Core/Utils/StringUtils/StringUtils.cs
index c8fa2cf..6a3a4b1 100644
--- a/FlexJobApi.Core/Utils/StringUtils/StringUtils.cs
+++ b/FlexJobApi.Core/Utils/StringUtils/StringUtils.cs
@@ -1,4 +1,5 @@
-锘縰sing Furion.FriendlyException;
+锘縰sing Furion.DataValidation;
+using Furion.FriendlyException;
 using Mapster.Utils;
 using System;
 using System.Collections.Generic;
@@ -35,15 +36,22 @@
             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 decimal? ToDecimal(this string str)
+        {
+            if (str.IsNotNull() && decimal.TryParse(str, out var @int)) return @int;
             return null;
         }
 
@@ -76,5 +84,87 @@
                 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;
+            }
+        }
+
+        /// <summary>
+        /// 鐢熸垚闅忔満瀛楃涓�
+        /// </summary>
+        /// <param name="length"></param>
+        /// <returns></returns>
+        public static string GenerateRandomString(int length)
+        {
+            if (length <= 0) return null;
+            var random = new Random();
+            var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
+            var result = new StringBuilder(length);
+            for (int i = 0; i < length; i++)
+            {
+                // 浠庡瓧绗﹂泦涓殢鏈洪�夋嫨涓�涓瓧绗�
+                int index = random.Next(chars.Length);
+                result.Append(chars[index]);
+            }
+            return result.ToString();
+        }
     }
 }

--
Gitblit v1.9.1