From 98711dd3a01cb741a30678dc50dfe97ab35b4d21 Mon Sep 17 00:00:00 2001 From: zhuchunshu Date: Sun, 6 Aug 2023 13:10:19 +0800 Subject: [PATCH] =?UTF-8?q?Fix:=E4=BF=AE=E5=A4=8D=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E8=B4=A2=E5=AF=8C=E5=85=91=E6=8D=A2=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Users/management/edit/options.blade.php | 4 +- .../src/Controller/ExChangeApiController.php | 71 +++++++++++-------- 2 files changed, 44 insertions(+), 31 deletions(-) diff --git a/app/Plugins/User/resources/views/Admin/Users/management/edit/options.blade.php b/app/Plugins/User/resources/views/Admin/Users/management/edit/options.blade.php index ccab5ec80..a0b735818 100644 --- a/app/Plugins/User/resources/views/Admin/Users/management/edit/options.blade.php +++ b/app/Plugins/User/resources/views/Admin/Users/management/edit/options.blade.php @@ -23,13 +23,13 @@
- +
- +
diff --git a/app/Plugins/User/src/Controller/ExChangeApiController.php b/app/Plugins/User/src/Controller/ExChangeApiController.php index 6cb24df93..d3cc9d87e 100644 --- a/app/Plugins/User/src/Controller/ExChangeApiController.php +++ b/app/Plugins/User/src/Controller/ExChangeApiController.php @@ -1,6 +1,6 @@ input('data'); $captcha = request()->input('captcha'); - if (!$data || !$captcha) { + if (! $data || ! $captcha) { return Json_Api(403, false, ['msg' => '请求参数不足']); } - if (!captcha()->check($captcha)) { + if (! captcha()->check($captcha)) { return Json_Api(403, false, ['msg' => '验证码错误']); } $data = de_stringify(request()->input('data')); - if (!Arr::has($data, 'moneyTo_golds_num')) { + if (! Arr::has($data, 'moneyTo_golds_num')) { return Json_Api(403, false, ['msg' => '请求参数不足']); } // 兑换的金币数量 $moneyTo_golds_num = $data['moneyTo_golds_num']; - if (!is_numeric($moneyTo_golds_num) || $moneyTo_golds_num <= 0) { + if (! is_numeric($moneyTo_golds_num) || $moneyTo_golds_num <= 0) { return Json_Api(403, false, ['msg' => '请求参数格式有误']); } + $moneyTo_golds_num = (float) $moneyTo_golds_num; $user = User::query()->with('Options')->find(auth()->id()); // 最多能兑换的金币数量 - $dc = \Hyperf\Stringable\Str::after($user->Options->money, '.'); + $dc = \Hyperf\Stringable\Str::after((string) $user->Options->money, '.'); $dc = \Hyperf\Stringable\Str::length($dc); - $max = intval($user->Options->money * get_options('wealth_how_many_money_to_golds', '1')); + $max = floatval($user->Options->money * get_options('wealth_how_many_money_to_golds', '1')); if ($moneyTo_golds_num > $max) { return Json_Api(403, false, ['msg' => '超出最大兑换限制']); } // 不能花的钱 - $_money = round($user->Options->money - intval($user->Options->money * get_options('wealth_how_many_money_to_golds', '1')) / get_options('wealth_how_many_money_to_golds', '1'), $dc); + $_money = round($user->Options->money - floatval($user->Options->money * get_options('wealth_how_many_money_to_golds', '1')) / get_options('wealth_how_many_money_to_golds', '1'), $dc); // 找钱 $give_change = (string) ($max - $moneyTo_golds_num) / get_options('wealth_how_many_money_to_golds', '1') + $_money; // 扣费 @@ -61,42 +64,46 @@ public function moneyTo_golds() : array $options_id = auth()->data()->options_id; $option = UsersOption::query()->find($options_id); PayAmountRecord::query()->create(['original' => $option->money, 'cash' => round($option->money - $deduction, $dc), 'user_id' => auth()->id(), 'remark' => '兑换' . get_options('wealth_golds_name', '金币')]); - UsersOption::query()->where('id', $options_id)->update(['money' => round($option->money - $deduction, $dc), 'golds' => intval($option->golds + $moneyTo_golds_num)]); + $option->setMoneyAttribute(round($option->money - $deduction, $dc)); + $option->setGoldsAttribute(floatval($option->golds + $moneyTo_golds_num)); + $option->save(); return Json_Api(201, true, ['msg' => '兑换成功!']); } + // 金币转积分 + #[PostMapping('goldsTo_credit')] - public function goldsTo_credit() : array + public function goldsTo_credit(): array { $data = request()->input('data'); $captcha = request()->input('captcha'); - if (!$data || !$captcha) { + if (! $data || ! $captcha) { return Json_Api(403, false, ['msg' => '请求参数不足']); } - if (!captcha()->check($captcha)) { + if (! captcha()->check($captcha)) { return Json_Api(403, false, ['msg' => '验证码错误']); } $data = de_stringify(request()->input('data')); - if (!Arr::has($data, 'goldsTo_credit_num')) { + if (! Arr::has($data, 'goldsTo_credit_num')) { return Json_Api(403, false, ['msg' => '请求参数不足']); } // 兑换的金币数量 $goldsTo_credit_num = $data['goldsTo_credit_num']; - if (!is_numeric($goldsTo_credit_num) || $goldsTo_credit_num <= 0) { + if (! is_numeric($goldsTo_credit_num) || $goldsTo_credit_num <= 0) { return Json_Api(403, false, ['msg' => '请求参数格式有误']); } $user = User::query()->with('Options')->find(auth()->id()); // 兑换比例 $proportion = get_options('wealth_how_many_golds_to_credit', 10); // 最多能兑换的金币数量 - $max = intval($user->Options->golds * $proportion); - $dc = \Hyperf\Stringable\Str::after($user->Options->golds, '.'); + $max = floatval($user->Options->golds * $proportion); + $dc = \Hyperf\Stringable\Str::after((string) $user->Options->golds, '.'); $dc = \Hyperf\Stringable\Str::length($dc); if ($goldsTo_credit_num > $max) { return Json_Api(403, false, ['msg' => '超出最大兑换限制']); } // 不能花的钱 - $_money = round($user->Options->golds - intval($user->Options->golds * $proportion) / $proportion, $dc); + $_money = round($user->Options->golds - floatval($user->Options->golds * $proportion) / $proportion, $dc); // 找钱 $give_change = (string) ($max - $goldsTo_credit_num) / $proportion + $_money; // 扣费 @@ -105,42 +112,46 @@ public function goldsTo_credit() : array $options_id = auth()->data()->options_id; $option = UsersOption::query()->find($options_id); PayAmountRecord::query()->create(['original' => '【' . get_options('wealth_golds_name', '金币') . '】' . $option->golds, 'cash' => '【' . get_options('wealth_golds_name', '金币') . '】' . round($option->golds - $deduction, $dc), 'user_id' => auth()->id(), 'remark' => '兑换' . get_options('wealth_credit_name', '积分')]); - UsersOption::query()->where('id', $options_id)->update(['golds' => round($option->golds - $deduction, $dc), 'credits' => intval($option->credits + $goldsTo_credit_num)]); + $option->setGoldsAttribute(round($option->golds - $deduction, $dc)); + $option->setCreditsAttribute(floatval($option->credits + $goldsTo_credit_num)); + $option->save(); return Json_Api(201, true, ['msg' => '兑换成功!']); } + // 余额转积分 + #[PostMapping('moneyTo_credit')] - public function moneyTo_credit() : array + public function moneyTo_credit(): array { $data = request()->input('data'); $captcha = request()->input('captcha'); - if (!$data || !$captcha) { + if (! $data || ! $captcha) { return Json_Api(403, false, ['msg' => '请求参数不足']); } - if (!captcha()->check($captcha)) { + if (! captcha()->check($captcha)) { return Json_Api(403, false, ['msg' => '验证码错误']); } $data = de_stringify(request()->input('data')); - if (!Arr::has($data, 'moneyTo_credit_num')) { + if (! Arr::has($data, 'moneyTo_credit_num')) { return Json_Api(403, false, ['msg' => '请求参数不足']); } // 兑换的金币数量 $moneyTo_credit_num = $data['moneyTo_credit_num']; - if (!is_numeric($moneyTo_credit_num) || $moneyTo_credit_num <= 0) { + if (! is_numeric($moneyTo_credit_num) || $moneyTo_credit_num <= 0) { return Json_Api(403, false, ['msg' => '请求参数格式有误']); } $user = User::query()->with('Options')->find(auth()->id()); // 兑换比例 $proportion = get_options('wealth_how_many_money_to_credit', get_options('wealth_how_many_money_to_golds', '1') * get_options('wealth_how_many_golds_to_credit', 10)); // 最多能兑换的金币数量 - $max = intval($user->Options->money * $proportion); - $dc = \Hyperf\Stringable\Str::after($user->Options->money, '.'); + $max = floatval($user->Options->money * $proportion); + $dc = \Hyperf\Stringable\Str::after((string) $user->Options->money, '.'); $dc = \Hyperf\Stringable\Str::length($dc); if ($moneyTo_credit_num > $max) { return Json_Api(403, false, ['msg' => '超出最大兑换限制']); } // 不能花的钱 - $_money = round($user->Options->money - intval($user->Options->money * $proportion) / $proportion, $dc); + $_money = round($user->Options->money - floatval($user->Options->money * $proportion) / $proportion, $dc); // 找钱 $give_change = (string) ($max - $moneyTo_credit_num) / $proportion + $_money; // 扣费 @@ -149,7 +160,9 @@ public function moneyTo_credit() : array $options_id = auth()->data()->options_id; $option = UsersOption::query()->find($options_id); PayAmountRecord::query()->create(['original' => $option->money, 'cash' => round($option->money - $deduction, $dc), 'user_id' => auth()->id(), 'remark' => '兑换' . get_options('wealth_credit_name', '积分')]); - UsersOption::query()->where('id', $options_id)->update(['money' => round($option->money - $deduction, $dc), 'credits' => intval($option->credits + $moneyTo_credit_num)]); + $option->setMoneyAttribute(round($option->money - $deduction, $dc)); + $option->setCreditsAttribute(floatval($option->credits + $moneyTo_credit_num)); + $option->save(); return Json_Api(201, true, ['msg' => '兑换成功!']); } -} \ No newline at end of file +}