Index.php 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. <?php
  2. namespace app\api\controller;
  3. use app\common\controller\Api;
  4. use think\Db;
  5. /**
  6. * 首页接口
  7. */
  8. class Index extends Api
  9. {
  10. protected $noNeedLogin = ['*'];
  11. protected $noNeedRight = ['*'];
  12. /**
  13. * 首页
  14. *
  15. */
  16. public function index()
  17. {
  18. //轮播图
  19. $where = [
  20. 'status' => 1,
  21. ];
  22. $banner = Db::name('banner')->field('id,title,type,image,video_file,url')->where($where)->order('weigh', 'desc')->select();
  23. $banner = list_domain_image($banner, ['image','video_file']);
  24. if(!empty($banner)){
  25. foreach($banner as $key => $val){
  26. if(!empty($val['video_file'])){
  27. $banner[$key]['thumb_image'] = $val['video_file'].'?x-oss-process=video/snapshot,t_100,f_png,m_fast';
  28. }
  29. }
  30. }
  31. //第一条公告
  32. $message = Db::name('message_sys')->where('is_show',1)->where('is_index',1)->order('weigh','desc')->find();
  33. $message = $this->info_lang($message,['title','info']);
  34. $message = info_domain_image($message,['avatar']);
  35. if($message){
  36. $message['createtime'] = date('Y-m-d',$message['sendtime']);
  37. }
  38. //留个好评
  39. $haoping = Db::name('appplat')->field('image,url,biglogo')->where('type',1)->order('weigh', 'desc')->select();
  40. $haoping = list_domain_image($haoping, ['image']);
  41. //关注我们
  42. $followus = Db::name('appplat')->field('image,url,biglogo')->where('type',2)->order('weigh', 'desc')->select();
  43. $followus = list_domain_image($followus, ['image']);
  44. $result = [
  45. 'banner' => $banner,
  46. 'message' => $message,
  47. 'haoping' => $haoping,
  48. 'followus' => $followus,
  49. 'contact_mobile' => config('site.contact_mobile'),
  50. 'contact_email' => config('site.contact_email'),
  51. 'index_middle_image' => localpath_to_netpath(config('site.index_middle_image')),
  52. 'index_bottom_image' => localpath_to_netpath(config('site.index_bottom_image')),
  53. 'map_longitude' => config('site.map_longitude'),
  54. 'map_latitude' => config('site.map_latitude'),
  55. ];
  56. $this->success(1,$result);
  57. }
  58. //搜索
  59. public function search(){
  60. $keyword = input('keyword','','trim');
  61. //搜课时表
  62. $where = [
  63. 'slot.status' => 0,//报名中
  64. 'slot.is_show' => 1,
  65. 'slot.starttime' => ['gt',time()],
  66. ];
  67. //模糊搜索
  68. $wherelike = '';
  69. if(!empty($keyword)){
  70. //搜课程名
  71. $wherelike .= "(lesson.name like '%".$keyword."%') or (lesson.name_en like '%".$keyword."%')";
  72. //搜教练ids
  73. $coach_where = [];
  74. $coach_where['nickname'] = ['LIKE','%'.$keyword.'%'];
  75. $coach_ids = Db::name('coach')->where($coach_where)->column('id');
  76. if(!empty($coach_ids))
  77. {
  78. $wherelike .= ' or ';
  79. foreach($coach_ids as $ck => $cv){
  80. $wherelike .= "(FIND_IN_SET('".$cv."',slot.coach_ids))";
  81. if($ck+1 < count($coach_ids)){
  82. $wherelike .= " or ";
  83. }
  84. }
  85. }
  86. }
  87. $list = Db::name('lesson_slot')->alias('slot')
  88. ->field('slot.*,lesson.name,lesson.name_en,lesson.image,lesson.price')
  89. ->join('lesson','slot.lesson_id = lesson.id','LEFT')
  90. ->where($where)->where($wherelike)->autopage()
  91. //->select(false);echo $list;exit;
  92. ->select();
  93. $list = list_domain_image($list,['image']);
  94. $list = $this->list_lang($list,['name']);
  95. //准备教练数据
  96. $coach_list = Db::name('coach')->column('id,nickname');
  97. foreach($list as $key => &$slot){
  98. //hours转换
  99. $slot['hours'] = floatval($slot['hours']);
  100. //放入教练
  101. $coach_text = '';
  102. $coach_ids = explode(',',$slot['coach_ids']);
  103. foreach($coach_ids as $coach_id){
  104. if(isset($coach_list[$coach_id])){
  105. $coach_text .= $coach_list[$coach_id].',';
  106. }
  107. }
  108. $slot['coach_text'] = substr($coach_text,0,-1);
  109. //组织时间
  110. $slot['slot_time'] = date('m月d日',$slot['starttime']).'(周'.date('N',$slot['starttime']).')'.','.date('H:i',$slot['starttime']).'-'.date('H:i',$slot['endtime']);
  111. }
  112. $this->success(1,$list);
  113. }
  114. }