public static function prepareYearlyFeeRecord($member_id, $total) { $data = array('member_id' => $member_id, 'type' => 4, 'fee' => 0, 'amount' => System::loadConfig('annual_fee'), 'total' => $total, 'account_type' => 1, 'note' => '年费: ' . date('Y-m-d H:i:s')); $model = new OutRecord(); $model->load($data, ''); return $model; }
public function actionCharge() { $model = new Cash(); $data = Yii::$app->request->post(); if ($model->load(Yii::$app->request->post()) && isset($data['Cash']) && isset($data['Cash']['password2'])) { $validate = true; if (!Yii::$app->user->identity->validatePassword2($data['Cash']['password2'])) { $validate = false; $model->addError('password2', '第二密码错误,请确认后重新输入'); } if ($model->amount > Yii::$app->user->identity->finance_fund) { $validate = false; $model->addError('amount', '账户余额不足, 理财账户:' . Yii::$app->user->identity->finance_fund); } if ($validate) { $member = Yii::$app->user->identity; $member->finance_fund -= $model->amount; $model->fee = round(System::loadConfig('cash_factorage'), 2); $model->real_amount = $model->amount - $model->fee; $member->save(); $model->save(); $outRecord = new OutRecord(); $data = array('member_id' => Yii::$app->user->identity->id, 'account_type' => 1, 'amount' => $model->amount, 'fee' => $model->fee, 'total' => $member->finance_fund, 'type' => 1, 'note' => '会员提现(含银行转账手续费)'); $outRecord->load($data, ''); $outRecord->save(); Yii::$app->session->setFlash('success', '提现申请提交成功'); $this->redirect(['cashlist']); } else { Yii::$app->session->setFlash('danger', '提现申请失败,清输入正确的信息'); } } return $this->render('charge', ['model' => $model]); }
public function actionApprove($id) { $model = $this->findModel($id); $data = array('Member' => array('approved_at' => date('Y-m-d h:i:s', time()), 'role_id' => 3)); $model->load($data); $model->finance_fund -= System::loadConfig('annual_fee'); $outRecord = OutRecord::prepareYearlyFeeRecord($model->id, $model->finance_fund); $connection = Yii::$app->db; try { $transaction = $connection->beginTransaction(); if ($model->save() && $outRecord->save()) { $transaction->commit(); Yii::$app->session->setFlash('success', '会员(' . $model->username . ')审核成功'); return $this->redirect(['approvedindex']); } else { $transaction->rollBack(); Yii::$app->session->setFlash('danger', '会员(' . $model->username . ')审核失败, 请稍后再试或联系管理员'); return $this->redirect(['unapprovedindex']); } } catch (Exception $e) { $transaction->rollBack(); Yii::$app->session->setFlash('danger', '会员(' . $model->username . ')审核失败, 请稍后再试或联系管理员'); return $this->redirect(['unapprovedindex']); } }
/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = OutRecord::find()->joinWith(['member' => function ($query) { $query->from(['member' => 'member']); }])->orderBy(['created_at' => SORT_DESC]); $dataProvider = new ActiveDataProvider(['query' => $query]); $this->load($params); if (!Yii::$app->user->identity->isAdmin()) { $this->member_id = Yii::$app->user->identity->id; } if (!$this->validate()) { // uncomment the following line if you do not want to return any records when validation fails // $query->where('0=1'); return $dataProvider; } $query->andFilterWhere(['id' => $this->id, 'member_id' => $this->member_id, 'account_type' => $this->account_type, 'type' => $this->type, 'amount' => $this->amount, 'fee' => $this->fee, 'total' => $this->total]); if ($this->created_at) { $date = explode(' - ', $this->created_at); if (count($date) == 2) { $query->andFilterWhere(['>=', $this::tableName() . '.created_at', $date[0] . ' 00:00:00']); $query->andFilterWhere(['<=', $this::tableName() . '.created_at', $date[1] . ' 23:59:59']); } } $query->andFilterWhere(['like', 'note', $this->note])->andFilterWhere(['like', 'member.username', $this->membername])->orderBy(['created_at' => SORT_DESC]); return $dataProvider; }
public function actionIndex() { $members = Member::findAll(array()); foreach ($members as $member) { $member->finance_fund -= System::loadConfig('annual_fee'); $outRecord = OutRecord::prepareYearlyFeeRecord($member->id, $member->finance_fund); $member->save(); $outRecord->save(); } }
public function actionBuy() { $model = new StackTransaction(); $stack = Stack::findOne(Yii::$app->request->get('id')); $memberStack = Yii::$app->user->identity->getMemberStack($stack->id); if (!$memberStack) { $memberStack = new MemberStack(); } $open = false; if ($stack->status) { Yii::$app->session->setFlash('danger', '股票已锁定,请选择其它股票进行购买.'); } else { if (Date::isWorkingDay()) { if (Date::isWorkingTime()) { $open = true; if ($model->load(Yii::$app->request->post())) { if ($model->account_type) { $data = Yii::$app->request->post(); $model->price = $stack->price; $model->member_id = Yii::$app->user->identity->id; $model->stack_id = $stack->id; $model->type = 0; $model->total_price = $stack->price * $model->volume; $validate = true; if (!Yii::$app->user->identity->validatePassword2($data['StackTransaction']['password2'])) { $validate = false; $model->addError('password2', '第二密码不正确, 请确认后重新输入.'); } if ($model->account_type == 1 && Yii::$app->user->identity->finance_fund < $model->total_price || $model->account_type == 2 && Yii::$app->user->identity->stack_fund < $model->total_price) { $validate = false; $model->addError('volume', '账户余额不足. 理财基金:.' . Yii::$app->user->identity->finance_fund . '. 购股账户:' . Yii::$app->user->identity->stack_fund); } if ($validate) { $memberStack = MemberStack::getMemberStack($model); $member = Member::findOne($model->member_id); if ($model->account_type == 1) { $member->finance_fund -= $model->total_price; $outRecord = OutRecord::prepareModelForBuyStack($model->member_id, $model->total_price, $member->finance_fund, 1); } else { $member->stack_fund -= $model->total_price; $outRecord = OutRecord::prepareModelForBuyStack($model->member_id, $model->total_price, $member->stack_fund, 2); } $outRecord->note = '股买[' . $stack->code . ']' . $model->volume . '股'; $connection = Yii::$app->db; try { $transaction = $connection->beginTransaction(); $success = false; if ($model->save() && $memberStack->save() && $member->save() && $outRecord->save()) { $success = true; } if ($success) { Yii::$app->session->setFlash('success', '购买成功'); $transaction->commit(); return $this->redirect(['transactions']); } else { Yii::error('Stack Buy Failed'); Yii::$app->session->setFlash('danger', '购买失败,请稍后再试.'); Yii::error(json_encode($model->getErrors())); Yii::error(json_encode($memberStack->getErrors())); Yii::error(json_encode($member->getErrors())); Yii::error(json_encode($outRecord->getErrors())); $transaction->rollback(); } } catch (Exception $e) { } } } else { $model->total_price = $stack->price * $model->volume; } } } else { Yii::$app->session->setFlash('danger', '非交易时间. 早上10:00 ~ 12:30. 下午2:00 ~ 4:00'); } } else { Yii::$app->session->setFlash('danger', '对不起,非交易日不能进行交易!'); } } return $this->render('buy', ['model' => $model, 'stack' => $stack, 'memberStack' => $memberStack, 'open' => $open]); }