SentenceController.php 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Models\Sentence;
  4. use Illuminate\Http\Request;
  5. class SentenceController extends Controller
  6. {
  7. /**
  8. * Display a listing of the resource.
  9. *
  10. * @return \Illuminate\Http\Response
  11. */
  12. public function index(Request $request)
  13. {
  14. $result=false;
  15. $indexCol = ['id','book_id','paragraph','word_start','word_end','content','channel_uid','updated_at'];
  16. switch ($request->get('view')) {
  17. case 'fulltext':
  18. if(isset($_COOKIE['user_uid'])){
  19. $userUid = $_COOKIE['user_uid'];
  20. }
  21. $key = $request->get('key');
  22. if(empty($key)){
  23. return $this->error("没有关键词");
  24. }
  25. $table = Sentence::select($indexCol)
  26. ->where('content','like', '%'.$key.'%')
  27. ->where('editor_uid',$userUid);
  28. if(!empty($request->get('order')) && !empty($request->get('dir'))){
  29. $table->orderBy($request->get('order'),$request->get('dir'));
  30. }else{
  31. $table->orderBy('updated_at','desc');
  32. }
  33. $count = $table->count();
  34. if(!empty($request->get('limit'))){
  35. $offset = 0;
  36. if(!empty($request->get("offset"))){
  37. $offset = $request->get("offset");
  38. }
  39. $table->skip($offset)->take($request->get('limit'));
  40. }
  41. $result = $table->get();
  42. break;
  43. case 'user':
  44. # code...
  45. $userUid = $_COOKIE['user_uid'];
  46. $search = $request->get('search');
  47. $table = Sentence::select($indexCol)
  48. ->where('owner', $userUid);
  49. if(!empty($search)){
  50. $table->where('word', 'like', $search."%")
  51. ->orWhere('word_en', 'like', $search."%")
  52. ->orWhere('meaning', 'like', "%".$search."%");
  53. }
  54. if(!empty($request->get('order')) && !empty($request->get('dir'))){
  55. $table->orderBy($request->get('order'),$request->get('dir'));
  56. }else{
  57. $table->orderBy('updated_at','desc');
  58. }
  59. $count = $table->count();
  60. if(!empty($request->get('limit'))){
  61. $offset = 0;
  62. if(!empty($request->get("offset"))){
  63. $offset = $request->get("offset");
  64. }
  65. $table->skip($offset)->take($request->get('limit'));
  66. }
  67. $result = $table->get();
  68. break;
  69. case 'word':
  70. $result = Sentence::select($indexCol)
  71. ->where('word', $request->get("word"))
  72. ->orderBy('created_at','desc')
  73. ->get();
  74. break;
  75. case 'hot-meaning':
  76. $key='term/hot_meaning';
  77. $value = Cache::get($key, function()use($request) {
  78. $hotMeaning=[];
  79. $words = Sentence::select('word')
  80. ->where('language',$request->get("language"))
  81. ->groupby('word')
  82. ->get();
  83. foreach ($words as $key => $word) {
  84. # code...
  85. $result = Sentence::select(DB::raw('count(*) as word_count, meaning'))
  86. ->where('language',$request->get("language"))
  87. ->where('word',$word['word'])
  88. ->groupby('meaning')
  89. ->orderby('word_count','desc')
  90. ->first();
  91. if($result){
  92. $hotMeaning[]=[
  93. 'word'=>$word['word'],
  94. 'meaning'=>$result['meaning'],
  95. 'language'=>$request->get("language"),
  96. 'owner'=>'',
  97. ];
  98. }
  99. }
  100. Cache::put($key, $hotMeaning, 3600);
  101. return $hotMeaning;
  102. });
  103. return $this->ok(["rows"=>$value,"count"=>count($value)]);
  104. break;
  105. default:
  106. # code...
  107. break;
  108. }
  109. if($result){
  110. return $this->ok(["rows"=>$result,"count"=>$count]);
  111. }else{
  112. return $this->error("没有查询到数据");
  113. }
  114. }
  115. /**
  116. * Show the form for creating a new resource.
  117. *
  118. * @return \Illuminate\Http\Response
  119. */
  120. public function create()
  121. {
  122. //
  123. }
  124. /**
  125. * Store a newly created resource in storage.
  126. *
  127. * @param \Illuminate\Http\Request $request
  128. * @return \Illuminate\Http\Response
  129. */
  130. public function store(Request $request)
  131. {
  132. //
  133. }
  134. /**
  135. * Display the specified resource.
  136. *
  137. * @param \App\Models\Sentence $sentence
  138. * @return \Illuminate\Http\Response
  139. */
  140. public function show(Sentence $sentence)
  141. {
  142. //
  143. }
  144. /**
  145. * Show the form for editing the specified resource.
  146. *
  147. * @param \App\Models\Sentence $sentence
  148. * @return \Illuminate\Http\Response
  149. */
  150. public function edit(Sentence $sentence)
  151. {
  152. //
  153. }
  154. /**
  155. * Update the specified resource in storage.
  156. *
  157. * @param \Illuminate\Http\Request $request
  158. * @param \App\Models\Sentence $sentence
  159. * @return \Illuminate\Http\Response
  160. */
  161. public function update(Request $request, Sentence $sentence)
  162. {
  163. //
  164. }
  165. /**
  166. * Remove the specified resource from storage.
  167. *
  168. * @param \App\Models\Sentence $sentence
  169. * @return \Illuminate\Http\Response
  170. */
  171. public function destroy(Sentence $sentence)
  172. {
  173. //
  174. }
  175. }