GameUserController.php 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. <?php
  2. namespace App\Admin\Controllers;
  3. use App\Admin\Actions\Course\CourseHoles;
  4. use App\Models\Game;
  5. use App\Models\GameType;
  6. use App\Models\GameUser;
  7. use App\Models\GameUserScore;
  8. use App\Models\User;
  9. use Dcat\Admin\Form;
  10. use Dcat\Admin\Grid;
  11. use Dcat\Admin\Show;
  12. use Dcat\Admin\Http\Controllers\AdminController;
  13. use Illuminate\Support\Facades\Log;
  14. class GameUserController extends AdminController
  15. {
  16. /**
  17. * Make a grid builder.
  18. *
  19. * @return Grid
  20. */
  21. protected function grid()
  22. {
  23. $grid = new Grid(new GameUser());
  24. $grid->model()->orderByDesc('id');
  25. $grid->disableCreateButton();
  26. $grid->disableRowSelector();
  27. $grid->disableActions();
  28. $grid->column('id')->sortable();
  29. $grid->column('game_id')->display(function ($game_id) {
  30. $game = Game::query()->find($game_id);
  31. if ($game) {
  32. return '<span class="label" style="background:#21b978;line-height: 40px;">' . $game->name . '</span>';
  33. } else {
  34. return "";
  35. }
  36. });
  37. $grid->column('user_id')->display(function ($user_id) {
  38. $user = User::query()->find($user_id);
  39. $str = "";
  40. if ($user) {
  41. $str .= "<div style='margin-right:10px;display: flex;align-items: center'>";
  42. $str .= '<img data-action="preview-img" src="' . $user->avatar . '" style="max-width:50px;max-height:50px;cursor:pointer;margin-right:5px;" class="img img-thumbnail">';
  43. $str .= '<div>';
  44. $str .= '<p style="margin-bottom: 2px">ID:' . $user->id . '</p>';
  45. $str .= '<p>' . trans('user.fields.name') . ':' . $user->name . '</p>';
  46. $str .= "</div>";
  47. $str .= "</div>";
  48. }
  49. return $str;
  50. });
  51. $grid->column('level')->using([
  52. 1 => trans('game-user.fields.red'),
  53. 2 => trans('game-user.fields.white'),
  54. 3 => trans('game-user.fields.blue'),
  55. 4 => trans('game-user.fields.gold')])
  56. ->label(['gray', 'red', 'white', 'blue', 'gold']);
  57. $grid->column('type')->using([
  58. 1 => trans('game-user.fields.normal'),
  59. 2 => trans('game-user.fields.fictitious')])
  60. ->label(['gray', 'green']);
  61. $grid->column('scores')->display(function ($res) {
  62. $game_user_score = (new GameUserScore())->setTable('gu')->from('game_user_scores as gu')
  63. ->where('gu.game_user_id', $this->id)
  64. ->leftJoin('course_holes as ch', 'ch.id', '=', 'gu.hole_id')
  65. ->select('gu.score', 'ch.sort', 'ch.par', 'ch.course_field_id')
  66. ->orderBy('sort', 'asc')
  67. ->get()
  68. ->toArray();
  69. //总标杆
  70. $par_total = 0;
  71. foreach ($game_user_score as $key => $val) {
  72. $par_total += $val['par'];
  73. }
  74. //总成绩
  75. $game_user_score_total = GameUserScore::where('game_user_id', $this->id)->sum('score');
  76. //前九标杆
  77. $bf9_par_total = 0;
  78. foreach ($game_user_score as $key => $val) {
  79. if($val['sort'] <= 9){
  80. $bf9_par_total += $val['par'];
  81. }
  82. }
  83. //前九成绩
  84. $bf9_score = 0;
  85. foreach ($game_user_score as $key => $val) {
  86. if($val['sort'] <= 9){
  87. $bf9_score += $val['score'];
  88. }
  89. }
  90. //球洞
  91. $hole_con = '';
  92. foreach ($game_user_score as $key => $val) {
  93. $hole_con .= "<td>" . ($key + 1) . "</td>";
  94. if($val['sort'] == 9){
  95. $hole_con .= "<td>" . trans('game-user.fields.before9') . "</td>";
  96. }
  97. }
  98. //标杆
  99. $par_con = '';
  100. foreach ($game_user_score as $key => $val) {
  101. $par_con .= "<td>" . $val['par'] . "</td>";
  102. if($val['sort'] == 9){
  103. $par_con .= "<td>" . $bf9_par_total . "</td>";
  104. }
  105. }
  106. //成绩
  107. $score_con = '';
  108. foreach ($game_user_score as $key => $val) {
  109. $score_con .= "<td>" . $val['score'] . "</td>";
  110. if($val['sort'] == 9){
  111. $score_con .= "<td>" . $bf9_score . "</td>";
  112. }
  113. }
  114. $str = "<style>
  115. .scores_table td{
  116. border: 1px solid #ccc!important;
  117. width: 40px;
  118. }
  119. </style>
  120. <table class='scores_table' style='text-align: center'>
  121. <tr>
  122. <td>" . trans('game-user.fields.hole') . "</td>
  123. " . $hole_con . "
  124. <td>" . trans('game-user.fields.Total_rod') . "</td>
  125. </tr>
  126. <tr>
  127. <td>" . trans('game-user.fields.par') . "</td>
  128. " . $par_con . "
  129. <td>" . $par_total . "</td>
  130. </tr>
  131. <tr>
  132. <td>" . trans('game-user.fields.rod') . "</td>
  133. " . $score_con . "
  134. <td>" . $game_user_score_total . "</td>
  135. </tr>
  136. </table>";
  137. return $str;
  138. });
  139. $grid->filter(function (Grid\Filter $filter) {
  140. $filter->equal('id');
  141. $game_type = Game::query()->get();
  142. $game_type_arr = array();
  143. foreach ($game_type as $v) {
  144. $game_type_arr[$v['id']] = $v['name'];
  145. }
  146. $filter->equal('game_id')->select($game_type_arr);
  147. $user = User::query()->where('status', 1)->get()->toArray();
  148. $user_arr = array();
  149. foreach ($user as $v) {
  150. $user_arr[$v['id']] = $v['name'];
  151. }
  152. $filter->equal('user_id')->select($user_arr);
  153. $filter->equal('type')->select([1 => trans('game-user.fields.normal'), 2 => trans('game-user.fields.fictitious')]);
  154. });
  155. return $grid;
  156. }
  157. /**
  158. * Make a show builder.
  159. *
  160. * @param mixed $id
  161. *
  162. * @return Show
  163. */
  164. protected function detail($id)
  165. {
  166. return Show::make($id, new GameUser(), function (Show $show) {
  167. $show->field('id');
  168. $show->field('game_id');
  169. $show->field('user_id');
  170. $show->field('level');
  171. $show->field('type');
  172. $show->field('created_at');
  173. $show->field('updated_at');
  174. });
  175. }
  176. /**
  177. * Make a form builder.
  178. *
  179. * @return Form
  180. */
  181. protected function form()
  182. {
  183. return Form::make(new GameUser(), function (Form $form) {
  184. $form->display('id');
  185. $form->text('game_id');
  186. $form->text('user_id');
  187. $form->text('level');
  188. $form->text('type');
  189. $form->display('created_at');
  190. $form->display('updated_at');
  191. });
  192. }
  193. }