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
}
}