public sealed class GlobalConfig
{
/// <summary>
/// 系统默认时间 1900-01-01
/// </summary>
public static readonly DateTime DefaultSysDate = new DateTime(1900, 1, 1);
/// <summary>
/// 线路默认最大结束日期 2100-01-01
/// </summary>
public static readonly DateTime DefaultEndDate = new DateTime(2100, 1, 1);
/// <summary>
/// 系统查询,没有相关数据时的提示信息
/// </summary>
public static readonly string NoDataDisaplay = "对不起,没有查询到符合条件的数据!";
/// <summary>
/// 默认打开查询页面显示的内容"请选择查询条件进行查询"
/// </summary>
public static readonly string SearchTips = "请选择查询条件进行查询!";
/// <summary>
/// 限制上传附件的大小 (字节)-- 8M
/// </summary>
public static readonly int LimitFileSize = 1024 * 1024 * 8;
/// <summary>
/// 点评奖金&消费券改革公司统一的切换时间
/// </summary>
public static readonly DateTime DefaultSwitchDate = new DateTime(2011, 12, 30, 23, 59, 59);
/// <summary>
/// 默认日期格式化
/// </summary>
public static readonly string DefaultDateFormat = "yyyy-MM-dd";
/// <summary>
/// 默认时间格式化
/// </summary>
public static readonly string DefaultDateTimeFormat = "yyyy-MM-dd HH:mm:ss";
}
GenerateCodeHelper
public class GenerateCodeHelper
{
/// <summary>
/// 建码函数,使用方法:CreateCode ("id",code_length,repaircode_length)
/// </summary>
/// <param name="id">唯一标识符</param>
/// <param name="codelen">第一段码值长度</param>
/// <param name="disrepairlen">第二段码值长度</param>
/// <returns>生成带唯一标识的伪随机码</returns>
public string CreateCoupon(long id, int codelen, int disrepairlen)
{
id=id + CommonHelper.ConvertTimeToInt(DateTime.Now);//增加时间戳保证唯一性
var charset0 = "ABCDEFGHKMNPRSTUVWXYZabcdefghijkmnpqrstuvwxyz23456789";//第一段随机码字符集,数字1,0与字母I,l,O过于形似,字符集中排除了这些字符
var charset = "ABCDEFGHKMNPRSTUVWXYZabcdefghijkmnpqrstuvwxyz";//补齐码值的字符集,ID为10进制,字符集中不能出现数字[0-9],否则最终的字符串可能出现重复(尽管前半段与后半段同时重复的概率很低)
var _len = charset0.Length - 1;//字符集最大序号
var coupon = "";//创建随机码变量
//创建一个随机码,每一位都随机一次
var rd = new Random(Math.Abs(Guid.NewGuid().GetHashCode()));
for (var i = 0; i < codelen; i++)
{
coupon += charset0[rd.Next(0, _len)].ToString();
}
var nid = DispRepair(id.ToString(), disrepairlen, charset, 0);//调用补位函数补齐特征字符串,防止券码出现重复,非1为后补
coupon += nid;//组装成完整的随机码
return coupon;
}
/// <summary>
/// 补位函数 使用方法:DispRepair(gstr,repaircode_length,fillstr,type)
/// </summary>
/// <param name="gstr">原字符串</param>
/// <param name="disrepairlen">新字符串长度</param>
/// <param name="fillstr">补位字符集,不能出现唯一标识中可能出现的字符</param>
/// <param name="type">类型,1为前补,其他值为后补</param>
/// <returns>补齐字符串长度</returns>
private string DispRepair(string gstr, int disrepairlen, string fillstr, int type)
{
var length = disrepairlen - gstr.Length;//需要补齐的字符串长度
if (length < 1)
{
return gstr;
}
else
{
var newstr = "";//创建新字符串
var rd = new Random(Math.Abs(Guid.NewGuid().GetHashCode()));
//要补齐的字符串,每一位都随机一次
for (var i = 0; i < length; i++)
{
newstr += fillstr[rd.Next(0, fillstr.Length - 1)];//组装新字符串
}
if (type == 1)
{
gstr = newstr + gstr;//将新字符串填充到原字符串前方
}
else
{
gstr += newstr;//将新字符串填充到原字符串后方
}
}
return gstr;
}
}