使用表的id+随机数做不重复的订单号

用于分布式情况下的订单号的创建:

创建表:

CREATE TABLE `shop_uuid_18` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `addTime` datetime DEFAULT NULL,
  `deleteStatus` bit(1) NOT NULL DEFAULT b‘0‘,
  `name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=132655 DEFAULT CHARSET=utf8;

你的订单想从哪开始就将sql中

AUTO_INCREMENT=132655 修改值就行

2.生成唯一的订单号:
UUID18 uuid18 = new UUID18();
uuid18Service.save(uuid18);
String random =   (int)((Math.random()*9+1)*10)+"";
String orderNo = uuid18.getId() + random; //就是符合要求的定单号

原文地址:https://www.cnblogs.com/wyf-love-dch/p/11412340.html

时间: 2024-08-25 20:26:43

使用表的id+随机数做不重复的订单号的相关文章

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

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

生成一个不重复的订单号(php)

/** * 生成订单号 * * 用uniqid获取一个基于当前的微秒数生成的唯一不重复的字符串(但是他的前7位貌似很久才会发生变动,所以不用考虑可删除),取其第8到13位.但是这个字符串里面有英文字母,咋办? * 用ord获取他的ASCII码,所以就有了下一步:用str_split把这个字符串分割为数组,用array_map去操作(速度快点). * 然后返回的还是一个数组,KO,在用implode弄成字符串,但是字符长度不定,取前固定的几位,然后前面加上当前的年份和日期,这个方法生成的订单号,全

使用C++生成1-33中的6个随机数,无重复

生成1-33中的6个随机数,无重复 ------------------------------------------------------------------------ 方法1.每生成一个随机数,便于前面的所有随机数进行比较,如果有重复,则舍去不要,重新选取. 但该方法十分费时,并且在数据量巨大的并且有一定限制的时候,会引发巨大问题. 例如要生成10000个随机数,范围是0-9999,且不能重复,那么最后几个随机数有可能需要相当长的时间才能筛选出来. 方法2. 下面我们从另外一个角度

复杂的事情简单做,简单的事情重复做,重复的事情用心做!

人们常说“复杂的事情简单做,简单的事情重复做,重复的事情用心做!”,其中真正的内涵是什么呢? 所有事情想完成都是复杂的,复杂的事情简单做,只有将步骤简单化,理出脉络,才能着手去做.多数时候我们都把简单当简化来做了,而简单并非简化,简单是每一步骤都要清晰做到位,简化则是是几个步骤合并去做,省略了本该有的过程,事情往往就是毁在了简化上.重复并非复制.简单的事情重复做,就是要我们要看清楚自己在这里面能重复的是什么?在重复的过程中,进度快了是因为自己的能力提升了?还是简化了步骤?而复制是按原来的模子一模

解决微信支付出现OUT_TRADE_NO_USED:商户订单号重复

在这里和大家说一下微信APP支付时出现的一个问题! 在APP调起支付的时候出现了错误码:OUT_TRADE_NO_USED:商户订单号重复! 1 xxxxxxx312 xxxxxxx 因为我之前在后台已经将微信APP支付的服务端SDK集成进项目了,然后预支付成功后将签名返回给APP端,他们也调起来了,并成功收到异步回调通知! 但过了几天后就出现这个 "商户订单号重复" 这个问题! 后来经过调试,发现立即支付的单不会有这个问题,只有待付款的订单才会出现这个问题! 待付款的单指的是: 使用

做App还是微信公众号,你该如何抉择?

我不够聪明,因为我经常出于好奇被自己提出的问题所困扰,于是乎就有些强迫症似的拼命去寻求答案——我只是想说服自己,让自己从困扰的谜团中清醒.坚定方向,进而能从容不迫的走下去... 最近在考虑一个问题:做App还是微信公众号,应该以什么标准来做判断和抉择?——这源于:我之前所在的公司花了比较大的精力开发的一个跟我目前所在公司类似的移动端产品,貌似前几个月已经没怎么维护和运营了,把主要精力放在了其微信公众号上,各种活动和比较精心编辑的内容,看样子是想做成本地用户最多.最活跃的公众号,这种转变让我有些始

不重复订单号生成规则

偶尔在网上看到的,相对比较好的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

PHP 做 RSA 签名 生成订单

//组合签名 $a=time(); $b=substr($a, 1); //生成随机订单号 $orderid= $b.mt_rand(10000,99999); //合作身份者id,以2088开头的16位纯数字 $mygoods['partner']="2088011744308664"; //商家账号 $mygoods['seller']="[email protected]"; //订单号 $mygoods['out_trade_no']=$orderid; /

【Redis使用系列】使用Redis做防止重复提交

前言 在平时的开发中我们都需要处理重复提交的问题,避免业务出错或者产生脏数据,虽然可以通过前端控制但这并不是可以完全避免,最好的方式还是前后端均进行控制,这样的话就可以更有效,尽可能全面的去减少错误的发生. 一.比如我们注册的时候需要发送验证码 如果用户频繁点击或者恶意攻击的话就会造成不断的请求对服务器产生很大的压力,为了避免这种情况我们需要做处理,传统的模式中是在数据库中记录手机号.验证码已经发送时间,再次请求的时候呢去数据库查询是否有该手机号记录,并校验是否超过间隔时间,如果超过则重新发送并