|
|
|
@ -2,6 +2,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
namespace App\Http\Controllers\API\H5;
|
|
|
|
namespace App\Http\Controllers\API\H5;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
use App\Http\Middleware\Log;
|
|
|
|
use App\Services\TencentSmsApiService;
|
|
|
|
use App\Services\TencentSmsApiService;
|
|
|
|
use Illuminate\Http\Request;
|
|
|
|
use Illuminate\Http\Request;
|
|
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
@ -215,19 +216,21 @@ class TransactionController
|
|
|
|
public function Withdraw(Request $request)
|
|
|
|
public function Withdraw(Request $request)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
$systemStatus = \Yz::systemStatusCheck();
|
|
|
|
$systemStatus = \Yz::systemStatusCheck();
|
|
|
|
if(!$systemStatus['status']){
|
|
|
|
if (!$systemStatus['status']) {
|
|
|
|
return \Yz::echoError1($systemStatus['msg']);
|
|
|
|
return \Yz::echoError1($systemStatus['msg']);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$dayCutCheck = \Yz::DayCutCheck();
|
|
|
|
$dayCutCheck = \Yz::DayCutCheck();
|
|
|
|
if(!$dayCutCheck['status']){
|
|
|
|
if (!$dayCutCheck['status']) {
|
|
|
|
return \Yz::echoError1($dayCutCheck['msg']);
|
|
|
|
return \Yz::echoError1($dayCutCheck['msg']);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$userid = $request->get('userid');//中间件产生的参数
|
|
|
|
|
|
|
|
|
|
|
|
$userid = $request->get('userid'); // 中间件产生的参数
|
|
|
|
$amount = request('amount');
|
|
|
|
$amount = request('amount');
|
|
|
|
|
|
|
|
|
|
|
|
if (empty($amount) || $amount < 0) {
|
|
|
|
if (empty($amount) || $amount <= 0) {
|
|
|
|
return \Yz::echoError1('提现金额不能为0元');
|
|
|
|
return \Yz::echoError1('提现金额不能为0元或负数');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
$memberInfo = DB::table('members')->where(['id' => $userid, 'is_del' => 0])->first();
|
|
|
|
$memberInfo = DB::table('members')->where(['id' => $userid, 'is_del' => 0])->first();
|
|
|
|
if (!$memberInfo) {
|
|
|
|
if (!$memberInfo) {
|
|
|
|
return \Yz::echoError1('用户不存在');
|
|
|
|
return \Yz::echoError1('用户不存在');
|
|
|
|
@ -235,23 +238,55 @@ class TransactionController
|
|
|
|
if ($memberInfo->balance < $amount) {
|
|
|
|
if ($memberInfo->balance < $amount) {
|
|
|
|
return \Yz::echoError1('余额不足');
|
|
|
|
return \Yz::echoError1('余额不足');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$insertData = [
|
|
|
|
|
|
|
|
'member_id' => $userid,
|
|
|
|
DB::beginTransaction();
|
|
|
|
'type' => 3,
|
|
|
|
try {
|
|
|
|
'amount' => $amount,
|
|
|
|
// 1. 扣减余额
|
|
|
|
'status' => 1,
|
|
|
|
$newBalance = bcsub($memberInfo->balance, $amount, 2);
|
|
|
|
'source' => 'member',
|
|
|
|
$updated = DB::table('members')
|
|
|
|
'operator_id' => $userid,
|
|
|
|
->where(['id' => $userid])
|
|
|
|
'created_at' => date('Y-m-d H:i:s'),
|
|
|
|
->update(['balance' => $newBalance]);
|
|
|
|
];
|
|
|
|
|
|
|
|
$id = DB::table('transactions')->insertGetId($insertData);
|
|
|
|
if (!$updated) {
|
|
|
|
if (!!$id) {
|
|
|
|
throw new \Exception('更新余额失败');
|
|
|
|
$config=DB::table('configs')->where(['label'=>'管理员手机号'])->first();
|
|
|
|
}
|
|
|
|
$service = new TencentSmsApiService();
|
|
|
|
|
|
|
|
$ss= $service->send($config->value,$this->templateId, [$memberInfo->name,"转出"]);
|
|
|
|
// 2. 插入交易记录
|
|
|
|
return \Yz::Return(true, '充值成功!', ['id' => $id]);
|
|
|
|
$insertData = [
|
|
|
|
} else {
|
|
|
|
'member_id' => $userid,
|
|
|
|
return \Yz::echoError1('提交失败');
|
|
|
|
'type' => 3,
|
|
|
|
|
|
|
|
'amount' => $amount,
|
|
|
|
|
|
|
|
'status' => 1,
|
|
|
|
|
|
|
|
'source' => 'member',
|
|
|
|
|
|
|
|
'operator_id' => $userid,
|
|
|
|
|
|
|
|
'created_at' => now(), // 使用 now() 更规范
|
|
|
|
|
|
|
|
];
|
|
|
|
|
|
|
|
$id = DB::table('transactions')->insertGetId($insertData);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!$id) {
|
|
|
|
|
|
|
|
throw new \Exception('创建交易记录失败');
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 3. 提交事务(关键!)
|
|
|
|
|
|
|
|
DB::commit();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 4. 事务已提交,安全地发送短信(即使短信失败,也不影响资金操作)
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
$config = DB::table('configs')->where(['label' => '管理员手机号'])->first();
|
|
|
|
|
|
|
|
if ($config) {
|
|
|
|
|
|
|
|
$service = new TencentSmsApiService();
|
|
|
|
|
|
|
|
$service->send($config->value, $this->templateId, [$memberInfo->name, "转出"]);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} catch (\Exception $smsException) {
|
|
|
|
|
|
|
|
// 短信失败可记录日志,但不中断流程
|
|
|
|
|
|
|
|
Log::warning('提现短信发送失败: ' . $smsException->getMessage());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return \Yz::Return(true, '提现成功!', ['id' => $id]);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} catch (\Exception $e) {
|
|
|
|
|
|
|
|
DB::rollBack();
|
|
|
|
|
|
|
|
return \Yz::echoError1($e->getMessage());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|