UserController.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  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. $user = auth('api')->user();
  16. $user = User::with(['parent'])->where('id',$user['id'])->first()->toArray();
  17. return out($user);
  18. }
  19. // 购买记录
  20. public function memberRecord()
  21. {
  22. $user = auth('api')->user();
  23. $record = UserVip::where('user_id',$user['id'])
  24. ->where('status',1)
  25. ->first()
  26. ->toArray();
  27. if(empty($record)){
  28. return out();
  29. }
  30. return out([
  31. 'order_fee' => $record['order_fee'],
  32. 'buy_time' => $record['pay_at'],
  33. ]);
  34. }
  35. // 余额
  36. public function overage()
  37. {
  38. $user = auth('api')->user();
  39. $user = User::where('id',$user['id'])->first()->toArray();
  40. return out([
  41. 'overage' => $user['overage'],
  42. ]);
  43. }
  44. // 收益
  45. public function income()
  46. {
  47. $user = auth('api')->user();
  48. $builder = UserShare::with(['child'])->where('user_id',$user['id']);
  49. $data = $builder->paginate($req['per_page'] ?? 15);
  50. $total_num = $builder->sum('id');
  51. $custom = collect([
  52. 'total_num' => $total_num,
  53. ]);
  54. $data = $custom->merge($data);
  55. return out($data);
  56. }
  57. // 购买会员
  58. public function buy()
  59. {
  60. $user = auth('api')->user();
  61. $shareConfig = Setting::first()->toArray();
  62. $orderId = get_order_id($user['id']);
  63. \DB::beginTransaction();
  64. $app = Factory::payment(config('wechat.payment.default'));
  65. $jssdk = $app->jssdk;
  66. try {
  67. $order = UserVip::where('user_id', $user['id'])->first();
  68. if(empty($order) || empty($order->prepay_id)){
  69. $order = UserVip::create([
  70. 'order_id' => $orderId,
  71. 'user_id' => $user['id'],
  72. 'order_fee' => $shareConfig['member_price']
  73. ]);
  74. $payment = $app->order->unify([
  75. 'body' => '三哥桥梁-会员充值',
  76. 'out_trade_no' => $orderId,
  77. 'total_fee' => $shareConfig['member_price']*100, // 分
  78. 'notify_url' => 'https://pay.weixin.qq.com/wxpay/pay.action', // 支付结果通知网址,如果不设置则会使用配置里的默认地址
  79. 'trade_type' => 'JSAPI', // 请对应换成你的支付方式对应的值类型
  80. 'openid' => $user['openid'],
  81. ]);
  82. if($payment['return_code'] != "SUCCESS" || $payment['result_code'] != 'SUCCESS'){
  83. throw new \Exception($payment['return_msg']);
  84. }
  85. $order->prepay_id = $payment['prepay_id'];
  86. $order->save();
  87. }
  88. if($order->status == 0){
  89. $data = $jssdk->bridgeConfig($order->prepay_id,false);
  90. }else{
  91. return out([],10013,'您已经是会员了!');
  92. }
  93. \DB::commit();
  94. }catch (\Exception $ex){
  95. \DB::rollBack();
  96. return out([],10012,$ex->getMessage());
  97. }
  98. return out($data);
  99. }
  100. // 查询购买订单
  101. public function query()
  102. {
  103. $user = auth('api')->user();
  104. $order = UserVip::where('user_id', $user['id'])->first()->toArray();
  105. return out($order);
  106. }
  107. public function shares()
  108. {
  109. $user = auth('api')->user();
  110. $builder = User::where('parent_id', $user['id'])->orderBy('become_child_at','desc');
  111. $data = $builder->paginate($req['per_page'] ?? 15);
  112. $total_num = $builder->sum('id');
  113. $custom = collect([
  114. 'total_num' => $total_num,
  115. ]);
  116. $data = $custom->merge($data);
  117. return out($data);
  118. }
  119. }