WithdrawController.php 5.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <?php
  2. namespace app\controller;
  3. use app\business\GoodsBusiness;
  4. use app\business\LoginBusiness;
  5. use app\business\PayorderBusiness;
  6. use app\business\WithdrawBusiness;
  7. use Illuminate\Support\Arr;
  8. use Respect\Validation\Validator;
  9. use support\Db;
  10. use support\Redis;
  11. use support\Request;
  12. use hg\apidoc\annotation as Apidoc;
  13. use Webman\Captcha\CaptchaBuilder;
  14. use Webman\Captcha\PhraseBuilder;
  15. #[Apidoc\Title("提现")]
  16. #[Apidoc\Group("Stream")]
  17. #[Apidoc\Sort(5)]
  18. class WithdrawController
  19. {
  20. #[Apidoc\Title("提现申请")]
  21. #[Apidoc\Url("api/withdraw.html")]
  22. #[Apidoc\Method("POST")]
  23. #[Apidoc\Header("token", type: "string", require: true, desc: "身份令牌Token", mock: "@token")]
  24. #[Apidoc\Param("money", type: "int", require: true, desc: "提现金额", mock: 10)]
  25. #[Apidoc\Param("mold", type: "int", require: true, desc: "钱包类型 ", mock: 1)]
  26. #[Apidoc\Param(name: "pay_characteristic", type: "int", require: true, desc: '支付通道标识', default: '1')]
  27. #[Apidoc\Param(name: "binding_type", type: "int", require: true, desc: '我的资产转入:1=支付宝,2=微信', default: '1')]
  28. public function applyfor(Request $request)
  29. {
  30. $param = Arr::only($request->param_data,['money','mold','binding_type']);
  31. $param['user_data'] = $request->user_data;
  32. Db::beginTransaction();
  33. try {
  34. Validator::input($param, [
  35. 'money' => Validator::notEmpty()->Number()->setName('提现金额'),
  36. 'mold' => Validator::notEmpty()->intType()->setName('钱包类型'),
  37. ]);
  38. $name = Db::table('wa_user_identity')->where('uid', $request->user_data['id'])->value('name');
  39. if (empty($name)) {
  40. throw new \Exception('请实名后再进行提现!');
  41. }
  42. $account_holder = Db::table('wa_bank_card')->where('uid', $request->user_data['id'])->value('account_holder');
  43. if (empty($account_holder)) {
  44. throw new \Exception('请绑定银行卡!');
  45. }
  46. if ($account_holder != $name) {
  47. throw new \Exception('实名人和开户人不一致,请绑定实名人的银行卡!');
  48. }
  49. $arr = WithdrawBusiness::applyfor($param);
  50. } catch (\Throwable $exception) {
  51. Db::rollBack();
  52. return error($exception->getMessage());
  53. }
  54. Db::commit();
  55. return success($arr, '提现成功');
  56. }
  57. #[Apidoc\Title("提现记录")]
  58. #[Apidoc\Url("api/withdraw/stream.html")]
  59. #[Apidoc\Method("POST")]
  60. #[Apidoc\Header("token", type: "string", require: true, desc: "身份令牌Token", mock: "@token")]
  61. #[Apidoc\Param("page", type: "int", require: true, desc: "页面", mock: 1)]
  62. #[Apidoc\Param("limit", type: "int", require: true, desc: "输入条数", mock: 10)]
  63. #[Apidoc\Param("mold", type: "int", require: true, desc: "钱包类型 ", mock: 1)]
  64. #[Apidoc\Param("type", type: "int", require: true, desc: "钱包类型 1=转入记录(全部),2=支付宝转入,3=微信转入,4=提现记录 ", mock: 1)]
  65. #[Apidoc\Returned(name: "order_no", type: "string", require: true, desc: '订单号', default: '23213213213217182937291')]
  66. #[Apidoc\Returned(name: "money", type: "string", require: true, desc: '提现金额', default: '100.00')]
  67. #[Apidoc\Returned(name: "status", type: "string", require: true, desc: '提现状态 1 待审核 2打款中 3审核通过(成功,通过) 4驳回(失败)', default: '1')]
  68. #[Apidoc\Returned(name: "binding_type", type: "string", require: true, desc: '1=转入支付宝,2=转入微信', default: '1')]
  69. #[Apidoc\Returned(name: "affiliated_bank", type: "string", require: true, desc: '归属银行', default: '中国银行')]
  70. #[Apidoc\Returned(name: "account_holder", type: "string", require: true, desc: '开户人', default: '张三')]
  71. #[Apidoc\Returned(name: "card_number", type: "string", require: true, desc: '卡号', default: '12321321376763274682374681')]
  72. #[Apidoc\Returned(name: "created_at", type: "date", require: true, desc: '申请时间', default: '2023-05-20 23:49:49')]
  73. public function stream(Request $request)
  74. {
  75. $param = $request->param_data;
  76. $param = Arr::only($param, ['page', 'limit', 'mold']);
  77. $param['user_data'] = $request->user_data;
  78. try {
  79. Validator::input($param, [
  80. 'page' => Validator::notEmpty()->intType()->setName('页码'),
  81. 'limit' => Validator::notEmpty()->intType()->setName('输出条数'),
  82. ]);
  83. $data = WithdrawBusiness::stream($param);
  84. } catch (\Throwable $exception) {
  85. return error($exception->getMessage());
  86. }
  87. return success($data['data'], '成功', 200, $data['total']);
  88. }
  89. }