NissayaEndingController.php 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Models\NissayaEnding;
  4. use App\Models\Relation;
  5. use Illuminate\Http\Request;
  6. use App\Http\Resources\NissayaEndingResource;
  7. use App\Http\Api\AuthApi;
  8. use Illuminate\Support\Facades\App;
  9. class NissayaEndingController extends Controller
  10. {
  11. /**
  12. * Display a listing of the resource.
  13. *
  14. * @return \Illuminate\Http\Response
  15. */
  16. public function index(Request $request)
  17. {
  18. //
  19. $table = NissayaEnding::select(['id','ending','lang','relation','editor_id','updated_at']);
  20. if(($request->has('search'))){
  21. $table->where('ending', 'like', $request->get('search')."%");
  22. }
  23. if(!empty($request->get('order')) && !empty($request->get('dir'))){
  24. $table->orderBy($request->get('order'),$request->get('dir'));
  25. }else{
  26. $table->orderBy('updated_at','desc');
  27. }
  28. $count = $table->count();
  29. if(!empty($request->get('limit'))){
  30. $offset = 0;
  31. if(!empty($request->get("offset"))){
  32. $offset = $request->get("offset");
  33. }
  34. $table->skip($offset)->take($request->get('limit'));
  35. }
  36. $result = $table->get();
  37. if($result){
  38. return $this->ok(["rows"=>NissayaEndingResource::collection($result),"count"=>$count]);
  39. }else{
  40. return $this->error("没有查询到数据");
  41. }
  42. }
  43. /**
  44. * Store a newly created resource in storage.
  45. *
  46. * @param \Illuminate\Http\Request $request
  47. * @return \Illuminate\Http\Response
  48. */
  49. public function store(Request $request)
  50. {
  51. //
  52. $user = AuthApi::current($request);
  53. if(!$user){
  54. return $this->error(__('auth.failed'));
  55. }
  56. //TODO 判断权限
  57. $validated = $request->validate([
  58. 'ending' => 'required',
  59. 'lang' => 'required',
  60. 'relation' => 'required'
  61. ]);
  62. $new = new NissayaEnding;
  63. $new->ending = $validated['ending'];
  64. $new->lang = $validated['lang'];
  65. $new->relation = $validated['relation'];
  66. $new->editor_id = $user['user_uid'];
  67. $new->save();
  68. return $this->ok(new NissayaEndingResource($new));
  69. }
  70. /**
  71. * Display the specified resource.
  72. *
  73. * @param \App\Models\NissayaEnding $nissayaEnding
  74. * @return \Illuminate\Http\Response
  75. */
  76. public function show(NissayaEnding $nissayaEnding)
  77. {
  78. //
  79. return $this->ok(new NissayaEndingResource($nissayaEnding));
  80. }
  81. public function nissaya_card(Request $request)
  82. {
  83. //
  84. App::setLocale($request->get('lang'));
  85. $myEnding = NissayaEnding::where('ending',$request->get('ending'))
  86. ->groupBy('relation')
  87. ->select('relation')->get();
  88. if(count($myEnding) === 0){
  89. return $this->ok("# no record\n".$request->get('ending'));
  90. }
  91. $relations = Relation::whereIn('name',$myEnding)->get();
  92. if(count($relations) === 0){
  93. return $this->ok("# no relation\n".$request->get('ending'));
  94. }
  95. $output = "# 缅文语尾\n\n";
  96. $output .= "|格位|含义|翻译建议|关系|关系|\n";
  97. $output .= "|-|-|-|-|-|\n";
  98. foreach ($relations as $key => $relation) {
  99. if(empty($relation->case)){
  100. $output .= "|-|-|-|-|{$relation->name}|\n";
  101. continue;
  102. }
  103. $cases = json_decode($relation->case);
  104. foreach ($cases as $key => $case) {
  105. # code...
  106. $output .= "|".__("grammar.".$case);
  107. $output .= "|";
  108. //本地语言用法
  109. $output .= "|";
  110. $localLangs = NissayaEnding::where('relation',$relation['name'])
  111. ->where('lang',$request->get('lang'))->get();
  112. foreach ($localLangs as $localLang) {
  113. # code...
  114. $output .= $localLang->ending.",";
  115. }
  116. $output .= "|".__("grammar.relations.{$relation['name']}.label");
  117. $output .= "|".strtoupper($relation['name']);
  118. $output .= "|\n";
  119. }
  120. }
  121. return $this->ok($output);
  122. }
  123. /**
  124. * Update the specified resource in storage.
  125. *
  126. * @param \Illuminate\Http\Request $request
  127. * @param \App\Models\NissayaEnding $nissayaEnding
  128. * @return \Illuminate\Http\Response
  129. */
  130. public function update(Request $request, NissayaEnding $nissayaEnding)
  131. {
  132. //
  133. $user = AuthApi::current($request);
  134. if(!$user){
  135. return $this->error(__('auth.failed'));
  136. }
  137. //查询是否重复
  138. if(NissayaEnding::where('ending',$request->get('ending'))
  139. ->where('lang',$request->get('lang'))
  140. ->where('relation',$request->get('relation'))
  141. ->exists()){
  142. return $this->error(__('validation.exists',['name']));
  143. }
  144. $nissayaEnding->ending = $request->get('ending');
  145. $nissayaEnding->lang = $request->get('lang');
  146. $nissayaEnding->relation = $request->get('relation');
  147. $nissayaEnding->editor_id = $user['user_uid'];
  148. $nissayaEnding->save();
  149. return $this->ok(new NissayaEndingResource($nissayaEnding));
  150. }
  151. /**
  152. * Remove the specified resource from storage.
  153. *
  154. * @param \Illuminate\Http\Request $request
  155. * @param \App\Models\NissayaEnding $nissayaEnding
  156. * @return \Illuminate\Http\Response
  157. */
  158. public function destroy(Request $request,NissayaEnding $nissayaEnding)
  159. {
  160. //
  161. $user = AuthApi::current($request);
  162. if(!$user){
  163. return $this->error(__('auth.failed'));
  164. }
  165. //TODO 判断当前用户是否有权限
  166. $delete = 0;
  167. $delete = $nissayaEnding->delete();
  168. return $this->ok($delete);
  169. }
  170. }