UserRechargeController.php 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. <?php
  2. namespace app\api\controller\user;
  3. use app\admin\model\user\UserRecharge as UserRechargeModel;
  4. use app\models\system\SystemGroupData;
  5. use app\models\user\UserRecharge;
  6. use app\Request;
  7. use crmeb\services\GroupDataService;
  8. use crmeb\services\SystemConfigService;
  9. use crmeb\services\UtilService;
  10. /**
  11. * 充值类
  12. * Class UserRechargeController
  13. * @package app\api\controller\user
  14. */
  15. class UserRechargeController
  16. {
  17. /**
  18. * 小程序充值
  19. *
  20. * @param Request $request
  21. * @return mixed
  22. */
  23. public function routine(Request $request)
  24. {
  25. list($price, $recharId, $type) = UtilService::postMore([['price', 0], ['rechar_id', 0], ['type', 0]], $request, true);
  26. if (!$price || $price <= 0) return app('json')->fail('参数错误');
  27. $storeMinRecharge = sys_config('store_user_min_recharge');
  28. if ($price < $storeMinRecharge) return app('json')->fail('充值金额不能低于' . $storeMinRecharge);
  29. switch ((int)$type) {
  30. case 0: //支付充值余额
  31. $paid_price = 0;
  32. if ($recharId) {
  33. $data = SystemGroupData::getDateValue($recharId);
  34. if ($data === false) {
  35. return app('json')->fail('您选择的充值方式已下架!');
  36. } else {
  37. $paid_price = $data['give_money'] ?? 0;
  38. }
  39. }
  40. $rechargeOrder = UserRecharge::addRecharge($request->uid(), $price, 'routine', $paid_price);
  41. if (!$rechargeOrder) return app('json')->fail('充值订单生成失败!');
  42. try {
  43. return app('json')->successful(UserRecharge::jsPay($rechargeOrder));
  44. } catch (\Exception $e) {
  45. return app('json')->fail($e->getMessage());
  46. }
  47. break;
  48. case 1: //佣金转入余额
  49. if (UserRecharge::importNowMoney($request->uid(), $price))
  50. return app('json')->successful('转入余额成功');
  51. else
  52. return app('json')->fail(UserRecharge::getErrorInfo());
  53. break;
  54. default:
  55. return app('json')->fail('缺少参数');
  56. break;
  57. }
  58. }
  59. /**
  60. * 公众号充值
  61. *
  62. * @param Request $request
  63. * @return mixed
  64. */
  65. public function wechat(Request $request)
  66. {
  67. list($price, $recharId, $from, $type) = UtilService::postMore([['price', 0], ['rechar_id', 0], ['from', 'weixin'], ['type', 0]], $request, true);
  68. if (!$price || $price <= 0) return app('json')->fail('参数错误');
  69. $storeMinRecharge = sys_config('store_user_min_recharge');
  70. if ($price < $storeMinRecharge) return app('json')->fail('充值金额不能低于' . $storeMinRecharge);
  71. switch ((int)$type) {
  72. case 0: //支付充值余额
  73. $paid_price = 0;
  74. if ($recharId) {
  75. $data = SystemGroupData::getDateValue($recharId);
  76. if ($data === false) {
  77. return app('json')->fail('您选择的充值方式已下架!');
  78. } else {
  79. $paid_price = $data['give_money'] ?? 0;
  80. }
  81. }
  82. $rechargeOrder = UserRecharge::addRecharge($request->uid(), $price, 'weixin', $paid_price);
  83. if (!$rechargeOrder) return app('json')->fail('充值订单生成失败!');
  84. try {
  85. if ($from == 'weixinh5') {
  86. $recharge = UserRecharge::wxH5Pay($rechargeOrder);
  87. } else {
  88. $recharge = UserRecharge::wxPay($rechargeOrder);
  89. }
  90. } catch (\Exception $e) {
  91. return app('json')->fail($e->getMessage());
  92. }
  93. return app('json')->successful(['type' => $from, 'data' => $recharge]);
  94. break;
  95. case 1: //佣金转入余额
  96. if (UserRecharge::importNowMoney($request->uid(), $price))
  97. return app('json')->successful('转入余额成功');
  98. else
  99. return app('json')->fail(UserRecharge::getErrorInfo());
  100. break;
  101. default:
  102. return app('json')->fail('缺少参数');
  103. break;
  104. }
  105. }
  106. public function rechargeList(Request $request)
  107. {
  108. $where = UtilService::getMore([
  109. ['status', ''],
  110. ['page', 1],
  111. ['limit', 10,],
  112. ], $request);
  113. $where['uid'] = $request->uid();
  114. return app('json')->successful('ok', UserRechargeModel::getUserRechargeList($where));
  115. }
  116. public function moneyRecharge(Request $request)
  117. {
  118. list($num, $money_type) = UtilService::postMore([
  119. ['num', 0], ['money_type', 0, '', '', [function ($item) {
  120. $money_type = init_money_type();
  121. if (!isset($money_type[$item]))
  122. return false;
  123. else
  124. return true;
  125. }], ['请选择正确的币种']]
  126. ], $request, true);
  127. if (!$num || $num <= 0) return app('json')->fail('参数错误');
  128. $rechargeOrder = UserRecharge::addRecharge($request->uid(), $num, $money_type);
  129. if (!$rechargeOrder) return app('json')->fail('充值订单生成失败!');
  130. $money_types = sys_data('money_type');
  131. foreach ($money_types as $v) {
  132. if ($v['code'] == $money_type)
  133. return app('json')->successful('充值订单已生成,请前往充值!', array_merge($v, ['id' => $rechargeOrder['id'], 'order_id' => $rechargeOrder['order_id']]));
  134. }
  135. return app('json')->successful('充值订单已生成,请前往充值');
  136. }
  137. public function uploadProof($id, Request $request)
  138. {
  139. list($proof) = UtilService::postMore([
  140. ['proof', '']
  141. ], $request, true);
  142. if (!$proof || $proof == "") return app('json')->fail('参数错误');
  143. $rechargeOrder = UserRecharge::get($id);
  144. if (!$rechargeOrder || $rechargeOrder['uid'] != $request->uid()) return app('json')->fail('订单异常');
  145. if ($rechargeOrder['paid'] != 0) return app('json')->fail('订单状态异常');
  146. $rechargeOrder->paid = 2;
  147. $rechargeOrder->proof = $proof;
  148. $res = $rechargeOrder->save();
  149. if (!$res) return app('json')->fail('凭证上传失败!');
  150. return app('json')->successful('凭证上传成功');
  151. }
  152. /**
  153. * 充值额度选择
  154. * @return mixed
  155. */
  156. public function index()
  157. {
  158. $rechargeQuota = sys_data('user_recharge_quota') ?? [];
  159. $data['recharge_quota'] = $rechargeQuota;
  160. $recharge_attention = sys_config('recharge_attention');
  161. $recharge_attention = explode("\n", $recharge_attention);
  162. $data['recharge_attention'] = $recharge_attention;
  163. return app('json')->successful($data);
  164. }
  165. }