using Microsoft.Extensions.FileSystemGlobbing.Internal; using Microsoft.Extensions.FileSystemGlobbing; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Volo.Abp; using Shentun.Peis.Models; using TencentCloud.Bda.V20200324.Models; using Shentun.Peis.Enums; namespace Shentun.Peis { public static class DataHelper { /// /// 验证是否为空或者空字符串 /// /// /// public static bool IsNullOrEmpty(string obj) { bool msg = false; if (string.IsNullOrEmpty(obj)) { msg = true; } else { if (obj.Trim() == "") { msg = true; } } return msg; } /// /// 验证十进制颜色代码是否合规 /// /// /// 格式不正确返回为false public static bool IsColorNumber(int str) { //0~16777215 if (str > 16777215 || str < 0) return false; else return true; } /// /// 转换guid /// /// /// public static Guid ConvertGuid(Guid? id) { if (id == null) { return Guid.Empty; } else { return id.Value; } } /// 将大驼峰命名转为蛇形命名 public static string RenameSnakeCase(string str) { var builder = new StringBuilder(); var name = str; var previousUpper = false; for (var i = 0; i < name.Length; i++) { var c = name[i]; if (char.IsUpper(c)) { if (i > 0 && !previousUpper) { builder.Append("_"); } builder.Append(char.ToLowerInvariant(c)); previousUpper = true; } else { builder.Append(c); previousUpper = false; } } return builder.ToString(); } public static string RenameSnakeCase2(string str) { return str; } /// /// 转换人民币大小金额 /// /// 金额 /// 返回大写形式 public static string CmycurD(decimal num) { string str1 = "零壹贰叁肆伍陆柒捌玖"; //0-9所对应的汉字 string str2 = "万仟佰拾亿仟佰拾万仟佰拾元角分"; //数字位所对应的汉字 string str3 = ""; //从原num值中取出的值 string str4 = ""; //数字的字符串形式 string str5 = ""; //人民币大写金额形式 int i; //循环变量 int j; //num的值乘以100的字符串长度 string ch1 = ""; //数字的汉语读法 string ch2 = ""; //数字位的汉字读法 int nzero = 0; //用来计算连续的零值是几个 int temp; //从原num值中取出的值 num = Math.Round(Math.Abs(num), 2); //将num取绝对值并四舍五入取2位小数 str4 = ((long)(num * 100)).ToString(); //将num乘100并转换成字符串形式 j = str4.Length; //找出最高位 if (j > 15) { return "溢出"; } str2 = str2.Substring(15 - j); //取出对应位数的str2的值。如:200.55,j为5所以str2=佰拾元角分 //循环取出每一位需要转换的值 for (i = 0; i < j; i++) { str3 = str4.Substring(i, 1); //取出需转换的某一位的值 temp = Convert.ToInt32(str3); //转换为数字 if (i != (j - 3) && i != (j - 7) && i != (j - 11) && i != (j - 15)) { //当所取位数不为元、万、亿、万亿上的数字时 if (str3 == "0") { ch1 = ""; ch2 = ""; nzero = nzero + 1; } else { if (str3 != "0" && nzero != 0) { ch1 = "零" + str1.Substring(temp * 1, 1); ch2 = str2.Substring(i, 1); nzero = 0; } else { ch1 = str1.Substring(temp * 1, 1); ch2 = str2.Substring(i, 1); nzero = 0; } } } else { //该位是万亿,亿,万,元位等关键位 if (str3 != "0" && nzero != 0) { ch1 = "零" + str1.Substring(temp * 1, 1); ch2 = str2.Substring(i, 1); nzero = 0; } else { if (str3 != "0" && nzero == 0) { ch1 = str1.Substring(temp * 1, 1); ch2 = str2.Substring(i, 1); nzero = 0; } else { if (str3 == "0" && nzero >= 3) { ch1 = ""; ch2 = ""; nzero = nzero + 1; } else { if (j >= 11) { ch1 = ""; nzero = nzero + 1; } else { ch1 = ""; ch2 = str2.Substring(i, 1); nzero = nzero + 1; } } } } } if (i == (j - 11) || i == (j - 3)) { //如果该位是亿位或元位,则必须写上 ch2 = str2.Substring(i, 1); } str5 = str5 + ch1 + ch2; if (i == j - 1 && str3 == "0") { //最后一位(分)为0时,加上“整” str5 = str5 + '整'; } } if (num == 0) { str5 = "零元整"; } return str5; } /// /// 解析身份证信息 /// /// 身份证号码 /// public static AutoCardInfo AutoIDCard(string IdNo) { if (!string.IsNullOrEmpty(IdNo) && (IdNo.Trim().Length == 15 || IdNo.Trim().Length == 18)) { AutoCardInfo msg = new AutoCardInfo(); string birthday = ""; string sex = ""; string identityCard = IdNo.Trim(); if (identityCard.Length == 18) { birthday = identityCard.Substring(6, 4) + "-" + identityCard.Substring(10, 2) + "-" + identityCard.Substring(12, 2); sex = identityCard.Substring(14, 3); } else if (identityCard.Length == 15) { birthday = "19" + identityCard.Substring(6, 2) + "-" + identityCard.Substring(8, 2) + "-" + identityCard.Substring(10, 2); sex = identityCard.Substring(12, 3); } try { DateTime cvdate = Convert.ToDateTime(birthday); if (cvdate > DateTime.Now || cvdate < new DateTime(1900, 1, 1)) { return null; } if (int.Parse(sex) % 2 == 0) { msg.SexId = 'F'; } else { msg.SexId = 'M'; } } catch { return null; } short age = 0; DateTime dt = Convert.ToDateTime(birthday); age = (short)(DateTime.Now.Year - dt.Year); if (DateTime.Now.Month < dt.Month || (DateTime.Now.Month == dt.Month && DateTime.Now.Day < dt.Day)) { age--; } msg.BirthDate = birthday; msg.IdNo = IdNo; msg.Age = age; return msg; } else { return null; } } /// /// 出生日期转换年龄 /// /// 出生日期 /// public static short? AutoAgeInBirthday(string birthday) { if (!string.IsNullOrEmpty(birthday)) { short age; try { DateTime cvdate = Convert.ToDateTime(birthday); if (cvdate > DateTime.Now || cvdate < new DateTime(1900, 1, 1)) { return null; } } catch { return null; } DateTime dt = Convert.ToDateTime(birthday); age = (short)(DateTime.Now.Year - dt.Year); if (DateTime.Now.Month < dt.Month || (DateTime.Now.Month == dt.Month && DateTime.Now.Day < dt.Day)) { age--; } return age; } else { return null; } } /// /// 年龄转换出生日期 /// /// 年龄 /// public static string AutoBirthdayInAge(short age) { string birthday; DateTime now = DateTime.Now; birthday = now.AddYears(0 - age).ToString("yyyy-MM-dd"); return birthday; } /// /// 保留小数 转换decimal /// /// /// /// public static decimal DecimalRetainDecimals(decimal? value, int decimalLength) { decimal newValue = 0; if (value != null) { Math.Round(value.Value, decimalLength); } return newValue; } #region 数据检查 /// /// 数据检查 对象 /// /// 需要验证的对象 /// 字段名称 /// 异常提示后缀 /// public static void CheckEntityIsNull(object value, string parameterName = "对象", string ExceptionMessage = "不能为空") { if (value == null) { throw new UserFriendlyException($"{parameterName}{ExceptionMessage}"); } } /// /// 数据检查 字符串 /// /// 需要验证的值 /// 字段名称 /// 异常提示后缀 /// public static void CheckStringIsNull(string value, string parameterName, string ExceptionMessage = "不能为空") { if (string.IsNullOrWhiteSpace(value)) { throw new UserFriendlyException($"{parameterName}{ExceptionMessage}"); } } #region 验证char类型参数 /// /// 验证char类型参数是否为null /// /// 需要验证的值 /// 字段名称 /// 异常提示后缀 /// public static void CheckCharIsNull(char? value, string parameterName, string ExceptionMessage = "不能为空") { if (value == null) { throw new ArgumentException($"{parameterName}{ExceptionMessage}"); } } /// /// 验证char类型参数是否为0 /// /// 需要验证的值 /// 字段名称 /// 异常提示后缀 /// public static void CheckCharIsZero(char value, string parameterName, string ExceptionMessage = "不能为0") { if (value == '0') { throw new ArgumentException($"{parameterName}{ExceptionMessage}"); } } /// /// 验证char类型参数是否为Y、N /// /// 需要验证的值 /// 字段名称 /// public static void CheckCharIsYOrN(char value, string parameterName) { if (value != 'Y' && value != 'N') { throw new ArgumentException($"{parameterName}参数为:{value},是无效值,只能为Y跟N"); } } #endregion /// /// 验证Int类型数据是否>0 /// /// 需要验证的值 /// 字段名称 /// 异常提示后缀 /// public static void CheckIntIsGeaterThanZero(int value, string parameterName, string ExceptionMessage = "只能为大于0的值") { if (value <= 0) { throw new UserFriendlyException($"{parameterName}{ExceptionMessage}"); } } /// /// 验证Guid数据是否为null /// /// 需要验证的值 /// 字段名称 /// 异常提示后缀 /// public static void CheckGuidIsNull(Guid? value, string parameterName, string ExceptionMessage = "不能为空") { if (value == null) { throw new UserFriendlyException($"{parameterName}{ExceptionMessage}"); } } /// /// 验证Guid数据是否为默认值00000000-0000-0000-0000-000000000000 /// /// 需要验证的值 /// 字段名称 /// 异常提示后缀 /// public static void CheckGuidIsDefaultValue(Guid value, string parameterName, string ExceptionMessage = "不能为默认值00000000-0000-0000-0000-000000000000") { if (value == Guid.Empty || value == default(Guid)) { throw new UserFriendlyException($"{parameterName}{ExceptionMessage}"); } } /// ///验证decimal类型数据大于0 /// /// 需要验证的值 /// 字段名称 /// 异常提示后缀 /// public static void CheckDecimalIsGeaterThanZero(decimal value, string parameterName, string ExceptionMessage = "值只能大于0") { if (value <= 0) { throw new UserFriendlyException($"{parameterName}{ExceptionMessage}"); } } /// /// 数据检查 decimal /// /// 需要验证的值 /// 字段名称 /// 异常提示后缀 /// public static void CheckDecimalIsNull(decimal? value, string parameterName, string ExceptionMessage = "不能为空") { if (value == null) { throw new UserFriendlyException($"{parameterName}{ExceptionMessage}"); } } public static void CheckSex(char value) { if (value != SexFlag.Male && value != SexFlag.Female && value != SexFlag.UnKnown) { throw new ArgumentException($"性别参数不正确"); } } public static void CheckForSex(char value) { if (value != ForSexFlag.Male && value != ForSexFlag.Female && value != ForSexFlag.All) { throw new UserFriendlyException($"性别参数不正确"); } } public static void CheckMaritalStatus(char value) { if (value != MaritalStatusFlag.UnMarried && value != MaritalStatusFlag.Married && value != MaritalStatusFlag.Divorce && value != MaritalStatusFlag.Widowed && value != MaritalStatusFlag.DivorceOrWidowed && value != MaritalStatusFlag.UnKnown) { throw new UserFriendlyException($"婚姻状况参数不正确"); } } public static void CheckForMaritalStatus(char value) { if (value != MaritalStatusFlag.UnMarried && value != MaritalStatusFlag.Married && value != MaritalStatusFlag.All) { throw new UserFriendlyException($"婚姻状况参数不正确"); } } #endregion } }