php优惠券生成-去重
记录一次优惠券生成-去重
方法一
/**
* 生成批量礼品消费券
*/
public function giftCardAddOp() {
//接收get值
$num = $_GET['gift_num'];
$branch_prefix = $_GET['city_name'];
if ($_GET) {
$this->add_gift_card($branch_prefix, $num);
}
showMessage('礼品码生成成功!','index.php?act=order&op=giftCardCode');
}
/**
* 处理插入
*$branch_prefix
*$num
*$sum
*
*/
private function add_gift_card($branch_prefix, $num ,$sum='0'){
// 计数
$n = 0;
$promotion_codes = array();//这个数组用来接收生成的优惠码
for ($i=0; $i < (($sum >0) ? $sum : $num); $i++) {
$charid = strtoupper(md5(uniqid(mt_rand(), true)));
$uuid = substr($charid, 8, 8);
$company = '爱之依';
$promotion_codes[$i] = $uuid;
$data.= "('".$branch_prefix."','".$uuid."','".time()."','".$company."'),";
//插入一次 +1
$n++;
//防止死循环
$num_con = $num+1000;
if ($n == $num_con) {
break;
}
}
//去除右侧逗号
$data = rtrim($data,',');
//批量插入
$model_gift_card = Model('goods_gift_card');
$gift_code_info = $model_gift_card->addGiftAll($data);
//如果插入成功true
if ($gift_code_info) {
//查询插入数量
$condition = array('branch_prefix' => $branch_prefix);
$gift_count = $model_gift_card->getGiftCodeCount($condition);
//插入失败的再次循环插入
if ($gift_count < $num) {
$this->add_gift_card($branch_prefix, $num, $num - $gift_count);
}
}
}
方法2:
$array = [];
$num = 10;
$lenght = 8;
$start = 99999999;
$step = 60000;
$arrDate = explode('-', date('Y-m-d'));
$m = base_convert($arrDate[1],10,32); //进制转换
$d = base_convert($arrDate[2],10,32);
for ($i=$start;$i<=($start+$step*$num);$i+=$step){
$array[] = $uuid = strtoupper($m.$d.str_pad(base_convert($i,10,32),$lenght-2,'0',STR_PAD_LEFT)); //取进制数,不足补0
}
var_dump($array);die;
$update['gift_card_code'] = $uuid;
$update['add_time'] = time();
$update['use_time'] = 0;
$update['buyer_id'] = 0;
$update['is_delete'] = 0;
$update['order_id'] = 0;
$model_gift_card = M('goods_gift_card');
$gift_code_info = $model_gift_card->add($update);
if(strlen(array_pop($array))>9) return false;
return $array;
php优惠券生成-去重的更多相关文章
- 用几条shell命令快速去重10G数据
试想一下,如果有10G数据,或者更多:怎么才能够快速地去重呢?你会说将数据导入到数据库(mysql等)进行去重,或者用java写个程序进行去重,或者用Hadoop进行处理.如果是大量的数据要写入数据库 ...
- Java生鲜电商平台-小程序或者APP优惠券的设计与源码实战
Java生鲜电商平台-小程序或者APP优惠券的设计与源码实战 说明:Java生鲜电商平台-小程序或者APP优惠券的设计与源码实战,优惠券是一种常见的促销方式,在规定的周期内购买对应商品类型和额度的商品 ...
- Django之ORM操作
Django之ORM操作 前言 Django框架功能齐全自带数据库操作功能,本文主要介绍Django的ORM框架 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计 ...
- django -orm操作总结
前言 Django框架功能齐全自带数据库操作功能,本文主要介绍Django的ORM框架 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MyS ...
- ecstore2.0数据库词典
数据库词典= 数据库tables列表 =|| Name | Comment ||| sdb_aftersales_return_product | 售后申请 || sdb_b2c_brand | 商品 ...
- iOS 让CoreData更简单些
原文:http://www.cocoachina.com/ios/20170421/19096.html 前言 本文并不是CoreData从入门到精通之类的教程, 并不会涉及到过多的原理概念描述, 而 ...
- Django——ContentType及ContentType-signals的使用
一.ContentType 在django中,有一个记录了项目中所有model元数据的表,就是ContentType,表中一条记录对应着一个存在的model,所以可以通过一个ContentType表的 ...
- Django——在线教育项目总结
项目简介 在线教育平台 软件依赖: WEB框架:Django(1.11.7).Django REST framework 前端框架:Vue(2.5.16) 数据库: MySql.redis 支付平台: ...
- python 全栈开发,Day104(DRF用户认证,结算中心,django-redis)
考试第二部分:MySQL数据库 6. MySQL中char和varchar的区别(1分) char是定长,varchar是变长. char的查询速度比varchar要快. 7. MySQL中va ...
随机推荐
- java#类的实例化顺序
关于类的实例化,不用弄的那么细致,这里只说单一类,没有其他父类(排除Obejct)的情况.要实例化一个类,需要加载class文件到jvm并且验证通过了是安全的字节码文件. 初始化大致上是按照如下步骤: ...
- Xcode8.0+和最新的Xcode9.0beta安装Alcatraz插件
1.安装Alcatraz 1.1终端中输入 rm -rf ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins/Alcatraz ...
- NO12 useradd-passwd-uname-hostname命令-上传rz下载sz-批量部署- Linux用户相关操作
24 useradd #添加用户 语法:useradd 用户名 例子:ueradd oldboy .25 passwd #为用户设置或修改 ...
- 小程序填坑:2018最新getPhoneNumber功能详解
本篇博客主要详解getPhoneNumber组件的功能,填补网上那些到处是漏洞的博客.加上小程序官方本身也是满满的漏洞. 惯例先上总纲: ##主要内容 1.前端页面组件书写 2.JS内组件用法 3.接 ...
- 063-PHP函数按地址传参,交换数值函数
<?php function swap(&$x,&$y){ //定义交换数值函数 $temp=$x; $x=$y; $y=$temp; } $m=5; $n=15; echo & ...
- 第二阶段scrum-10
1.整个团队的任务量: 2.任务看板: 会议照片: 产品状态: 等待发布
- Power BI Premium
Power BI Premium的设计是为了满足拥有大量数据的大公司的需求.微软已经重新构建了Power BI的架构,以允许大量的“只读”用户.Premium用户还可以利用很多新功能. Power B ...
- opencv python训练人脸识别
总计分为三个步骤 一.捕获人脸照片 二.对捕获的照片进行训练 三.加载训练的数据,识别 使用python3.6.8,opencv,numpy,pil 第一步:通过笔记本前置摄像头捕获脸部图片 将捕获的 ...
- eclipse 下配置安卓环境
建议你看博客 http://blog.csdn.net/sinat_21184471/article/details/76131141 其中一些细节问题,我会根据我犯过的错误说明一下的!!!! 它 ...
- oracle将字符串根据特定字符串拆分为多个子字符串
将 字符串 '20180321-4768-4735261' 按‘-’ 拆分: 语法: INSTR()函数 1.用处: 在一个字符串中查找指定的字符,返回被查找到的指定的字符的位置. 2.语法格式: ...