RechargeController.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  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\RechargeCombo;
  7. use App\Models\Setting;
  8. use App\Models\UserConsumeRecord;
  9. use App\Models\UserEpisodesRecord;
  10. use App\Models\UserRechargeRecord;
  11. use App\Models\UserWatchRecord;
  12. use Carbon\Carbon;
  13. use Dingo\Api\Http\Request;
  14. use Illuminate\Database\Eloquent\Builder;
  15. use Illuminate\Database\QueryException;
  16. class RechargeController extends Controller
  17. {
  18. public function record(Request $request)
  19. {
  20. $limit = $request->input('limit', 10);
  21. $page = $request->input('page', 1);
  22. $offset = ($page - 1) * 10;
  23. $date = $request->input('date');
  24. $date= $date??Carbon::now()->format('Y-m');
  25. $lists = UserRechargeRecord::filterUser()
  26. ->when($date,function ($query,$date){
  27. /* @var Builder $query*/
  28. return $query->where('created_at', 'like', "$date%");
  29. })
  30. ->where('status', 1)
  31. ->orderByDesc('id')
  32. ->limit($limit)
  33. ->offset($offset)
  34. ->get();
  35. return $this->success($lists);
  36. }
  37. public function createOrder()
  38. {
  39. try {
  40. /* @var Setting $setting*/
  41. $setting = Setting::first();
  42. if($setting->is_review) {
  43. throw new \Exception('暂不支持,请联系管理员');
  44. }
  45. \DB::beginTransaction();
  46. $comboId = \request()->input('id');
  47. $app = $this->getUniFactory(\user()->info->platform);
  48. $combo = RechargeCombo::find($comboId);
  49. // 避免重复创建订单
  50. $recharge = UserRechargeRecord::where('user_id', \user()->id)
  51. ->where('combo_id', $combo->id)
  52. ->where('status', 0)
  53. ->where('created_at','like', Carbon::now()->toDateString()."%")
  54. ->first();
  55. if($recharge){
  56. $pay = Pay::find($recharge->pay_id);
  57. if(\user()->info->platform == 3){
  58. $res = $app->payment()->jssdk->bridgeConfig($pay->prepay_id);
  59. $res = json_decode($res, true);
  60. }else{
  61. $res = [
  62. 'order_id' => $pay->prepay_id,
  63. 'order_token' => $pay->token,
  64. ];
  65. }
  66. }else{
  67. $res = app(Pay::class)->create($app, $combo->price, Pay::SOURCE_RECHARGE);
  68. $recharge = new UserRechargeRecord();
  69. $recharge->user_id = \user()->id;
  70. $recharge->combo_id = $combo->id;
  71. $recharge->price = $combo->price;
  72. $recharge->gold = $combo->gold;
  73. $recharge->gift = $combo->gift;
  74. $recharge->pay_id = $res['pay_id'];
  75. $recharge->status = 0;
  76. $recharge->save();
  77. if(\user()->info->platform == 3){
  78. $pay = Pay::find($res['pay_id']);
  79. $res = $app->payment()->jssdk->bridgeConfig($pay->prepay_id);
  80. $res = json_decode($res, true);
  81. }
  82. }
  83. $res['pay_id'] = $recharge->pay_id;
  84. \DB::commit();
  85. return $this->success($res);
  86. }catch (QueryException $e){
  87. \DB::rollBack();
  88. return $this->error('下单失败');
  89. }catch (\Exception $e){
  90. \DB::rollBack();
  91. return $this->error($e->getMessage());
  92. }
  93. }
  94. }