|
|
@@ -0,0 +1,84 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+namespace App\Http\Controllers\admin;
|
|
|
+
|
|
|
+use App\Constants\HttpStatus;
|
|
|
+use App\Http\Controllers\Controller;
|
|
|
+use App\Models\Config;
|
|
|
+use App\Services\BalanceLogService;
|
|
|
+use App\Services\RebateService;
|
|
|
+use App\Services\WalletService;
|
|
|
+use Carbon\Carbon;
|
|
|
+use Illuminate\Http\Request;
|
|
|
+use Illuminate\Support\Facades\DB;
|
|
|
+use Illuminate\Validation\ValidationException;
|
|
|
+use Exception;
|
|
|
+
|
|
|
+class Rebate extends Controller
|
|
|
+{
|
|
|
+ function index()
|
|
|
+ {
|
|
|
+ try {
|
|
|
+ $search = request()->validate([
|
|
|
+ 'page' => ['nullable', 'integer', 'min:1'],
|
|
|
+ 'limit' => ['nullable', 'integer', 'min:1'],
|
|
|
+ 'member_id' => ['nullable', 'string', 'min:1'],
|
|
|
+ 'date' => ['nullable', 'date_format:Y-m-d'],
|
|
|
+ ]);
|
|
|
+ $result = RebateService::paginate($search);
|
|
|
+ } catch (ValidationException $e) {
|
|
|
+ return $this->error(HttpStatus::CUSTOM_ERROR, $e->validator->errors()->first());
|
|
|
+ } catch (Exception $e) {
|
|
|
+ return $this->error(intval($e->getCode()));
|
|
|
+ }
|
|
|
+ return $this->success($result);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public function store(Request $request)
|
|
|
+ {
|
|
|
+ DB::beginTransaction();
|
|
|
+ try {
|
|
|
+ $params = request()->validate([
|
|
|
+ 'id' => ['required', 'integer', 'min:1'],
|
|
|
+ ]);
|
|
|
+ $params['id'];
|
|
|
+ $params['status'] = 0;
|
|
|
+ $rebate = RebateService::findOne($params);
|
|
|
+ if (!$rebate) throw new Exception('数据不存在', HttpStatus::CUSTOM_ERROR);
|
|
|
+ $date = Carbon::now('America/New_York')->format('Y-m-d');
|
|
|
+ if (strtotime($rebate->date) >= strtotime($date)) {
|
|
|
+ throw new Exception('未到发放时间', HttpStatus::CUSTOM_ERROR);
|
|
|
+ }
|
|
|
+
|
|
|
+ $rebate_ratio = Config::where('field', 'rebate')->first()->val;
|
|
|
+ $rebateAmount = bcmul($rebate->betting_amount, $rebate_ratio, 2); // 返利金额
|
|
|
+
|
|
|
+
|
|
|
+ $rebate->amount = $rebateAmount;
|
|
|
+ $rebate->rebate_ratio = $rebate_ratio;
|
|
|
+ $rebate->status = 1;
|
|
|
+ $rebate->save();
|
|
|
+ if ($rebateAmount > 0) {
|
|
|
+ $res = WalletService::updateBalance($rebate->member_id, $rebateAmount);
|
|
|
+ BalanceLogService::addLog(
|
|
|
+ $rebate->member_id,
|
|
|
+ $rebateAmount,
|
|
|
+ $res['before_balance'],
|
|
|
+ $res['after_balance'],
|
|
|
+ '返水',
|
|
|
+ $rebate->id,
|
|
|
+ '');
|
|
|
+ }
|
|
|
+
|
|
|
+ DB::commit();
|
|
|
+ } catch (ValidationException $e) {
|
|
|
+ DB::rollBack();
|
|
|
+ return $this->error(HttpStatus::CUSTOM_ERROR, $e->validator->errors()->first());
|
|
|
+ } catch (Exception $e) {
|
|
|
+ DB::rollBack();
|
|
|
+ return $this->error(intval($e->getCode()), $e->getMessage());
|
|
|
+ }
|
|
|
+ return $this->success();
|
|
|
+ }
|
|
|
+}
|