VipController.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <?php
  2. namespace App\Http\Controllers\V1\User;
  3. use App\Helper\SerialNumber;
  4. use App\Http\Controllers\V1\Controller;
  5. use App\Models\Pay;
  6. use App\Models\UserConsumeRecord;
  7. use App\Models\UserEpisodesRecord;
  8. use App\Models\UserRechargeRecord;
  9. use App\Models\UserVipRecord;
  10. use App\Models\UserWatchRecord;
  11. use App\Models\VipCombo;
  12. use Carbon\Carbon;
  13. use Dingo\Api\Http\Request;
  14. use Illuminate\Database\Eloquent\Builder;
  15. use Illuminate\Database\QueryException;
  16. class VipController extends Controller
  17. {
  18. public function setting()
  19. {
  20. $lists = VipCombo::select(['id','name','price','valid_day','desc'])->where('status', 1)->get();
  21. return $this->success($lists);
  22. }
  23. public function createOrder()
  24. {
  25. try {
  26. \DB::beginTransaction();
  27. $comboId = \request()->input('id');
  28. $app = $this->getUniFactory(\user()->info->platform);
  29. $combo = VipCombo::find($comboId);
  30. // 避免重复创建订单
  31. $vip = UserVipRecord::where('user_id', \user()->id)
  32. ->where('combo_id', $combo->id)
  33. ->where('status', 0)
  34. ->where('created_at','like', Carbon::now()->toDateString()."%")
  35. ->first();
  36. if($vip){
  37. $pay = Pay::find($vip->pay_id);
  38. $res = [
  39. 'order_id' => $pay->prepay_id,
  40. 'order_token' => $pay->token,
  41. 'pay_id' => $pay->pay_id,
  42. ];
  43. }else{
  44. $res = app(Pay::class)->create($app, $combo->price,Pay::SOURCE_BUY_VIP);
  45. $recharge = new UserVipRecord();
  46. $recharge->user_id = \user()->id;
  47. $recharge->combo_id = $combo->id;
  48. $recharge->valid_day = $combo->valid_day;
  49. $recharge->pay_id = $res['pay_id'];
  50. $recharge->status = 0;
  51. $recharge->save();
  52. }
  53. \DB::commit();
  54. return $this->success($res);
  55. }catch (QueryException $e){
  56. \DB::rollBack();
  57. return $this->error('下单失败');
  58. }catch (\Exception $e){
  59. \DB::rollBack();
  60. return $this->error($e->getMessage());
  61. }
  62. }
  63. }