Soldier.php 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. <?php
  2. namespace app\mobile\controller;
  3. use app\common\model\SoldierModel;
  4. use app\common\model\SoldierVideoModel;
  5. use app\common\model\SoldierVideoSeriesModel;
  6. use app\common\model\SoldierVideoWatchModel;
  7. use app\mobile\MobileBaseController;
  8. class Soldier extends MobileBaseController
  9. {
  10. public function login()
  11. {
  12. return view();
  13. }
  14. public function doLogin()
  15. {
  16. $param = input('post.');
  17. if (empty($param['mobile']) || empty($param['password'])) {
  18. ajax_return(1, '请输入手机号或密码');
  19. }
  20. $soldier = SoldierModel::where('mobile', $param['mobile'])->find();
  21. if (empty($soldier)) {
  22. ajax_return(1, '手机号不存在');
  23. }
  24. if ($soldier['password'] != md5(md5($soldier['salt']) . $param['password'])) {
  25. ajax_return(1, '密码错误');
  26. }
  27. session('mobile.soldier.id', $soldier['id']);
  28. ajax_return();
  29. }
  30. public function index()
  31. {
  32. $soldier = get_soldier();
  33. return view('');
  34. }
  35. public function listVideo()
  36. {
  37. $soldier = get_soldier();
  38. $where = [
  39. ['status', '=', SoldierVideoSeriesModel::STATUS_SHOW],
  40. ];
  41. $list = SoldierVideoSeriesModel::where($where)
  42. ->order(['priority' => 'desc', 'id' => 'desc'])
  43. ->limit(input('limit', 5))
  44. ->page(input('page', 1))
  45. ->select();
  46. foreach ($list as $v) {
  47. $video_list = SoldierVideoModel::where('series_id', $v['id'])
  48. ->where('status', SoldierVideoModel::STATUS_SHOW)
  49. ->append(['is_must_text'])
  50. ->limit(3)
  51. ->order('priority desc')
  52. ->select();
  53. $video_ids = $video_list->column('id');
  54. $watch_list = SoldierVideoWatchModel::where('user_id', $soldier['id'])
  55. ->where('video_id', 'in', $video_ids)
  56. ->column('status', 'video_id');
  57. foreach ($video_list as $video) {
  58. if (empty($watch_list[$video['id']])) {
  59. $video['watch_status'] = 1;
  60. } else {
  61. $video['watch_status'] = $watch_list[$video['id']];
  62. }
  63. $video['watch_text'] = SoldierVideoWatchModel::STATUS[$video['watch_status']];
  64. }
  65. $v['video'] = $video_list;
  66. }
  67. ajax_success($list);
  68. }
  69. public function series()
  70. {
  71. $soldier = get_soldier();
  72. $id = input('id/d', 0);
  73. empty($id) && jump('参数错误');
  74. $series = SoldierVideoSeriesModel::find($id);
  75. return view('', ['id' => $id, 'series' => $series]);
  76. }
  77. public function listSeries()
  78. {
  79. $soldier = get_soldier();
  80. $id = input('id/d', 0);
  81. empty($id) && jump('参数错误');
  82. $list = SoldierVideoModel::where('series_id', $id)
  83. ->where('status', SoldierVideoModel::STATUS_SHOW)
  84. ->order(['priority' => 'desc'])
  85. ->append(['is_must_text'])
  86. ->limit(input('limit', 10))
  87. ->page(input('page', 1))
  88. ->select();
  89. $video_ids = $list->column('id');
  90. $watch_list = SoldierVideoWatchModel::where('user_id', $soldier['id'])
  91. ->where('video_id', 'in', $video_ids)
  92. ->column('status', 'video_id');
  93. foreach ($list as $video) {
  94. if (empty($watch_list[$video['id']])) {
  95. $video['watch_status'] = 1;
  96. } else {
  97. $video['watch_status'] = $watch_list[$video['id']];
  98. }
  99. $video['watch_text'] = SoldierVideoWatchModel::STATUS[$video['watch_status']];
  100. }
  101. ajax_success($list);
  102. }
  103. public function video()
  104. {
  105. $soldier = get_soldier();
  106. $id = input('id/d', 0);
  107. empty($id) && jump('参数错误');
  108. //视频信息
  109. $video = SoldierVideoModel::where('id',$id)->append(['is_must_text'])->find();
  110. $watch_status = SoldierVideoWatchModel::where('user_id', $soldier['id'])
  111. ->where('video_id', $id)
  112. ->value('status');
  113. if (empty($watch_status)) {
  114. SoldierVideoWatchModel::create([
  115. 'user_id' => $soldier['id'],
  116. 'video_id' => $id,
  117. 'status' => SoldierVideoWatchModel::STATUS_NO_FINISHED,
  118. ]);
  119. $video['watch_status'] = 2;
  120. } else {
  121. $video['watch_status'] = $watch_status;
  122. }
  123. $video['watch_text'] = SoldierVideoWatchModel::STATUS[$video['watch_status']];
  124. //相关视频
  125. $video_list = SoldierVideoModel::where('series_id', $video['series_id'])
  126. ->where('priority', '<', $video['priority'])
  127. ->order(['priority' => 'desc'])
  128. ->append(['is_must_text'])
  129. ->limit(5)
  130. ->select();
  131. $video_ids = $video_list->column('id');
  132. $watch_list = SoldierVideoWatchModel::where('user_id', $soldier['id'])
  133. ->where('video_id', 'in', $video_ids)
  134. ->column('status', 'video_id');
  135. foreach ($video_list as $video_item) {
  136. if (empty($watch_list[$video_item['id']])) {
  137. $video_item['watch_status'] = 1;
  138. } else {
  139. $video_item['watch_status'] = $watch_list[$video_item['id']];
  140. }
  141. $video_item['watch_text'] = SoldierVideoWatchModel::STATUS[$video_item['watch_status']];
  142. }
  143. return view('', [
  144. 'video' => $video,
  145. 'video_list' => $video_list,
  146. ]);
  147. }
  148. public function videoEnd()
  149. {
  150. $soldier = get_soldier();
  151. $id = input('id/d', 0);
  152. empty($id) && jump('参数错误');
  153. SoldierVideoWatchModel::update(['status' => SoldierVideoWatchModel::STATUS_FINISH], ['user_id' => $soldier['id'], 'video_id' => $id]);
  154. ajax_return();
  155. }
  156. }