Withdraw.php 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <?php
  2. namespace app\controller\v2;
  3. use app\extra\basic\Base;
  4. use app\middleware\WxMiddleware;
  5. use app\model\blue\BlueExpert;
  6. use app\model\blue\BlueWithdrawLog;
  7. use LinFly\Annotation\Route\Controller;
  8. use LinFly\Annotation\Route\Middleware;
  9. use LinFly\Annotation\Route\Route;
  10. use support\Request;
  11. use support\Response;
  12. /**
  13. * 提现
  14. */
  15. #[Controller(prefix: "/wx_v2/withdraw"),Middleware(WxMiddleware::class)]
  16. class Withdraw extends Base
  17. {
  18. /**
  19. * 获取可提现金额
  20. * @param Request $request
  21. * @return Response
  22. */
  23. #[Route(path: "balance",methods: "get")]
  24. public function getBalance(Request $request): Response
  25. {
  26. try {
  27. $balance = (new BlueExpert)->where("openid",$request->user['openid'])->value("balance");
  28. if ($balance > 0) $balance = format_money($balance/100);
  29. return successTrans("success.data",compact("balance"));
  30. } catch (\Throwable $throwable) {
  31. return error($throwable->getMessage());
  32. }
  33. }
  34. /**
  35. * 申请提现
  36. * @param Request $request
  37. * @return Response
  38. */
  39. #[Route(path: "submit",methods: "post")]
  40. public function submitData(Request $request): Response
  41. {
  42. try {
  43. $param = $this->_valid([
  44. "money.require" => trans("empty.require"),
  45. "bank.require" => trans("empty.require")
  46. ],$request->method());
  47. if(!is_array($param)) return error($param);
  48. $balance = (new BlueExpert)->where("openid",$request->user['openid'])->findOrEmpty();
  49. if ($balance->isEmpty()) return error("非法操作");
  50. if ($param['money'] * 100 > $balance['balance']) return error("余额不足");
  51. $bankData = is_string($param['bank']) ? json_decode($param['bank'],true):$param['bank'];
  52. if (!isset($bankData['bank_code'])) return error("银行卡数据错误");
  53. $state = (new BlueWithdrawLog)->insertGetId([
  54. "openid" => $request->user['openid'],
  55. "bank_id" => $bankData['bank_code'],
  56. "money" => $param['money'] * 100
  57. ]);
  58. if (!$state) return errorTrans("error.data");
  59. $balance->balance = $balance['balance'] - ($param['money'] * 100);
  60. $balance->save();
  61. return successTrans("success.data");
  62. } catch (\Throwable $throwable) {
  63. return error($throwable->getMessage());
  64. }
  65. }
  66. }