예제 #1
0
 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;
 }
예제 #2
0
 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]);
 }
예제 #3
0
 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']);
     }
 }
예제 #4
0
 /**
  * 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;
 }
예제 #5
0
 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();
     }
 }
예제 #6
0
 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]);
 }