/** * @description 编辑学生信息保存数据库 * @author * @final * @param $act 编辑类型[新增/更新] * @param int $uid 学生id */ public function update() { if (!$this->check_power('student_manage')) { return; } $tab = $this->input->post('tab_name'); $act = $this->input->post('act') == 'add' ? 'add' : 'edit'; if ($act == 'add') { $student['password'] = trim($this->input->post('password')); $student['source_from'] = 1; //后台添加 $tab = ''; } else { $uid = intval($this->input->post('uid')); $old_student = StudentModel::get_student($uid); $student['uid'] = $uid; if (empty($old_student)) { message('学生信息不存在!'); return; } } if ($old_student['email'] != trim($this->input->post('email'))) { $student['email_validate'] = 0; } $student['email'] = trim($this->input->post('email')); $student['first_name'] = trim($this->input->post('first_name')); $student['last_name'] = trim($this->input->post('last_name')); $student['birthday'] = strtotime($this->input->post('birthday')); $student['idcard'] = trim($this->input->post('idcard')); $student['sex'] = intval($this->input->post('sex')) == 1 ? 1 : 2; //$student['province'] = intval($this->input->post('province')); //$student['city'] = intval($this->input->post('city')); //$student['area'] = intval($this->input->post('area')); $student['grade_id'] = intval($this->input->post('grade_id')); $student['school_id'] = intval($this->input->post('school_id_0')); $student['address'] = trim($this->input->post('address')); $student['zipcode'] = trim($this->input->post('zipcode')); $student['mobile'] = trim($this->input->post('mobile')); $school_id_arr = $this->input->post('school_id'); $volunteer_arr = $this->input->post('volunteer'); if (empty($volunteer_arr[a])) { $school_id_arr[a] = ''; } if ($tab == 'awards' || $tab == '') { if (intval($school_id_arr[a]) == 0 && $student['grade_id'] == 6 && $act == 'edit') { $school_id_arr[a] = -1; if ($act == 'edit') { message('第一志愿不能为空', 'admin/student/edit/' . $uid); } else { message('第一志愿不能为空'); } } } if (empty($volunteer_arr[b])) { $school_id_arr[b] = ''; } if (empty($volunteer_arr[c])) { $school_id_arr[c] = ''; } $volunteer = json_encode($school_id_arr); //将升学志愿学校id转换为json值 $extends = array(); $msg = $this->_check_student($student, $extends, $act, $tab); if ($msg) { $tmp_msg = array(); foreach ($msg as $k => $item) { $k = $k + 1; $tmp_msg[] = "{$k}、{$item}"; } if ($act == 'edit') { message(implode("\n", $tmp_msg), 'admin/student/edit/' . $uid); } else { message(implode("\n", $tmp_msg)); } } /* * 补充学生的所在区域 * 根据学生所选的学校更新学生所在地区 */ $school = SchoolModel::schoolInfo($student['school_id'], 'province,city,area'); $student['province'] = isset($school['province']) ? $school['province'] : 0; $student['city'] = isset($school['city']) ? $school['city'] : 0; $student['area'] = isset($school['area']) ? $school['area'] : 0; if ($act == 'add') { $result = StudentModel::add($student, $extends); } else { $result = StudentModel::update($student, $extends, $tab); } if ($tab == 'awards' || $tab == 'wish' || $tab == '') { if ($volunteer) { $student_wish = array('uid' => $uid, 'music' => '', 'sport' => '', 'painting' => '', 'other' => '', 'wish' => '', 'upmethod' => '', 'volunteer' => $volunteer); } if ($act == 'add') { } else { $db = Fn::db(); $swv = $db->fetchRow("SELECT volunteer FROM rd_student_wish WHERE uid = {$uid}"); if ($swv) { $db->update('rd_student_wish', $student_wish, "uid={$uid}"); } else { $db->insert('rd_student_wish', $student_wish); } } } if ($result['success'] == TRUE) { if ($act == 'add') { $msg = '学生信息添加成功'; admin_log('add', 'student', $result['uid']); $uid = $result['uid']; } else { $msg = '学生信息修改成功'; admin_log('edit', 'student', $uid); // 如果上传新图片,则删除旧图片文件 if (!empty($student['picture']) && $old_student['picture'] && is_file(_UPLOAD_ROOT_PATH_ . $old_student['picture'])) { @unlink(_UPLOAD_ROOT_PATH_ . $old_studnet['picture']); } } if ($tab == 'base' || $tab == '') { //========================= $sbinfo = array(); $sbinfo['sb_addr_provid'] = intval($this->input->post('sb_addr_provid')); $sbinfo['sb_addr_cityid'] = intval($this->input->post('sb_addr_cityid')); $sbinfo['sb_addr_areaid'] = intval($this->input->post('sb_addr_areaid')); $sbinfo['sb_addr_desc'] = trim($this->input->post('sb_addr_desc')); // 培训机构、培训课程、授课教师 $sbcinfo = array(); $sbcinfo['no_tiid'] = intval($this->input->post('no_tiid')); $sbcinfo['sbc_tiid'] = intval($this->input->post('sbc_tiid')); $sbcinfo['ti_name'] = trim($this->input->post('ti_name')); $sbcinfo['sbc_corsid'] = intval($this->input->post('sbc_corsid')); $sbcinfo['cors_cmid'] = intval($this->input->post('cors_cmid')); $sbcinfo['cors_name'] = trim($this->input->post('cors_name')); $sbcinfo['sbc_teachers'] = trim($this->input->post('sbc_teachers')); $sbs_stunumtype = $this->input->post('sbs_stunumtype'); if (!is_array($sbs_stunumtype)) { $sbs_stunumtype = array(); } $sbclassid_classid = $this->input->post('sbclassid_classid'); if (!is_array($sbclassid_classid)) { $sbclassid_classid = array(); } //========================== $db = Fn::db(); $bOk = false; try { if ($db->beginTransaction()) { $db->delete('t_student_base', "sb_uid = {$uid}"); $sbinfo['sb_uid'] = $uid; $db->insert('t_student_base', $sbinfo); $db->delete('t_student_base_classid', "sbclassid_uid = {$uid}"); foreach ($sbclassid_classid as $v) { $db->insert('t_student_base_classid', array('sbclassid_uid' => $uid, 'sbclassid_classid' => $v)); } $db->delete('t_student_base_stunumtype', "sbs_uid = {$uid}"); foreach ($sbs_stunumtype as $v) { $db->insert('t_student_base_stunumtype', array('sbs_uid' => $uid, 'sbs_stunumtype' => $v)); } $db->delete('t_student_base_course', 'sbc_uid = ' . $uid); if (empty($sbcinfo['no_tiid'])) { $now_time = time(); $db->insert('t_student_base_course', array('sbc_uid' => $uid, 'sbc_idx' => 0, 'sbc_tiid' => $sbcinfo['sbc_tiid'], 'sbc_corsid' => $sbcinfo['sbc_corsid'], 'sbc_teachers' => $sbcinfo['sbc_teachers'])); } $bOk = $db->commit(); if (!$bOk) { $err = $db->errorInfo()[2]; $db->rollBack(); message($msg . ' ' . $err, 'admin/student/edit/' . $uid, 'success'); } } if (!$bOk) { message($msg . ' 保存学习概况信息事务处理失败', 'admin/student/edit/' . $uid, 'success'); } else { message($msg . ' 保存学习概况信息成功', 'admin/student/edit/' . $uid, 'success'); } } catch (Exception $e) { message($msg . ' ' . $e->getMessage(), 'admin/student/edit/' . $uid, 'success'); } } message($msg, 'admin/student/edit/' . $uid); } else { message($result['msg'], 'admin/student/edit/' . $uid); } }
public function submit() { Fn::ajax_call($this, 'logout'); $uid = $this->_uinfo['uid']; if ($uid or !$this->session->userdata('complete')) { // 已注册,或未填写完整信息。跳转到报名信息复核页面 redirect('student/profile/preview'); } // 读取sesseion数据 $student = $this->session->userdata('student'); $score_ranks = $this->session->userdata('score_ranks'); $awards_list = $this->session->userdata('awards_list'); $practice = $this->session->userdata('practice'); $student_wish = $this->session->userdata('student_wish'); $parent_wish = $this->session->userdata('parent_wish'); $xuekao_xuankao = $this->session->userdata('xuekao_xuankao'); $student['source_from'] = 3; //普通注册 // 检查email是否已注册 $query = $this->db->select('uid')->get_where('student', array('email' => $student['email']), 1); if ($query->num_rows()) { message('Email地址已被注册!'); } // 如果上传图片,转移图片 if ($student['picture']) { $new_picture = 'uploads/student/' . date('Ym') . '/' . basename($student['picture']); if (my_copy($student['picture'], $new_picture, TRUE)) { $student['picture'] = $new_picture; } } if (!is_array($awards_list)) { $awards_list = array(); } $new_awards_list = array(); foreach ($awards_list as $type_id => $type_list) { $new_awards_list = array_merge($new_awards_list, $type_list); } $extends = array('score_ranking' => &$score_ranks, 'awards_list' => &$new_awards_list, 'practice' => &$practice, 'student_wish' => &$student_wish, 'parent_wish' => &$parent_wish, 'xuekao_xuankao' => &$xuekao_xuankao); //补充学生的所在区域 $school_id = $student['school_id']; if ($school_id) { $school = Fn::db()->fetchRow("select province,city,area from rd_school where school_id={$school_id}"); } else { $school = array(); } $student['province'] = isset($school['province']) ? $school['province'] : 0; $student['city'] = isset($school['city']) ? $school['city'] : 0; $student['area'] = isset($school['area']) ? $school['area'] : 0; //将学校名称移除 if (isset($student['school_name'])) { unset($student['school_name']); } if (isset($student['external_account'])) { $student_ticket = $student['external_account']; } $result = StudentModel::add($student, $extends); if ($result['success'] == false) { message($result['msg']); } $uid = $result['uid']; $exam_ticket = $result['exam_ticket']; $student_base = $this->session->userdata('student_base'); $student1 = array(); //$student1['school_id'] = $student_base['school_id']; $student1['address'] = $student_base['address']; $student1['zipcode'] = $student_base['zipcode']; $sbinfo = array(); $sbinfo['sb_addr_provid'] = $student_base['sb_addr_provid']; $sbinfo['sb_addr_cityid'] = $student_base['sb_addr_cityid']; $sbinfo['sb_addr_areaid'] = $student_base['sb_addr_areaid']; $sbinfo['sb_addr_desc'] = $student_base['sb_addr_desc']; // 培训机构、培训课程、授课教师 $sbcinfo = array(); $sbcinfo['no_tiid'] = $student_base['no_tiid']; $sbcinfo['sbc_tiid'] = $student_base['sbc_tiid']; $sbcinfo['ti_name'] = $student_base['ti_name']; $sbcinfo['sbc_corsid'] = $student_base['sbc_corsid']; $sbcinfo['cors_cmid'] = $student_base['cors_cmid']; $sbcinfo['cors_name'] = $student_base['cors_name']; $sbcinfo['sbc_teachers'] = $student_base['sbc_teachers']; $sbs_stunumtype = $student_base['sbs_stunumtype']; if (!is_array($sbs_stunumtype)) { $sbs_stunumtype = array(); } $sbclassid_classid = $student_base['sbclassid_classid']; if (!is_array($sbclassid_classid)) { $sbclassid_classid = array(); } $db = Fn::db(); $bOk = false; try { if ($db->beginTransaction()) { $db->update('rd_student', $student1, "uid = {$uid}"); //$db->delete('t_student_base', "sb_uid = $uid"); $sbinfo['sb_uid'] = $uid; $db->insert('t_student_base', $sbinfo); //$db->delete('t_student_base_classid', "sbclassid_uid = $uid"); foreach ($sbclassid_classid as $v) { $db->insert('t_student_base_classid', array('sbclassid_uid' => $uid, 'sbclassid_classid' => $v)); } //$db->delete('t_student_base_stunumtype', "sbs_uid = $uid"); foreach ($sbs_stunumtype as $v) { $db->insert('t_student_base_stunumtype', array('sbs_uid' => $uid, 'sbs_stunumtype' => $v)); } //$db->delete('t_student_base_course', 'sbc_uid = ' . $uid); if (empty($sbcinfo['no_tiid'])) { $now_time = time(); if (!$sbcinfo['sbc_tiid']) { $row = array('ti_name' => $sbcinfo['ti_name'], 'ti_typeid' => 1, 'ti_flag' => $now_time, 'ti_priid' => 0, 'ti_provid' => $sbinfo['sb_addr_provid'], 'ti_cityid' => $sbinfo['sb_addr_cityid'], 'ti_areaid' => $sbinfo['sb_addr_areaid'], 'ti_addtime' => date('Y-m-d H:i:s', $now_time), 'ti_adduid' => 1); $db->insert('t_training_institution', $row); $ti_id = $db->lastInsertId('t_training_institution', 'ti_id'); $sbcinfo['sbc_tiid'] = $ti_id; } if (!$sbcinfo['sbc_corsid']) { if ($sbcinfo['cors_cmid'] != 1) { $sbcinfo['cors_cmid'] = 2; } $row = array('cors_name' => $sbcinfo['cors_name'], 'cors_cmid' => $sbcinfo['cors_cmid'], 'cors_flag' => $now_time, 'cors_tiid' => $sbcinfo['sbc_tiid'], 'cors_stunumtype' => $sbcinfo['cors_cmid'], 'cors_addtime' => date('Y-m-d H:i:s', $now_time), 'cors_adduid' => 1); $db->insert('t_course', $row); $cors_id = $db->lastInsertId('t_course', 'cors_id'); $sbcinfo['sbc_corsid'] = $cors_id; } $db->insert('t_student_base_course', array('sbc_uid' => $uid, 'sbc_idx' => 0, 'sbc_tiid' => $sbcinfo['sbc_tiid'], 'sbc_corsid' => $sbcinfo['sbc_corsid'], 'sbc_teachers' => $sbcinfo['sbc_teachers'])); } $bOk = $db->commit(); if (!$bOk) { $err = $db->errorInfo()[2]; $db->rollBack(); //message($err); } } if (!$bOk) { //message('执行事务处理失败'); } } catch (Exception $e) { //message($e->getMessage()); } StudentModel::studentAjaxLogin(array('ticket' => $exam_ticket, 'password' => $student['password']), true); // 清除其他session $unset_items = array('student' => '', 'student_base', 'score_ranks' => '', 'awards_list' => '', 'practice' => '', 'student_wish' => '', 'parent_wish' => '', 'xuekao_xuankao' => '', 'complete' => ''); $this->session->unset_userdata($unset_items); // 发送邮件 $email_tpl = C('email_template/register'); $mail = array('student' => $student, 'hash' => email_hash('encode', $uid)); send_email($email_tpl['subject'], $this->load->view($email_tpl['tpl'], $mail, TRUE), $student['email']); // 成功信息显示 $data['student'] = $student; $data['exam_ticket'] = $result['exam_ticket']; $line_width = array(1, 2, 3, 4, 4, 5, 5, 6, 7, 8); $data['line_width'] = $line_width; $this->_uinfo = StudentModel::studentLoginUInfo(); $data['uinfo'] = $this->_uinfo; // 模版 $this->load->view('profile/success', $data); }