/** 二维码订单页面 */ 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; }
<?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>
/** * 针对大客户充值,大客户充值自己没有返点 * 记录用户的充值,包含返点、用户余额的改变和云豆收入支出记录的记录 * @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]); }
/** * 计算用户提现的钱应该扣除的云豆数 * @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]); }