| | |
| | | using System; |
| | | using 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; |
| | |
| | | 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 decimal? ToDecimal(this string str) |
| | | { |
| | | if (str.IsNotNull() && decimal.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> |
| | |
| | | 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(); |
| | | } |
| | | } |
| | | } |