EpisodeController.php 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <?php
  2. namespace App\Http\Controllers\V1\User;
  3. use App\Http\Controllers\V1\Controller;
  4. use App\Models\Episode;
  5. use App\Models\EpisodesList;
  6. use App\Models\UserConsumeRecord;
  7. use App\Models\UserEpisodesRecord;
  8. use App\Models\UserInfo;
  9. use Illuminate\Database\QueryException;
  10. class EpisodeController extends Controller
  11. {
  12. public function buyRecord($episode)
  13. {
  14. $lists = UserEpisodesRecord::filterUser()
  15. ->select(['episodes_id','list_id'])
  16. ->where('episodes_id',$episode)
  17. ->get()
  18. ->pluck('list_id');
  19. return $this->success($lists);
  20. }
  21. public function buy($episode,$list)
  22. {
  23. try {
  24. \DB::beginTransaction();
  25. $episode = Episode::find($episode);
  26. $list = EpisodesList::find($list);
  27. $user = UserInfo::find(\user()->id);
  28. $count = UserEpisodesRecord::filterUser()->where('list_id',$list->id)->count();
  29. if($count){
  30. return $this->error('请勿重复购买');
  31. }
  32. if($user->integral < $list->sale_price){
  33. return $this->success([
  34. 'overage' => 0
  35. ],0,'余额不足');
  36. }
  37. // 购买记录
  38. $record = new UserEpisodesRecord();
  39. $record->user_id =\user()->id;
  40. $record->episodes_id = $episode->id;
  41. $record->list_id = $list->id;
  42. $record->price = $list->sale_price;
  43. $record->status = 1;
  44. $record->save();
  45. // 记录日志
  46. app(UserConsumeRecord::class)->record(
  47. \user()->id,
  48. UserConsumeRecord::TYPE_CONSUME,
  49. -$list->sale_price,
  50. "购买短剧 {$episode->name} 第{$list->sort}集"
  51. );
  52. // 扣除金币
  53. $user->integral = $user->integral - $list->sale_price;
  54. $user->save();
  55. \DB::commit();
  56. return $this->success(['episode_id' => $episode, 'list_id' => $list]);
  57. }catch (QueryException $e){
  58. \DB::rollBack();
  59. return $this->error('购买失败');
  60. }catch (\Exception $ex){
  61. \DB::rollBack();
  62. return $this->error('购买失败');
  63. }
  64. }
  65. }