using System; using System.Data; using System.Data.SqlClient; using System.IO; using System.Net; using System.Net.Mail; using System.Security.Cryptography; using System.Text; using System.Web; using MyCode.Project.Infrastructure.Common; using MyCode.Project.Infrastructure.Constant; using MyCode.Project.Infrastructure.Extensions; using System.Text.RegularExpressions; using System.Linq; namespace MyCode.Project.Infrastructure { /// /// /// public class MyUtils { #region GetNewId(取得自递增ID,非雪花算法) /// /// 取得自递增ID /// /// public static long GetNewId() { System.Threading.Thread.Sleep(1); return Convert.ToInt64(DateTime.Now.ToString("yyMMddHHmmssfff") + WebConfigUtils.GetAppSettingsInfo("IdLastNum")); } #endregion #region 获取业务编号 /// /// 获取单据编号 /// /// 前缀 /// public static string GetBillNo(string prefix) { System.Threading.Thread.Sleep(1); var num = (new Random().Next(99) + 1).ToString("00"); return prefix + DateTime.Now.ToString("yyMMddHHmmssfff") + num; } #endregion #region GetRandNum(从一个范围得到一个随机的数字) public static int GetRandNum(int min,int max) { return new Random().Next(min, max); } #endregion private static char[] constant = { '0','1','2','3','4','5','6','7','8','9', 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'}; #region GenerateRandom(生成不重复的随机数) /// /// 生成不重复的随机数 /// /// 长度 /// public static string GenerateRandom(int length) { var random = new StringBuilder(62); Random rd = new Random(Guid.NewGuid().GetHashCode()); for (int i = 0; i < length; i++) { random.Append(constant[rd.Next(62)]); } var returnV = random.ToString(); return returnV; } #endregion #region CreateValidateCode(生成验证码) /// /// 生成验证码 /// /// 指定验证码的长度 /// public static string CreateValidateCode(int pMax) { pMax = (pMax < 2 || pMax > 6) ? 4 : pMax; int[] randMembers = new int[pMax]; int[] validateNums = new int[pMax]; StringBuilder validateNumberStr = new StringBuilder(); //生成起始序列值 int seekSeek = unchecked((int)DateTime.Now.Ticks); Random seekRand = new Random(seekSeek); int beginSeek = seekRand.Next(0, Int32.MaxValue - pMax * 10000); int[] seeks = new int[pMax]; for (int i = 0; i < pMax; i++) { beginSeek += 10000; seeks[i] = beginSeek; } //生成随机数字 for (int i = 0; i < pMax; i++) { Random rand = new Random(seeks[i]); int pownum = 1 * (int)Math.Pow(10, pMax); randMembers[i] = rand.Next(pownum, Int32.MaxValue); } //抽取随机数字 for (int i = 0; i < pMax; i++) { string numStr = randMembers[i].ToString(); int numLength = numStr.Length; Random rand = new Random(); int numPosition = rand.Next(0, numLength - 1); validateNums[i] = Int32.Parse(numStr.Substring(numPosition, 1)); } //生成验证码 for (int i = 0; i < pMax; i++) { validateNumberStr.Append(validateNums[i]); } return validateNumberStr.ToString(); } #endregion #region ConvertLongToDateTime(转long为时间) // long --> DateTime public static DateTime ConvertLongToDateTime(long d) { DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); long lTime = long.Parse(d + "0000000"); TimeSpan toNow = new TimeSpan(lTime); return dtStart.Add(toNow); } #endregion #region GetTimeStamp(得到Linux那边的时间戳) public static int GetTimeStamp() { var startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); return (int)(DateTime.Now - startTime).TotalSeconds; } #endregion #region GetDistance(取得两点位置的距离) //地球半径,单位米 private const double EARTH_RADIUS = 6378137; /// /// 计算两点位置的距离,返回两点的距离,单位 米 /// 该公式为GOOGLE提供,误差小于0.2米 /// /// 第一点经度 /// 第一点纬度 /// 第二点经度 /// 第二点纬度 /// public static double GetDistance( double lng1, double lat1, double lng2 ,double lat2) { double radLat1 = Rad(lat1); double radLng1 = Rad(lng1); double radLat2 = Rad(lat2); double radLng2 = Rad(lng2); double a = radLat1 - radLat2; double b = radLng1 - radLng2; double result = 2 * Math.Asin(Math.Sqrt(Math.Pow(Math.Sin(a / 2), 2) + Math.Cos(radLat1) * Math.Cos(radLat2) * Math.Pow(Math.Sin(b / 2), 2))) * EARTH_RADIUS; return result; } /// /// 经纬度转化成弧度 /// /// /// private static double Rad(double d) { return (double)d * Math.PI / 180d; } #endregion #region SubStrAddSuffix(截取字符串长度,超出部分使用后缀suffix代替) /// /// 截取字符串长度,超出部分使用后缀suffix代替,比如abcdevfddd取前3位,后面使用...代替 /// /// /// /// /// public static string SubStrAddSuffix(string orginStr, int length, string suffix) { string ret = orginStr; if (orginStr.Length > length) { ret = orginStr.Substring(0, length) + suffix; } return ret; } #endregion #region 删除最后结尾的一个逗号 /// /// 删除最后结尾的一个逗号 /// public static string DelLastComma(string str) { if (str.Length < 1) { return ""; } return str.Substring(0, str.LastIndexOf(",")); } #endregion #region 删除最后结尾的指定字符后的字符 /// /// 删除最后结尾的指定字符后的字符 /// public static string DelLastChar(string str, string strchar) { if (string.IsNullOrEmpty(str)) return ""; if (str.LastIndexOf(strchar) >= 0 && str.LastIndexOf(strchar) == str.Length - 1) { return str.Substring(0, str.LastIndexOf(strchar)); } return str; } #endregion #region 生成指定长度的字符串 /// /// 生成指定长度的字符串,即生成strLong个str字符串 /// /// 生成的长度 /// 以str生成字符串 /// public static string StringOfChar(int strLong, string str) { string ReturnStr = ""; for (int i = 0; i < strLong; i++) { ReturnStr += str; } return ReturnStr; } #endregion #region 截取字符长度 /// /// 截取字符长度 /// /// 字符 /// 长度 /// public static string CutString(string inputString, int len) { if (string.IsNullOrEmpty(inputString)) return ""; inputString = DropHTML(inputString); ASCIIEncoding ascii = new ASCIIEncoding(); int tempLen = 0; string tempString = ""; byte[] s = ascii.GetBytes(inputString); for (int i = 0; i < s.Length; i++) { if ((int)s[i] == 63) { tempLen += 2; } else { tempLen += 1; } try { tempString += inputString.Substring(i, 1); } catch { break; } if (tempLen > len) break; } //如果截过则加上半个省略号 byte[] mybyte = System.Text.Encoding.Default.GetBytes(inputString); if (mybyte.Length > len) tempString += "…"; return tempString; } #endregion #region 清除HTML标记 public static string DropHTML(string Htmlstring) { if (string.IsNullOrEmpty(Htmlstring)) return ""; //删除脚本 Htmlstring = Regex.Replace(Htmlstring, @"]*?>.*?", "", RegexOptions.IgnoreCase); //删除HTML Htmlstring = Regex.Replace(Htmlstring, @"<(.[^>]*)>", "", RegexOptions.IgnoreCase); Htmlstring = Regex.Replace(Htmlstring, @"([\r\n])[\s]+", "", RegexOptions.IgnoreCase); Htmlstring = Regex.Replace(Htmlstring, @"-->", "", RegexOptions.IgnoreCase); Htmlstring = Regex.Replace(Htmlstring, @"