CommonController.php 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Ellisran
  5. * Date: 2016/10/11
  6. * Time: 10:18
  7. */
  8. class CommonController extends DooController {
  9. public $data;
  10. // public $appKey = '';
  11. // public $AppSecret = '';
  12. function __construct() {
  13. $this->data['rootUrl'] = Doo::conf()->APP_URL;
  14. include ('./protected/controller/BaseController.php');
  15. $this->base = new BaseController ();
  16. $username = $this->base->common_init();
  17. $this->data['username'] = $username;
  18. // require_once (Doo::conf()->SITE_PATH . '/protected/class/video.php');
  19. // $video = new video ( );
  20. }
  21. public function common_exit() {
  22. setcookie ( "common_main", "", time () + 3600 * 24, "/", COOKIE_WEB_SITE );
  23. $this->data['message'] = '';
  24. $this->render ( "common-login", $this->data, TRUE);
  25. }
  26. public function classlist() {
  27. Doo::loadModel('ktclass');
  28. Doo::loadModel('classuser');
  29. Doo::loadHelper('DooPager');
  30. $ktclass = new Ktclass();
  31. $class_user = new Classuser();
  32. $totalArchive = $ktclass->count(array('where' => 'ishow=1'));
  33. $pager = new DooPager(Doo::conf()->APP_URL . "common/classlist/page", $totalArchive, 8, 10);
  34. if (isset($this->params['pindex']))
  35. $pager->paginate(intval($this->params['pindex']));
  36. else
  37. $pager->paginate(1);
  38. if ($pager->limit != ' -8,8')
  39. $this->data['classlist'] = $ktclass->getclasslistbyshow($pager->limit);
  40. foreach($this->data['classlist'] as $k => $v){
  41. $bum = $class_user->getNumbyClassid($v['classid']);
  42. $this->data['classlist'][$k]['bnum'] = $bum;
  43. $this->data['classlist'][$k]['totalnum'] = sprintf("%.2f",$v['classnum']*($v['classtime']/60));
  44. $this->data['classlist'][$k]['class_progress'] = $this->getClassProgress($v['classid'],$this->data['classlist'][$k]['totalnum'],$bum);
  45. }
  46. $this->data['pager'] = $pager->output;
  47. $this->render('common-classlist',$this->data);
  48. }
  49. public function classinfo() {
  50. if(isset($this->params['classid'])){
  51. Doo::loadModel('classuser');
  52. Doo::loadModel('ktclass');
  53. $classuser = new Classuser();
  54. $ktclass = new Ktclass();
  55. $class = $ktclass->getRowishowbyId($this->params['classid']);
  56. $this->data['classname'] = $class['classname'];
  57. $this->data['classid'] = $class['classid'];
  58. $this->data['totalnum'] = sprintf("%.2f",$class['classnum']*($class['classtime']/60));
  59. $totalArchive = $classuser->count(array('where' => 'classid='.$this->params['classid']));
  60. if(isset($this->params['status']) && $this->params['status'] == 1){
  61. $pager = new DooPager(Doo::conf()->APP_URL . "common/classinfo/".$this->params['classid']."/status/1/page", $totalArchive, 8, 10);
  62. }else{
  63. $pager = new DooPager(Doo::conf()->APP_URL . "common/classinfo/".$this->params['classid']."/page", $totalArchive, 8, 10);
  64. }
  65. if (isset($this->params['pindex']))
  66. $pager->paginate(intval($this->params['pindex']));
  67. else
  68. $pager->paginate(1);
  69. if ($pager->limit != ' -8,8'){
  70. if(isset($this->params['status']) && $this->params['status'] == 1){
  71. $this->data['status'] = 1;
  72. $this->data['userlist'] = $classuser->getuserlist($this->params['classid'], $pager->limit,1);
  73. }else{
  74. $this->data['userlist'] = $classuser->getuserlist($this->params['classid'], $pager->limit,0);
  75. }
  76. }
  77. if(isset($this->data['userlist']) && !empty($this->data['userlist'])){
  78. Doo::loadModel('user');
  79. $users = new User();
  80. foreach($this->data['userlist'] as $k => $v){
  81. $user = $users->getNamebyId($v['userid']);
  82. $this->data['userlist'][$k]['username'] = $user['username'];
  83. $this->data['userlist'][$k]['realname'] = $user['realname'];
  84. $idcard = strlen($user['idcard'])==15?substr_replace($user['idcard'],"******",2,6):(strlen($user['idcard'])==18?substr_replace($user['idcard'],"*********",3,9):"身份证位数不正常!");
  85. $this->data['userlist'][$k]['idcard'] = $idcard;
  86. $hadbuy = $classuser->gethasbyuserandclass($v['userid'],$this->params['classid']);
  87. $this->data['userlist'][$k]['user_progress'] = $this->getPersonProgress($class,$hadbuy);
  88. }
  89. }
  90. $this->data['pager'] = $pager->output;
  91. $this->render('common-classinfo', $this->data, TRUE);
  92. }else{
  93. return '/common';
  94. }
  95. }
  96. public function userSearch(){
  97. if(isset($_POST['search']) && !empty($_POST['search'])){
  98. Doo::loadModel('user');
  99. $user = new User();
  100. if(is_numeric(trim($_POST['search'])) && strlen(trim($_POST['search'])) == 6){
  101. $result = $user->getUserMsgbyidcard(trim($_POST['search']));
  102. }else{
  103. $result = $user->getUserMsgbySearch(trim($_POST['search']));
  104. }
  105. if(!empty($result)) {
  106. Doo::loadModel('classuser');
  107. $class_user = new Classuser();
  108. $classlist = $class_user->gethasbyuserandclass($result['userid'],$_POST['classid']);
  109. if(!empty($classlist)){
  110. Doo::loadModel('ktclass');
  111. $ktclass = new Ktclass();
  112. $classinfo = $ktclass->getRowishowbyId($_POST['classid']);
  113. $this->data['userinfo'] = array(
  114. 'realname' => $result['realname'],
  115. 'username' => $result['username'],
  116. 'mobile' => $result['mobile'],
  117. 'useremail' => $result['useremail'],
  118. 'idcard' => $result['idcard'],
  119. );
  120. $this->data['user_progress'] = $this->getPersonProgress($classinfo,$classlist);
  121. $this->data['classinfo'] = $classinfo;
  122. $this->data['totalnum'] = sprintf("%.2f",$classinfo['classnum']*($classinfo['classtime']/60));
  123. $usernum = $class_user->getNumbyClassid($_POST['classid']);
  124. $this->data['usernum'] = $usernum;
  125. $this->render('common-usersearch', $this->data, TRUE);die;
  126. }
  127. }
  128. }
  129. return '/common/classinfo/'.$_POST['classid'];
  130. }
  131. //获取个人的学习进度
  132. private function getPersonProgress($class,$classuser){
  133. $totalss = $class['classnum']*$class['classtime']*60; //课程总秒数
  134. $userss = $classuser['seetime']; //已完成的秒数
  135. $nodonehh = sprintf('%.2f',($totalss-$userss)/3600); //未完成的小时数
  136. $donehh = sprintf('%.2f',$classuser['seetime']/3600); //已完成的小时数
  137. $doneclassnum = intval($userss/($class['classtime']*60)); //已完成的课时数,取整
  138. if($doneclassnum<10 && $doneclassnum != 0){
  139. $doneclassnum = '0'.$doneclassnum;
  140. }
  141. $progress = sprintf('%.2f',$userss/$totalss) *100; //已完成占总课程的百分比
  142. $noprogress = 100-$progress; //未完成占总课程的百分比
  143. return array('progress' => $progress, 'noprogress' => $noprogress, 'donehh' => $donehh, 'doneclassnum' => $doneclassnum, 'nodonehh' => $nodonehh);
  144. }
  145. //获取课程的平均进度
  146. private function getClassProgress($classid,$totalnum,$bnum){
  147. if($bnum != 0){
  148. Doo::loadModel('classuser');
  149. $classuser = new Classuser();
  150. $classtrack = $classuser->gettimebyClassid($classid);
  151. $doness = 0;
  152. foreach($classtrack as $k => $v){
  153. $doness += $v['seetime']; //已完成的总秒数
  154. }
  155. $donehh = sprintf('%.2f',sprintf('%.2f',$doness/3600)/$bnum); //已完成的平均小时数
  156. $nodonehh = $totalnum-$donehh; //未完成的小时数
  157. $progress = sprintf('%.2f',$donehh/$totalnum) *100; //已完成占总课程的百分比
  158. $noprogress = 100-$progress; //未完成占总课程的百分比
  159. }else{
  160. $progress = 0;
  161. $noprogress = 100;
  162. $donehh = 0;
  163. $nodonehh = $totalnum;
  164. }
  165. return array('progress' => $progress, 'noprogress' => $noprogress, 'donehh' => $donehh, 'nodonehh' => $nodonehh);
  166. }
  167. }