예제 #1
0
 /**
  * 新增/编辑校区AJAX方法
  * @param   array   $param  map<string,variant>类型参数
  *                  int     tc_id   ID,若为0表新增
  *                  int     tc_tiid 所属培训机构ID
  *                  string  tc_name 名称
  *                  int     tc_flag 状态,-1已删 0禁用 1启用 大于1待审
  *                  int     tc_environ  环境指数
  *                  int     tc_provid   地址省
  *                  int     tc_cityid   地址市
  *                  int     tc_areaid   地址区县
  *                  string  tc_ctcaddr  联系地址
  *                  string  tc_ctcperson    联系人
  *                  string  tc_ctcphone     联系电话
  */
 public function setTCFunc($param)
 {
     $resp = new AjaxResponse();
     $param = Func::param_copy($param, 'tc_id', 'tc_name', 'tc_tiid', 'tc_flag', 'tc_environ', 'tc_provid', 'tc_cityid', 'tc_areaid', 'tc_ctcaddr', 'tc_ctcperson', 'tc_ctcphone');
     if ($param['tc_name'] == '') {
         $resp->alert('培训校区名称不可为空');
         return $resp;
     }
     if (!Validate::isInt($param['tc_provid']) || $param['tc_provid'] < 1) {
         $resp->alert('请选择校区所在省');
         return $resp;
     }
     if ($param['tc_ctcaddr'] == '') {
         $resp->alert('请填写联系地址');
         return $resp;
     }
     if ($param['tc_ctcperson'] == '') {
         $param['tc_ctcperson'] = NULL;
     }
     if ($param['tc_ctcphone'] == '') {
         $resp->alert('请填写联系电话');
         return $resp;
     }
     if (!Validate::isInt($param['tc_environ'])) {
         $reps->alert('请填写环境指数');
         return $resp;
     }
     try {
         if ($param['tc_id']) {
             unset($param['tc_tiid']);
             TrainingInstitutionModel::setTrainingCampus($param);
             admin_log('edit', 'trainingcampus', "tc_id: " . $param['tc_id']);
         } else {
             $param['tc_id'] = TrainingInstitutionModel::addTrainingCampus($param);
             admin_log('add', 'trainingcampus', "tc_id: " . $param['tc_id']);
         }
         $resp->redirect('/admin/traininginstitution/tcinfo/' . $param['tc_id']);
     } catch (Exception $e) {
         $resp->alert($e->getMessage());
     }
     return $resp;
 }
예제 #2
0
 /**
  * 新增课程及编辑课程方法
  * 新增时只添加主表t_course;编辑时同时编辑子表t_course_开头的子表
  * @param   array   $param  map<string, variant>类型的参数
  *          int     cors_id     课程ID,若为0则表新增;否则表编辑
  *          string  cors_name   课程名称
  *          int     cors_tiid   课程所属培训机构.编辑时不可修改
  *          int     cors_cmid   授课模式,编辑时不可修改
  *          int     cors_stunumtype 授课班级类型
  *          int     cors_flag   状态,-1已删 0禁用 1启用 大于1表待审
  *          string  cors_url    网址
  *          string  grade_id_str    形如1,2,3样式的年级ID列表,0表所有年级
  *          string  subject_id_str  形如1,2,3样式的学科ID列表,0表所有学科
  *          string  class_id_str    形如1,2,3样式的考试类型ID列表
  *          map<int,int> kid_knprocid_pairs 知识点列表,键为知识点ID,值为
  *                                  认知类型
  *          string  cors_memo       备注
  *          list<map<string, variant>>  cc_list 课程校区子表数据
  *                  int     cc_id       课程校区子表ID,若为0表示新增
  *                  int     cc_corsid   所属课程ID
  *                  int     cc_tcid     若为空则表示为一对一课程;否则表示
  *                                      班级授课所属的校区ID
  *                  int     cc_ctfid    教师来源ID
  *                  string  cc_classtime 上课时间
  *                  date    cc_begindate    开课日期
  *                  date    cc_enddate      结束日期
  *                  int     cc_startanytime 是否随时开课,一对一时该值方可
  *                                          为1(此时cc_begindate、cc_enddate
  *                                          为空),否则必须为0
  *                  int     cc_hours    课时
  *                  double  cc_price    课程费用
  *                  int     cc_provid   上课地址省
  *                  int     cc_cityid   上课地址市
  *                  int     cc_areaid   上课地址区
  *                  string  cc_addr     上课地址明细
  *                  string  cc_ctcperson    联系人
  *                  string  cc_ctcphone     联系电话
  */
 public function setCorsFunc($param)
 {
     $resp = new AjaxResponse();
     $cors_id = $param['cors_id'] = intval($param['cors_id']);
     $param = Func::param_copy($param, 'cors_id', 'cors_name', 'cors_tiid', 'cors_cmid', 'cors_stunumtype', 'cors_flag', 'cors_url', 'grade_id_str', 'subject_id_str', 'class_id_str', 'kid_knprocid_pairs', 'cors_memo', 'cc_list', 'kid_all');
     if ($param['cors_id'] == 0) {
         unset($param['cors_id']);
         unset($param['cc_list']);
         unset($param['cors_memo']);
         if (!isset($param['kid_knprocid_pairs'])) {
             $param['kid_knprocid_pairs'] = array();
         }
     } else {
         if ($param['cors_memo'] == '') {
             $param['cors_memo'] = NULL;
         }
     }
     if (isset($param['kid_knprocid_pairs'])) {
         if ($param['kid_all'] == '1') {
             $param['kid_knprocid_pairs'] = array(0 => 0);
         }
     } else {
         if ($param['kid_all'] == '1') {
             $param['kid_knprocid_pairs'] = array(0 => 0);
         }
     }
     unset($param['kid_all']);
     if ($param['cors_name'] == '') {
         $resp->alert('课程名称不可为空');
         return $resp;
     }
     if (!Validate::isInt($param['cors_tiid'])) {
         $resp->alert('所属培训机构不可为空');
         return $resp;
     }
     if (!Validate::isInt($param['cors_cmid']) || $param['cors_cmid'] < 1) {
         $resp->alert('授课模式必须选择');
         return $resp;
     }
     if (!Validate::isInt($param['cors_stunumtype']) || $param['cors_stunumtype'] < 1) {
         $resp->alert('班级类型必须选择');
         return $resp;
     }
     if ($param['cors_cmid'] == 1 && $param['cors_stunumtype'] != 1 || $param['cors_cmid'] != 1 && $param['cors_stunumtype'] == 1) {
         $resp->alert('授课模式和班级类型不匹配');
         return $resp;
     }
     if (!Validate::isInt($param['cors_flag'])) {
         $resp->alert('状态标志必须选择');
         return $resp;
     }
     if ($param['cors_url'] == '') {
         $param['cors_url'] = NULL;
     }
     if (!Validate::isJoinedIntStr($param['grade_id_str'])) {
         $resp->alert('年级必须选择');
         return $resp;
     }
     if (!Validate::isJoinedIntStr($param['subject_id_str'])) {
         $resp->alert('学科必须选择');
         return $resp;
     }
     if (isset($param['class_id_str']) && $param['class_id_str'] != '' && !Validate::isJoinedIntStr($param['subject_id_str'])) {
         $resp->alert('考试类型不正确');
         return $resp;
     }
     $param['gradeid_list'] = explode(',', $param['grade_id_str']);
     $param['subjectid_list'] = explode(',', $param['subject_id_str']);
     if (isset($param['class_id_str']) && $param['class_id_str'] != '') {
         $param['classid_list'] = explode(',', $param['class_id_str']);
     }
     if ($cors_id) {
         // 编辑功能
         $campus_num = count($param['cc_list']);
         if ($campus_num < 1) {
             $resp->alert('请至少添加一个校区');
             return $resp;
         }
         $err = NULL;
         $tcid_arr = array();
         for ($i = 0; $i < $campus_num; $i++) {
             $param['cc_list'][$i] = Func::param_copy($param['cc_list'][$i], 'cc_id', 'cc_corsid', 'cc_tcid', 'cc_ctfid', 'cc_classtime', 'cc_begindate', 'cc_enddate', 'cc_startanytime', 'cc_hours', 'cc_price', 'cc_provid', 'cc_cityid', 'cc_areaid', 'cc_addr', 'cc_ctcperson', 'cc_ctcphone', 'cct_ctid_str');
             $param['cc_list'][$i]['cc_corsid'] = $cors_id;
             $err_pre = '';
             if ($param['cors_cmid'] != 1) {
                 $err_pre = '第' . ($i + 1) . '个校区';
                 if (!Validate::isInt($param['cc_list'][$i]['cc_tcid'])) {
                     $err = $err_pre . '没有选择具体的培训校区';
                     break;
                 }
                 $param['cc_list'][$i]['cc_tcid'] = intval($param['cc_list'][$i]['cc_tcid']);
                 if ($param['cc_list'][$i]['cc_tcid']) {
                     $tcid_arr[] = intval($param['cc_list'][$i]['cc_tcid']);
                 }
             } else {
                 $err_pre = '第' . ($i + 1) . '个校区';
                 if ($param['cc_list'][$i]['cc_tcid'] == '') {
                     $param['cc_list'][$i]['cc_tcid'] = NULL;
                 } else {
                     if (!Validate::isInt($param['cc_list'][$i]['cc_tcid'])) {
                         $err = $err_pre . '没有选择具体的培训校区';
                         break;
                     }
                     $param['cc_list'][$i]['cc_tcid'] = intval($param['cc_list'][$i]['cc_tcid']);
                     if ($param['cc_list'][$i]['cc_tcid']) {
                         $tcid_arr[] = intval($param['cc_list'][$i]['cc_tcid']);
                     }
                 }
             }
             if (!isset($param['cc_list'][$i]['cct_ctid_str'])) {
                 $param['cc_list'][$i]['cct_ctid_str'] = '';
             }
             /*
                             if ($param['cc_list'][$i]['cct_ctid_str'] == '')
                             {
                $err = $err_pre . '请添加授课教师';
                break;
                             }
             */
             if (strlen($param['cc_list'][$i]['cct_ctid_str']) > 0) {
                 if (!Validate::isJoinedIntStr($param['cc_list'][$i]['cct_ctid_str'])) {
                     $err = $err_pre . '请添加正确的授课教师';
                     break;
                 }
                 $param['cc_list'][$i]['teacherid_list'] = explode(',', $param['cc_list'][$i]['cct_ctid_str']);
             } else {
                 $param['cc_list'][$i]['teacherid_list'] = array();
             }
             unset($param['cc_list'][$i]['cct_ctid_str']);
             if (!Validate::isInt($param['cc_list'][$i]['cc_ctfid'])) {
                 $err = $err_pre . '请选择教师来源';
                 break;
             }
             if ($param['cc_list'][$i]['cc_classtime'] == '') {
                 $err = $err_pre . '请填写课程时间';
                 break;
             }
             if ($param['cc_list'][$i]['cc_startanytime'] == '1') {
                 $param['cc_list'][$i]['cc_startanytime'] = 1;
             } else {
                 $param['cc_list'][$i]['cc_startanytime'] = 0;
                 if ($param['cc_list'][$i]['cc_begindate'] == '') {
                     $err = $err_pre . '请填写课程周期开课日期';
                     break;
                 }
                 if (!Validate::isDate($param['cc_list'][$i]['cc_begindate'])) {
                     $err = $err_pre . '请填写正确的课程周期开课日期';
                     break;
                 }
                 if ($param['cc_list'][$i]['cc_enddate'] == '') {
                     $err = $err_pre . '请填写课程周期结束日期';
                     break;
                 }
                 if (!Validate::isDate($param['cc_list'][$i]['cc_enddate'])) {
                     $err = $err_pre . '请填写正确的课程周期结束日期';
                     break;
                 }
                 if (strcmp($param['cc_list'][$i]['cc_enddate'], $param['cc_list'][$i]['cc_begindate']) < 0) {
                     $err = $err_pre . '课程结束日期应大于开始日期';
                     break;
                 }
             }
             if (!Validate::isInt($param['cc_list'][$i]['cc_hours'])) {
                 $err = $err_pre . '请填写课时';
                 break;
             }
             if (!is_numeric($param['cc_list'][$i]['cc_price'])) {
                 $err = $err_pre . '请填写课程收费';
                 break;
             }
             if ($param['cc_list'][$i]['cc_provid'] == '0') {
                 $err = $err_pre . '请选择上课地址所在省市区';
                 break;
             }
             if ($param['cc_list'][$i]['cc_addr'] == '') {
                 $err = $err_pre . '请填写上课地址';
                 break;
             }
         }
         if ($err) {
             $resp->alert($err);
             return $resp;
         }
         if (count($tcid_arr) > 0) {
             if (count($tcid_arr) != count(array_unique($tcid_arr))) {
                 $resp->alert('校区列表中有相同的机构校区,请检查');
                 return $resp;
             }
         }
     }
     try {
         if ($cors_id) {
             $db = Fn::db();
             $cc_id_arr = array();
             $rows = CourseModel::courseCampusList("cc_id", array('cc_corsid' => $cors_id));
             if ($rows) {
                 foreach ($rows as $row) {
                     $cc_id_arr[] = intval($row['cc_id']);
                 }
             }
             $bOk = false;
             if (!$db->beginTransaction()) {
                 throw new Exception('启动存储过程失败');
             }
             $set_cc_id_arr = array();
             try {
                 CourseModel::setCourse($param, false);
                 foreach ($param['cc_list'] as $row) {
                     $row['cc_id'] = intval($row['cc_id']);
                     if ($row['cc_id']) {
                         CourseModel::setCourseCampus($row, false);
                         $set_cc_id_arr[] = $row['cc_id'];
                     } else {
                         CourseModel::addCourseCampus($row, false);
                     }
                 }
                 $remove_cc_id_arr = array_diff($cc_id_arr, $set_cc_id_arr);
                 if ($remove_cc_id_arr) {
                     CourseModel::removeCourseCampus(implode(',', $remove_cc_id_arr), false);
                 }
                 $bOk = $db->commit();
                 if (!$bOk) {
                     $db->rollBack();
                 }
             } catch (Exception $e) {
                 $db->rollBack();
                 throw $e;
             }
             if ($bOk) {
                 admin_log('edit', 'course', "cors_id: {$cors_id}");
                 $resp->redirect(site_url('admin/course/corsinfo/' . $cors_id));
             } else {
                 $resp->alert('执行存储过程失败');
             }
         } else {
             // 新增
             $cors_id = CourseModel::addCourse($param);
             admin_log('add', 'course', "cors_id: {$cors_id}");
             $resp->redirect(site_url('admin/course/setcorsinfo/' . $cors_id));
         }
     } catch (Exception $e2) {
         $resp->alert($e2->getMessage());
     }
     return $resp;
 }
예제 #3
0
 /**
  * 编辑授课教师AJAX方法
  * @param   array   $param  map<stirng,variant>类型的参数
  *                  int     scht_schid  学校id
  *                  int     ct_id   教师ID,若为0表新增
  *                  string  ct_name 名称
  *                  string  subject_id_str  形如1,3,4样式的学科ID列表
  *                  string  grade_id_str    形如1,3,4样式的年级ID列表
  *                  int     ct_flag     状态,-1已删,0禁用,1启用,大于1待审
  */
 public function setSchoolTeacherFunc($param)
 {
     $resp = new AjaxResponse();
     if (!$this->check_power_new('school_editteacher', false)) {
         $resp->alert('您没有权限执行该功能');
         return $resp;
     }
     $param = Func::param_copy($param, 'scht_schid', 'ct_id', 'ct_name', 'ct_contact', 'subject_id_str', 'grade_id_str', 'ct_flag', 'cct_ccid_str', 'ct_memo');
     if (!Validate::isInt($param['scht_schid']) || $param['scht_schid'] <= 0) {
         $resp->alert('教师所属学校不正确');
         return $resp;
     }
     if (!Validate::isInt($param['ct_id']) || $param['ct_id'] < 0) {
         $resp->alert('教师ID不正确');
         return $resp;
     }
     if ($param['ct_name'] == '') {
         $resp->alert('教师名称不正确');
         return $resp;
     }
     if (!Validate::isJoinedIntStr($param['grade_id_str'])) {
         $resp->alert('所选年级不正确');
         return $resp;
     }
     if (!Validate::isJoinedIntStr($param['subject_id_str'])) {
         $resp->alert('所选学科不正确');
         return $resp;
     }
     $param['subjectid_list'] = array_unique(explode(',', $param['subject_id_str']));
     $param['gradeid_list'] = array_unique(explode(',', $param['grade_id_str']));
     if (count($param['gradeid_list']) == count(C('grades'))) {
         $param['gradeid_list'] = array(0);
     }
     try {
         if ($param['ct_id']) {
             SchoolModel::setSchoolTeacher($param);
             admin_log('edit', 'school_teacher', "ct_id: " . $param['ct_id']);
         } else {
             $param['ct_id'] = SchoolModel::addSchoolTeacher($param);
             admin_log('add', 'school_teacher', "ct_id: " . $param['ct_id']);
         }
         $resp->redirect('/admin/school/teacherlist/' . $param['scht_schid']);
     } catch (Exception $e) {
         $resp->alert($e->getMessage());
     }
     return $resp;
 }
예제 #4
0
 public static function studentAjaxLogout($url = NULL)
 {
     $resp = new AjaxResponse();
     Fn::sess()->set_userdata(array('uid' => '', 'uinfo' => array('fullname' => '[游客]', 'uid' => '', 'avatar_url' => __IMG_ROOT_URL__ . 'zeming/exam/head.gif')));
     if ($url) {
         $resp->redirect($url);
     } else {
         $resp->refresh();
     }
     return $resp;
 }
예제 #5
0
 /**
  * 编辑授课教师AJAX方法
  * @param   array   $param  map<stirng,variant>类型的参数
  *                  int     ct_id   教师ID,若为0表新增
  *                  string  ct_name 名称
  *                  string  ctc_contact 联系方式
  *                  string  subject_id_str  形如1,3,4样式的学科ID列表
  *                  string  grade_id_str    形如1,3,4样式的年级ID列表
  *                  int     ct_flag     状态,-1已删,0禁用,1启用,大于1待审
  */
 public function setCTFunc($param)
 {
     $resp = new AjaxResponse();
     $param = Func::param_copy($param, 'ct_id', 'ct_name', 'ct_contact', 'subject_id_str', 'grade_id_str', 'ct_flag', 'cct_ccid_str', 'ct_memo');
     if (!Validate::isInt($param['ct_id']) || $param['ct_id'] < 0) {
         $reps->alert('教师ID不正确');
         return $resp;
     }
     if ($param['ct_name'] == '') {
         $resp->alert('教师名称不正确');
         return $resp;
     }
     if ($param['ct_contact'] == '') {
         $param['ct_contact'] = NULL;
     }
     if (!Validate::isJoinedIntStr($param['grade_id_str'])) {
         $resp->alert('所选年级不正确');
         return $resp;
     }
     if (!Validate::isJoinedIntStr($param['subject_id_str'])) {
         $resp->alert('所选学科不正确');
         return $resp;
     }
     if ($param['cct_ccid_str'] == '') {
         $param['cct_ccid_list'] = array();
     } else {
         if (!Validate::isJoinedIntStr($param['cct_ccid_str'])) {
             $resp->alert('所选课程不正确');
             return $resp;
         } else {
             $param['cct_ccid_list'] = explode(',', $param['cct_ccid_str']);
         }
     }
     $param['subjectid_list'] = array_unique(explode(',', $param['subject_id_str']));
     $param['gradeid_list'] = array_unique(explode(',', $param['grade_id_str']));
     if (count($param['gradeid_list']) == count(C('grades'))) {
         $param['gradeid_list'] = array(0);
     }
     try {
         if ($param['ct_id']) {
             CTeacherModel::setCTeacher($param);
             admin_log('edit', 'cteacher', "ct_id: " . $param['ct_id']);
         } else {
             $param['ct_id'] = CTeacherModel::addCTeacher($param);
             admin_log('add', 'cteacher', "ct_id: " . $param['ct_id']);
         }
         $resp->redirect('/admin/cteacher/ctinfo/' . $param['ct_id']);
     } catch (Exception $e) {
         $resp->alert($e->getMessage());
     }
     return $resp;
 }
예제 #6
0
    public function baseFetchCTeacherListFunc($param)
    {
        $resp = new AjaxResponse();
        if (!$this->_uinfo['uid']) {
            $resp->redirect(site_url('student/index/login'));
            return $resp;
        }
        $param = Func::param_copy($param, 'cteacher_name', 'cors_id');
        if (empty($param['cors_id'])) {
            $resp->alert('请选择培训课程');
            return $resp;
        }
        if (empty($param['cteacher_name'])) {
            unset($param['cteacher_name']);
        }
        try {
            $cors_id = $param['cors_id'];
            $sql = <<<EOT
SELECT ct_id, ct_name FROM v_course_campus_teacher WHERE cct_ccid IN (
    SELECT cc_id FROM t_course_campus WHERE cc_corsid = {$cors_id}
)
EOT;
            $ct_map = Fn::db()->fetchPairs($sql);
            if (!empty($ct_map)) {
                $ct_id_list = array_keys($ct_map);
                $ct_id_str = implode(',', $ct_id_list);
                $uid = $this->_uinfo['uid'];
                if ($uid) {
                    $student = StudentModel::get_student($uid);
                } else {
                    $student = $this->session->userdata('student');
                }
                $grade_id = $student['grade_id'];
                $sql = <<<EOT
SELECT DISTINCT ctg_ctid FROM t_cteacher_gradeid 
WHERE ctg_ctid IN ({$ct_id_str}) AND (ctg_gradeid = 0 OR ctg_gradeid = {$grade_id})
EOT;
                $ct_id2 = Fn::db()->fetchCol($sql);
                $ct_list = array();
                foreach ($ct_map as $k => $v) {
                    if (in_array($k, $ct_id2)) {
                        $ct_list[] = array('ct_id' => $k, 'ct_name' => $v);
                    }
                }
                $resp->call('fnSetCTeacherListDiv', $ct_list);
            } else {
                $resp->call('fnSetCTeacherListDiv', array());
            }
        } catch (Exception $e) {
            $resp->alert($e->getMessage());
        }
        return $resp;
    }