/** 二维码订单页面 */
 public function actionQrOrder()
 {
     $session = Yii::$app->session;
     $user = $session->get('user');
     $schemes = Scheme::findPayScheme();
     //获取充值方案
     $recommendUser = Users::findRecommendUser($user['recommendUserID']);
     if ($recommendUser && $recommendUser['role'] != Users::ROLE_BIG) {
         //存在推荐用户且不为大客户则需要有返点消息提示,否则没有提示
         $rebateScheme = Scheme::findRebateScheme($recommendUser['role']);
         //获取返点方案
     } else {
         $rebateScheme = "";
     }
     if ($rebateScheme) {
         $msg = '充值金额大于' . $rebateScheme['payMoney'] . '元时可以获得' . $rebateScheme['rebateSelf'] * 100 . '%返点哦~。';
         CommonFunctions::createAlertMessage($msg, "info");
     }
     $orders = [];
     $wxPayFunctions = new WxPayFunctions();
     foreach ($schemes as $scheme) {
         array_push($orders, $wxPayFunctions->generateQrOrder($scheme));
     }
     return $this->render('qr-order', ['schemes' => $schemes, 'orders' => $orders]);
 }
 public function beforeAction($action)
 {
     $session = Yii::$app->session;
     $user = $session->get('user');
     if (!TestLibrary::checkIsExist($user)) {
         $url = Url::to(['site/test-library-not-found']);
         header("Location:{$url}");
     }
     $practiceRecordFlag = $session->getFlash('practiceRecordFlag');
     if ($practiceRecordFlag) {
         //支付方案如果已经生成直接显示过去
         return parent::beforeAction($action);
     }
     $practiceRecord = PracticeRecord::findByUser($user['userId']);
     if (!$practiceRecord) {
         //如果没有练习权
         //获取在线练习支付方案
         /** @var $scheme \common\models\Scheme */
         $schemes = Scheme::findPracticeScheme();
         $session->setFlash('practice-schemes', $schemes);
         //存入session,在练习首页使用
         $session->setFlash('practiceRecordFlag', true);
         //支付方案生成的标志
         $url = Url::to(['practice/index', true]);
         header("Location:{$url}");
         return false;
     }
     return parent::beforeAction($action);
 }
 public function actionIndex()
 {
     $schemes = Scheme::findPayScheme();
     //获取充值方案
     $orders = [];
     $wxPayFunctions = new WxPayFunctions();
     foreach ($schemes as $scheme) {
         array_push($orders, $wxPayFunctions->generateQrOrder($scheme));
     }
     return $this->render('index', ['schemes' => $schemes, 'orders' => $orders]);
 }
 public static function initWithId($id)
 {
     $scheme = Scheme::findOne($id);
     $form = new AddPracticeForm();
     $form->schemeId = $id;
     $form->name = $scheme->name;
     $form->payBitcoin = $scheme->payBitcoin;
     $form->hour = $scheme->hour;
     $form->startDate = $scheme->startDate;
     $form->endDate = $scheme->endDate;
     return $form;
 }
 public static function initWithId($id)
 {
     $scheme = Scheme::findOne($id);
     $form = new AddRechargeForm();
     $form->schemeId = $id;
     $form->name = $scheme->name;
     $form->payMoney = $scheme->payMoney;
     $form->getBitcoin = $scheme->getBitcoin;
     $form->startDate = $scheme->startDate;
     $form->endDate = $scheme->endDate;
     return $form;
 }
 public static function initWithId($id)
 {
     $scheme = Scheme::findOne($id);
     $form = new AddRebateForm();
     $form->schemeId = $id;
     $form->name = $scheme->name;
     $form->usageModeId = $scheme->usageModeId;
     $form->payMoney = $scheme->payMoney;
     $form->rebate = $scheme->rebate;
     $form->rebateSelf = $scheme->rebateSelf;
     $form->startDate = $scheme->startDate;
     $form->endDate = $scheme->endDate;
     return $form;
 }
 public function record()
 {
     $user = Yii::$app->session->get('user');
     $model = Withdraw::find()->where(['userId' => $user['userId'], 'state' => Withdraw::STATE_APPLYING])->one();
     if ($model) {
         return false;
     }
     $withdraw = new Withdraw();
     $withdraw->userId = $user['userId'];
     $withdraw->money = $this->money;
     $withdraw->bitcoin = ceil(Scheme::calculateWithdrawBitcoin($user, $this->money));
     //扣除云豆数为向上取整,有小数就整数部分加1
     $withdraw->invoiceMoney = $this->invoiceMoney;
     $withdraw->invoiceNo = $this->invoiceNo;
     $withdraw->createDate = DateFunctions::getCurrentDate();
     $withdraw->state = Withdraw::STATE_APPLYING;
     if (!$withdraw->save()) {
         throw new Exception("Withdraw save error");
     }
     return true;
 }
Exemple #8
0
<?php

/* @var $this yii\web\View */
/* @var $applyMoneyForm \backend\modules\associate\models\forms\ApplyMoneyForm */
/* @var $pages */
use yii\helpers\Html;
use yii\widgets\ActiveForm;
use common\models\Scheme;
use common\models\Users;
$this->title = '申请提现';
$this->params['breadcrumbs'] = [$this->title];
$user = Yii::$app->session->get('user');
$schemes = Scheme::findWithdrawScheme($user['role']);
if ($user['role'] == Users::ROLE_AA) {
    $scheme = $schemes[0];
    $tooltipTitle = "如何计算:<br>提现比例(云豆:元):" . $scheme['payBitcoin'] . ":" . intval($scheme['getMoney']) . "<br>我们将根据您的云豆余额计算您最大可提现的金额,最终扣除的云豆数如果有小数,将采取向上取整的方式扣除。";
} elseif ($user['role'] == Users::ROLE_AAA) {
    $scheme_low = $schemes[0];
    $scheme_high = $schemes[1];
    $tooltipTitle = "如何计算:<br>提现比例(云豆:元):<br>累计云豆" . intval($scheme_high['totalBitcoin']) / 10000 . "万以内:" . $scheme_low['payBitcoin'] . ":" . intval($scheme_low['getMoney']) . "<br>累计云豆" . intval($scheme_high['totalBitcoin']) / 10000 . "万以上:" . $scheme_high['payBitcoin'] . ":" . intval($scheme_high['getMoney']) . "<br>我们将根据您的云豆余额计算您最大可提现的金额,最终扣除的云豆数如果有小数,将采取向上取整的方式扣除。";
} else {
    $tooltipTitle = "";
}
?>
<div class="widget flat">
    <div class="widget-body">
        <?php 
echo \common\widgets\AlertWidget::widget();
?>
        <h4>申请提现</h4>
        <div class="form-title"></div>
Exemple #9
0
 /**
  * 针对大客户充值,大客户充值自己没有返点
  * 记录用户的充值,包含返点、用户余额的改变和云豆收入支出记录的记录
  * @param $user
  * @param $money
  * @param $bitcoin
  * @param $from
  * @param null $operateUserId
  * @param null $agreement
  * @throws Exception
  */
 public static function recordOneForBig($user, $money, $bitcoin, $from, $operateUserId = null, $agreement = null)
 {
     $moneyModel = new Money();
     $moneyModel->userId = $user['userId'];
     $moneyModel->money = $money;
     $moneyModel->type = Money::TYPE_PAY;
     $moneyModel->bitcoin = $bitcoin;
     $moneyModel->createDate = DateFunctions::getCurrentDate();
     $moneyModel->from = $from;
     $moneyModel->operateUserId = $operateUserId;
     $moneyModel->agreement = $agreement;
     if (!$moneyModel->save()) {
         throw new Exception("money save error");
     }
     //云豆收入支出记录+用户余额改变
     IncomeConsume::saveRecord($user['userId'], $bitcoin, UsageMode::USAGE_PAY, IncomeConsume::TYPE_INCOME, $operateUserId);
     $recommendUser = Users::findRecommendUser($user['recommendUserID']);
     if ($recommendUser) {
         //存在推荐用户
         $rebateScheme = Scheme::findRebateScheme(Users::ROLE_BIG);
         if ($rebateScheme && $money >= $rebateScheme['payMoney']) {
             //存在返点方案,并且达到当前返点的起始要求
             $proportion = Yii::$app->params['proportion'];
             $addBitcoin = $money * $proportion * $rebateScheme['rebate'];
             //返点云豆,返给推荐人
             IncomeConsume::saveRecord($recommendUser['userId'], $addBitcoin, UsageMode::USAGE_REBATE_BIG, IncomeConsume::TYPE_INCOME, $user['userId']);
         }
     }
 }
 /** 查询 */
 public function actionSearch()
 {
     $request = Yii::$app->request;
     if ($request->isPost) {
         $type = $request->post('type');
         $content = trim($request->post('content'));
     } else {
         $type = $request->get('type');
         $content = trim($request->get('content'));
     }
     switch ($type) {
         case 'usageMode':
             $query = Scheme::find()->where(['usageModeId' => $content]);
             break;
         default:
             $query = Scheme::find();
             break;
     }
     $schemes = $query->orderBy(['startDate' => SORT_DESC])->all();
     return $this->render('index', ['schemes' => $schemes]);
 }
 /** 在线练习支付 */
 public function actionPay()
 {
     $request = Yii::$app->request;
     if ($request->isAjax) {
         $session = Yii::$app->session;
         $user = $session->get('user');
         //先查询该用户是否有练习记录,防止重复付款
         $practiceRecord = PracticeRecord::findByUser($user['userId']);
         if ($practiceRecord) {
             return 'success您已经可以在线练习,不需要重新付款,如果重复出现付款页面请刷新该页面。';
         }
         $schemeId = $request->post('schemeId');
         /** @var $scheme \common\models\Scheme */
         $scheme = Scheme::findOne($schemeId);
         if (!$scheme) {
             return '该方案已停用';
         }
         $leftBitcoin = Users::findBitcoin($user['userId']);
         if ($leftBitcoin < $scheme['payBitcoin']) {
             return '您的云豆余额不足';
         }
         IncomeConsume::saveRecord($user['userId'], $scheme['payBitcoin'], Scheme::USAGE_PRACTICE, IncomeConsume::TYPE_CONSUME);
         PracticeRecord::saveRecord($user['userId'], $scheme);
         return 'success支付成功';
     }
     throw new Exception("非法支付");
 }
 /** 查询 */
 public function actionSearch()
 {
     $request = Yii::$app->request;
     if ($request->isPost) {
         $type = $request->post('type');
         $content = trim($request->post('content'));
     } else {
         $type = $request->get('type');
         $content = trim($request->get('content'));
     }
     switch ($type) {
         case 'state':
             $query = Scheme::find()->where(['like', $type, $content]);
             break;
         default:
             $query = Scheme::find();
             break;
     }
     $schemes = $query->andWhere(['usageModeId' => Scheme::USAGE_PRACTICE])->all();
     return $this->render('index', ['schemes' => $schemes]);
 }
Exemple #13
0
 /**
  * 计算用户提现的钱应该扣除的云豆数
  * @param $user
  * @param $money
  * @return float|mixed
  * @throws Exception
  */
 public static function calculateWithdrawBitcoin($user, $money)
 {
     $role = $user['role'];
     $leftBitcoin = Users::findBitcoin($user['userId']);
     //获取用户剩余云豆
     $schemes = Scheme::findWithdrawScheme($role);
     if ($role == Users::ROLE_AA) {
         $scheme = $schemes[0];
         return $money / $scheme['getMoney'] * $scheme['payBitcoin'];
     } elseif ($role == Users::ROLE_AAA) {
         $totalBitcoin = IncomeConsume::findTotalIncome($user['userId']);
         //获取该用户累计获得多少云豆
         $withdrawBitcoin = $totalBitcoin - $leftBitcoin;
         //已经提现掉的云豆数
         $scheme_low = $schemes[0];
         $scheme_high = $schemes[1];
         if ($withdrawBitcoin >= $scheme_high['totalBitcoin']) {
             //已经提现的云豆数大于高比例需要的云豆数,直接按照高比例算
             return $money / $scheme_high['getMoney'] * $scheme_high['payBitcoin'];
         } else {
             //按照第比例算或分段算
             if ($totalBitcoin >= $scheme_high['totalBitcoin']) {
                 //累计云豆数量达到高比例提现,分段算
                 $lowBitcoin = $scheme_high['totalBitcoin'] - $withdrawBitcoin;
                 //按照低比例算的云豆
                 $lowMoney = $lowBitcoin / $scheme_low['payBitcoin'] * $scheme_low['getMoney'];
                 //低比例最大可提现的钱
                 if ($money <= $lowMoney) {
                     //用户体现的钱未达到低比例最大提现的钱,按低比例计算云豆
                     return $money / $scheme_low['getMoney'] * $scheme_low['payBitcoin'];
                 } else {
                     //用户体现的钱超过低比例最大提现的钱,未超过部分为所有低比例云豆数,超过部分按高比例计算云豆
                     return $lowBitcoin + ($money - $lowMoney) / $scheme_high['getMoney'] * $scheme_high['payBitcoin'];
                 }
             } else {
                 //按低比例算
                 return $money / $scheme_low['getMoney'] * $scheme_low['payBitcoin'];
             }
         }
     } else {
         throw new Exception("role 未定义");
     }
 }
 /** 提现设置首页 */
 public function actionIndex()
 {
     $schemes = Scheme::findAllWithdrawScheme();
     return $this->render('index', ['schemes' => $schemes]);
 }