UserController.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. <?php
  2. namespace App\Http\Controllers\Api;
  3. use App\Models\Setting;
  4. use App\Models\ShareConfig;
  5. use App\Models\User;
  6. use App\Models\UserShare;
  7. use App\Models\UserVip;
  8. use App\Models\UserWithdraw;
  9. use EasyWeChat\Factory;
  10. use function Symfony\Component\Translation\t;
  11. class UserController extends Controller
  12. {
  13. public function get()
  14. {
  15. return out();
  16. }
  17. // 购买记录
  18. public function memberRecord()
  19. {
  20. $user = auth('api')->user();
  21. $record = UserVip::where('user_id',$user['id'])->first()->toArray();
  22. if(empty($record)){
  23. return out();
  24. }
  25. return out([
  26. 'order_fee' => $record['order_fee'],
  27. 'buy_time' => $record['created_at'],
  28. ]);
  29. }
  30. // 余额
  31. public function overage()
  32. {
  33. $user = auth('api')->user();
  34. $user = User::where('user_id',$user['id'])->first()->toArray();
  35. return out([
  36. 'overage' => $user['overage'],
  37. ]);
  38. }
  39. // 收益
  40. public function income()
  41. {
  42. $user = auth('api')->user();
  43. $builder = UserShare::with(['child'])->where('user_id',$user['id']);
  44. $data = $builder->paginate($req['per_page'] ?? 15);
  45. $total_num = $builder->sum('id');
  46. $custom = collect([
  47. 'total_num' => $total_num,
  48. ]);
  49. $data = $custom->merge($data);
  50. return out($data);
  51. }
  52. // 购买会员
  53. public function buy()
  54. {
  55. $user = auth('api')->user();
  56. $shareConfig = Setting::first()->toArray();
  57. $orderId = get_order_id($user['id']);
  58. \DB::beginTransaction();
  59. $app = Factory::payment(config('wechat.payment.default'));
  60. $jssdk = $app->jssdk;
  61. try {
  62. $order = UserVip::where('user_id', $user['id'])->first();
  63. if(empty($order) || empty($order->prepay_id)){
  64. $order = UserVip::create([
  65. 'order_id' => $orderId,
  66. 'user_id' => $user['id'],
  67. 'order_fee' => $shareConfig['member_price']
  68. ]);
  69. $payment = $app->order->unify([
  70. 'body' => '三哥桥梁-会员充值',
  71. 'out_trade_no' => $orderId,
  72. 'total_fee' => $shareConfig['member_price']*100, // 分
  73. 'notify_url' => 'https://pay.weixin.qq.com/wxpay/pay.action', // 支付结果通知网址,如果不设置则会使用配置里的默认地址
  74. 'trade_type' => 'JSAPI', // 请对应换成你的支付方式对应的值类型
  75. 'openid' => $user['openid'],
  76. ]);
  77. if($payment['return_code'] != "SUCCESS" || $payment['result_code'] != 'SUCCESS'){
  78. throw new \Exception($payment['return_msg']);
  79. }
  80. $order->prepay_id = $payment['prepay_id'];
  81. $order->save();
  82. }
  83. if($order->status == 0){
  84. $data = $jssdk->bridgeConfig($order->prepay_id,false);
  85. }else{
  86. throw new \Exception('您已经是会员了');
  87. }
  88. \DB::commit();
  89. }catch (\Exception $ex){
  90. \DB::rollBack();
  91. return out([],10012,$ex->getMessage());
  92. }
  93. return out($data);
  94. }
  95. }