| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488 |
- <?php
- namespace backend\controllers;
- use backend\helpers\PaginationHelper;
- use backend\helpers\ValidatorHelper;
- use backend\models\BatchRemitLog;
- use backend\models\RemitLog;
- use backend\models\RemitOrder;
- use common\helpers\Utils;
- use common\pay\RemitForm;
- use Yii;
- use yii\helpers\ArrayHelper;
- class RemitController extends BaseController
- {
- /**
- * 获取财务打款审核列表
- * @return \yii\web\Response
- */
- public function actionGetFinanceRemitList()
- {
- $data = Yii::$app->getRequest()->get();
- $data['status'] = isset($data['status']) ? trim($data['status']) : '';
- $data['batch_no'] = isset($data['batch_no']) ? trim($data['batch_no']) : '';
- $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']) : 'create_time desc';
- $data['search'] = isset($data['search']) ? trim($data['search']) : '';
- $data = ValidatorHelper::validateData($data, [
- ['status', 'string'],
- ['inStartTime', 'integer'],
- ['inEndTime', 'integer'],
- ['page', 'integer', 'min' => 1],
- ['pageSize', 'integer', 'min' => 1],
- ['orderBy', 'string'],
- ], $errors);
- if ($data == false) {
- return $this->outJson(0, '', $errors);
- }
-
- $query = RemitOrder::find()
- ->select('batch_no,amount,audit_status,audit_name,audit_reason,
- reaudit_name,reaudit_reason,audit_time,reaudit_time,create_time')
- ->addSelect(['count(*) as batch_count,sum(amount) as cny_amount']);
- // ->orderBy($data['orderBy']);
- $where = [];
- if ($data['status'] == 'all') {
- // 全部列表
- } else if ($data['status'] == 'first_trial') {
- // 初审列表明细
- $where = [
- 'OR',
- ['audit_status' => 0],
- ['audit_status' => 4],
- ];
- } else if ($data['status'] == 're_trial') {
- // 复审列表明细
- $where = [
- 'AND',
- ['audit_status' => 1],
- ];
- $data['orderBy'] = 'audit_time desc';
- } else {
- // 审核不通过明细
- $where = [
- 'AND',
- ['audit_status' => 3],
- ];
- }
- $query->orderBy($data['orderBy']);
- $query->where($where);
- $query->andFilterWhere(['>=', 'create_time', $data['inStartTime']]);
- $query->andFilterWhere(['<', 'create_time', $data['inEndTime']]);
- $query->andFilterWhere([
- 'or',
- ['like', 'batch_no', $data['search']]
- ]);
-
- if (!empty($data['batch_no'])) {
- $query->andFilterWhere(['batch_no' => $data['batch_no']]);
- }
- $queryClone = clone $query;
- $query->groupBy('batch_no');
-
- $result = PaginationHelper::queryPage($query, $data['page'], $data['pageSize']);
-
- if ($result) {
- // 统计
- $sum = $queryClone->select(['COUNT(*) AS pay_count', 'SUM(amount) AS amount_sum'])->asArray()->limit(1)->one();
- $lastRow = [
- 'batch_no' => '',
- 'batch_count' => $sum['pay_count'],
- 'cny_amount' => !empty($sum['amount_sum']) ? $sum['amount_sum'] : 0,
- 'create_time' => '',
- 'audit_status' => null,
- 'audit_time' => '',
- 'audit_reason' => '',
- 'audit_name' => '',
- 'reaudit_time' => '',
- 'reaudit_reason' => '',
- 'reaudit_name' => '',
- ];
- array_push($result['dataList'], $lastRow);
- // 有小数就显示小数,没有就只显示整数部分
- if ($result['dataList']) {
- foreach ($result['dataList'] as $k => $v) {
- $result['dataList'][$k]['cny_amount'] = Utils::formatFloatOrInt($v['cny_amount']);
- }
- }
- }
-
- return $this->outJson(1, $result);
- }
- /**
- * 批次详细信息
- * @return \yii\web\Response
- */
- public function actionFinanceRemitDetail()
- {
- $data = Yii::$app->getRequest()->get();
- $data['batch_no'] = isset($data['batch_no']) ? trim($data['batch_no']) : '';
- $data['remit_no'] = isset($data['remit_no']) ? trim($data['remit_no']) : '';
- $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']) : 'remit_no asc';
- $data['search'] = isset($data['search']) ? trim($data['search']) : '';
- $query = RemitOrder::find()
- ->select('id,batch_no,remit_no,pay_type,biz_no,payee_name,
- amount,bank_name,bank_branch,bank_card_no,bank_province,bank_city,bank_code,memo,ret_msg')
- ->andWhere(['batch_no' => $data['batch_no']]);
- if (!empty($data['search'])) {
- $query->andFilterWhere(['like', 'remit_no', $data['search']]);
- }
- if (!empty($data['remit_no'])) {
- $query->andFilterWhere(['like', 'remit_no', $data['remit_no']]);
- }
- $result = PaginationHelper::queryPage($query, $data['page'], $data['pageSize']);
- return $this->outJson(1, $result);
- }
- /**
- * 获取某条记录的备注
- */
- public function actionMemo()
- {
- $data = \Yii::$app->getRequest()->get();
- $data['id'] = isset($data['id']) ? $data['id'] : 0;
- $remit = RemitOrder::findOne(['id' => $data['id']]);
- return $this->outJson(1, $remit);
- }
- /**
- * 修改某条记录的备注
- */
- public function actionMemoUpdate()
- {
- $data = \Yii::$app->getRequest()->post();
- $data['id'] = isset($data['id']) ? $data['id'] : 0;
- $data['memo'] = isset($data['memo']) ? $data['memo'] : '';
- $info = RemitOrder::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']], '操作成功');
- }
-
- /**
- * 检测批次号是否存在
- * @return \yii\web\Response
- */
- public function actionCheckBatchNo()
- {
- $batchNo = trim(Yii::$app->getRequest()->get('batchNo'));
- if ($batchNo == '' || !is_numeric($batchNo)) {
- return $this->outJson(0, [], '参数非法');
- }
- if (RemitOrder::find()->where(['batch_no' => $batchNo])->exists()) {
- return $this->outJson(0, [], '批次号已存在');
- }
- return $this->outJson(1, $batchNo, "操作成功");
- }
- /**
- * 导入批次
- * @return \yii\web\Response
- * @throws \yii\db\Exception
- */
- public function actionImportRemitOrder()
- {
- $data = \Yii::$app->getRequest()->post();
- $data['list'] = json_decode($data['list'], true);
- if (!empty($data['list'])) {
- $rows = [];
- foreach ($data['list'] as $item) {
- $remitNo = RemitOrder::generateRemitNo();
- if ($remitNo) {
- $rows[] = [
- 'remit_no' => $remitNo,
- 'batch_no' => $data['batch_no'],
- 'biz_type' => 1,
- 'biz_no' => $item[0],
- 'pay_type' => 5,
- 'payee_name' => $item[1],
- 'amount' => $item[2],
- 'bank_name' => $item[3],
- 'bank_branch' => $item[4],
- 'bank_card_no' => $item[5],
- 'bank_province' => $item[6],
- 'bank_city' => $item[7],
- 'bank_code' => $item[8],
- 'memo' => $item[9],
- 'create_time' => time(),
- ];
- }
- }
- if ($rows) {
- $command = RemitOrder::getDb()->createCommand();
- $columns = array_combine(array_keys($rows[0]), array_keys($rows[0]));
- $sql = $command->batchInsert(RemitOrder::tableName(), $columns, $rows)->getSql();
- if ($command->setSql(str_ireplace("INSERT INTO", "INSERT IGNORE INTO", $sql))->execute()) {
- // 记录日志
- $logData = [];
- $logData['memo'] = '导入批次';
- isset($data['admin_id']) && $logData['admin_id'] = trim($data['admin_id']);
- isset($data['admin_name']) && $logData['admin_name'] = trim($data['admin_name']);
- isset($data['admin_ip']) && $logData['admin_ip'] = trim($data['admin_ip']);
- BatchRemitLog::addLog($data, $logData);
- return $this->outJson(1, [], '导入批次成功');
- } else {
- return $this->outJson(0, [], '123');
- }
- } else {
- return $this->outJson(0, [], '234');
- }
- } else {
- return $this->outJson(0, [], '表中无数据');
- }
- }
- /**
- * 操作日志
- * @return \yii\web\Response
- */
- public function actionGetBatchRemitLog()
- {
- $data = Yii::$app->getRequest()->get();
- $data['batch_no'] = isset($data['batch_no']) ? $data['batch_no'] : '';
- $rs = BatchRemitLog::find()->where(['batch_no' => $data['batch_no']])->asArray()->all();
- return $this->outJson(1, $rs);
- }
- /**
- * 批次初审
- * @return \yii\web\Response
- */
- public function actionBatchAudit()
- {
- $data = Yii::$app->getRequest()->post();
- if (!isset($data['batch_no']) || trim($data['batch_no']) == '') {
- return $this->outJson(0, [], '打款批次号不能为空');
- }
- $batchNo = $data['batch_no'];
- if (!isset($data['audit_status']) || trim($data['audit_status']) == '') {
- return $this->outJson(0, [], '审核状态不能为空');
- }
- $model = RemitOrder::findByBatchNo($batchNo);
- if ($model == null) {
- return $this->outJson(0, [], '打款单不存在');
- }
- if ($model->doBatchAudit($data)) {
- return $this->outJson(1, [], '操作成功');
- } else {
- return $this->outJson(0, [], $model->getFirstError('audit_status'));
- }
- }
- /**
- * 批次复审
- * @return \yii\web\Response
- */
- public function actionBatchReAudit()
- {
- $data = Yii::$app->getRequest()->post();
- if (!isset($data['batch_no']) || trim($data['batch_no']) == '') {
- return $this->outJson(0, [], '打款批次号不能为空');
- }
- $batchNo = $data['batch_no'];
- if (!isset($data['audit_status']) || trim($data['audit_status']) == '') {
- return $this->outJson(0, [], '审核状态不能为空');
- }
- $model = RemitOrder::findByBatchNo($batchNo);
- if ($model == null) {
- return $this->outJson(0, [], '打款单不存在');
- }
- if ($model->doBatchReAudit($data)) {
- return $this->outJson(1, [], '操作成功');
- } else {
- return $this->outJson(0, [], $model->getFirstError('audit_status'));
- }
- }
- /**
- * 创建打款单
- * @return \yii\web\Response
- */
- public function actionCreate()
- {
- $data = Yii::$app->getRequest()->post();
- $unsetFields = ['audit_status', 'audit_admin_id', 'audit_name', 'audit_reason', 'audit_time',
- 'reaudit_admin_id', 'reaudit_name', 'reaudit_reason', 'reaudit_time', 'pay_status', 'pay_time',
- 'complete_time', 'out_no', 'out_no_crc32', 'ret_code', 'res_code', 'ret_msg', 'sign',
- 'create_time', 'last_modified'];
- foreach ($unsetFields as $field) {
- unset($data[$field]);
- }
- if (!isset($data['biz_no']) || trim($data['biz_no']) == '') {
- return $this->outJson(0, [], '业务单号不能为空');
- }
- if (!isset($data['biz_type']) || trim($data['biz_type']) == '') {
- return $this->outJson(0, [], '业务类型不能为空');
- }
- if (RemitOrder::checkBizExist($data['biz_no'], $data['biz_type'])) {
- return $this->outJson(0, [], '业务号已存在,请勿重复添加');
- }
- $remitNo = RemitOrder::generateRemitNo();
- if ($remitNo == false) {
- return $this->outJson(0, [], '打款单号生成失败');
- }
- $data['remit_no'] = $remitNo;
- $data['create_time'] = time();
- $model = new RemitOrder();
- $model->setAttributes($data);
- if ($model->save()) {
- $logData = [];
- $logData['memo'] = "创建打款单";
- isset($data['admin_id']) && $logData['admin_id'] = trim($data['admin_id']);
- isset($data['admin_name']) && $logData['admin_name'] = trim($data['admin_name']);
- isset($data['admin_ip']) && $logData['admin_ip'] = trim($data['admin_ip']);
- RemitLog::addLog($model->getAttributes(), $logData);
- return $this->outJson(1, [], '操作成功');
- } else {
- return $this->outJson(0, [], $model->getFirstErrors());
- }
- }
- /**
- * 初审
- * @return \yii\web\Response
- */
- public function actionAudit()
- {
- $data = Yii::$app->getRequest()->post();
- if (!isset($data['remit_no']) || trim($data['remit_no']) == '') {
- return $this->outJson(0, [], '打款单号不能为空');
- }
- $remitNo = $data['remit_no'];
- if (!isset($data['audit_status']) || trim($data['audit_status']) == '') {
- return $this->outJson(0, [], '审核状态不能为空');
- }
- $model = RemitOrder::findByRemitNo($remitNo);
- if ($model == null) {
- return $this->outJson(0, [], '打款单不存在');
- }
- if ($model->doAudit($data)) {
- return $this->outJson(1, [], '操作成功');
- } else {
- return $this->outJson(0, [], $model->getFirstError('audit_status'));
- }
- }
- /**
- * 复审
- * @return \yii\web\Response
- */
- public function actionReaudit()
- {
- $data = Yii::$app->getRequest()->post();
- if (!isset($data['remit_no']) || trim($data['remit_no']) == '') {
- return $this->outJson(0, [], '打款单号不能为空');
- }
- $remitNo = $data['remit_no'];
- if (!isset($data['audit_status']) || trim($data['audit_status']) == '') {
- return $this->outJson(0, [], '审核状态不能为空');
- }
- $model = RemitOrder::findByRemitNo($remitNo);
- if ($model == null) {
- return $this->outJson(0, [], '打款单不存在');
- }
- if ($model->doReAudit($data)) {
- return $this->outJson(1, [], '操作成功');
- } else {
- return $this->outJson(0, [], $model->getFirstError('audit_status'));
- }
- }
- /**
- * 打款
- * @return \yii\web\Response
- */
- public function actionOutremit()
- {
- $model = new RemitForm();
- $model->setAttributes(Yii::$app->getRequest()->post());
- if ($model->outRemit()) {
- return $this->outJson(1, [], '操作成功');
- } else {
- return $this->outJson(0, [], $model->getFirstErrors());
- }
- }
- public function actionNotify()
- {
- $model = new RemitForm();
- $data = Yii::$app->getRequest()->post();
- if ($model->handleNotify($data)) {
- return $this->outJson(1, $model->getOutNotifyResult());
- } else {
- return $this->outJson(0, $model->getOutNotifyResult());
- }
- }
-
- /**
- * 打款列表数据
- */
- public function actionGetRemitList()
- {
- $model = new RemitOrder();
- $result = $model->getList(Yii::$app->request->post());
- if ($result['code']) {
- return $this->outJson(1, $result['data'], $result['message']);
- } else {
- return $this->outJson(0, [], $result['message']);
- }
- }
- /**
- * 更改打款状态
- */
- public function actionUpdatePayStatus()
- {
- $model = new RemitOrder();
- $result = $model->updatePayStatus(Yii::$app->request->post());
- if ($result['code']) {
- return $this->outJson(1, $result['data'], $result['message']);
- } else {
- return $this->outJson(0, [], $result['message']);
- }
- }
-
- /**
- * 日志
- */
- public function actionGetRemitLog()
- {
- $model = new RemitLog();
- $result = $model->getList(Yii::$app->request->post());
- if ($result['code']) {
- return $this->outJson(1, $result['data'], $result['message']);
- } else {
- return $this->outJson(0, [], $result['message']);
- }
- }
- }
|