123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266 |
- <?php
- namespace Admin\Controller;
- use Common\Controller\AdminController;
- class CourseController extends AdminController {
- public function __construct(){
- parent::__construct();
- }
- //课程列表
- public function index(){
- $sort = I('sort','1');
- $courseStatus = I('course_status','');
- $courseType = I('course_type','');
- $keyword = I('get.keyword','');
- $condition = array('is_delete'=>1,'course_source'=>1,'course_flag'=>1);
- $orderList = array(
- 1=>array('operate_dt desc','时间倒序',1),
- 2=>array('operate_dt asc','时间正序',2),
- 3=>array('course_join desc','加入量倒序',3),
- 4=>array('course_join asc','加入量倒序',4),
- );
- $statusList = array('全部状态',1=>'编辑中',2=>'未审核',3=>'已上架');
- $orderby = $orderList[$sort][0];
- if (!empty($keyword)){
- $condition['course_id|course_name'] = array('LIKE','%'.$keyword.'%');
- }
- if (!empty($courseStatus)){
- $condition['course_status'] = $courseStatus;
- }
- if (!empty($courseType)){
- $condition['course_type'] = $courseType;
- }
- $this->assign('sort',$sort);
- $this->assign('orderby',$orderby);
- $this->assign('keyword',$keyword);
- $this->assign('orderList',$orderList);
- $this->assign('statusList',$statusList);
- $this->assign('courseType',$courseType);
- $this->assign('courseStatus',$courseStatus);
- //课程类型
- $typeRes = M('CourseType')->where(array('is_delete'=>1))->field('type_id,type_name')->select();
- $typeList = array();
- foreach ($typeRes as $type){
- $typeList[$type['type_id']] = $type['type_name'];
- }
- $count = M('Course')->where($condition)->count();
- //分页
- $Page = new \Think\Page($count);
- $show = $Page->show();
- $courseList = M('Course')->where($condition)->order($orderby)->limit($Page->firstRow.','.$Page->listRows)->select();
- $this->assign('page',$show);
- $this->assign('list',$courseList);
- $this->assign('typeList',$typeList);
- $this->display();
- }
- //修改课程状态
- public function status(){
- $courseId = I('course_id','');
- $courseStatus = I('course_status','');
- if (empty($courseId) || $courseId<1000000){
- $this->error("课程ID错误",'/admin/course/index');
- }
- M('Course')->where(array('course_id'=>$courseId))->save(array('course_status'=>$courseStatus));
- $this->success('课程状态修改成功','/admin/course/index');
- }
- //删除课程
- public function del(){
- $courseId = I('course_id','');
- if (empty($courseId) || $courseId<1000000){
- $this->error("课程ID错误",'/admin/course/index');
- }
- $info = M('Course')->where(array('course_id'=>$courseId))->field('course_type,course_name')->find();
- M('CourseType')->where(array('type_id'=>$info['course_type']))->setDec('type_num');
- $res = M('TitleNum')->where(array('title_name'=>$info['course_name']))->field('title_id,title_num')->find();
- if ($res!=NULL && $res['title_num']>1){
- M('TitleNum')->where(array('title_id'=>$res['title_id']))->setDec('title_num');
- }else if($res!=NULL && $res['title_num']==1){
- M('TitleNum')->where(array('title_id'=>$res['title_id']))->delete();
- }
- M('Course')->where(array('course_id'=>$courseId))->delete();
- $this->success('课程删除成功','/admin/course/index');
- }
- //编辑课程
- public function edit(){
- $step = I('step','');
- $courseId = I('course_id','');
- if (empty($step)){
- $info = array();
- if (!empty($courseId)){
- $info = M('Course')->where(array('course_id'=>$courseId))->find();
- }
- $typeList = M('CourseType')->where(array('is_delete'=>1))->field('type_id,type_name')->select();
- $this->assign('info',$info);
- $this->assign('typeList',$typeList);
- $this->display();
- }else if($step==2){
- $courseType = I('course_type','');
- $courseName = I('course_name','');
- $courseIntro = I('course_intro','');
- if ( mb_strlen($courseName,'UTF8')>12){
- $this->error('课程名称小于30个汉字');
- }
- if ( mb_strlen($courseIntro,'UTF8')>300){
- $this->error('课程介绍小于300个汉字');
- }
- $res = M('Course')->where(array('course_name'=>$courseName,'is_delete'=>1))->field('course_id')->find();
- //新增
- if (empty($courseId) && $res!=NULL){
- $courseName = $this->getCourseName($courseName);
- }
- //更新
- if (!empty($courseId) && $courseId!=$res['course_id']){
- $courseName = $this->getCourseName($courseName);
- }
- if (empty($courseId)){
- $data=array('course_type'=>$courseType,'course_name'=>$courseName,'course_intro'=>$courseIntro,'operate_dt'=>time());
- M('Course')->add($data);
- M('CourseType')->where(array('type_id'=>$courseType))->setInc('type_num');
- $info = M('Course')->where($data)->find();
- $courseId=$info['course_id'];
- }else{
- M('Course')->where(array('course_id'=>$courseId))->save(array('course_type'=>$courseType,'course_name'=>$courseName,'course_intro'=>$courseIntro));
- }
- $this->success('课程操作成功','/admin/course/detail?course_id='.$courseId);
- }
- }
-
- //单词导入
- public function import(){
- $step = I('step','');
- $courseId = I('course_id','');
- if (empty($step)){
- $info = array();
- if (!empty($courseId)){
- $info = M('Course')->where(array('course_id'=>$courseId))->find();
- }
- $Course = M('Course')->where(array('is_delete'=>1,'course_flag'=>1,'course_source'=>1))->field('*')->order("course_id desc")->select();
- $this->assign('info',$info);
- $this->assign('Course',$Course);
- $this->display();
- }else if($step==2){
- $json=array();
- $json['course_id']=$courseId;
- if(is_uploaded_file($_FILES['file']['tmp_name'])){
- $upfile=$_FILES["file"];
- $filename=$upfile['name'];
- $tmp_name=$upfile["tmp_name"];//上传文件的临时存放路径
- $arr = pathinfo($filename);
- $ext_suffix = $arr['extension'];
- $allow_suffix = array('zip');
- if(!in_array($ext_suffix, $allow_suffix)){
- $res=array('code'=>1,'msg'=>'仅支持zip文件');
- echo json_encode($res);
- die;
- }
- $new_filename = date('YmdHis',time()).rand(100,1000).'.'.$ext_suffix;
-
-
- if (move_uploaded_file($tmp_name, './Uploads/zip/'.$new_filename)){
- $json['file']=$new_filename;
- }else{
- $res=array('code'=>1,'msg'=>'上传失败');
- echo json_encode($res);
- die;
- }
- }
- else{
- $res=array('code'=>1,'msg'=>'请选择文件');
- echo json_encode($res);
- die;
- }
- $arr['json']=json_encode($json);
- $arr['operate_dt']=time();
- M('import')->add($arr);
- $r=M('import')->limit('0,1')->order('id desc')->where($arr)->find();
- $res=array('code'=>0,'data'=>$r);
- echo json_encode($res);
- }
- }
- public function task(){
- $id = I('id','');
- $r=M('import')->limit('0,1')->order('id desc')->where(array('id'=>$id))->find();
- if($r){
- $res=array('code'=>0,'data'=>$r);
- echo json_encode($res);
- }else{
- $res=array('code'=>1,'msg'=>'未知错误');
- echo json_encode($res);
- }
- }
-
- //获取课程名称相同时,新的课程名称
- private function getCourseName($courseName){
- $course = M('Course')->where(array('course_name'=>$courseName,'is_delete'=>1))->field('course_id')->find();
- $res = M('TitleNum')->where(array('title_name'=>$courseName))->field('title_id,title_num')->find();
- if ($res!=NULL){
- $courseName = $courseName.'('.($res['title_num']+1).')';
- M('TitleNum')->where(array('title_id'=>$res['title_id']))->setInc('title_num');
- }else if($course!=NULL){
- $courseName = $courseName.'('.($res['title_num']+1).')';
- M('TitleNum')->add(array('title_name'=>$courseName,'operate_dt'=>time()));
- //$courseName = $courseName;
- }
- return $courseName;
- }
-
- //获取课程的单词列表
- public function detail(){
- $courseId = I('course_id','');
- if (empty($courseId) || $courseId<1000000){
- $this->error("课程ID错误",'/admin/course/index');
- }
- $keyword = I('get.keyword','');
- $condition = array('is_delete'=>1,'course_id'=>$courseId);
- if (!empty($keyword)){
- $condition['words_name'] = array('LIKE','%'.$keyword.'%');
- }
- $count = M('Words')->where($condition)->count();
- //分页
- $Page = new \Think\Page($count);
- $show = $Page->show();
- $wordsRes = M('Words')->where($condition)->field()->order('words_id desc')->limit($Page->firstRow.','.$Page->listRows)->select();
- $wordsList = array();
- foreach ($wordsRes as $row){
- $wordsList[] = array(
- 'words_id' => $row['words_id'],
- 'course_id' => $row['course_id'],
- 'words_name' => $row['words_name'],
- 'words_voice' => $row['words_voice'],
- 'words_read' => $row['words_read'],
- 'operate_dt' => $row['operate_dt'],
- 'words_text' => $this->getWordsText($row),
- );
- }
- $info = M('Course')->where(array('course_id'=>$courseId))->find();
- $res = M('course_reply')->join('left join t_user as a on a.user_id = t_course_reply.user_id')->join('left join t_user as b on b.user_id = t_course_reply.reply_user_id')->join('left join t_course_reply_praise on t_course_reply_praise.cr_id = t_course_reply.cr_id')->where(array('t_course_reply.is_delete'=>1,'t_course_reply.reply_cr_id'=>0,'t_course_reply.course_id'=>$courseId))->group('t_course_reply.cr_id')->field('t_course_reply.*,a.user_name,a.user_icon,b.user_name as reply_user_name,count(t_course_reply_praise.cr_id) as praise')->order('t_course_reply.operate_dt desc')->select();
- $arr=array();
- foreach($res as $k=>$v){
- if(!$v['cr_id']){
- unset($res[$k]);
- }else{
- $res[$k]['operate_dt']=date("Y-m-d H:i:s",$v['operate_dt']);
- $arr[]=$v['cr_id'];
- $res[$k]['reply_list']=array();
- }
- }
- if($arr){
- $res2 = M('course_reply')->join('left join t_user as a on a.user_id = t_course_reply.user_id')->join('left join t_user as b on b.user_id = t_course_reply.reply_user_id')->join('left join t_course_reply_praise on t_course_reply_praise.cr_id = t_course_reply.cr_id')->where("t_course_reply.course_id='$courseId' and t_course_reply.is_delete=1 and t_course_reply.reply_cr_id in ( ".implode(',',$arr).")" )->group('t_course_reply.cr_id')->field('t_course_reply.*,a.user_name,a.user_icon,b.user_name as reply_user_name,count(t_course_reply_praise.cr_id) as praise')->order('t_course_reply.operate_dt desc')->select();;
- }else{
- $res2=array();
- }
- foreach($res as $k=>$v){
- foreach($res2 as $m=>$n){
- $res2[$m]['operate_dt']=date("Y-m-d H:i:s",$n['operate_dt']);
- if($n['reply_cr_id']==$v['cr_id']){
- $res[$k]['reply_list'][]=$res2[$m];
- }
- }
- }
- $this->assign('page',$show);
- $this->assign('list',$wordsList);
- $this->assign('courseId', $courseId);
- $this->assign('info', $info);
- $this->assign('reply', $res);
- $this->display();
- }
- }
|