ProgressChapterController.php 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Models\ProgressChapter;
  4. use App\Models\Channel;
  5. use Illuminate\Http\Request;
  6. class ProgressChapterController extends Controller
  7. {
  8. /**
  9. * Display a listing of the resource.
  10. *
  11. * @return \Illuminate\Http\Response
  12. */
  13. public function index(Request $request)
  14. {
  15. //
  16. $selectCol = ['progress_chapters.book',
  17. 'progress_chapters.para',
  18. 'progress_chapters.channel_id',
  19. 'progress_chapters.title',
  20. 'pali_texts.toc',
  21. 'progress',
  22. 'progress_chapters.created_at',
  23. 'progress_chapters.updated_at'
  24. ];
  25. $chapters=false;
  26. switch ($request->get('view')) {
  27. case 'studio':
  28. #查询该studio的channel
  29. $channels = Channel::where('owner_uid',$request->get('id'))->select('uid')->get();
  30. $aChannel = [];
  31. foreach ($channels as $channel) {
  32. # code...
  33. $aChannel[] = $channel->uid;
  34. }
  35. $chapters = ProgressChapter::select($selectCol)
  36. ->whereIn('progress_chapters.channel_id', $aChannel)
  37. ->leftJoin('pali_texts', function($join)
  38. {
  39. $join->on('progress_chapters.book', '=', 'pali_texts.book');
  40. $join->on('progress_chapters.para','=','pali_texts.paragraph');
  41. })
  42. ->where('progress','>',0.85)
  43. ->orderby('progress_chapters.created_at','desc')
  44. ->get();
  45. break;
  46. case 'tag':
  47. $aChannel = [67,68,69,70];
  48. $chapters = ProgressChapter::select($selectCol)
  49. ->whereIn('progress_chapters.book', $aChannel)
  50. ->leftJoin('pali_texts', function($join)
  51. {
  52. $join->on('progress_chapters.book', '=', 'pali_texts.book');
  53. $join->on('progress_chapters.para','=','pali_texts.paragraph');
  54. })
  55. ->orderby('progress','desc')
  56. ->get();
  57. break;
  58. case 'done':
  59. $chapters = ProgressChapter::select($selectCol)
  60. ->where('progress','>',0.85)
  61. ->leftJoin('pali_texts', function($join)
  62. {
  63. $join->on('progress_chapters.book', '=', 'pali_texts.book');
  64. $join->on('progress_chapters.para','=','pali_texts.paragraph');
  65. })
  66. ->orderby('progress_chapters.created_at','desc')
  67. ->skip(0)->take(20)
  68. ->get();
  69. foreach ($chapters as $key => $value) {
  70. # code...
  71. $chapters[$key]['channel_info'] = Channel::where('uid',$value->channel_id)->select(['name','owner_uid'])->first();
  72. }
  73. break;
  74. }
  75. if($chapters){
  76. return $this->ok(["rows"=>$chapters,"count"=>count($chapters)]);
  77. }else{
  78. return $this->error("没有查询到数据");
  79. }
  80. }
  81. /**
  82. * Show the form for creating a new resource.
  83. *
  84. * @return \Illuminate\Http\Response
  85. */
  86. public function create()
  87. {
  88. //
  89. }
  90. /**
  91. * Store a newly created resource in storage.
  92. *
  93. * @param \Illuminate\Http\Request $request
  94. * @return \Illuminate\Http\Response
  95. */
  96. public function store(Request $request)
  97. {
  98. //
  99. }
  100. /**
  101. * Display the specified resource.
  102. *
  103. * @param \App\Models\ProgressChapter $progressChapter
  104. * @return \Illuminate\Http\Response
  105. */
  106. public function show(ProgressChapter $progressChapter)
  107. {
  108. //
  109. }
  110. /**
  111. * Show the form for editing the specified resource.
  112. *
  113. * @param \App\Models\ProgressChapter $progressChapter
  114. * @return \Illuminate\Http\Response
  115. */
  116. public function edit(ProgressChapter $progressChapter)
  117. {
  118. //
  119. }
  120. /**
  121. * Update the specified resource in storage.
  122. *
  123. * @param \Illuminate\Http\Request $request
  124. * @param \App\Models\ProgressChapter $progressChapter
  125. * @return \Illuminate\Http\Response
  126. */
  127. public function update(Request $request, ProgressChapter $progressChapter)
  128. {
  129. //
  130. }
  131. /**
  132. * Remove the specified resource from storage.
  133. *
  134. * @param \App\Models\ProgressChapter $progressChapter
  135. * @return \Illuminate\Http\Response
  136. */
  137. public function destroy(ProgressChapter $progressChapter)
  138. {
  139. //
  140. }
  141. }