123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239 |
- <?php
- /**
- * 教师管理控制器类
- * @author jiangfei
- * @date 2015-08-03 17:30:00
- * @company 上海风车教育有限公司.
- */
- class TeacherController extends Controller
- {
- private $post = array(
- 0 => "任课教师",
- 1 => "班主任",
- 2 => "教研组长",
- 3 => "年级主任",
- 4 => "任课教师",
- 5 => "校长",
- );
- private $subjects = array(
- 1 => "语文",
- 3 => "数学",
- 6 => "数学",
- 2 => "英语",
- 12 => "物理",
- 13 => "化学",
- 14 => "生物",
- 7 => "政治",
- 8 => "历史",
- 9 => "地理",
- 10 => "信息技术",
- );
- private $title = array(
- 0 => "",
- 1 => "一级教师",
- 2 => "二级教师",
- 3 => "三级教师",
- 4 => "高级教师",
- );
- // 教师列表
- public function actionIndex()
- {
- $data = array();
- // 判断是否教员组长
- $teachArray = array();
- $teacherList = array();
- $realname = safe_replace(Yii::app()->request->getQuery('realname'));
- $subject_id = safe_replace(Yii::app()->request->getQuery('subject_id'));
- $class_id = safe_replace(Yii::app()->request->getQuery('class_id'));
- if (!isset($subject_id) || empty($subject_id)) {
- $subject_id = 0;
- }
- $class_data = array();
- if(is_numeric($realname)){
- //搜索教师账号
- $BTeacher=new BusinessTeacher();
- $teacherIdArr=$BTeacher->getTeacherIdByNumber($realname,$this->schoolId);
- if(!$teacherIdArr){
- $teachersList=array();
- $teachersList['rs']=array();
- $teachersList["pager"]=new CPagination(0, 10);
- }else{
- $teachersList = $this->schoolManager->getTeachersListre($teacherIdArr, $subject_id, $class_id, array("add_time desc"));
- }
- }else{
- $teachersList = $this->schoolManager->getTeachersListre($realname, $subject_id, $class_id, array("add_time desc"));
- }
- $classes = ClassModel::model()->findAll('semester_id=:semester_id and is_hide=0', array(':semester_id' => $this->semesterId));
- if ($classes) {
- foreach ($classes as $v) {
- $class_data[$v->class_id] = $v->class_name;
- }
- }
- $data['teachArray'] = $teachersList["rs"];
- $data['realname'] = $realname;
- $data['class_id'] = $class_id;
- $data['class_data'] = $class_data;
- $data['subject_id'] = $subject_id;
- $data['pages'] = $teachersList["pager"];
- $data['page_total'] = $teachersList["pager"]->rowsCount;
- $data['postlist'] = $this->post;
- $data['subjectslist'] = Yii::app()->params['subjectId'];
- if(isset($data['subjectslist'][6])){
- unset($data['subjectslist'][6]);
- }
- if(isset($data['subjectslist'][51])){
- unset($data['subjectslist'][51]);
- }
- if(isset($data['subjectslist'][18])){
- unset($data['subjectslist'][18]);
- }
- if(isset($data['subjectslist'][19])){
- unset($data['subjectslist'][19]);
- }
- $data['titlelist'] = $this->title;
- $this->render('index', $data);
- }
- // 添加老师
- public function actionAdd()
- {
- if (Yii::app()->request->getIsPostRequest()) {
-
- $class_id = Yii::app()->request->getPost('class_array');
- $teacher_name = safe_replace(Yii::app()->request->getPost('teacher_name'));
- //$account = safe_replace(Yii::app()->request->getPost('account'));
- $phone_number = safe_replace(Yii::app()->request->getPost('phone_number'));
- $teacher_email = safe_replace(Yii::app()->request->getPost('teacher_email'));
- $teacher_age = safe_replace(Yii::app()->request->getPost('teacher_age'));
- $teacher_sex = safe_replace(Yii::app()->request->getPost('teacher_sex'));
- $status = safe_replace(Yii::app()->request->getPost('status'));
- $password = safe_replace(Yii::app()->request->getPost('password'));
- $password2 = safe_replace(Yii::app()->request->getPost('password2'));
- $posts = safe_replace(Yii::app()->request->getPost('posts'));
- $title = safe_replace(Yii::app()->request->getPost('title'));
- $subjects = safe_replace(Yii::app()->request->getPost('subjects'));
- $grade = safe_replace(Yii::app()->request->getPost('grade')); ///年级
- //$changeSchool=safe_replace(Yii::app()->request->getPost('changeSchool')); //教师更新学校标记
- $changeSchool=0;
- if (empty($teacher_name) || empty($phone_number) || empty($password)) {
- Yii::app()->jump->error('请确认教师信息是否填写完整!');
- }
- if (!preg_match("/1[3456789]{1}\d{9}$/", $phone_number)) {
- Yii::app()->jump->error('手机号格式有误!');
- }
- if ($password != $password2) {
- Yii::app()->jump->error('两次输入的密码不一致!');
- } elseif (strlen($password) < 5) {
- Yii::app()->jump->error('密码长度至少需要6位数!');
- }
- // 判断当前手机是否在当前学校已使用
- $businessTeacher=BusinessTeacher::model()->find('phone_number=:num ', array(':num' => $phone_number));
- if ($businessTeacher && !$changeSchool) {
- Yii::app()->jump->error('手机号已存在!');
- }
- //同学科同年级只能有六个年级主任
- if ($posts==3){
- if(!$grade){
- Yii::app()->jump->error('岗位为年级主任时必须填写年级!');
- }
- $has_3_posts = Teacher::model()->count('grade=:grade and posts=:posts and subjects=:subjects',
- array(':grade'=> $grade, ':posts'=> $posts, ':subjects'=> $subjects));
- if ($has_3_posts>=6){
- Yii::app()->jump->error('同学科,同年级最多可以创建六个主任账号!');
- }
- }else{
- $grade=0;
- }
- // 将教师登录账号插入主数据
- $password=md5(sha1($password));
- $time=time();
- $businessRs=false;
- $transaction_conn = $this->conn->beginTransaction();
- try{
- // $phoneLog=BusinessTeacherMoveLog::model()->find('phone_number=:pn and school_id=:sid',array(':pn'=>$phone_number,':sid'=>$this->schoolId));
- // if($phoneLog){
- // $teacherId=$phoneLog->teacher_id;
- // }else{
- // $teacherId=getUniqueId($this->schoolId);
- // }
- // if($changeSchool && $businessTeacher){
- //
- // $insertLog="insert into teacher_move_log(`teacher_id`,`phone_number`,`school_id`,`move_time`,`because`) values ('".$businessTeacher->teacher_id."','".$phone_number."','".$businessTeacher->school_id."','".$time."','1')";
- // $this->conn->createCommand($insertLog)->execute();
- // $this->conn->createCommand("delete from teacher where teacher_id='".$businessTeacher->teacher_id."'")->execute();
- // }
- $teacherId=getUniqueId($this->schoolId);
- $insertSql="insert into xb_teacher(`teacher_id`,`phone_number`,`password`,`school_id`,`add_time`,`status`) values ('".$teacherId."','".$phone_number."','".$password."','".$this->schoolId."','".$time."','".$status."')";
- $this->conn->createCommand($insertSql)->execute();
- $businessRs=true;
- }catch (\Exception $e){
- $transaction_conn->rollback();
- Yii::app()->jump->error('添加老师失败!');
- }
- if($businessRs){
- $transaction = $this->sConn->beginTransaction();
- try{
- $teacherSql="insert into teacher(`teacher_id`,`teacher_name`,`teacher_email`,`teacher_age`,`teacher_sex`,`add_time`,`status`,`coach_id`,`posts`,`title`,`subjects`,`grade`) values ";
- $teacherSql.="('".$teacherId."','".$teacher_name."','".$teacher_email."','".$teacher_age."','".$teacher_sex."','".$time."','".$status."','".$this->coachId."','".$posts."','".$title."','".$subjects."','".$grade."')";
- $this->sConn->createCommand($teacherSql)->execute();
- $transaction_conn->commit();
- $transaction->commit();
- $this->redirect(array('teacher/index'));
- }catch (\Exception $e){
- $transaction->rollback();
- $transaction_conn->rollback();
- Yii::app()->jump->error('添加老师失败!');
- }
- }
- }
- $data = array();
- // 获取当前学校当前学期班级未分配班级
- $classInfo = ClassModel::model()->findAll('semester_id=' . Yii::app()->session['session_semester_id']);
- // 获取当前学期已分配班级
- $getClass = TeacherToClass::model()->findAll('semester_id=' . Yii::app()->session['session_semester_id']);
- foreach ($classInfo as $key => $val) {
- foreach ($getClass as $k => $v) {
- if ($v->class_id == $val->class_id) {
- unset($classInfo[$key]);
- }
- }
- }
- if (Yii::app()->session['coachInfo']['leader'] == 0) {
- // 获取当前教员管理班级
- $conclass = array();
- $coachClass = $this->schoolManager->getCoachClassesRelations($this->coachId, "OBJ");
- foreach ($coachClass as $cc => $aa) {
- array_push($conclass, $aa->class_id);
- }
- foreach ($classInfo as $ci => $cf) {
- if (!in_array($cf->class_id, $conclass)) {
- unset($classInfo[$ci]);
- }
- }
- }
- if (empty($classInfo)) {
- //Yii::app()->jump->error('暂无班级可分配请先添加班级!',$this->createUrl('classes/index'));
- }
- $data['classInfo'] = $classInfo;
- $this->render('add', $data);
- }
- public function actionVerifyphone_number()
- {
- $phone_number = safe_replace(Yii::app()->request->getPost('phone_number'));
- $is_edit = safe_replace(Yii::app()->request->getPost('is_edit'));
- if (!preg_match("/1[3456789]{1}\d{9}$/", $phone_number)) {
- Yii::app()->jump->error('手机号格式有误!');
- }
- if ($is_edit == 1) {
- $teacher_id = safe_replace(Yii::app()->request->getPost('teacher_id'));
- $getBtteacher = BusinessTeacher::model()->find('teacher_id=:tid', array(':tid' => $teacher_id));
- $Btteacher = BusinessTeacher::model()->find('phone_number=:phone_number', array(':phone_number' => $phone_number));
- if (!$getBtteacher) {
- echo json_encode(array('status' => 0));
- exit;
- }
- if(!$Btteacher || $Btteacher->teacher_id==$teacher_id){
- exit(json_encode(array('status' => 1)));
- }elseif($Btteacher->school_id==$this->schoolId){
- exit(json_encode(array('status' => -1)));
- }else{
- //查学校
- $teacherSchool=BusinessSchool::model()->find('school_id=:sid',array(':sid'=>$Btteacher->school_id));
- exit(json_encode(array('status' => 0,'data'=>$teacherSchool->school_name)));
- }
- } else {
- $teacher=BusinessTeacher::model()->find('phone_number=:phone_number', array(':phone_number' => $phone_number));
- if($teacher){
- if($teacher->school_id==$this->schoolId){
- echo json_encode(array('status' => -1));
- exit;
- }else{
- //查学校
- $teacherSchool=BusinessSchool::model()->find('school_id=:sid',array(':sid'=>$teacher->school_id));
- echo json_encode(array('status' => 0,'data'=>$teacherSchool->school_name));
- exit;
- }
- }
- echo json_encode(array('status' => 1));
- exit;
- }
- }
- // 编辑教师
- public function actionEdit()
- {
- $thid = safe_replace(Yii::app()->request->getQuery('thid'));
- if (empty($thid)) {
- Yii::app()->jump->error('您访问的页面不存在!');
- }
- // 当前教师信息
- $teacherInfo = Teacher::model()->find('teacher_id=:tid', array(':tid' => $thid));
- $getBtteacher = BusinessTeacher::model()->find('teacher_id=:tid', array(':tid' => $thid));
- if (empty($teacherInfo) || empty($getBtteacher)) {
- Yii::app()->jump->error('未找到该教师信息!');
- }
- if (Yii::app()->request->getIsPostRequest()) {
- $data = array();
- //$account = safe_replace(Yii::app()->request->getPost('account'));
- $teacher_name = safe_replace(Yii::app()->request->getPost('teacher_name'));
- $phone_number = safe_replace(Yii::app()->request->getPost('phone_number'));
- $teacher_email = safe_replace(Yii::app()->request->getPost('teacher_email'));
- $teacher_age = safe_replace(Yii::app()->request->getPost('teacher_age'));
- $teacher_sex = safe_replace(Yii::app()->request->getPost('teacher_sex'));
- $status = safe_replace(Yii::app()->request->getPost('status'));
- $password = safe_replace(Yii::app()->request->getPost('password'));
- $password2 = safe_replace(Yii::app()->request->getPost('password2'));
- //$class_id = Yii::app()->request->getPost('class_array');
- $posts = safe_replace(Yii::app()->request->getPost('posts'));
- $title = safe_replace(Yii::app()->request->getPost('title'));
- $subjects = safe_replace(Yii::app()->request->getPost('subjects'));
- $grade = safe_replace(Yii::app()->request->getPost('grade'));
- //$changeSchool = safe_replace(Yii::app()->request->getPost('changeSchool'));
- $changeSchool=0;
- if (empty($teacher_name) || empty($phone_number)) {
- Yii::app()->jump->error('请确认教师信息是否填写完整!');
- }
- $businessTeacher=BusinessTeacher::model()->find('phone_number=:num ', array(':num' => $phone_number));
- if($businessTeacher && $businessTeacher->teacher_id!=$thid){
- if($businessTeacher->school_id==$this->schoolId){
- Yii::app()->jump->error('手机号在本校已存在!');
- }elseif(!$changeSchool){
- Yii::app()->jump->error('手机号已存在!');
- }
- }
- if (!empty($password) && !empty($password2) && ($password == $password2)) {
- if (strlen($password) < 5) {
- Yii::app()->jump->error('密码长度至少需要6位数!');
- }
- //$teacherInfo->password = md5(sha1($password));
- //$getBtteacher->password = md5(sha1($password));
- $data = array(
- 'phone_number' => $phone_number,
- 'password' => md5(sha1($password)),
- 'status' => $status
- );
- } else {
- $data = array(
- 'phone_number' => $phone_number,
- 'status' => $status
- );
- }
- //同学科同年级只能有六个年级主任
- if ($posts==3){
- if(!$grade){
- Yii::app()->jump->error('岗位为年级主任时必须填写年级!');
- }
- $has_3_posts = Teacher::model()->count('teacher_id!=:teacher_id and grade=:grade and posts=:posts and subjects=:subjects',
- array(':teacher_id'=>$thid,':grade'=> $grade, ':posts'=> $posts, ':subjects'=> $subjects));
- if ($has_3_posts>=6){
- Yii::app()->jump->error('同学科,同年级最多可以创建六个主任账号!');
- }
- }else{
- $grade=0;
- }
- // 将教师登录账号插入主数据
- $time=time();
- $businessRs=false;
- $transaction_conn = $this->conn->beginTransaction();
- try{
- $updateSql="update xb_teacher set ";
- $setArr=array();
- foreach ($data as $key => $val){
- $setArr[]="`".$key."`='".$val."'";
- }
- $updateSql.=implode(',',$setArr);
- $updateSql.=" where teacher_id='".$thid."'";
- $this->conn->createCommand($updateSql)->execute();
- $businessRs=true;
- }catch (\Exception $e){
- $transaction_conn->rollback();
- Yii::app()->jump->error('修改老师失败!');
- }
- if($businessRs){
- $transaction = $this->sConn->beginTransaction();
- try{
- $teachdata['teacher_name'] = $teacher_name;
- $teachdata['teacher_email'] = $teacher_email;
- $teachdata['teacher_age'] = $teacher_age;
- $teachdata['teacher_sex'] = $teacher_sex;
- $teachdata['add_time'] = $time;
- $teachdata['status'] = $status;
- $teachdata['posts'] = $posts;
- $teachdata['title'] = $title;
- $teachdata['subjects'] = $subjects;
- $teachdata['grade'] = $grade;
- $updateSql="update teacher set ";
- $setArr=array();
- foreach ($teachdata as $key => $val){
- $setArr[]="`".$key."`='".$val."'";
- }
- $updateSql.=implode(',',$setArr);
- $updateSql.=" where teacher_id='".$thid."'";
- $this->sConn->createCommand($updateSql)->execute();
- $transaction_conn->commit();
- $transaction->commit();
- $this->redirect(array('teacher/index'));
- }catch (\Exception $e){
- $transaction->rollback();
- $transaction_conn->rollback();
- Yii::app()->jump->error('修改失败!');
- }
- }
- }
- $data = array();
- // 当前教师所执教班级
- $getClass = TeacherToClass::model()->findAll('teacher_id=:tid', array(':tid' => $thid));
- $toTeacher = array();
- foreach ($getClass as $va) {
- array_push($toTeacher, $va->class_id);
- }
- // 获取当前学校班级
- $classInfo = ClassModel::model()->findAll('semester_id=' . Yii::app()->session['session_semester_id']);
- if (Yii::app()->session['coachInfo']['leader'] == 0) {
- // 获取当前教员管理班级
- $coachClass = $this->schoolManager->getCoachClassesRelations($this->coachId, "OBJ");
- $ttttt = array();
- foreach ($coachClass as $cc => $aa) {
- array_push($ttttt, $aa->class_id);
- }
- foreach ($classInfo as $ci => $cf) {
- if (!in_array($cf->class_id, $ttttt)) {
- unset($classInfo[$ci]);
- }
- }
- }
- $data['classStr'] = implode(',', $toTeacher);
- $data['toTeacher'] = $toTeacher;
- $data['classInfo'] = $classInfo;
- $data['teacherInfo'] = $teacherInfo;
- $data['getBtteacher'] = $getBtteacher;
- $this->render('edit', $data);
- }
- public function actionDelTeacherAct()
- {
- $teacherId = Req::post("teacherId");
- echo json_encode($this->schoolManager->purgeTeacher($teacherId));
- exit;
- }
- public function actionExcelInfo(){
- $this->render('excelinfo');
- }
- //导入教师信息
- public function actionImport(){
- ini_set ('memory_limit', '300M');
- if(!$_FILES){
- Yii::app()->jump->error('文件大小超过范围');
- }else {
- if (!isset($_FILES['file']) || !isset($_FILES['file']['size']) || $_FILES['file']['size'] > 5242880) {
- Yii::app()->jump->error('文件大小超过范围');
- }
- }
- $uploader = new Uploader("upload/tmpDir/UploadClassesStudentsList/{$this->schoolId}/");
- $uploader->allowTypes = array("xls","xlsx");
- $uploader->fieldsMappings = array("exname" => array(0 => $this->schoolId));
- $file = $uploader->act();
- $file = Arr::current(Arr::current($file));
- if (!$file || !isset($file["error"]))
- Yii::app()->jump->error('请上传的Excel!');
- if ($file["error"] != 0) {
- switch ($file["error"]) {
- case 2001:
- Yii::app()->jump->error('文件类型不符');
- break;
- case 2002:
- Yii::app()->jump->error('文件大小超出允许范围');
- break;
- default:
- Yii::app()->jump->error('上传失败');
- break;
- }
- }
- $inputFileName = $file["src"];
- // 导入PHPExcel类
- Yii::import('application.extensions.*');
- require_once('phpexcel/PHPExcel/IOFactory.php');
- try{
- $objPHPExcel = PHPExcel_IOFactory::load($inputFileName);
- $sheetData = $objPHPExcel->getActiveSheet()->toArray(null, true, true, true);
- //FIXME 2019-12-02
- @unlink($file["src"]);
- }catch (Exception $e){
- //FIXME 2019-12-02
- @unlink($file["src"]);
- Yii::app()->jump->error('Excel格式不正确:'.$e->getMessage());
- }
- if(!$sheetData)
- {
- Yii::app()->jump->error('请正确的Excel!');
- }
- unset($objPHPExcel);
- //模板校验
- $excelTemp = array('A'=>'*教师姓名','B'=>'*登录手机号','C'=>'*学科','D'=>'*岗位','E'=>'职称','F'=>'执教班级','G'=>'教龄','H'=>'性别','I'=>'年级');
- if(count($excelTemp) != count($sheetData[1])){
- Yii::app()->jump->error('导入的excel格式与模版不一致,请重新上传');
- }
- foreach($excelTemp as $key=>$temp){
- if(!(isset($sheetData[1][$key]) && $sheetData[1][$key] == trim($temp))){
- Yii::app()->jump->error('导入的excel格式与模版不一致,请重新上传');
- }
- }
- unset($sheetData[1]);
- if(!$sheetData)
- {
- Yii::app()->jump->error('请输入教师数据');
- }
- $updateSql = '';
- $password = '123456';
- $busTeacherData = $schoolTeacherData = array(); //新增记录
- $updateTeacherData=array(); //修改教师信息
- $delOldTeacherClass=array(); //删除同科目原执教教师记录
- $addTeacherClass=array(); //添加新执教教师
- Yii::app()->jump->setErrorWait('5');
- $schoolId = Yii::app()->session['coachInfo']['school_id'];
- $postArr = $this->post;
- unset($postArr[0]);
- $titleArr = $this->title;
- unset($titleArr[0]);
- $subjectArr = array(
- 3 => "数学",
- 8 => "英语",
- 9 => "语文",
- 12 => "物理",
- 13 => "化学",
- 14 => "生物",
- 15 => "政治",
- 16 => "历史",
- 17 => "地理",
- 20 => "其它",
- );
- $subjectArr=Yii::app()->params['subjectId'];
- if(Yii::app()->params['section']==1){
- unset($subjectArr[6]);
- unset($subjectArr[51]);
- }
- $phoneArr = array();
- foreach($sheetData as $value){
- $value['B'] = trim($value['B']);
- if(!empty($value['B'])){
- $phoneArr[] = '"'.$this->myTrim($value['B']).'"';
- }
- }
- //查询老师手机号
- $phoneInfo = BusinessTeacher::model()->getAddTeacherInfo($phoneArr);
- $samePhone = array();
- foreach($sheetData as $val){
- $samePhone[] = ''.$val['B'];
- }
- $countSame = array_count_values($samePhone);
- $alert = "教师手机号有重复请重新上传";
- $check = false;
- $count = 0;
- foreach($countSame as $key=>$item){
- if(empty($key)) continue;
- if($item>1){
- $check = true;
- foreach($sheetData as $v){
- if($v['B'] == $key){
- $count++;
- $alert .= "</br>{$v['A']}:{$v['B']}";
- }
- }
- }
- }
- if($check){
- Yii::app()->jump->setHeight(100+$count*15);
- Yii::app()->jump->error($alert);
- }
- $classError=array();
- $directorCount=array();
- $classSubject=array();
- foreach ($sheetData as $val){
- if(empty($val['B'])){
- Yii::app()->jump->error('手机号不能为空');
- }
- $oldTeacherId=0;
- $phoneNum = trim($val['B']);
- $phoneNum = $this->myTrim($phoneNum);
- if(empty($val['A'])){
- Yii::app()->jump->error('教师姓名不能为空');
- }
- $teacherName = $this->myTrim($val['A']);
- if(preg_match('/^[\x{4e00}-\x{9fa5}a-zA-Z0-9·]+$/u', $teacherName)>0){
- $teacherName = $this->myTrim($val['A']);
- }elseif(preg_match('/[\x{4e00}-\x{9fa5}0-9]/u', $teacherName)>0){
- Yii::app()->jump->error('确保教师姓名是汉字</br>'.$teacherName);
- }
- // if(preg_match('/^[\x{4e00}-\x{9fa5}·]+$/u', $teacherName)>0){
- // $teacherName = $this->myTrim($val['A']);
- // }else{
- // Yii::app()->jump->error('确保教师姓名是汉字</br>'.$teacherName);
- // }
- if (!preg_match("/1[3456789]{1}\d{9}$/", $phoneNum)) {
- Yii::app()->jump->error("教师手机号有误请重新上传</br>{$teacherName}:$phoneNum");
- }
- if(isset($phoneInfo[$phoneNum])){
- // Yii::app()->jump->error("教师手机号已存在,勿重复添加</br>{$teacherName}:$phoneNum");
- //对比姓名
- $teacherAccount=$this->schoolManager->getTeacherAccount($phoneInfo[$phoneNum]);
- if($teacherAccount){
- // 当前教师信息
- $teacherInfo = Teacher::model()->find('teacher_id=:tid', array(':tid' => $phoneInfo[$phoneNum]));
- if($teacherAccount['school_id']!=$this->schoolId){
- Yii::app()->jump->error("该手机号已存在,请仔细核查是否填写错误,若需转校可联系技术支持处理</br>{$teacherName}:$phoneNum");
- }
- if($teacherInfo->teacher_name!=$teacherName){
- Yii::app()->jump->error("教师姓名与系统内教师不匹配,请检查</br>{$teacherName}:$phoneNum");
- }
- $oldTeacherId=$phoneInfo[$phoneNum];
- }
- }
- if(empty($val['C'])){
- Yii::app()->jump->error('学科不能为空');
- }
- $subject = $this->myTrim($val['C']);
- if(!in_array($subject,$subjectArr)){
- Yii::app()->jump->error($subject.'学科不存在');
- }
- $subjectId = array_search($subject,$subjectArr);
- if(empty($val['D'])){
- Yii::app()->jump->error('岗位不能为空');
- }
- $post = $this->myTrim($val['D']);
- if(!in_array($post,$postArr)){
- Yii::app()->jump->error($post.'岗位不存在');
- }
- $post = array_search($post,$postArr);
- $grade=$val['I'];
- if(!empty($val['I']) && !isset(Yii::app()->params['grade_config'][$val['I']])){
- Yii::app()->jump->error('年级设置不正确');
- }
- if($post==3){
- if(empty($val['I'])){
- Yii::app()->jump->error('岗位为年级主任时必须填写年级!');
- }
- if(isset($phoneInfo[$phoneNum]) && $teacherInfo){
- if($teacherInfo->posts!=3 || $teacherInfo->grade!=$grade || $teacherInfo->subjects!=$subjectId){
- if(!isset($directorCount[$subjectId][$grade])){
- $directorCount[$subjectId][$grade]=1;
- }else{
- $directorCount[$subjectId][$grade]++;
- }
- }
- }else{
- if(!isset($directorCount[$subjectId][$grade])){
- $directorCount[$subjectId][$grade]=1;
- }else{
- $directorCount[$subjectId][$grade]++;
- }
- }
- }else{
- $grade=0;
- }
- $title = $this->myTrim($val['E']);
- if(empty($title)){
- // Yii::app()->jump->error('职称不能为空');
- }
- if(!empty($val['E']) && !in_array($title,$titleArr)){
- Yii::app()->jump->error($val['E'].'职称不存在');
- }
- //执教班级
- $needAddClass=array();
- if(!empty($val['F'])){
- $val['F']=str_replace(";",";",$val['F']);
- $classNames=explode(";",$val['F']);
- $notFondClass=array();
- if($classNames){
- foreach ($classNames as $className){
- if(!$className) continue;
- $classId=$this->schoolManager->getClassInfoByClassName($className,$this->semesterId);
- //查询
- if($classId){
- if(isset($classSubject[$classId]) && $classSubject[$classId]['subjectId']==$subjectId){
- Yii::app()->jump->error('多名同学科教师不能执教同一班级<br>'.$val['A'].','.$classSubject[$classId]['name']);
- }else{
- $classSubject[$classId]=array(
- 'subjectId'=>$subjectId,
- 'name'=>$val['A']
- );
- }
- $classSubjectTeacher=$this->schoolManager->getTeacherByClassSubject($classId,$subjectId);
- if($classSubjectTeacher){
- //已有相同科目教师,覆盖原记录
- $delOldTeacherClass[]="delete from teacher_class_relation where class_id='{$classId}' and teacher_id='{$classSubjectTeacher['teacher_id']}'";
- }
- $needAddClass[]=$classId;
- }else{
- $notFondClass[]=$className;
- }
- }
- if($notFondClass){
- $classError[]=$teacherName.":".$phoneNum." ".implode(',',$notFondClass);
- }
- }
- }
- $title = intval(array_search($title,$titleArr));
- if($val['G'] && !is_numeric($val['G'])){
- Yii::app()->jump->error('教龄需填写数字');
- }
- $teacherAge = intval($val['G']);
- $sex = trim($val['H']);
- $teacherSex = 0;
- if(strstr($sex,'女') !== false) $teacherSex = 1;
- if($oldTeacherId){
- $teacherId=$oldTeacherId;
- $updateTeacherData[]="update teacher set teacher_age='{$teacherAge}',teacher_sex='{$teacherSex}',posts='{$post}',title='{$title}',subjects='{$subjectId}',grade='{$grade}' where teacher_id='{$teacherId}'";
- }else{
- $teacherId=getUniqueId($this->schoolId);
- $pwd = '"'.md5(sha1($password)).'"';
- $busTeacherData[] = array($teacherId,$phoneNum,$pwd,$schoolId,time());
- $schoolTeacherData[] = array($teacherId,'"'.$teacherName.'"',$teacherAge,$teacherSex,time(),$this->coachId,$post,$title,$subjectId,$grade);
- }
- if($needAddClass){
- foreach ($needAddClass as $cid){
- $addTeacherClass[]="('".$cid."','".$teacherId."','".$this->semesterId."')";
- }
- }
- }
- if($classError){
- Yii::app()->jump->error('以下老师的部分执教班级系统不存在,请核对后重新输入<br>'.implode('<br>',$classError));
- }
- if($directorCount){
- foreach ($directorCount as $subject=>$val){
- foreach ($val as $grade =>$num){
- $has_3_posts = Teacher::model()->count('grade=:grade and posts=:posts and subjects=:subjects',
- array(':grade'=> $grade, ':posts'=> 3, ':subjects'=> $subject));
- if(($has_3_posts+$num)>6){
- Yii::app()->jump->error('同学科,同年级最多可以创建6个年级主任账号');
- }
- }
- }
- }
- $businessCommit=false;
- if( $updateTeacherData || $busTeacherData) {
- $schInsertSql='';
- if($busTeacherData && $schoolTeacherData){
- $busInsertSql = 'INSERT INTO xb_teacher (`teacher_id`, `phone_number`,`password`,`school_id`,`add_time`) VALUES ';
- $schInsertSql = 'INSERT INTO teacher (`teacher_id`, `teacher_name`,`teacher_age`,`teacher_sex`,`add_time`,`coach_id`,`posts`,`title`,`subjects`,`grade`) VALUES ';
- foreach($busTeacherData as $btVal){
- $busInsertSql .= '('.implode(',',$btVal).'),';
- }
- foreach($schoolTeacherData as $stVal){
- $schInsertSql .= '('.implode(',',$stVal).'),';
- }
- $busInsertSql = substr($busInsertSql,0,-1);
- $schInsertSql = substr($schInsertSql,0,-1);
- $busTran = $this->conn->beginTransaction();
- try{
- $this->conn->createCommand($busInsertSql)->execute();
- $businessCommit=true;
- }catch(Exception $e){
- $busTran->rollBack();
- Yii::app()->jump->error('教师批量上传失败!');
- }
- }
- if($businessCommit || !$busTeacherData){
- $transaction = $this->sConn->beginTransaction();
- try{
- if($schInsertSql){
- $this->sConn->createCommand($schInsertSql)->execute();
- }
- if($updateTeacherData){
- foreach ($updateTeacherData as $sql){
- $this->sConn->createCommand($sql)->execute();
- }
- }
- if($delOldTeacherClass){
- foreach ($delOldTeacherClass as $sql){
- $this->sConn->createCommand($sql)->execute();
- }
- }
- if($addTeacherClass){
- $insertTeacherClassRelationSql="insert into teacher_class_relation(`class_id`,`teacher_id`,`semester_id`) values ".implode(',',$addTeacherClass);
- $this->sConn->createCommand($insertTeacherClassRelationSql)->execute();
- }
- if($businessCommit){
- $busTran->commit();
- }
- $transaction->commit();
- $url=$this->createUrl('/teacher/index');
- $get_cookie = Yii::app()->request->getCookies();
- $nowAction=strtolower($this->controller.'/'.$this->action);
- if (isset($get_cookie['needMemoryAction']) && in_array($nowAction,Yii::app()->params['needMemoryAction'])) {
- $url=$get_cookie['needMemoryAction'];
- unset(Yii::app()->request->cookies['needMemoryAction']);
- }
- Yii::app()->jump->error('教师批量上传成功!',$url);
- }catch(Exception $e){
- if($businessCommit){
- $busTran->rollBack();
- }
- $transaction->rollBack();
- Yii::app()->jump->error('教师批量上传失败!');
- }
- }
- }else{
- Yii::app()->jump->error('教师批量上传失败!');
- }
- }
- protected function myTrim($str)
- {
- $search = array(" "," ","\n","\r","\t");
- $replace = array("","","","","");
- return str_replace($search, $replace, $str);
- }
- //技术支持修改手机号功能
- public function actionChange(){
- $phone_number = safe_replace(Yii::app()->request->getPost('phone_number'));
- if (Yii::app()->request->getIsPostRequest()) {
- if(isset(Yii::app()->session['testFlag']) && (Yii::app()->session['testFlag']==1)){
- if (!preg_match("/1[3456789]{1}\d{9}$/", $phone_number)) {
- Yii::app()->jump->error('手机号格式有误!');
- }
- // 判断当前手机是否在当前学校已使用
- $getPhone = BusinessTeacher::model()->find('phone_number=:phnum ', array(':phnum' => $phone_number));
- if (!$getPhone) {
- Yii::app()->jump->error('该手机号不存在!');
- }elseif($getPhone->school_id==$this->schoolId){
- Yii::app()->jump->error('该手机号已在当前学校注册!');
- }
- $allowChange=false;
- $needle='1';
- //校验修改后号码是否存在
- for($i=1;$i<10;$i++){
- $newPhoneNumber = substr_replace($phone_number,$i,strpos($phone_number,$needle),strlen($needle));
- $checkNumber=BusinessTeacher::model()->find('phone_number=:phnum ', array(':phnum' => $newPhoneNumber));
- if(!$checkNumber){
- $allowChange=true;
- break;
- }
- }
- if(!$allowChange){
- Yii::app()->jump->error('该手机号去重次数过多,不允许再次去重!');
- }
- if (BusinessTeacher::model()->updateAll(array('phone_number'=>$newPhoneNumber), "phone_number=:phone_number", array(":phone_number" => $phone_number))) {
- Yii::app()->jump->error('手机号修改成功!');
- }else{
- Yii::app()->jump->error('手机号修改失败!');
- }
- }else{
- Yii::app()->jump->error('请联系技术支持处理!');
- }
- }
- $this->render('change');
- }
- public function actionGetTeacherForNumber()
- {
- $phone_number = safe_replace(Yii::app()->request->getPost('phone_number'));
- if (!preg_match("/1[3456789]{1}\d{9}$/", $phone_number)) {
- echo json_encode(array('status' => 1));
- }
- $teacher=BusinessTeacher::model()->find('phone_number=:phone_number', array(':phone_number' => $phone_number));
- if($teacher){
- if($teacher->school_id==$this->schoolId){
- echo json_encode(array('status' => -1));
- exit;
- }else{
- $schoolName='';
- $teacherName='';
- //查学校
- $teacherSchool=BusinessSchool::model()->find('school_id=:sid',array(':sid'=>$teacher->school_id));
- if($teacherSchool){
- $schoolName=$teacherSchool->school_name;
- }
- //查询教师信息
- $schoolConn=$this->getSchoolDbConnection($teacher->school_id);
- if($schoolConn){
- $teacherInfo=$this->getSchoolDbConnection($teacher->school_id)->createCommand("select teacher_name from teacher where teacher_id='{$teacher->teacher_id}'")->queryRow();
- if($teacherInfo){
- $teacherName=$teacherInfo['teacher_name'];
- }
- }
- $data=array(
- 'schoolName'=>$schoolName,
- 'teacherName'=>$teacherName
- );
- exit(json_encode(array('status' => 0,'data'=>$data)));
- }
- }else{
- exit(json_encode(array('status' => -2)));
- }
- }
-
- /**
- * 导出教师
- */
- public function actionBatchImport(){
-
- $realname = safe_replace(Yii::app()->request->getQuery('realname'));
- $subject_id = safe_replace(Yii::app()->request->getQuery('subject_id'));
- $class_id = safe_replace(Yii::app()->request->getQuery('class_id'));
- $excel_title = '教师信息导出';
- $condition = array();
- // $condition[] = "(tcr.semester_id='{$this->semesterId}' or tcr.semester_id is null)";
- $condition[] = "(c.is_hide=0 or c.is_hide is null)";
- if($realname){
- $condition[] = "t.teacher_name like '%{$realname}%'";
- }
- if($subject_id){
- $condition[] = "t.subjects = {$subject_id}";
- }
- if($class_id){
- $condition[] = "tcr.class_id = '{$class_id}'";
- }
- if($condition){
- $condition = " where ".implode(" and ", $condition);
- }else{
- $condition = '';
- }
- $sql = "select t.*,GROUP_CONCAT(c.class_name SEPARATOR ';') class_name from teacher t "
- . "left join teacher_class_relation tcr on t.teacher_id = tcr.teacher_id "
- . "left join class c on c.class_id=tcr.class_id {$condition} "
- . "group by t.teacher_id";
-
- $teacher_data = $this->sConn->createCommand($sql)->queryAll();
- if($teacher_data){
- $teacher_phone = array();
- $subjects_name = array();
- $teacher_ids = _array_column($teacher_data, 'teacher_id');
- $subject_ids = _array_column($teacher_data, 'subjects');
- $sql = "select subject_id,subject_name from subject where subject_id in (".implode(',',$subject_ids).")";
- $subjectInfo = $this->conn->createCommand($sql)->queryAll();
- if($subjectInfo){
- foreach($subjectInfo as $k=>$v){
- $subjects_name[$v['subject_id']] = $v['subject_name'];
- }
- }
- $sql = "select teacher_id,phone_number from xb_teacher where teacher_id in (".implode(',',$teacher_ids).")";
- $teacherInfo = $this->conn->createCommand($sql)->queryAll();
- if($teacherInfo){
- foreach($teacherInfo as $val){
- $teacher_phone[$val['teacher_id']] = $val['phone_number'];
- }
- }
- foreach($teacher_data as $k=>$v){
- //查询班级
- $classNames=array();
- $teacherClass=$this->sConn->createCommand("select class_name from teacher_class_relation tcr left join class c on c.class_id=tcr.class_id where tcr.teacher_id='{$v['teacher_id']}' and c.semester_id='{$this->semesterId}'")->queryAll();
- if($teacherClass){
- foreach ($teacherClass as $c){
- $classNames[]=$c['class_name'];
- }
- $teacher_data[$k]['class_name']=implode(',',$classNames);
- }else{
- $teacher_data[$k]['class_name']='';
- }
- $teacher_data[$k]['phone_number'] = '';
- if(isset($teacher_phone[$v['teacher_id']])){
- $teacher_data[$k]['phone_number'] = $teacher_phone[$v['teacher_id']];
- }
- $teacher_data[$k]['subject_name'] = '';
- if(isset($subjects_name[$v['subjects']])){
- $teacher_data[$k]['subject_name'] = $subjects_name[$v['subjects']];
- }
- $teacher_data[$k]['posts_name'] = '';
- if($v['posts'] == 1){
- $teacher_data[$k]['posts_name'] = '班主任';
- }else if($v['posts'] == 2){
- $teacher_data[$k]['posts_name'] = '教研组长';
- }else if($v['posts'] == 3){
- $teacher_data[$k]['posts_name'] = '年级主任';
- }else if($v['posts'] == 4){
- $teacher_data[$k]['posts_name'] = '任课教师';
- }else if($v['posts'] == 5){
- $teacher_data[$k]['posts_name'] = '校长';
- }
- $teacher_data[$k]['title_name'] = '';
- if($v['title'] == 1){
- $teacher_data[$k]['title_name'] = '一级教师';
- }else if($v['title'] == 2){
- $teacher_data[$k]['title_name'] = '二级教师';
- }else if($v['title'] == 3){
- $teacher_data[$k]['title_name'] = '三级教师';
- }else if($v['title'] == 4){
- $teacher_data[$k]['title_name'] = '高级教师';
- }
- $teacher_data[$k]['teacher_sex_name'] = '';
- if($v['teacher_sex'] == 1){
- $teacher_data[$k]['teacher_sex_name'] = '女';
- }else{
- $teacher_data[$k]['teacher_sex_name'] = '男';
- }
- if($v['posts'] == 3){
- if(!$v['grade']){
- $teacher_data[$k]['grade_name'] = '年级未识别,请手动调整';
- }else{
- $teacher_data[$k]['grade_name'] = $v['grade'];
- }
- }else{
- $teacher_data[$k]['grade_name'] = '';
- }
-
- }
- // debug($teacherInfo);
- }
- if($teacher_data){
- $objPHPExcel = new PHPExcel();
- $objPHPExcel->getProperties()->setCreator("ctos")
- ->setLastModifiedBy("ctos")
- ->setTitle("教师信息")
- ->setSubject("教师信息")
- ->setDescription("导出教师信息")
- ->setKeywords("excel")
- ->setCategory("result file");
- $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(15);
- $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(15);
- $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(10);
- $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(15);
- $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(20);
- $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(40);
- $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(10);
- $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(10);
- $objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth(10);
- $objPHPExcel->setActiveSheetIndex(0)
- ->setCellValue('A1', '*教师姓名')
- ->setCellValue('B1', '*登录手机号')
- ->setCellValue('C1', '*学科')
- ->setCellValue('D1', '*岗位')
- ->setCellValue('E1', '职称')
- ->setCellValue('F1', '执教班级')
- ->setCellValue('G1', '教龄')
- ->setCellValue('H1', '性别')
- ->setCellValue('I1', '年级');
- $i = 2;
- foreach($teacher_data as $key=>$val){
- $objPHPExcel->getActiveSheet(0)->setCellValue('A' . $i, $val['teacher_name']);
- $objPHPExcel->getActiveSheet(0)->setCellValue('B' . $i, $val['phone_number']);
- $objPHPExcel->getActiveSheet(0)->setCellValue('C' . $i, $val['subject_name']);
- $objPHPExcel->getActiveSheet(0)->setCellValue('D' . $i, $val['posts_name']);
- $objPHPExcel->getActiveSheet(0)->setCellValue('E' . $i, $val['title_name']);
- $objPHPExcel->getActiveSheet(0)->setCellValue('F' . $i, $val['class_name']);
- $objPHPExcel->getActiveSheet(0)->setCellValue('G' . $i, $val['teacher_age']);
- $objPHPExcel->getActiveSheet(0)->setCellValue('H' . $i, $val['teacher_sex_name']);
- $objPHPExcel->getActiveSheet(0)->setCellValue('I' . $i, $val['grade_name']);
- $i++;
- }
- $objPHPExcel->setActiveSheetIndex(0);
- ob_end_clean(); // Added by me
- header("Accept-Ranges:bytes");
- header("Content-type:application/vnd.ms-excel;charset=UTF-8");
- header('Content-Disposition:attachment;filename="'.$excel_title.'.xls"');
- header('Cache-Control:max-age=0');
- $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
- $objWriter->save('php://output');
- exit;
-
-
- }else{
- Yii::app()->jump->error('导出失败,无教师数据',Yii::app()->createUrl('teacher/index'));
- }
- debug($teacher_data);
- }
- }
|