| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275 |
- <?php
- /**
- * Created by PhpStorm.
- * User: Administrator
- * Date: 2017/11/1/001
- * Time: 19:31
- */
- namespace backend\controllers;
- use backend\helpers\DateTimeHelper;
- use backend\helpers\PaginationHelper;
- use backend\helpers\ValidatorHelper;
- use backend\models\Member;
- use backend\models\Mt4Users;
- use backend\models\Transfer;
- use common\helpers\MtKit;
- use common\helpers\Utils;
- class TransferController extends BaseController
- {
- /**
- * xtrader首页数据-同名转账
- */
- public function actionTransfer()
- {
- $request = \Yii::$app->request;
- $member_id = $request->get('member_id');
- $member = Member::findOne(['id' => $member_id]);
- $login = $this->getMainLogin($member);
- $user = (new Mt4Users())->findByLogin($login);
- $logins = (new Member())->getLogins($member_id);
- $result = [
- 'member' => $member,
- 'user' => $user,
- 'logins' => $logins,
- ];
- return $this->outJson(1, $result);
- }
- /**
- * 同名转账列表
- */
- public function actionIndex()
- {
- $data = \Yii::$app->getRequest()->get();
- $data['type'] = isset($data['type']) ? trim($data['type']) : '';
- $data['from'] = isset($data['from']) ? trim($data['from']) : '';
- $data['member_id'] = isset($data['member_id']) ? trim($data['member_id']) : '';
- $data['inStartTime'] = isset($data['inStartTime']) ? trim($data['inStartTime']) : '';
- $data['inEndTime'] = isset($data['inEndTime']) ? trim($data['inEndTime']) : '';
- $data['page'] = isset($data['page']) ? max(intval($data['page']), 1) : 1;
- $data['pageSize'] = isset($data['pageSize']) ? intval($data['pageSize']) : 20;
- $data['orderBy'] = isset($data['orderBy']) ? trim($data['orderBy']) : 'id desc';
- $data['search'] = isset($data['search']) ? trim($data['search']) : '';
- $data = ValidatorHelper::validateData($data, [
- ['type', 'integer'],
- ['from', 'string'],
- ['member_id', 'integer'],
- ['inStartTime', 'integer'],
- ['inEndTime', 'integer'],
- ['page', 'integer', 'min' => 1],
- ['pageSize', 'integer', 'min' => 1],
- ['orderBy', 'string'],
- ], $errors);
- if ($data == false) {
- return $this->outJson(0, '', $errors);
- }
-
- $query = Transfer::find()->alias('t')
- ->select(['t.*','u.name', 'u.type as member_type'])
- ->innerJoin('crm_member u', 't.member_id = u.id')
- ->orderBy($data['orderBy']);
- // 按type获取列表
- $query->andFilterWhere(['t.type' => $data['type']]);
-
- if ($data['from'] == 'admin') {
- $query->andFilterWhere(['t.member_id' => $data['member_id']]);
- } else {
- $query->andWhere(['t.member_id' => $data['member_id']]);
- }
- $query->andFilterWhere(['>=', 't.in_time', $data['inStartTime']]);
- $query->andFilterWhere(['<', 't.in_time', $data['inEndTime']]);
- $query->andFilterWhere([
- 'or',
- ['like', 't.memo', $data['search']]
- ]);
- $result = PaginationHelper::queryPage($query, $data['page'], $data['pageSize']);
- if ($result['dataList']) {
- foreach ($result['dataList'] as $k => $v) {
- $result['dataList'][$k]['amount'] = Utils::formatFloatOrInt($v['amount']);
- }
- }
- return $this->outJson(1, $result);
- }
- /**
- * 审核同名转账
- */
- public function actionUpdateType()
- {
- $data = \Yii::$app->getRequest()->post();
- $data['id'] = isset($data['id']) ? (int)$data['id'] : 0;
- $data['type'] = isset($data['type']) ? (int)$data['type'] : '';
- $data['admin_name'] = isset($data['admin_name']) ? trim($data['admin_name']) : '';
- $info = Transfer::findOne(['id' => $data['id']]);
- if (!$info) {
- return $this->outJson(0, [], '该记录不存在');
- }
- if (isset($data['type']) && $info->type == 0) {
- $info->type = $data['type'];
- $data['admin_name'] != '' && $info->admin_name = $data['admin_name'];
- } else {
- return $this->outJson(0, [], '只有‘未审核’状态才可操作');
- }
- $rs = $info->update();
- if (!$rs) {
- return $this->outJson(0, [], '数据操作失败');
- }
- if ($data['type'] == 2) {
- $toLogin = $info->to_login;
- $fromLogin = $info->from_login;
- $amount = $info->amount;
- $wres = MtKit::withdrawal($fromLogin, $amount, "Withdrwal(Z$toLogin)");
- if ($wres) {
- MtKit::deposit($toLogin, $amount, "Deposit(Z$fromLogin)");
- }
- }
- return $this->outJson(1, ['id' => $info['id']], '操作成功');
- }
- /**
- * 获取某条记录的备注
- */
- public function actionMemo()
- {
- $data = \Yii::$app->getRequest()->get();
- $data['id'] = isset($data['id']) ? $data['id'] : 0;
- $transfer = Transfer::findOne(['id' => $data['id']]);
- return $this->outJson(1, $transfer);
- }
- /**
- * 修改某条记录的备注
- */
- public function actionMemoUpdate()
- {
- $data = \Yii::$app->getRequest()->post();
- $data['id'] = isset($data['id']) ? $data['id'] : 0;
- $data['memo'] = isset($data['memo']) ? $data['memo'] : '';
- $info = Transfer::findOne(['id' => $data['id']]);
- if (!$info) {
- return $this->outJson(0, [], '该记录不存在');
- }
- $info->memo = $data['memo'];
- $rs = $info->save();
- if (!$rs) {
- return $this->outJson(0, [], '数据操作失败');
- }
- return $this->outJson(1, ['id' => $info['id']], '操作成功');
- }
- /**
- * 申请同名转账
- */
- public function actionAddTransfer()
- {
- $request = \Yii::$app->request;
- if ($request->isPost) {
- $params = $request->post();
- $params['member_id'] = isset($params['member_id']) ? trim($params['member_id']) : '';
- $params['from_login'] = isset($params['flogin']) ? trim($params['flogin']) : '';
- $params['to_login'] = isset($params['tlogin']) ? trim($params['tlogin']) : '';
- $params['amount'] = isset($params['amount']) ? doubleval($params['amount']) : '';
- $params['type'] = isset($params['type']) ? intval($params['type']) : 0;
- if ($params['from_login'] == null) {
- return $this->outJson(0, [], '请选择账户');
- }
- if ($params['to_login'] == null) {
- return $this->outJson(0, [], '请选择账户');
- }
- if ($params['from_login'] == $params['to_login']) {
- return $this->outJson(0, [], '转出与转入账户相同');
- }
- if (empty($params['amount'])) {
- return $this->outJson(0, [], '请填写金额');
- }
- $isHave = false;
- $member = Member::find()->select('logins')->where(['id' => $params['member_id']])->asArray()->limit(1)->one();
- if ($member['logins']) {
- $mt4Login = explode(',', $member['logins']);
- if (in_array($params['from_login'], $mt4Login)) {
- $isHave = true;
- }
- }
- if (!$isHave) {
- return $this->outJson(0, [], '参数错误');
- }
-
- // 判断是否为同名账户,只有传入type参数的时候才判断
- if ($params['type']) {
- $isSameAccount = Member::isSameAccount($params['from_login'], $params['to_login'], $params['type']);
- if ($isSameAccount['code'] != 1) {
- return $this->outJson(0, [], $isSameAccount['message']);
- }
- }
- $transfer = Transfer::findOne(['member_id' => $params['member_id'], 'type' => 0]);
- if ($transfer) {
- return $this->outJson(0, [], '您还有未处理的申请记录,请等待审核');
- }
- $mt4User = (new Mt4Users())->findByLogin($params['from_login']);
- if (doubleval($mt4User['BALANCE']) < $params['amount']) {
- return $this->outJson(0, [], '余额不足');
- }
- $transfer = new Transfer();
- $transfer->setAttributes($params);
- $transfer->type = 0;
- $transfer->in_time = DateTimeHelper::microtime_float();
- if ($transfer->save()) {
- return $this->outJson(1, $transfer->getAttributes(), '提交成功');
- } else {
- $errors = $transfer->getErrors();
- if (!empty($errors)) {
- foreach ($errors as $key => $error) {
- if ($key == 'amount') {
- return $this->outJson(0, [], '金额必须是整数');
- }
- }
- }
- }
- } else {
- return $this->outJson(0, [], '参数传输格式错误');
- }
- }
- /**
- * 同名转账:转入账户是否属于转出账户的客户判断
- */
- public function actionIsIbUser()
- {
- $fromLogin = \Yii::$app->getRequest()->get('fromLogin');
- $toLogin = \Yii::$app->getRequest()->get('toLogin');
- $type = \Yii::$app->getRequest()->get('type');
- $isSameAccount = Member::isSameAccount($fromLogin, $toLogin, $type);
-
- $result['isSuccess'] = $isSameAccount['code'] == 1 ? true : false;
- $result['msg'] = $isSameAccount['message'];
- return $this->outJson(1, $result);
- }
- }
|