Withdraw.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: scstf
  5. * Date: 2019/4/18
  6. * Time: 14:09
  7. */
  8. namespace App\Api\Model;
  9. use \System\Model;
  10. use Biz\Account\AccountManager;
  11. class Withdraw extends Model
  12. {
  13. /**
  14. * 奖记录中
  15. *
  16. * @access public
  17. * @return String
  18. */
  19. public function withdrawalRequest()
  20. {
  21. // 获取用户信息
  22. $accountManagerClass = new AccountManager;
  23. $userInfo = $accountManagerClass -> getCurrentUser();
  24. if (empty($userInfo['identity'])) {
  25. Render([], '2001', lang('Common','Api') -> get('user does login'));
  26. }
  27. // 验证提款金额小于一百
  28. if (!$_POST['money'] || $_POST['money'] < 100) {
  29. Render([], '2112', lang('Common','Api') -> get('cash withdrawal less than 100'));
  30. }
  31. $accountDetailedWhere = array();
  32. // 用户ID
  33. $accountDetailedWhere['account_identity'] = $userInfo['identity'];
  34. $accountDetailedSelect = ['available_cash', 'cash'];
  35. $accountDetailed = lm('account_detailed', "commons");
  36. // 获取用户可提现金额
  37. $accountInfo = $accountDetailed -> accountDetailed($accountDetailedSelect, $accountDetailedWhere);
  38. // 验证提款额度大于可提现余额
  39. if($accountInfo['available_cash'] < $_POST['money']) {
  40. Render([], '2112', lang('Common','Api') -> get('insufficient amount of account'));
  41. }
  42. //验证交易密码
  43. $accountManagerClass -> verifyPayPwd($userInfo['identity'], $_POST['payPassword']);
  44. // 用户银行卡
  45. $bankCardWhere['account_identity'] = $userInfo['identity'];
  46. $bankCardWhere['bank_number'] = $_POST['bank_number'];
  47. $bankCardSelect = ['bank_number', 'account_name', 'bank_address', 'bank_name'];
  48. $getBankCardInfo = lm('account_bank', "commons");
  49. // 用户是否绑定该银行卡
  50. $bankCardInfo = $getBankCardInfo -> bankCard($bankCardSelect, $bankCardWhere);
  51. if(!$bankCardInfo['bank_number']) {
  52. Render([], '2114', lang('Common','Api') -> get('the bank card is not bound'));
  53. }
  54. //生成订单id
  55. $order_id = OrderID();
  56. //提现后总金额
  57. $cashMoney = floatval($accountInfo['cash']) - floatval($_POST['money']);
  58. //提现后可提现金额
  59. $availableCashMoney = floatval($accountInfo['available_cash']) - floatval($_POST['money']);
  60. $moneyTakeData = array(
  61. 'info_identity' => UUID(),
  62. 'order_id' => $order_id,
  63. 'account_identity' => $userInfo['identity'],
  64. 'account_name' => $userInfo['name'],
  65. 'money' => $_POST['money'],
  66. 'apply_time' => date('Y-m-d H:i:s', time()),
  67. 'apply_date' => date('Y-m-d', time()),
  68. 'bank_info' => $bankCardInfo['bank_name'],
  69. 'bank_no' => $_POST['bank_number'],
  70. 'bank_address' => $bankCardInfo['bank_address'],
  71. 'bank_user' => $bankCardInfo['account_name'],
  72. 'money_cash' => $cashMoney,
  73. );
  74. //验证三分钟内不能重复提交提现申请
  75. $moneyTake = lm('money_take', 'commons');
  76. $takeRecordWhere['account_identity'] = $userInfo['identity'];
  77. $takeRecordSelect = ['apply_time'];
  78. $moneyTakeInfo = $moneyTake -> takeRecord($takeRecordSelect, $takeRecordWhere);
  79. $applyTime = date('Y-m-d H:i:s', time() - 300);
  80. if ($moneyTakeInfo) {
  81. if (!empty($moneyTakeInfo['apply_time']) && $moneyTakeInfo['apply_time'] >= $applyTime) {
  82. Render([], '2051', lang('Common','Api') -> get('you have submitted your application for withdrawal'));
  83. }
  84. }
  85. // 添加提现记录
  86. _beginTransaction();
  87. try {
  88. $insertTake = $moneyTake -> insertTake($moneyTakeData);
  89. if ($insertTake) {
  90. $accountUpdateData = [
  91. 'available_cash' => $availableCashMoney,
  92. 'cash' => $cashMoney,
  93. ];
  94. $updateAccountWhere['account_identity'] = $userInfo['identity'];
  95. // 修改用户信息表剩余金额
  96. $updateResult = $accountDetailed -> updateDetailed($updateAccountWhere, $accountUpdateData);
  97. if ($updateResult > 0) {
  98. _commit();
  99. Render([], '40453', lang('Common','Api') -> get('application has been submitted and customer service is under review'));
  100. }
  101. }
  102. } catch (PDOException $e) {
  103. _rollBack();
  104. Render([], '141313', lang('Common','Api') -> get('the application failed. Please try again'));
  105. }
  106. }
  107. }