Withdraw.php 3.3 KB

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