zoukankan      html  css  js  c++  java
  • php生成 优惠券 激活码

    /**
         * 生成vip激活码
         * @param int $nums             生成多少个优惠码
         * @param array $exist_array     排除指定数组中的优惠码
         * @param int $code_length         生成优惠码的长度
         * @param int $prefix              生成指定前缀
         * @return array                 返回优惠码数组
         */
        public function generateCode( $nums,$exist_array='',$code_length = 6,$prefix = '' ) {
        
            $characters = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnpqrstuvwxyz";
            $promotion_codes = array();//这个数组用来接收生成的优惠码
        
            for($j = 0 ; $j < $nums; $j++) {
                    
                $code = '';
                    
                for ($i = 0; $i < $code_length; $i++) {
        
                    $code .= $characters[mt_rand(0, strlen($characters)-1)];
        
                }
                    
                //如果生成的4位随机数不再我们定义的$promotion_codes数组里面
                if( !in_array($code,$promotion_codes) ) {
        
                    if( is_array($exist_array) ) {
                            
                        if( !in_array($code,$exist_array) ) {//排除已经使用的优惠码
        
                            $promotion_codes[$j] = $prefix.$code; //将生成的新优惠码赋值给promotion_codes数组
        
                        } else {
        
                            $j--;
        
                        }
                            
                    } else {
                            
                        $promotion_codes[$j] = $prefix.$code;//将优惠码赋值给数组
                            
                    }
        
                } else {
                    $j--;
                }
            }
        
            return $promotion_codes;
        }

     上述方法可以直接拷贝使用

     下面列出个人优惠券激活码的数据表设计,各位看官感觉是否有用

    SET FOREIGN_KEY_CHECKS=0;

    -- ----------------------------
    -- Table structure for `vip_card`
    -- ----------------------------
    DROP TABLE IF EXISTS `vip_card`;
    CREATE TABLE `vip_card` (
      `id` int(11) NOT NULL,
      `code` char(10) DEFAULT '' COMMENT '激活码',
      `bid` int(11) DEFAULT '0' COMMENT '购买人',
      `uid` int(11) DEFAULT '0' COMMENT '使用人',
      `dlength` int(11) DEFAULT '0' COMMENT '时长',
      `act_date` date DEFAULT '0000-00-00' COMMENT '激活时间',
      `end_date` date DEFAULT '0000-00-00' COMMENT '结束时间',
      `exp_date` date DEFAULT '0000-00-00' COMMENT '过期时间[如果送激活码的话,使用这个字段,过期多少天不可激活]',
      `localcity` int(11) DEFAULT '0' COMMENT '城市code',
      `create_time` datetime DEFAULT '0000-00-00 00:00:00' COMMENT '创建时间',
      `is_use` int(5) DEFAULT NULL COMMENT '是否已经使用  0未使用  1已使用',
      PRIMARY KEY (`id`),
      KEY `index_code` (`code`) USING BTREE
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='激活码';

    -- ----------------------------
    -- Records of vip_card
    -- ----------------------------

  • 相关阅读:
    HashMap源码学习
    java线程池
    MySQL的MVCC
    volatile关键字学习
    ArrayList, Vector和CopyOnWriteArrayList对比学习
    曹工说Redis源码(3)-- redis server 启动过程完整解析(中)
    曹工说Redis源码(2)-- redis server 启动过程解析及简单c语言基础知识补充
    曹工杂谈:我们的应用,启动就要去其他服务拉数据,那其他服务挂了,我们就起不来了?
    程序员正确的提问方式(个人建议)
    曹工说Redis源码(1)-- redis debug环境搭建,使用clion,达到和调试java一样的效果
  • 原文地址:https://www.cnblogs.com/itafter/p/4330500.html
Copyright © 2011-2022 走看看