Trainactive.php 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  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,name as 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($val['pingjia_time'] != 0){ //时间或评价,都行
  26. $val['show_status'] = 3;
  27. $val['show_status_text'] = '已结束';
  28. }elseif($now < $val['starttime']){
  29. $val['show_status'] = 1;
  30. $val['show_status_text'] = '待开始';
  31. }else{
  32. $val['show_status'] = 2;
  33. $val['show_status_text'] = '进行中';
  34. }
  35. }
  36. $this->success('', $papers);
  37. }
  38. //培训详情
  39. public function info(){
  40. $id = input('id',0);
  41. $info = Db::name('train_active')->field('id,name as title,logo_image,starttime,endtime,pingjia,pingjia_time,pingjia_uid')
  42. ->where('id', $id)
  43. ->find();
  44. if(!empty($info)){
  45. $info['logo_image'] = localpath_to_netpath($info['logo_image']);
  46. $info['pingjia_nickname'] = '';
  47. if($info['pingjia_uid']){
  48. $info['pingjia_nickname'] = Db::name('user')->where('id',$info['pingjia_uid'])->value('nickname');
  49. }
  50. $now = time();
  51. if($info['pingjia_time'] != 0){ //时间或评价,都行
  52. $info['show_status'] = 3;
  53. $info['show_status_text'] = '已结束';
  54. }elseif($now < $info['starttime']){
  55. $info['show_status'] = 1;
  56. $info['show_status_text'] = '待开始';
  57. }else{
  58. $info['show_status'] = 2;
  59. $info['show_status_text'] = '进行中';
  60. }
  61. }
  62. $this->success(1,$info);
  63. }
  64. //签到成功
  65. public function signin(){
  66. $sign_image = input('sign_image','');
  67. if(empty($sign_image)){
  68. $this->error();
  69. }
  70. //
  71. $id = input('id');
  72. $info = Db::name('train_active')->where('id',$id)->find();
  73. if(empty($info)){
  74. $this->error('不存在的培训活动');
  75. }
  76. //判断
  77. if($info['status'] != 1){
  78. $this->error('该培训已下架');
  79. }
  80. if($info['userauth_status'] == 0){
  81. if(!in_array($this->auth->id,explode(',',$info['user_ids']))){
  82. $this->error('您不在该培训活动名单');
  83. }
  84. }
  85. //判断
  86. $map = [
  87. 'train_id' => $id,
  88. 'user_id' => $this->auth->id,
  89. ];
  90. $check = Db::name('user_train')->where($map)->find();
  91. if($check){
  92. $this->error('您已经签过到了');
  93. }
  94. //判断
  95. if(time() < $info['sign_starttime']){
  96. $this->error('还没到签到开始时间');
  97. }
  98. if(time() > $info['endtime']){
  99. $this->error('培训已经结束了');
  100. // $this->error('已错过签到截止时间');
  101. }
  102. //签到
  103. $status = 1;
  104. if(time() > $info['sign_endtime']){
  105. $status = 2;//迟到
  106. }
  107. $data = [
  108. 'train_id' => $id,
  109. 'user_id' => $this->auth->id,
  110. 'sign_time' => time(),
  111. 'status' => $status,
  112. 'sign_image' => $sign_image,
  113. ];
  114. Db::name('user_train')->insertGetId($data);
  115. $this->success('签到成功');
  116. }
  117. //评价检测权限
  118. public function check(){
  119. $type = input('type','pingjia');
  120. $id = input('id',0);
  121. if($type == 'pingjia'){
  122. $info = Db::name('train_active')->where('id',$id)->find();
  123. if($info['pingjia_uid'] != $this->auth->id){
  124. $this->error('您不能评价当前培训');
  125. }
  126. $this->success('验证成功');
  127. }
  128. if($type == 'sign'){
  129. $this->success('验证成功');
  130. }
  131. $this->error('验证失败');
  132. }
  133. //评价成功
  134. public function pingjia(){
  135. $pingjia = input('pingjia','');
  136. $pingjia_image = input('sign_image','');
  137. if(empty($pingjia) || empty($pingjia_image)){
  138. $this->error();
  139. }
  140. //
  141. $id = input('id');
  142. $info = Db::name('train_active')->where('id',$id)->find();
  143. if(empty($info)){
  144. $this->error('不存在的培训活动');
  145. }
  146. //判断
  147. if($info['status'] != 1){
  148. $this->error('该培训已下架');
  149. }
  150. if($this->auth->id != $info['pingjia_uid']){
  151. $this->error('您不能评价该培训活动');
  152. }
  153. //评价
  154. $data = [
  155. 'pingjia' => $pingjia,
  156. 'pingjia_image' => $pingjia_image,
  157. 'pingjia_time' => time(),
  158. 'status' => 0, //评价结束,自动下架
  159. ];
  160. Db::name('train_active')->where('id',$id)->update($data);
  161. $this->success('评价成功');
  162. }
  163. }