php优惠券核销

优惠券核销步骤:

  1. 建立优惠券类型表,里面字段有: 优惠券类型Id、 优惠券名称、发放面额、发放数量、核销码集合、满多少元使用 0代表无限制、使用范围0部分产品使用 1全场产品使用、 有效日期开始时间、有效日期结束时间、 创建时间、 已领取数量、 是否已经领取完、 优惠券状态(0、正常 1、已发完 2、已关闭)
  2. 建立一个优惠券表,里面字段有:优惠券ID、领取人ID、优惠券使用ID、面额、优惠券状态(包含未领取、已领取未使用、已使用、已过期状态)、领取时间、使用时间、开始时间、结束时间、核销码

php代码部分

$allcode_str=Db::name('ns_coupon_type')->field('code')->select();  //查询所有核销码


			$allcode_arr=[];//所有核销码数组

			foreach ($allcode_str as $key => $value) {
				    $valuearr= explode(",",$value['code']);
				    foreach ($valuearr as $k => $v) {
				    	array_push($allcode_arr,$v);
				    }

			}
	       
			

			$code=Db::name('ns_coupon_type')->where('coupon_type_id',$param["coupon_type_id"])->field('code')->find();//查询这个类型优惠券的核销码集合(这个是后续补发优惠券,如果是添加就不用了,这是修改的,添加只判断所有核销码集合是否重复就行)

			$codearr=explode(",", $code['code']);//转为数组

			$update_codearr=[];
              
              //随机数参与者
			$chars_array = array(
			    "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
			    "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k",
			    "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v",
			    "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G",
			    "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R",
			    "S", "T", "U", "V", "W", "X", "Y", "Z",
			  );
			$sum1=1;
			for($sum1;$sum1<=$param["repair_code_num"];$sum1++){//这是核销码的数量也是优惠券数量


			  $charsLen = count($chars_array) - 1;
			  //生成4位随机数
			  $outputstr = "";
			  for ($i=0; $i<4; $i++)
			  {
			    $outputstr .= $chars_array[mt_rand(0, $charsLen)];
			  }
			 
			  if(in_array($outputstr,$codearr))//判断生成4位随机数是否存在这个优惠券类型的核销码集合
			  {
			     $sum1=$sum1-1;//存在,重新生成一位随机数
			  }
			  else{
				  	if(in_array($outputstr,$allcode_arr))//判断生成4位随机数是否存在所有优惠券类型的核销码集合
				  {
				  	$sum1=$sum1-1;//存在,重新生成一位随机数
				  
				  }

				  else{
				  	array_push($codearr,$outputstr);//插入优惠券表的核销码

				  	array_push($update_codearr,$outputstr);//这个是后续补发的优惠券核销码,插入之前生成的核销码
				  }
			  }
			  
			           
			  }

			   $baomm=implode(",", $codearr);
			 $data['code']=$baomm;//让所有核销码已字符串存在,插入优惠券类型表

             //添加优惠券表
			if ($param["count"] > 0) {//优惠券数量
			
							for ($i = 0; $i < $param["count"]; $i++) {
							"code" => $codearr[$i],//这是新添加到优惠券表的核销码,给每个优惠券配一个核销码(用在添加)
							"code" => $update_codearr[$i],//这是后续补发插入的核销码(用在修改)
							}
			}
			

注意以上只是生成不重复核销码集合部分代码,在添加优惠券类型的时候,也要同时添加优惠券信息,包含一个优惠券配一个核销码等等信息,优惠券类型包含所有核销码集合以文本形式存在

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值