您的位置:澳门新葡8455最新网站 > 编程教学 > 生成唯一订单号

生成唯一订单号

发布时间:2019-12-09 15:19编辑:编程教学浏览(82)

    澳门新葡萄京娱乐场,基于GUID+DateTime.Now.Ticks临盆唯风姿洒脱订单号

     1     /// <summary>
     2     /// 生成唯一数
     3     /// </summary>
     4     public class UniqueData
     5     {
     6         private static object obj = new object();
     7         private static int GuidInt { get { return Guid.NewGuid().GetHashCode(); } }
     8         private static string GuidIntStr { get { return Math.Abs(GuidInt).ToString(); } }
     9 
    10         /// <summary>
    11         /// 生成
    12         /// </summary>
    13         /// <param name="mark">前缀</param>
    14         /// <param name="timeType">时间精确类型  1 日,2 时,3 分,4 秒(默认) </param>
    15         /// <param name="id">id 小于或等于0则随机生成id</param>
    16         /// <returns></returns>
    17         public static string Gener(string mark, int timeType = 4, int id = 0)
    18         {
    19             lock (obj)
    20             {
    21                 var number = mark;
    22                 var ticks = (DateTime.Now.Ticks - GuidInt).ToString();
    23                 int fillCount = 0;//填充位数
    24 
    25                 number += GetTimeStr(timeType, out fillCount);
    26                 if (id > 0)
    27                 {
    28                     number += ticks.Substring(ticks.Length - (fillCount + 3)) + id.ToString().PadLeft(10, '0');
    29                 }
    30                 else
    31                 {
    32                     number += ticks.Substring(ticks.Length - (fillCount + 3)) + GuidIntStr.PadLeft(10, '0');
    33                 }
    34                 return number;
    35             }
    36         }
    37 
    38         /// <summary>
    39         /// 生成
    40         /// </summary>
    41         /// <param name="mark">前缀</param>
    42         /// <param name="timeType">时间精确类型  1 日,2 时,3 分,4 秒(默认)</param>
    43         /// <param name="id">id 小于或等于0则随机生成id</param>
    44         /// <returns></returns>
    45         public static string GenerLong(string mark, int timeType = 4, long id = 0)
    46         {
    47             lock (obj)
    48             {
    49                 var number = mark;
    50                 var ticks = (DateTime.Now.Ticks - GuidInt).ToString();
    51                 int fillCount = 0;//填充位数
    52 
    53                 number += GetTimeStr(timeType, out fillCount);
    54                 if (id > 0)
    55                 {
    56                     number += ticks.Substring(ticks.Length - fillCount) + id.ToString().PadLeft(19, '0');
    57                 }
    58                 else
    59                 {
    60                     number += GuidIntStr.PadLeft(10, '0') + ticks.Substring(ticks.Length - (9 + fillCount));
    61                 }
    62                 return number;
    63             }
    64         }
    65 
    66         /// <summary>
    67         /// 获取时间字符串
    68         /// </summary>
    69         /// <param name="timeType">时间精确类型  1 日,2 时,3 分,4 秒(默认)</param>
    70         /// <param name="fillCount">填充位数</param>
    71         /// <returns></returns>
    72         private static string GetTimeStr(int timeType, out int fillCount)
    73         {
    74             var time = DateTime.Now;
    75             if (timeType == 1)
    76             {
    77                 fillCount = 6;
    78                 return time.ToString("yyyyMMdd");
    79             }
    80             else if (timeType == 2)
    81             {
    82                 fillCount = 4;
    83                 return time.ToString("yyyyMMddHH");
    84             }
    85             else if (timeType == 3)
    86             {
    87                 fillCount = 2;
    88                 return time.ToString("yyyyMMddHHmm");
    89             }
    90             else
    91             {
    92                 fillCount = 0;
    93                 return time.ToString("yyyyMMddHHmmss");
    94             }
    95         }
    96     }
    

     

    本文由澳门新葡8455最新网站发布于编程教学,转载请注明出处:生成唯一订单号

    关键词:

上一篇:没有了

下一篇:没有了