提现申请测试
This commit is contained in:
@@ -275,196 +275,206 @@ class DivideAccountController extends BaseAdminController
|
||||
*/
|
||||
public function actionApplyAgree()
|
||||
{
|
||||
// 获取前端传递的POST数据
|
||||
$post = \Yii::$app->request->post();
|
||||
try {
|
||||
// 获取前端传递的POST数据
|
||||
$post = \Yii::$app->request->post();
|
||||
|
||||
// 对POST数据进行验证,确保必要的字段不为空
|
||||
$this->requestValidate($post, [
|
||||
[['id', 'check_result', 'user_type'], 'required'],
|
||||
]);
|
||||
// 对POST数据进行验证,确保必要的字段不为空
|
||||
$this->requestValidate($post, [
|
||||
[['id', 'check_result', 'user_type'], 'required'],
|
||||
]);
|
||||
|
||||
// 获取当前用户身份
|
||||
$user = \Yii::$app->user->identity;
|
||||
// 获取当前用户身份
|
||||
$user = \Yii::$app->user->identity;
|
||||
|
||||
// 检查用户角色,如果不是超级管理员,则抛出异常
|
||||
if ($user->role != UserRoleEnum::SUPER_ADMIN) throw new Exception('你不是超级管理员,没有分账申请打款审核权限');
|
||||
// 检查用户角色,如果不是超级管理员,则抛出异常
|
||||
if ($user->role != UserRoleEnum::SUPER_ADMIN) throw new Exception('你不是超级管理员,没有分账申请打款审核权限');
|
||||
|
||||
// 根据POST数据查找现金申请信息,确保该申请存在且待审核
|
||||
$CashApply = CashApply::find()->where([
|
||||
'id' => $post['id'],
|
||||
'user_type' => $post['user_type'],
|
||||
'check_status' => 1
|
||||
])->one();
|
||||
if (!$CashApply) throw new Exception('申请不存在');
|
||||
|
||||
// 根据用户类型(诊所或平台)查找对应的账户信息和配置
|
||||
if ($post['user_type'] == 1) { // 诊所
|
||||
$Account = CashAccount::find()->where([
|
||||
'user_id' => $CashApply->user_id,
|
||||
'user_type' => $CashApply->user_type
|
||||
// 根据POST数据查找现金申请信息,确保该申请存在且待审核
|
||||
$CashApply = CashApply::find()->where([
|
||||
'id' => $post['id'],
|
||||
'user_type' => $post['user_type'],
|
||||
'check_status' => 1
|
||||
])->one();
|
||||
$config = Store::find()->where(['id' => $CashApply->user_id])->one();
|
||||
} elseif($post['user_type'] == 2) { // 平台
|
||||
$Account = CashAccount::find()->where([
|
||||
'user_id' => 0,
|
||||
'user_type' => $CashApply->user_type
|
||||
])->one();
|
||||
$config = Admin::find()->where(['role' => UserRoleEnum::SUPER_ADMIN])->one();
|
||||
} elseif ($post['user_type'] == 3) {
|
||||
$Account = AccountBalanceModel::find()->where([ 'user_id' => $CashApply->user_id, 'type' => $CashApply->user_type])->one();
|
||||
$config = CardModel::find()->where(['id' => $CashApply->user_id, 'type' => $CashApply->user_type])->one();
|
||||
}
|
||||
if (!$CashApply) throw new Exception('申请不存在');
|
||||
|
||||
// 确保诊所或平台的账号存在
|
||||
if (!$Account) throw new Exception('诊所或平台的账号不存在');
|
||||
if ($post['user_type'] == 3) {
|
||||
$CashAccount = AccountBalanceModel::find()->where([ 'user_id' => $CashApply->user_id, 'type' => $CashApply->user_type])->one();
|
||||
} else {
|
||||
// 再次确认现金账户信息
|
||||
$CashAccount = CashAccount::find()->where([
|
||||
'user_type' => $CashApply->user_type,
|
||||
'user_id' => $CashApply->user_id
|
||||
])->one();
|
||||
}
|
||||
// 根据用户类型(诊所或平台)查找对应的账户信息和配置
|
||||
if ($post['user_type'] == 1) { // 诊所
|
||||
$Account = CashAccount::find()->where([
|
||||
'user_id' => $CashApply->user_id,
|
||||
'user_type' => $CashApply->user_type
|
||||
])->one();
|
||||
$config = Store::find()->where(['id' => $CashApply->user_id])->one();
|
||||
} elseif($post['user_type'] == 2) { // 平台
|
||||
$Account = CashAccount::find()->where([
|
||||
'user_id' => 0,
|
||||
'user_type' => $CashApply->user_type
|
||||
])->one();
|
||||
$config = Admin::find()->where(['role' => UserRoleEnum::SUPER_ADMIN])->one();
|
||||
} elseif ($post['user_type'] == 3) {
|
||||
$Account = AccountBalanceModel::find()->where([ 'user_id' => $CashApply->user_id, 'type' => $CashApply->user_type])->one();
|
||||
$config = CardModel::find()->where(['id' => $CashApply->user_id, 'type' => $CashApply->user_type])->one();
|
||||
}
|
||||
|
||||
// 检查银行账户配置是否完整,如果有任一配置项为空,则解冻申请提现的金额,并记录审核失败
|
||||
if (empty($config['bank_user_name']) || empty($config['bank_card']) || empty($config['bank_name']) || empty($config['bank_account_type'])) {
|
||||
// 确保诊所或平台的账号存在
|
||||
if (!$Account) throw new Exception('诊所或平台的账号不存在');
|
||||
if ($post['user_type'] == 3) {
|
||||
$CashAccount = AccountBalanceModel::find()->where([ 'user_id' => $CashApply->user_id, 'type' => $CashApply->user_type])->one();
|
||||
} else {
|
||||
// 再次确认现金账户信息
|
||||
$CashAccount = CashAccount::find()->where([
|
||||
'user_type' => $CashApply->user_type,
|
||||
'user_id' => $CashApply->user_id
|
||||
])->one();
|
||||
}
|
||||
|
||||
$CashApply->check_id = $user->uid;
|
||||
$CashApply->check_status = 4; // 提现失败
|
||||
$CashApply->check_result = '银行卡相关配置不完善';
|
||||
$CashApply->check_time = date('Y-m-d H:i:s', time());
|
||||
$CashApply->dakuan_status = -1; // 失败
|
||||
$CashApply->dakuan_time = date('Y-m-d H:i:s', time());
|
||||
$CashApply->saveOrFail();
|
||||
// 检查银行账户配置是否完整,如果有任一配置项为空,则解冻申请提现的金额,并记录审核失败
|
||||
if (empty($config['bank_user_name']) || empty($config['bank_card']) || empty($config['bank_name']) || empty($config['bank_account_type'])) {
|
||||
|
||||
// 创建日志记录,记录此次审核操作的详细信息
|
||||
$log = new Log();
|
||||
$log->admin_id = $user->uid;
|
||||
$log->operate_time = date('Y-m-d H:i:s', time());
|
||||
$log->type = '分账申请打款审核';
|
||||
// $log->content = '超级管理员:' . $user->uid . '打款操作,订单号:' . $CashApply->order_no . ',打款金额:' . bcadd($CashApply->true_cash, 2, 2) . '元,开户人姓名:' . $config->bank_user_name . ',银行卡号:' . $config->bank_card . ',银行名称:' . $config->bank_name . ',银行账户类型:' . $config->bank_account_type . ',打款失败,原因:银行卡相关配置不完善';
|
||||
$log->content = '超级管理员:' . $user->uid . '打款操作,订单号:' . $CashApply->order_no . ',打款金额:' . $CashApply->true_cash . '元,开户人姓名:' . $config->bank_user_name . ',银行卡号:' . $config->bank_card . ',银行名称:' . $config->bank_name . ',银行账户类型:' . $config->bank_account_type . ',打款失败,原因:银行卡相关配置不完善';
|
||||
$log->mold = 3; // 财务操作
|
||||
$log->saveOrFail();
|
||||
|
||||
// 更新日志内容到数据库
|
||||
\Yii::$app->db->createCommand()->update('yii_log', ['content' => Json::encode($log->attributes)], ['id' => $log->attributes['id']])->execute();
|
||||
throw new \yii\db\Exception('银行卡相关配置不能为空');
|
||||
}
|
||||
|
||||
$sendPrice = $CashApply->user_id == 0? bcadd($CashApply->true_cash, 0, 2): bcadd($CashApply->true_cash, 1, 2);
|
||||
|
||||
// 准备打款参数
|
||||
$param = [
|
||||
'order_no' => $CashApply->order_no, // 订单号
|
||||
'apply_cash' => $sendPrice, // 实际打款金额 1元是银联手续费 自己的账户不需要手续费
|
||||
'bank_name' => $config->bank_name, // 银行名称
|
||||
'bank_account_type' => $config->bank_account_type, // 银行账户类型
|
||||
'bank_no' => $config->bank_no, // 银行账号
|
||||
'bank_user_name' => $config->bank_user_name, // 开户人姓名
|
||||
'bank_card' => $config->bank_card, // 银行卡号
|
||||
];
|
||||
|
||||
if ($param['bank_card'] == '19081501040002999' && $CashApply->user_id != 0) {
|
||||
$param['apply_cash'] = bcsub($param['apply_cash'], 1, 2);
|
||||
}
|
||||
// 执行打款操作
|
||||
$res = EplPayService::getInstance()->withDraw($param);
|
||||
|
||||
// 处理打款失败情况
|
||||
if ($res['returnCode'] != '0000') {
|
||||
try {
|
||||
// 开始事务
|
||||
$transaction = \Yii::$app->db->beginTransaction();
|
||||
|
||||
if ($CashApply->user_type == 3) {
|
||||
// 更新用户账户信息,解冻申请提现的金额
|
||||
$CashAccount->withdrawn_frozen = bcsub($CashAccount->withdrawn_frozen, $CashApply->apply_cash, 6);
|
||||
$CashAccount->balance = bcadd($CashAccount->balance, $CashApply->apply_cash, 6);
|
||||
} else {
|
||||
// 更新用户账户信息,解冻申请提现的金额
|
||||
$CashAccount->frozen_cash = bcsub($CashAccount->frozen_cash, $CashApply->apply_cash, 2);
|
||||
}
|
||||
$CashAccount->saveOrFail();
|
||||
|
||||
// 更新提现申请状态为失败
|
||||
$CashApply->check_id = $user->uid;
|
||||
$CashApply->check_status = 4; // 提现失败状态码
|
||||
$CashApply->check_result = $res['returnMsg'];
|
||||
$CashApply->check_status = 4; // 提现失败
|
||||
$CashApply->check_result = '银行卡相关配置不完善';
|
||||
$CashApply->check_time = date('Y-m-d H:i:s', time());
|
||||
$CashApply->dakuan_status = -1; // 打款失败状态码
|
||||
$CashApply->dakuan_status = -1; // 失败
|
||||
$CashApply->dakuan_time = date('Y-m-d H:i:s', time());
|
||||
$CashApply->saveOrFail();
|
||||
|
||||
// 记录代付的手续费
|
||||
$this->updateChargeCashPayRecordStatusByOrderNo($CashApply->order_no, 3);
|
||||
|
||||
// 记录日志
|
||||
// 创建日志记录,记录此次审核操作的详细信息
|
||||
$log = new Log();
|
||||
$log->admin_id = $user->uid;
|
||||
$log->operate_time = date('Y-m-d H:i:s', time());
|
||||
$log->type = '分账申请打款审核';
|
||||
$log->content = '打款失败:超级管理员:' . $user->uid . '打款操作,订单号:' . $CashApply->order_no . ',打款金额:' . $CashApply->true_cash . '元,开户人姓名:' . $config->bank_user_name . ',银行卡号:' . $config->bank_card . ',银行名称:' . $config->bank_name . ',银行账户类型:' . $config->bank_account_type . ',打款失败,原因:' . $res['returnMsg'];
|
||||
$log->mold = 3; // 财务操作状态码
|
||||
// $log->content = '超级管理员:' . $user->uid . '打款操作,订单号:' . $CashApply->order_no . ',打款金额:' . bcadd($CashApply->true_cash, 2, 2) . '元,开户人姓名:' . $config->bank_user_name . ',银行卡号:' . $config->bank_card . ',银行名称:' . $config->bank_name . ',银行账户类型:' . $config->bank_account_type . ',打款失败,原因:银行卡相关配置不完善';
|
||||
$log->content = '超级管理员:' . $user->uid . '打款操作,订单号:' . $CashApply->order_no . ',打款金额:' . $CashApply->true_cash . '元,开户人姓名:' . $config->bank_user_name . ',银行卡号:' . $config->bank_card . ',银行名称:' . $config->bank_name . ',银行账户类型:' . $config->bank_account_type . ',打款失败,原因:银行卡相关配置不完善';
|
||||
$log->mold = 3; // 财务操作
|
||||
$log->saveOrFail();
|
||||
|
||||
// 更新日志表内容
|
||||
// 更新日志内容到数据库
|
||||
\Yii::$app->db->createCommand()->update('yii_log', ['content' => Json::encode($log->attributes)], ['id' => $log->attributes['id']])->execute();
|
||||
|
||||
// 提交事务
|
||||
$transaction->commit();
|
||||
return $res;
|
||||
} catch (\Exception $e) {
|
||||
// 回滚事务
|
||||
$transaction->rollBack();
|
||||
throw new \yii\db\Exception($e->getMessage());
|
||||
throw new \yii\db\Exception('银行卡相关配置不能为空');
|
||||
}
|
||||
} else {
|
||||
// 处理打款成功情况
|
||||
$t = \Yii::$app->db->beginTransaction();
|
||||
try {
|
||||
// 更新用户账户信息,扣除账户余额,解冻申请提现的金额,增加已提现金额和手续费
|
||||
if ($CashApply->user_type == 3) {
|
||||
$CashAccount->charge = bcadd($CashAccount->charge, $CashApply->charge_cash, 6);
|
||||
} else {
|
||||
$CashAccount->able_cash = bcsub($CashAccount->able_cash, $CashApply->apply_cash, 2);
|
||||
$CashAccount->charge_cash = bcadd($CashAccount->charge_cash, $CashApply->charge_cash, 2);
|
||||
|
||||
$sendPrice = $CashApply->user_id == 0? bcadd($CashApply->true_cash, 0, 2): bcadd($CashApply->true_cash, 1, 2);
|
||||
|
||||
// 准备打款参数
|
||||
$param = [
|
||||
'order_no' => $CashApply->order_no, // 订单号
|
||||
'apply_cash' => $sendPrice, // 实际打款金额 1元是银联手续费 自己的账户不需要手续费
|
||||
'bank_name' => $config->bank_name, // 银行名称
|
||||
'bank_account_type' => $config->bank_account_type, // 银行账户类型
|
||||
'bank_no' => $config->bank_no, // 银行账号
|
||||
'bank_user_name' => $config->bank_user_name, // 开户人姓名
|
||||
'bank_card' => $config->bank_card, // 银行卡号
|
||||
];
|
||||
|
||||
if ($param['bank_card'] == '19081501040002999' && $CashApply->user_id != 0) {
|
||||
$param['apply_cash'] = bcsub($param['apply_cash'], 1, 2);
|
||||
}
|
||||
// 执行打款操作
|
||||
$res = EplPayService::getInstance()->withDraw($param);
|
||||
|
||||
// 处理打款失败情况
|
||||
if ($res['returnCode'] != '0000') {
|
||||
try {
|
||||
// 开始事务
|
||||
$transaction = \Yii::$app->db->beginTransaction();
|
||||
|
||||
if ($CashApply->user_type == 3) {
|
||||
// 更新用户账户信息,解冻申请提现的金额
|
||||
$CashAccount->withdrawn_frozen = bcsub($CashAccount->withdrawn_frozen, $CashApply->apply_cash, 6);
|
||||
$CashAccount->balance = bcadd($CashAccount->balance, $CashApply->apply_cash, 6);
|
||||
} else {
|
||||
// 更新用户账户信息,解冻申请提现的金额
|
||||
$CashAccount->frozen_cash = bcsub($CashAccount->frozen_cash, $CashApply->apply_cash, 2);
|
||||
}
|
||||
$CashAccount->saveOrFail();
|
||||
|
||||
// 更新提现申请状态为失败
|
||||
$CashApply->check_id = $user->uid;
|
||||
$CashApply->check_status = 4; // 提现失败状态码
|
||||
$CashApply->check_result = $res['returnMsg'];
|
||||
$CashApply->check_time = date('Y-m-d H:i:s', time());
|
||||
$CashApply->dakuan_status = -1; // 打款失败状态码
|
||||
$CashApply->dakuan_time = date('Y-m-d H:i:s', time());
|
||||
$CashApply->saveOrFail();
|
||||
|
||||
// 记录代付的手续费
|
||||
$this->updateChargeCashPayRecordStatusByOrderNo($CashApply->order_no, 3);
|
||||
|
||||
// 记录日志
|
||||
$log = new Log();
|
||||
$log->admin_id = $user->uid;
|
||||
$log->operate_time = date('Y-m-d H:i:s', time());
|
||||
$log->type = '分账申请打款审核';
|
||||
$log->content = '打款失败:超级管理员:' . $user->uid . '打款操作,订单号:' . $CashApply->order_no . ',打款金额:' . $CashApply->true_cash . '元,开户人姓名:' . $config->bank_user_name . ',银行卡号:' . $config->bank_card . ',银行名称:' . $config->bank_name . ',银行账户类型:' . $config->bank_account_type . ',打款失败,原因:' . $res['returnMsg'];
|
||||
$log->mold = 3; // 财务操作状态码
|
||||
$log->saveOrFail();
|
||||
|
||||
// 更新日志表内容
|
||||
\Yii::$app->db->createCommand()->update('yii_log', ['content' => Json::encode($log->attributes)], ['id' => $log->attributes['id']])->execute();
|
||||
|
||||
// 提交事务
|
||||
$transaction->commit();
|
||||
return $res;
|
||||
} catch (\Exception $e) {
|
||||
// 回滚事务
|
||||
$transaction->rollBack();
|
||||
throw new \yii\db\Exception($e->getMessage());
|
||||
}
|
||||
$CashAccount->saveOrFail();
|
||||
} else {
|
||||
// 处理打款成功情况
|
||||
$t = \Yii::$app->db->beginTransaction();
|
||||
try {
|
||||
// 更新用户账户信息,扣除账户余额,解冻申请提现的金额,增加已提现金额和手续费
|
||||
if ($CashApply->user_type == 3) {
|
||||
$CashAccount->charge = bcadd($CashAccount->charge, $CashApply->charge_cash, 6);
|
||||
} else {
|
||||
$CashAccount->able_cash = bcsub($CashAccount->able_cash, $CashApply->apply_cash, 2);
|
||||
$CashAccount->charge_cash = bcadd($CashAccount->charge_cash, $CashApply->charge_cash, 2);
|
||||
}
|
||||
$CashAccount->saveOrFail();
|
||||
|
||||
// 更新提现申请状态为成功
|
||||
$CashApply->check_id = $user->uid;
|
||||
$CashApply->check_status = 2; // 提现成功状态码
|
||||
$CashApply->check_result = $post['check_result'];
|
||||
$CashApply->check_time = date('Y-m-d H:i:s', time());
|
||||
$CashApply->dakuan_status = 1; // 打款成功状态码
|
||||
$CashApply->dakuan_time = date('Y-m-d H:i:s', time());
|
||||
$CashApply->saveOrFail();
|
||||
// 更新提现申请状态为成功
|
||||
$CashApply->check_id = $user->uid;
|
||||
$CashApply->check_status = 2; // 提现成功状态码
|
||||
$CashApply->check_result = $post['check_result'];
|
||||
$CashApply->check_time = date('Y-m-d H:i:s', time());
|
||||
$CashApply->dakuan_status = 1; // 打款成功状态码
|
||||
$CashApply->dakuan_time = date('Y-m-d H:i:s', time());
|
||||
$CashApply->saveOrFail();
|
||||
|
||||
// 记录代付的手续费
|
||||
$this->updateChargeCashPayRecordStatusByOrderNo($CashApply->order_no, 2, $param['apply_cash']);
|
||||
// 记录代付的手续费
|
||||
$this->updateChargeCashPayRecordStatusByOrderNo($CashApply->order_no, 2, $param['apply_cash']);
|
||||
|
||||
// 记录日志
|
||||
$log = new Log();
|
||||
$log->admin_id = $user->uid;
|
||||
$log->operate_time = date('Y-m-d H:i:s', time());
|
||||
$log->type = '分账申请打款审核';
|
||||
$log->content = $user->uid . '通过了ID为:' . $post['id'] . '的打款申请,打款结果:成功';
|
||||
$log->mold = 3; // 财务操作状态码
|
||||
$log->save();
|
||||
// 记录日志
|
||||
$log = new Log();
|
||||
$log->admin_id = $user->uid;
|
||||
$log->operate_time = date('Y-m-d H:i:s', time());
|
||||
$log->type = '分账申请打款审核';
|
||||
$log->content = $user->uid . '通过了ID为:' . $post['id'] . '的打款申请,打款结果:成功';
|
||||
$log->mold = 3; // 财务操作状态码
|
||||
$log->save();
|
||||
|
||||
// 更新日志表内容
|
||||
\Yii::$app->db->createCommand()->update('yii_log', ['content' => Json::encode($log->attributes)], ['id' => $log->attributes['id']])->execute();
|
||||
// 更新日志表内容
|
||||
\Yii::$app->db->createCommand()->update('yii_log', ['content' => Json::encode($log->attributes)], ['id' => $log->attributes['id']])->execute();
|
||||
|
||||
// 提交事务
|
||||
$t->commit();
|
||||
return ['审核成功'];
|
||||
} catch (\Exception $e) {
|
||||
// 回滚事务
|
||||
$t->rollBack();
|
||||
throw new Exception($e->getMessage());
|
||||
// 提交事务
|
||||
$t->commit();
|
||||
return ['审核成功'];
|
||||
} catch (\Exception $e) {
|
||||
// 回滚事务
|
||||
$t->rollBack();
|
||||
throw new Exception($e->getMessage());
|
||||
}
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
// 回滚事务
|
||||
$transaction->rollBack();
|
||||
ds([
|
||||
'msg' => $e->getMessage(),
|
||||
'line' => $e->getLine(),
|
||||
'file' => $e->getFile(),
|
||||
]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user