172 lines
5.5 KiB
PHP
172 lines
5.5 KiB
PHP
<?php
|
||
|
||
namespace app\controller\api;
|
||
|
||
use app\model\Withdraw;
|
||
use app\model\User;
|
||
use app\model\ExchangeRate;
|
||
use app\model\Userbank;
|
||
|
||
use support\Request;
|
||
use App\Utils\API\Payment;
|
||
|
||
use App\Utils\ApiResponseApp;
|
||
|
||
use App\dao\UserRewardDao;
|
||
use hg\apidoc\annotation as Apidoc;
|
||
use Carbon\Carbon;
|
||
|
||
/**
|
||
* @Apidoc\Title("提现订单")
|
||
*/
|
||
|
||
class WithdrawController
|
||
{
|
||
|
||
/**
|
||
* @Apidoc\Title("1.0 查询当前用户提现订单")
|
||
* @Apidoc\Url("api/withdraw/withdrawCashList")
|
||
* @Apidoc\Method("POST")
|
||
*/
|
||
public function withdrawCashList(Request $request)
|
||
{
|
||
$page = $request->post('page');
|
||
$size = $request->post('size');
|
||
$status = $request->post('status');
|
||
$time = $request->post('time');
|
||
|
||
$userId = $request->data['id'];
|
||
// 初始化查询构建器
|
||
$query = Withdraw::query();
|
||
|
||
// 根据状态过滤
|
||
if ($status != 0) {
|
||
$query->where('status', $status);
|
||
}
|
||
|
||
// 根据时间过滤
|
||
if (!is_null($time)) {
|
||
$todayStart = Carbon::now()->startOfDay(); // 今天的开始时间 (00:00:00)
|
||
$todayEnd = Carbon::now()->endOfDay(); // 今天的结束时间 (23:59:59)
|
||
$yesterdayStart = Carbon::now()->subDay()->startOfDay(); // 昨天的开始时间
|
||
$sevenDaysAgoStart = Carbon::now()->subDays(7)->startOfDay(); // 七天前的开始时间
|
||
|
||
switch ($time) {
|
||
case 1:
|
||
$query->whereBetween('createtime2', [$todayStart, $todayEnd]);
|
||
break;
|
||
case 2:
|
||
$query->whereBetween('createtime2', [$yesterdayStart, $todayStart]);
|
||
break;
|
||
case 3:
|
||
$query->whereBetween('createtime2', [$sevenDaysAgoStart, $todayEnd]);
|
||
break;
|
||
}
|
||
}
|
||
|
||
// 添加用户ID过滤条件
|
||
$query->where('user_id', $userId);
|
||
$withdrawOrders = $query->orderBy('createtime2', 'desc')->get();
|
||
return ApiResponseApp::success($withdrawOrders);
|
||
}
|
||
|
||
|
||
/**
|
||
* @Apidoc\Title("小于1000直接转账,大于1000生成审批")
|
||
* @Apidoc\Url("api/withdraw/submit")
|
||
* @Apidoc\Method("POST")
|
||
*/
|
||
public function submit(Request $request)
|
||
{
|
||
$money_no = $request->post('money');
|
||
//不知道啥用
|
||
$bank_id = $request->post('bank_id');
|
||
$user_id=$request->data['id'];
|
||
$user=User::find($user_id);
|
||
//提现金额
|
||
$rate = ExchangeRate::where('type','BDT')->get();
|
||
$money = $money_no/100*$rate[0]['points'];
|
||
var_dump($money);
|
||
//用户积分减少$money
|
||
UserRewardDao::base($user_id, 1, -($money_no+300), '提现');
|
||
//大于1000等待管理员审核
|
||
if($money>=1000){
|
||
Withdraw::create([
|
||
'user_id' => $user_id,
|
||
'amount' => $money,
|
||
'status' => 1,
|
||
'createtime2' => date('Y-m-d H:i:s'),
|
||
'username' => $user->username,
|
||
'status_text' => '申请中',
|
||
]);
|
||
return ApiResponseApp::success(null,'等待管理员审核');
|
||
}
|
||
$userbank = Userbank::where('user_id',$user_id)->first();
|
||
$res = Payment::pushMoney($money,$userbank->bank_username,$userbank->account,$userbank->bank_name);
|
||
var_dump($res);
|
||
if ($res['Success'] == 200) {
|
||
Withdraw::create([
|
||
'user_id' => $user_id,
|
||
'amount' => $money,
|
||
'status' => 2,
|
||
'createtime2' => date('Y-m-d H:i:s'),
|
||
'username' => $user->username,
|
||
'status_text' => '已到账',
|
||
]);
|
||
return ApiResponseApp::success(null,'转账成功');
|
||
}else{
|
||
return ApiResponseApp::error(null,'转账失败');
|
||
}
|
||
return ApiResponseApp::success(null,'转账成功');
|
||
}
|
||
|
||
/**
|
||
* @Apidoc\Title("管理员同意转账")
|
||
* @Apidoc\Url("api/withdraw/pushMoney")
|
||
* @Apidoc\Method("POST")
|
||
*/
|
||
public function pushMoney(Request $request)
|
||
{
|
||
//金额
|
||
$amount = $request->post('amount');
|
||
//收款户名
|
||
$bank_username = $request->post('bank_username');
|
||
//收款帐号
|
||
$account = $request->post('account');
|
||
//收款银行名称
|
||
$bank_name = $request->post('bank_name');
|
||
//转账订单id
|
||
$id = $request->post('id');
|
||
//管理员审批结果
|
||
$type = $request->post('type');
|
||
|
||
if($type == 1){
|
||
$res = Payment::pushMoney($amount,$bank_username,$account,$bank_name);
|
||
var_dump($res);
|
||
if ($res['Success'] == 200) {
|
||
$userbank = Userbank::where('id',$id)->first();
|
||
$userbank->status = 2;
|
||
$userbank->status_text = '已到账';
|
||
$userbank->save();
|
||
return ApiResponseApp::success(null,'转账成功');
|
||
}else{
|
||
return ApiResponseApp::error(null,'转账失败');
|
||
}
|
||
}else{
|
||
$userbank = Userbank::where('id',$id)->first();
|
||
$userbank->status = 3;
|
||
$userbank->status_text = '已驳回';
|
||
$userbank->save();
|
||
$rate = ExchangeRate::where('type','BDT')->get();
|
||
//计算积分
|
||
$money = $amount*100/$rate[0]['points']+300;
|
||
//用户id
|
||
$user_id=$request->data['id'];
|
||
//用户积分增加$money
|
||
UserRewardDao::base($user_id, 1, $money, '提现失败返还');
|
||
return ApiResponseApp::error(null,'操作成功');
|
||
}
|
||
|
||
}
|
||
}
|