Exemple #1
0
 public function actionCodeImport()
 {
     set_time_limit(0);
     $scratchId = Yii::app()->request->getParam('scratchId');
     $type = Yii::app()->request->getParam('type', Globals::CODE_TYPE_LEGAL);
     $file = $_FILES;
     if ($file && $scratchId) {
         $tmpFile = "upload/" . $_FILES["file"]["name"];
         if (file_exists($tmpFile)) {
             @unlink($_FILES["file"]["name"]);
         } else {
             move_uploaded_file($_FILES["file"]["tmp_name"], $tmpFile);
         }
         $handle = @fopen($tmpFile, "r");
         if ($handle) {
             while (!feof($handle)) {
                 $code = fgets($handle, 4096);
                 //入库
                 if (trim($code)) {
                     $tableName = 'scratch_awards';
                     $CodeModel = new ScratchAwardsModel($tableName);
                     $CodeModel->scratchId = $scratchId;
                     $CodeModel->grade = 0;
                     $CodeModel->code = trim($code);
                     $CodeModel->type = $type;
                     $CodeModel->save();
                 }
             }
             fclose($handle);
         }
         @unlink($tmpFile);
         $msg = "导入成功!";
     } else {
         $msg = '提交错误';
     }
     echo $msg;
 }
Exemple #2
0
 public function actionIndex()
 {
     $logTable = 'scratch_log';
     $table = 'scratch_awards';
     $disable = 1;
     $probability = $remainCount = 0;
     $return = $encryption = '';
     $rand = rand(1, 100000);
     $code = Yii::app()->request->getParam('code');
     list($openId, $scratchId, $type) = explode('|', Globals::authcode($code, 'DECODE'));
     $scratch = ScratchModel::model()->findByPk($scratchId);
     //活动是否开始
     if ($scratch->startTime > date('Y-m-d H:i:s')) {
         $disable = false;
     } elseif ($scratch->endTime < date('Y-m-d H:i:s')) {
         $disable = false;
     } elseif ($scratch->status == 0) {
         $disable = false;
     }
     $totalCount = $scratch->times;
     $button = Yii::app()->params['siteUrl'] . '/wechat/' . Yii::app()->params['scratchPath'] . '/' . $scratch->wechatId . '/' . $scratch->button;
     $awards = unserialize($scratch->awards);
     $return['grade'] = -1;
     $return['name'] = '谢谢参与';
     //次数限制
     if ($totalCount == -1) {
         //本活动只能参与一次
         $count = ScratchLogModel::model($logTable)->count('openId=:openId and scratchId=:scratchId', array(':openId' => $openId, ':scratchId' => $scratchId));
         if ($count > 0) {
             $disable = 0;
         }
     }
     if ($totalCount > 0) {
         $start = strtotime(date('Y-m-d')) - 1;
         $end = strtotime(date('Y-m-d', strtotime('1 days'))) - 1;
         $count = ScratchLogModel::model($logTable)->count('openId=:openId and scratchId=:scratchId and datetime>:start and datetime<:end', array(':openId' => $openId, ':scratchId' => $scratchId, ':start' => $start, ':end' => $end));
         if ($count >= $totalCount) {
             $disable = 0;
         } else {
             $remainCount = $totalCount - $count;
         }
     }
     //查看当前用户是否已中奖
     $awardInfo = ScratchAwardsModel::model($table)->find('scratchId=:scratchId and openId=:openId and status<>0', array(':scratchId' => $scratchId, ':openId' => $openId));
     if (!$awardInfo && $disable) {
         foreach ($awards as $k => $v) {
             $probability += $v['probability'] * 1000;
             $award[$k] = array('name' => $v['name'], 'num' => $probability);
         }
         //奖品不足时,发送激活码,
         if ($probability < 100000) {
             $award[] = array('name' => '礼包码', 'num' => 100000);
         }
         //返回给客户端的奖品名称
         foreach ($award as $key => $val) {
             if (isset($award[$key - 1])) {
                 if ($rand > $award[$key - 1]['num'] && $rand <= $val['num']) {
                     //if ($rand > $award[$key - 1]['num']) {
                     $return = $val;
                     $return['grade'] = $key;
                     break;
                 }
             } else {
                 if ($rand > 0 && $rand <= $val['num']) {
                     $return = $val;
                     $return['grade'] = $key;
                     break;
                 }
             }
         }
         if ($return['grade'] > 0) {
             $awardCount = ScratchAwardsModel::model($table)->count('grade=:grade and scratchId=:scratchId and status<>0', array(':grade' => $return['grade'], ':scratchId' => $scratchId));
             //已中奖个数
             if ($awardCount <= 0 || $awardCount < $awards[$return['grade']]['count']) {
                 //未超过系统设置中奖个数
                 $awardModel = new ScratchAwardsModel($table);
                 $awardModel->openId = $openId;
                 $awardModel->scratchId = $scratchId;
                 $awardModel->grade = $return['grade'];
                 $awardModel->code = $return['name'];
                 $awardModel->isentity = isset($awards[$return['grade']]['isentity']) ? $awards[$return['grade']]['isentity'] : 0;
                 $awardModel->status = 0;
                 $awardModel->type = $type;
                 $awardModel->datetime = time();
                 $awardModel->save();
             } else {
                 //奖品达到系统设置个数
                 //查看是否已经赠送了礼包
                 $code = ScratchAwardsModel::model($table)->find('grade=:grade and scratchId=:scratchId and openId=:openId and status<>0', array(':grade' => 0, ':scratchId' => $scratchId, ':openId' => $openId));
                 if (!$code) {
                     //取一条礼包码
                     $code = ScratchAwardsModel::model($table)->find('grade=:grade and scratchId=:scratchId and type=:type and status=:status', array(':grade' => 0, ':scratchId' => $scratchId, ':type' => $type, ':status' => 0));
                     if ($code) {
                         $code->openId = $openId;
                         $code->time = time();
                         $code->save();
                         $return['grade'] = 0;
                         $return['name'] = $code->code;
                         //礼包码
                     }
                 }
             }
         } else {
             //礼包奖品,查询是否已经获得过礼包
             $code = ScratchAwardsModel::model($table)->find('grade=:grade and scratchId=:scratchId and openId=:openId and status<>:status', array(':grade' => 0, ':scratchId' => $scratchId, ':openId' => $openId, ':status' => 0));
             if (!$code) {
                 //取一条礼包码
                 $code = ScratchAwardsModel::model($table)->find('grade=:grade and scratchId=:scratchId and type=:type and status=:status', array(':grade' => 0, ':scratchId' => $scratchId, ':type' => $type, ':status' => 0));
                 if ($code) {
                     $code->openId = $openId;
                     $code->datetime = time();
                     $code->save();
                     $return['grade'] = 0;
                     $return['name'] = $code->code;
                     //礼包码
                 }
             } else {
                 $return['grade'] = -1;
                 $return['name'] = '谢谢参与';
             }
         }
     }
     $encryption = Globals::authcode($openId . '|' . $return['grade'] . '|' . $scratchId, 'ENCODE');
     $this->renderPartial('active', array('scratch' => $scratch, 'prize' => $return, 'encryption' => $encryption, 'button' => $button, 'disable' => $disable, 'remainCount' => $remainCount, 'totalCount' => $totalCount));
 }