/** * 新增/编辑校区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; }
/** * 新增课程及编辑课程方法 * 新增时只添加主表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; }
/** * 编辑授课教师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; }
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; }
/** * 编辑授课教师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; }
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; }