常用公共方法记录

这个代码示例展示了如何创建一个全局配置类,包含系统默认日期和时间常量,以及一个用于生成带唯一标识的随机码的辅助类。`GlobalConfig`类定义了各种静态常量,如默认日期格式和系统提示信息。`GenerateCodeHelper`类提供了`CreateCoupon`方法,用于生成基于特定ID和长度的唯一随机码,通过组合时间戳和补位字符确保唯一性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值