*/ namespace backend\controllers; use common\models\psources\CoinExtract; use common\models\psources\CoinPublish; use common\models\psources\CoinReleaseCheck; use Yii; class CoinReleaseCheckController extends BaseController { const STEP_CHECK_FIRST = 1; //初审 const STEP_CHECK_SECOND = 2; //复核 const STEP_CANCEL = 3; //撤提 public $enableCsrfValidation = false; public function actionIndex() { $admins = $this->getAccessAdmins(); //获取所有币种 $coins = CoinPublish::find()->select('coin_name_en')->asArray()->all(); $coins = array_unique(array_column($coins, 'coin_name_en')); return $this->render('index', [ 'coins' => $coins, 'check_firsts' => $admins, 'check_seconds' => $admins, ]); } public function actionCheckList() { Yii::$app->response->format = 'json'; $get = Yii::$app->request->get(); $model = new CoinReleaseCheck(); $model->scenario = CoinReleaseCheck::SCENARIOS_CHECK; if ($model->load($get) && $model->validate()) { $page = $get['page'] ?? 1; $limit = $page['limit'] ?? 10; $datas = CoinReleaseCheck::find() ->andFilterWhere(['status' => 0, 'coin' => $model->coin, 'mobile' => $model->mobile]); if ($model->start_time) { $datas = $datas->andFilterWhere(['>=', 'create_time', $model->start_time]); } if ($model->end_time) { $datas = $datas->andFilterWhere(['<=', 'create_time', $model->end_time]); } $count = $datas->count(); $datas = $datas->limit($limit) ->offset(($page - 1) * $limit) ->asArray() ->all(); //获取操作次数 //提出地址 $addresses = array_values(array_unique(array_column($datas, 'to_address'))); $address_datas = CoinExtract::getAllByAddress($addresses); foreach ($datas as $key => &$value) { $value['today'] = $address_datas[$value['to_address']]['today']; $value['total'] = $address_datas[$value['to_address']]['total']; } return ['code' => 0, 'count' => $count, 'data' => $datas]; } else { return ['code' => -1, 'msg' => current($model->firstErrors)]; } } public function actionSearchList() { Yii::$app->response->format = 'json'; $get = Yii::$app->request->get(); $model = new CoinReleaseCheck(); $model->scenario = CoinReleaseCheck::SCENARIOS_SEARCH; if ($model->load($get) && $model->validate()) { $page = $get['page'] ?? 1; $limit = $page['limit'] ?? 10; $query = CoinReleaseCheck::find() ->andFilterWhere(['!=', 'status', 0]) ->andFilterWhere([ 'status' => $model->status, 'coin' => $model->coin, 'check_first_uid' => $model->check_first_uid, 'check_second_uid' => $model->check_second_uid, ]); if ($model->start_time) { $query = $query->andFilterWhere(['>=', 'create_time', $model->start_time]); } if ($model->end_time) { $query = $query->andFilterWhere(['<=', 'create_time', $model->end_time]); } $count = $query->count(); $datas = $query->limit($limit)->offset(($page - 1) * $limit)->asArray()->all(); //获取审核员id $check_ids = array_column($datas, 'check_first_uid'); $check_ids = array_unique(array_values(array_merge($check_ids, array_column($datas, 'check_second_uid')))); //获取所有管理员 $admins = $this->getAccessAdmins(); foreach ($datas as $key => &$value) { $value['check_first_uid'] = $admins[$value['check_first_uid']]; $value['check_second_uid'] = $admins[$value['check_second_uid']]; } return ['code' => 0, 'count' => $count, 'data' => $datas]; } else { return ['code' => -1, 'msg' => current($model->firstErrors)]; } } public function actionCheck() { Yii::$app->response->format = 'json'; $id = Yii::$app->request->get('id', null); $status = Yii::$app->request->get('status', null); $step = Yii::$app->request->get('step', null); if (!empty($id) && !empty($status) && !empty($step)) { if (ctype_digit($id) && ctype_digit($status) && ctype_digit($step)) { if (($status == 2 || $status == 3) && ($step >= 1 || $step <= 3)) { $model = CoinReleaseCheck::findOne($id); if ($model) { if (CoinReleaseCheck::STATUS_NORMAL != $model->status) { return ['code' => -1, 'msg' => '不允许进行审核!']; } if (self::STEP_CHECK_FIRST == $step) { if ($model->check_second_status != CoinReleaseCheck::CHECK_SECOND_STATUS_NORMAL) { return ['code' => -1, 'msg' => '已经复核的申请不允许初审!']; } $model->check_first_uid = Yii::$app->user->id; $model->check_first_status = $status; } elseif (self::STEP_CHECK_SECOND == $step) { if (CoinReleaseCheck::CHECK_FIRST_STATUS_SUCCEED == $model->check_first_status) { $model->check_second_uid = Yii::$app->user->id; $model->check_second_status = $status; //改变status $model->status = CoinReleaseCheck::STATUS_PADDING; } else { return ['code' => -1, 'msg' => '初审未通过']; } } elseif (self::STEP_CANCEL == $step) { $model->status = CoinReleaseCheck::STATUS_CANCEL; } if ($model->save(false)) { if ($step == self::STEP_CHECK_SECOND && CoinReleaseCheck::CHECK_SECOND_STATUS_SUCCEED == $model->check_second_status) { //TODO 提币 } return ['code' => 0, 'msg' => '操作成功']; } } } } } return ['code' => 0, 'msg' => '操作失败']; } }