TrainController.php 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Administrator
  5. * Date: 2019/8/14
  6. * Time: 10:43
  7. */
  8. namespace App\Http\Controllers\Web\Train;
  9. use App\Exceptions\ResponseException;
  10. use App\Models\Article;
  11. use App\Models\Category;
  12. use App\Models\Train\TrainCourseUser;
  13. use App\Repositories\AdRepository;
  14. use App\Repositories\ArticleRepository;
  15. use App\Repositories\Train\TrainCourseRepository;
  16. use App\Repositories\Train\TrainCourseUserRepository;
  17. use App\Repositories\Train\TrainTeacherRepository;
  18. use App\Services\Train\CourseService;
  19. use App\Validators\Rules\MobileRule;
  20. use Illuminate\Http\Request;
  21. use Illuminate\Support\Facades\Validator;
  22. use Laravel\Horizon\LuaScripts;
  23. class TrainController
  24. {
  25. private $courseRepository;
  26. private $trainCourseUserRepository;
  27. private $courseService;
  28. private $teacherRepository;
  29. private $adRepository;
  30. private $articleRepository;
  31. public function __construct(ArticleRepository $articleRepository,AdRepository $adRepository,TrainTeacherRepository $teacherRepository,CourseService $courseService,TrainCourseUserRepository $trainCourseUserRepository,TrainCourseRepository $courseRepository)
  32. {
  33. $this->courseRepository=$courseRepository;
  34. $this->trainCourseUserRepository=$trainCourseUserRepository;
  35. $this->courseService=$courseService;
  36. $this->teacherRepository=$teacherRepository;
  37. $this->adRepository=$adRepository;
  38. $this->articleRepository=$articleRepository;
  39. }
  40. //个人会员中心所有培训
  41. public function list(){
  42. $courses=$this->courseRepository->courses();
  43. $user=auth('web-member')->user();
  44. return view('app.train.person.course',['courses'=>$courses,"user"=>$user]);
  45. }
  46. //我的报名
  47. public function joined(){
  48. $user=auth('web-member')->user();
  49. $courses=$this->trainCourseUserRepository->JoinedCourses($user->id);
  50. return view('app.train.person.course_joined',['courses'=>$courses]);
  51. }
  52. public function joinedEdit($id,$action){
  53. $user=auth('web-member')->user();
  54. $res = TrainCourseUser::where(['member_id'=>$user->id])->get()->toArray();
  55. $array_id = array_column($res,'course_id');
  56. if(!in_array($id,$array_id)){
  57. throw new ResponseException('报名信息不存在');
  58. }
  59. $join_info=$this->trainCourseUserRepository->findJoin($id,$user->id);
  60. if ($join_info->audit==1 && $action=="edit"){
  61. return back()->with(['msg'=>"不可以修改审核通过的报名信息!"]);
  62. }
  63. return view('app.train.person.course_joined_edit',['join_info'=>$join_info->join_info,'result'=>$join_info]);
  64. }
  65. public function joinedEditAction($id,Request $request){
  66. $user=auth('web-member')->user();
  67. $request_data=$request->input();
  68. $rule = [
  69. 'realname' => 'required',
  70. 'phone'=>['required',new MobileRule()],
  71. 'id_card'=>['required',"regex:/^(\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$/"],
  72. 'education_cn' => 'required',
  73. 'residence_cn' => 'required',
  74. ];
  75. $msg = [
  76. 'realname.required'=>'姓名不能为空',
  77. 'education_cn.required'=>'学历不能为空',
  78. 'residence_cn.required'=>'现居住地址不能为空',
  79. 'id_card.required'=>'证件号不能为空',
  80. 'id_card.regex'=>'证件号格式错误',
  81. 'phone.required'=>'手机号不能为空',
  82. 'phone.unique'=>'手机号已经存在',
  83. ];
  84. $validator = Validator::make($request_data, $rule, $msg);
  85. if ($validator->fails()) {
  86. $error = $validator->errors()->first();
  87. return back()->withErrors($error);
  88. }
  89. $en_data=serialize($request_data);
  90. $data["join_realname"]=$request_data['realname'];
  91. $data["join_phone"]=$request_data['phone'];
  92. $data["join_id_card"]=$request_data['id_card'];
  93. $data["join_residence_cn"]=$request_data['residence_cn'];
  94. $data["join_education_cn"]=$request_data['education_cn'];
  95. $data["join_info"]=$en_data;
  96. $isOk=$this->trainCourseUserRepository->updateJoinInfo($id,$user->id,$data);
  97. if (!empty($isOk)){
  98. return redirect(route("person.train.joined"))->with(['msg'=>"修改成功"]);
  99. }else{
  100. return back()->with(['msg'=>"修改失败"]);
  101. }
  102. }
  103. public function index()
  104. {
  105. $fengCaiAb=$this->adRepository->getAb("train_fengcai");
  106. $artisans=$this->articleRepository->getArticle(['type_id'=>Article::PeiXunZC],request('limit',4));
  107. $data=$this->courseService->courseIndex();
  108. $data['ab']=$fengCaiAb;
  109. $data['artisans']=$artisans;
  110. return view('app.train.index',$data);
  111. }
  112. public function about()
  113. {
  114. $courses=$this->courseRepository->Recommend(6);
  115. return view('app.train.about',['courses'=>$courses]);
  116. }
  117. public function policy()
  118. {
  119. $artisans=$this->articleRepository->getArticle(['type_id'=>Article::PeiXunZC],request('limit',4));
  120. return view('app.train.policy',['artisans'=>$artisans]);
  121. }
  122. public function policyShow($id)
  123. {
  124. $this->articleRepository->Click($id);
  125. $artisan=$this->articleRepository->firstWhere(['id'=>$id]);
  126. $beforeAndNext=$this->articleRepository->beforeAndNext($id,$artisan->type_id);
  127. return view('app.train.policy_show',["artisan"=>$artisan,'bf'=>$beforeAndNext]);
  128. }
  129. public function course()
  130. {
  131. return view('app.train.course');
  132. }
  133. public function courseAction(){
  134. //审核通过,课程没结束的
  135. $key=['audit'=>1,["open_end_time",'>',date("Y-m-d h:i:s")]];
  136. empty(request('key')) ? : $key[]=['name', 'like', '%'.request('key').'%'];
  137. empty(request('time')) ? : $key[]=['open_time', '<', request('time')." 23:59:59"];
  138. !empty(\request('is_expenses')) ? : $key[]=['is_expenses',0];
  139. $order_key="created_at";
  140. if (\request('type')=="hot"){
  141. $order_key="apply_members_count";
  142. }
  143. $courses=$this->courseRepository->coursesSearch($order_key,$key);
  144. return AjaxSuccess($courses);
  145. }
  146. //课程详情
  147. public function courseShow()
  148. {
  149. $id=request('id');
  150. $courseInfo=$this->courseRepository->CourseInfo($id);
  151. //推荐课程
  152. $Recommend=$this->courseRepository->Recommend(4);
  153. //其他课程
  154. $Others=$this->courseRepository->OtherCourses(6);
  155. $this->courseService->courseShowClick($id);
  156. return view('app.train.course_show',['courseInfo'=>$courseInfo,"Recommend"=>$Recommend,"others"=>$Others]);
  157. }
  158. //报名
  159. public function courseJoin($id){
  160. $user=auth('web-member')->user();
  161. $this->courseService->Join($user,$id);
  162. }
  163. public function teacher()
  164. {
  165. return view('app.train.teacher');
  166. }
  167. }