webman/app/controller/api/WithdrawController.php

171 lines
5.5 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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'];
//用户积分减少$money
UserRewardDao::base($user_id, 1, -$money_no, '提现');
//大于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'];
//用户id
$user_id=$request->data['id'];
//用户积分增加$money
UserRewardDao::base($user_id, 1, $money, '提现失败返还');
return ApiResponseApp::error(null,'操作成功');
}
}
}