UserExtractController.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <?php
  2. namespace app\api\controller\user;
  3. use app\models\store\StoreOrder;
  4. use app\models\user\UserBill;
  5. use app\models\user\UserExtract;
  6. use app\Request;
  7. use crmeb\services\UtilService;
  8. /**
  9. * 提现类
  10. * Class UserExtractController
  11. * @package app\api\controller\user
  12. */
  13. class UserExtractController
  14. {
  15. /**
  16. * 提现银行
  17. * @param Request $request
  18. * @return mixed
  19. */
  20. public function bank(Request $request)
  21. {
  22. $user = $request->user();
  23. $broken_time = intval(sys_config('extract_time', '', $request->mer_id()));
  24. $search_time = time() - 86400 * $broken_time;
  25. //可提现佣金
  26. //返佣 +
  27. $brokerage_commission = UserBill::where(['uid' => $user['uid'], 'category' => 'now_money', 'type' => 'brokerage'])
  28. ->where('add_time', '>', $search_time)
  29. ->where('pm', 1)
  30. ->sum('number');
  31. //退款退的佣金 -
  32. $refund_commission = UserBill::where(['uid' => $user['uid'], 'category' => 'now_money', 'type' => 'brokerage'])
  33. ->where('add_time', '>', $search_time)
  34. ->where('pm', 0)
  35. ->sum('number');
  36. $data['broken_commission'] = bcsub($brokerage_commission, $refund_commission, 2);
  37. if ($data['broken_commission'] < 0)
  38. $data['broken_commission'] = 0;
  39. // return $data;
  40. $data['brokerage_price'] = $user['brokerage_price'];
  41. //可提现佣金
  42. $data['commissionCount'] = $data['brokerage_price'] - $data['broken_commission'];
  43. $extractBank = sys_config('user_extract_bank', '', $request->mer_id()) ?? []; //提现银行
  44. $extractBank = str_replace("\r\n", "\n", $extractBank);//防止不兼容
  45. $data['extractBank'] = explode("\n", is_array($extractBank) ? (isset($extractBank[0]) ? $extractBank[0] : $extractBank) : $extractBank);
  46. $data['minPrice'] = sys_config('user_extract_min_price', '', $request->mer_id());//提现最低金额
  47. return app('json')->successful($data);
  48. }
  49. /**
  50. * 提现申请
  51. * @param Request $request
  52. * @return mixed
  53. */
  54. public function cash(Request $request)
  55. {
  56. $extractInfo = UtilService::postMore([
  57. ['alipay_code', ''],
  58. ['extract_type', ''],
  59. ['money', 0],
  60. ['name', ''],
  61. ['bankname', ''],
  62. ['cardnum', ''],
  63. ['weixin', ''],
  64. ], $request);
  65. if (!preg_match('/^(([1-9]\d*)|0)(\.\d{1-2})?$/', $extractInfo['money'])) return app('json')->fail('提现金额输入有误');
  66. $user = $request->user();
  67. $broken_time = intval(sys_config('extract_time', '', $request->mer_id()));
  68. $search_time = time() - 86400 * $broken_time;
  69. //可提现佣金
  70. //返佣 +
  71. $brokerage_commission = UserBill::where(['uid' => $user['uid'], 'category' => 'now_money', 'type' => 'brokerage'])
  72. ->where('add_time', '>', $search_time)
  73. ->where('pm', 1)
  74. ->sum('number');
  75. //退款退的佣金 -
  76. $refund_commission = UserBill::where(['uid' => $user['uid'], 'category' => 'now_money', 'type' => 'brokerage'])
  77. ->where('add_time', '>', $search_time)
  78. ->where('pm', 0)
  79. ->sum('number');
  80. $data['broken_commission'] = bcsub($brokerage_commission, $refund_commission, 2);
  81. if ($data['broken_commission'] < 0)
  82. $data['broken_commission'] = 0;
  83. $data['brokerage_price'] = $user['brokerage_price'];
  84. //可提现佣金
  85. $commissionCount = $data['brokerage_price'] - $data['broken_commission'];
  86. if ($extractInfo['money'] > $commissionCount) return app('json')->fail('可提现佣金不足');
  87. if (!$extractInfo['cardnum'] == '')
  88. if (!preg_match('/^([1-9]{1})(\d{14}|\d{18})$/', $extractInfo['cardnum']))
  89. return app('json')->fail('银行卡号输入有误');
  90. if (UserExtract::userExtract($request->user(), $extractInfo, $request->mer_id()))
  91. return app('json')->successful('申请提现成功!');
  92. else
  93. return app('json')->fail(UserExtract::getErrorInfo('提现失败'));
  94. }
  95. }