Trainactive.php 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. <?php
  2. namespace app\api\controller;
  3. use app\common\controller\Api;
  4. use think\Db;
  5. /**
  6. * 培训活动
  7. */
  8. class Trainactive extends Api
  9. {
  10. protected $noNeedLogin = ['info'];
  11. // 无需鉴权的接口,*表示全部
  12. protected $noNeedRight = ['test2'];
  13. //我的培训
  14. public function my_list(){
  15. $now = time();
  16. $papers = Db::name('train_active')->field('id,title,logo_image,starttime,endtime,pingjia_time,pingjia_uid')
  17. ->where('status', 1)
  18. ->where('deletetime', NULL)
  19. ->where("(userauth_status = 1) or (find_in_set('".$this->auth->id."',user_ids) )")
  20. ->autopage()
  21. ->order('starttime desc')
  22. ->select();
  23. foreach($papers as $key => &$val){
  24. $val['logo_image'] = localpath_to_netpath($val['logo_image']);
  25. if($now < $val['starttime']){
  26. $val['show_status'] = 1;
  27. $val['show_status_text'] = '待开始';
  28. }
  29. if($val['starttime'] < $now && $now < $val['endtime']){
  30. $val['show_status'] = 2;
  31. $val['show_status_text'] = '进行中';
  32. }
  33. if(/*$val['endtime'] < $now || */$val['pingjia_uid'] != 0){ //时间或评价,都行
  34. $val['show_status'] = 3;
  35. $val['show_status_text'] = '已结束';
  36. }
  37. }
  38. $this->success('', $papers);
  39. }
  40. //培训详情
  41. public function info(){
  42. $id = input('id',0);
  43. $info = Db::name('train_active')->field('id,title,logo_image,starttime,endtime,pingjia,pingjia_time,pingjia_uid')
  44. ->where('id', $id)
  45. ->find();
  46. if(!empty($info)){
  47. $info['logo_image'] = localpath_to_netpath($info['logo_image']);
  48. $info['pingjia_nickname'] = '';
  49. if($info['pingjia_uid']){
  50. $info['pingjia_nickname'] = Db::name('user')->where('id',$info['pingjia_uid'])->value('nickname');
  51. }
  52. $now = time();
  53. if($now < $info['starttime']){
  54. $val['show_status'] = 1;
  55. $val['show_status_text'] = '待开始';
  56. }
  57. if($info['starttime'] < $now && $now < $info['endtime']){
  58. $info['show_status'] = 2;
  59. $info['show_status_text'] = '进行中';
  60. }
  61. if(/*$info['endtime'] < $now || */$info['pingjia_uid'] != 0){ //时间或评价,都行
  62. $info['show_status'] = 3;
  63. $info['show_status_text'] = '已结束';
  64. }
  65. }
  66. $this->success(1,$info);
  67. }
  68. //签到成功
  69. public function signin(){
  70. $sign_image = input('sign_image','');
  71. if(empty($sign_image)){
  72. $this->error();
  73. }
  74. //
  75. $id = input('id');
  76. $info = Db::name('train_active')->where('id',$id)->find();
  77. if(empty($info)){
  78. $this->error('不存在的培训活动');
  79. }
  80. //判断
  81. if($info['status'] != 1){
  82. $this->error('该培训已下架');
  83. }
  84. if($info['userauth_status'] == 0){
  85. if(!in_array($this->auth->id,explode(',',$info['user_ids']))){
  86. $this->error('您不在该培训活动名单');
  87. }
  88. }
  89. //判断
  90. $map = [
  91. 'train_id' => $id,
  92. 'user_id' => $this->auth->id,
  93. ];
  94. $check = Db::name('user_train')->where($map)->find();
  95. if($check){
  96. $this->error('您已经签过到了');
  97. }
  98. //判断
  99. if(time() < $info['starttime']){
  100. $this->error('还没到签到开始时间');
  101. }
  102. if(time() > $info['endtime']){
  103. $this->error('已错过签到截止时间');
  104. }
  105. //签到
  106. $status = 1;
  107. if(time() > $info['sign_endtime']){
  108. $status = 2;//迟到
  109. }
  110. $data = [
  111. 'train_id' => $id,
  112. 'user_id' => $this->auth->id,
  113. 'sign_time' => time(),
  114. 'status' => $status,
  115. 'sign_image' => $sign_image,
  116. ];
  117. Db::name('user_train')->insertGetId($data);
  118. $this->success('签到成功');
  119. }
  120. //评价检测权限
  121. public function check(){
  122. $type = input('type','pingjia');
  123. $id = input('id',0);
  124. if($type == 'pingjia'){
  125. $info = Db::name('train_active')->where('id',$id)->find();
  126. if($info['pingjia_uid'] != $this->auth->id){
  127. $this->error('您不能评价当前培训');
  128. }
  129. $this->success('验证成功');
  130. }
  131. if($type == 'sign'){
  132. $this->success('验证成功');
  133. }
  134. $this->error('验证失败');
  135. }
  136. //评价成功
  137. public function pingjia(){
  138. $pingjia = input('pingjia','');
  139. $pingjia_image = input('sign_image','');
  140. if(empty($pingjia) || empty($pingjia_image)){
  141. $this->error();
  142. }
  143. //
  144. $id = input('id');
  145. $info = Db::name('train_active')->where('id',$id)->find();
  146. if(empty($info)){
  147. $this->error('不存在的培训活动');
  148. }
  149. //判断
  150. if($info['status'] != 1){
  151. $this->error('该培训已下架');
  152. }
  153. if($this->auth->id != $info['pingjia_uid']){
  154. $this->error('您不能评价该培训活动');
  155. }
  156. //评价
  157. $data = [
  158. 'pingjia' => $pingjia,
  159. 'pingjia_image' => $pingjia_image,
  160. 'pingjia_time' => time(),
  161. 'status' => 0, //评价结束,自动下架
  162. ];
  163. Db::name('train_active')->where('id',$id)->update($data);
  164. $this->success('评价成功');
  165. }
  166. }