项目笔记之订单号生成规则以及方法,第一篇!

小伙伴们在日常的商城项目开发中,都会遇到订单号生成的问题,今天呢小编就带领大家去解读一下生成订单号的问题! 首先,订单号我们要明确它有有3个性质:1.唯一性 2.不可推测性3.效率性,唯一性和不可推测性不用说了,效率性是指不能频繁的去数据库查询以避免重复。况且满足这些条件的同时订单号还要足够的短。不知道小伙伴们在日常的项目中是否也和我一样去思考过生成订单的一些小问题,可能你也会说,这些东西不用想的那么复杂,其实呢,小编也是同意大家的看法,但是殊不知我们做程序的都讲究严谨性,而且在订单模块的开发中,订单号的位置相信大家都知道,所以呢,我们在写这些小程序的时候,不妨花上几分钟去思考一下为什么这样去定义!好了,下面就告诉大家生成订单的办法了! 首先,我们生成订单的方式呢:可以采用时间戳加随机数的方式比如:time().rand(10000,99999);这样呢就生成了一个15位的随机数,时间戳呢精确到了毫秒,而后五位随机数,也去除了高并发状况下,订单号重复的情况,当然了我们也可以把时间戳简单的处理一下变成了:date("YmdHis").rand(10000,99999);这样的方式,相信小伙伴们也注意到了我们一直在使用一个rand的PHP的随机数函数,所以呢,当我们去学习PHP的基础的时候,我们遇到随机数的函数的时候,是不是还在想,这个函数到底是有什么用途的呢?现在小伙伴们是不是应该明白了呢!当然了我们还可以将其封装成一个方法,以备我们相似项目中使用,也提高了我们日常代码的可复用性,使我们的代码的效率也提高了不少,那要怎么封装呢,小编给大家写一个简单的小示例:function

get_sn()

{

return date(‘YmdHis‘).rand(100000,

999999);}当然了这只是一个简答的小示例,更多更好玩的小程序,还是需要各位小伙伴一起去开发了!最后呢,有什么问题可以联系小编,也可以加入小编的思梦PHP官方群号,我们平时还会有免费的实战课程等着你来观看!小编的联系QQ:476319748备注:微信公众平台 群1:466388300备注:微信公众平台 群2:527490769备注:微信公众平台 欢迎小伙伴的加入!

原文地址:http://blog.51cto.com/13284080/2067139

时间: 2024-10-11 19:42:27

项目笔记之订单号生成规则以及方法,第一篇!的相关文章

不重复订单号生成规则

偶尔在网上看到的,相对比较好的c#端订单号生成规则 public class BillNumberBuilder{ private static object locker = new object(); private static int sn = 0; public static string NextBillNumber(){ lock(locker){ if(sn == 9999999999) sn = 0; else sn++; return DateTime.Now.ToStrin

订单号生成规则

前阵子,公司有个电子商务项目,需要生成订单号.当时的考虑很简单,取系统时间加上随机数,或者使用 uniqid() 方法.我们都知道,订单号最基本的要求就是唯一,这个条件必须满足.仔细考虑下上述方法,在顾客购买量少的情况下,订单重复的可能性为零,但是在购买高蜂期生成的订单号重复是很有可能发生的.所以上述方法不可靠,有待强化.在网上找了一番,发现这位同学的想法挺不错的,redtamo,具体的请稳步过去看看,我作简要概述,该方法用上了英文字母.年月日.Unix 时间戳和微秒数.随机数,重复的可能性大大

订单号生成规则,谁用谁知道

1 class Program 2 { 3 //订单号数据源,实际项目中,这里是从数据库中读取过来的 4 string[] strList = { "201512000001", "201512000002", "201512000003", "201512000004", 5 "201512000008", "201512000007", "201512000006"

偶尔在网上看到的,相对比较好的c#端订单号生成规则

public class BillNumberBuilder{     private static object locker = new object();            private static int sn = 0;            public static string NextBillNumber(){         lock(locker){             if(sn == 999999999)                 sn = 0;    

c#唯一订单号生成代码

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { string uniqueNum = GenerateOrderNumber(); Console.WriteLin

订单号生成办法

1.Redis Incr public class RedisConnection { private static readonly ConfigurationOptions ConfigurationOptions = ConfigurationOptions.Parse("127.0.0.1" + ":" + "6379"); private static ConnectionMultiplexer _redisConn; private

如何生成不重复的订单号?这里提供一个不重复订单号生成方法

最近老是被运营抱怨订单号太长不方便输入,可是如果随机生成太短的订单号又容易重复,造成客户提交订单失败. 夜不能眠下写了这个工具,完美解决了问题,在这里分享下,由于时间紧张考虑可能不太周到,如发现问题欢迎指教. import java.util.Collections; import java.util.HashSet; import java.util.Set; /** * 订单号生成器 */ public class OrderNoGenerator { private int size; p

python实现 - 模拟贷款卡号生成规则

笔者在测试某web系统的过程中,需要用到“贷款卡号”,且此贷款卡号仅能使用一次,保存过后下一次无法再次使用相同的卡号. 遂决定依据它的生成规则,自己写一段代码来实现. 同时为了方便起见,贷款卡的前三位默认用数字来实现. 1. 生成规则如下: 贷款卡编码一共有16位,最后两位是校验位 整个贷款卡编码的规则如下: 前三位:分别为数字或者大写英文字母 第四位到第十四位:分别为数字 后两位的校验码为 前十四位乘以权重相加后除以97后的余数再加1后得到的数字, 如果此数字为个位数,前面还需要补一个零 前十

spring中配置quartz调用两次及项目日志log4j不能每天生成日志解决方法

在quartz中配置了一个方法运行时会连续调用两次,是因为加载两次,只需在tomcat的server.xml中修改配置 <Host name="www.xx.cn" appBase="" unpackWARs="true" autoDeploy="true"> <Context path="" docBase="webapps/demo" reloadable=&quo