public function report($exam_id) { $sql1 = <<<EOT SELECT count(1) as 'count' from rd_student rs,rd_exam_place_student reps , rd_exam_place rep where rep.exam_pid='{$exam_id}' and rep.place_id=reps.place_id and rs.uid=reps.uid EOT; $sql2 = <<<EOT SELECT rs.exam_ticket,CONCAT(rs.last_name,rs.first_name) as xname from rd_student rs,rd_exam_place_student reps , rd_exam_place rep where rep.exam_pid='{$exam_id}' and rep.place_id=reps.place_id and rs.uid=reps.uid EOT; $result1 = Fn::db()->fetchRow($sql1); // 读取数据 if ($result1['count'] > 0) { $sql3 = "SELECT exam_name FROM rd_exam WHERE exam_id={$exam_id}"; $row = Fn::db()->fetchRow($sql3); $title = $row['exam_name'] . '.xls'; $data = array(); $data['list'] = $this->db->query($sql2)->result_array(); $header = array('准考证号', '姓名'); $excel_model = new ExcelModel(); $excel_model->addHeader($header); $excel_model->addBody($data['list']); $excel_model->download($title); } else { echo '暂无学生,请先添加学生'; } }
public function schools() { $schools = array(); $sql = <<<EOT SELECT school_id, school_name FROM rd_school EOT; $where = array(); $bind = array(); if ($keyword = trim($this->input->post('keyword'))) { $where[] = 'school_name LIKE ?'; $bind[] = '%' . $keyword . '%'; } if ($grade_id = intval($this->input->post('grade_id'))) { $grade_period = get_grade_period($grade_id); if ($grade_period) { $where[] = 'grade_period LIKE ?'; $bind[] = '%' . $grade_period . '%'; } } if ($where) { $sql .= ' WHERE ' . implode(' AND ', $where); } $schools = Fn::db()->fetchAll($sql, $bind); echo json_encode($schools); }
private static function delarray($dbName, $array, $is_export_student) { // 处理传入进来的数组 $tableList = array(); foreach ($array as $tables) { if ($tables == '*') { // 所有的表(获得表名时不能按常规方式来组成一个数组) $sql = "SELECT table_name, table_type \n FROM information_schema.tables \n WHERE table_schema = '{$dbName}'"; $stmt = Fn::db()->query($sql); while ($item = $stmt->fetch(PDO_DB::FETCH_ASSOC)) { if (strtolower($item['table_type']) == 'view') { $tableList['view'][] = $item['table_name']; } else { if (!$is_export_student && (is_int(strpos($item['table_name'], 'student')) || is_int(strpos($item['table_name'], 'summary')))) { continue; } $tableList['table'][] = $item['table_name']; } } } else { $tableList['table'] = $array; break; } } return $tableList; }
public function __construct() { parent::__construct(); self::$_db = Fn::db(); self::$_data = array(); $this->load->model('cron/report/subject_report/common_model'); }
/** * 考试类型列表 * * @return array */ public static function get_type_list() { $sql = <<<EOT SELECT * FROM rd_interview_type ORDER BY pid ASC EOT; $rows = Fn::db()->fetchAll($sql); $list = array(); foreach ($rows as $row) { if ($row['pid']) { $list[$row['pid']]['children'][$row['type_id']] = $row; } else { $list[$row['type_id']] = $row; } } // 分级排序 $result = array(); foreach ($list as $row) { $result[$row['type_id']] = $row; if (!empty($row['children'])) { $result = $result + $row['children']; unset($result[$row['type_id']]['children']); } } return $result; }
/** * 按学科ID,父ID,读取信息提取方式列表 * * @param int 学科ID * @param int 上级ID * @return array */ public static function get_group_type_list($pid = 0, $subject_id = 0, $relate_num = TRUE, $relate_child = false) { static $result = array(); $hash = $subject_id . '-' . $pid; if (isset($result[$hash])) { return $result[$hash]; } $list = array(); $sql = <<<EOT SELECT * FROM rd_group_type WHERE pid = {$pid} EOT; if ($subject_id) { $sql .= " AND subject_id = {$subject_id}"; } $rows = Fn::db()->fetchAll($sql); foreach ($rows as $row) { $list[$row['id']] = $row; } if ($relate_num) { foreach ($list as &$val) { $val = self::get_group_type_num($val); } } if ($relate_child) { foreach ($list as &$val) { $val['childlist'] = array_values(self::get_group_type_list($val['id'], $val['subject_id'], false)); } } $result[$hash] = $list; return $result[$hash]; }
/** * 读取角色列表 * * @return array */ public static function get_role_list() { $rows = Fn::db()->fetchAll("SELECT * FROM rd_role"); $list = array(); foreach ($rows as $row) { $list[$row['role_id']] = $row; } return $list; }
/** * 获取平均值 * * @param array $param 查询条件 * @param string $field 查询字段 * @return array 数据结果集 */ public static function get_average($param, $field) { PDO_DB::build_where($param, $where_sql, $bind); $sql = "SELECT AVG({$field}) AS {$field} FROM rd_interview_result"; if ($where_sql) { $sql .= " WHERE {$where_sql}"; } return Fn::db()->fetchRow($sql, $bind); }
/** * 获取平均值 * * @param array $param 查询条件 * @param string $field 查询字段 * @return array 数据结果集 */ public static function get_average($param, $field) { PDO_DB::build_where($param, $where_sql, $bind); $sql = <<<EOT SELECT AVG({$field}) AS {$field} FROM rd_ruidabei_result EOT; if ($where_sql) { $sql .= " WHERE " . $where_sql; } return Fn::db()->fetchRow($sql, $bind); }
/** * 添加 生成考试期次学生的成绩任务 */ public function insert($data) { if (empty($data['exam_pid'])) { return false; } $data['c_time'] = time(); $data['status'] = 0; $exam_ticket_maprule = ExamModel::get_exam($data['exam_pid'], 'exam_ticket_maprule'); if ($exam_ticket_maprule > 0) { $data['status'] = 1; } return Fn::db()->replace('rd_cron_task_exam_result', $data); }
public static function get_admin_log($log_info = '', $item = '*') { if ($log_info == '') { return FALSE; } $sql = <<<EOT SELECT {$item} FROM rd_admin_log WHERE log_info = ? EOT; $row = Fn::db()->fetchRow($sql, $log_info); if ($item && isset($row[$item])) { return $row[$item]; } else { return $row; } }
/** * 读取一个试题 */ public static function get_question($id = 0, $item = '*') { if ($id == 0) { return FALSE; } $sql = <<<EOT SELECT {$item} FROM rd_interview_question WHERE id = {$id} EOT; $row = Fn::db()->fetchRow($sql); if ($item && isset($row[$item])) { return $row[$item]; } else { return $row; } }
/** * 控制界面首页 */ public function index($exam_pid = 0) { Fn::ajax_call($this, 'regenerateExamRecord', 'regenerateExamResults', 'endPlaceExam', 'regenerateSummaryReportData', 'regenerateReport', 'removeCronTaskReport'); $exam_pid = intval($exam_pid); $param['exam_pid'] = 0; $param['exam_isfree'] = 0; $examlist = ExamModel::get_exam_list_all($param); $exam = array(); if ($exam_pid > 0) { $exam = ExamModel::get_exam($exam_pid); } if (!$exam) { $exam = current($examlist); } $db = Fn::db(); /////////////////////////考试记录是否生成///////////// $sql = "SELECT uid_data FROM rd_cron_task_place_student_paper ctps\n LEFT JOIN rd_exam_place ep ON ep.place_id = ctps.place_id\n WHERE ep.exam_pid ={$exam['exam_id']} AND ctps.status=2"; $uid_arr = $db->fetchCol($sql); $paper_count = 0; foreach ($uid_arr as $item) { $paper_count += count(json_decode($item)); } $sql = "SELECT COUNT(*) FROM rd_exam_place_student eps\n LEFT JOIN rd_exam_place ep ON ep.place_id = eps.place_id\n WHERE ep.exam_pid = {$exam['exam_id']}"; $student_count = $db->fetchOne($sql); if ($paper_count == $student_count) { $data['paper_status'] = true; //考试记录是否完全生成 } else { $data['paper_status'] = false; } ///////////////////////////////////////// $sql = "SELECT status FROM rd_cron_task_exam_result \n WHERE exam_pid = {$exam['exam_id']}"; $data['cter_status'] = $db->fetchOne($sql); ////////////////////////////////////////// $sql = "SELECT DISTINCT(status) FROM rd_cron_task_report ctr \n LEFT JOIN rd_evaluate_rule er ON er.id = ctr.rule_id \n WHERE exam_pid = {$exam['exam_id']}"; $data['ctr_status'] = $db->fetchCol($sql); //////////////////////////////////////// $data['exam'] = $exam; $data['demo_exam'] = $this->demo_exam_list(); $data['examlist'] = $examlist; $data['place'] = ExamPlaceModel::get_exam_place($exam_pid, 'MAX(end_time) as end_time'); $data['crontaskexamresult'] = ReportCommandModel::cronTaskExamResultInfo($exam['exam_id']); $data['evaluerulelist'] = ReportCommandModel::cronTaskReportLists($exam['exam_id']); $this->load->view('report_command/index', $data); }
/** * 读取列表 * @param int $subject_id = 0 学科ID,为0表示不限学科 * @return map<int, variant> 获取某个学科(或不限学科)的所有技能列表 */ public static function get_skills($subject_id = 0) { static $result = array(); $hash =& $subject_id; if (isset($result[$hash])) { return $result[$hash]; } $sql = 'SELECT * FROM rd_skill'; $list = array(); if ($subject_id) { $sql .= ' WHERE subject_id = ' . $subject_id; } $rows = Fn::db()->fetchAll($sql); foreach ($rows as $row) { $list[$row['id']] = $row; } $result[$hash] = $list; return $list; }
/** * 手动给参加考试的学生分配试卷及试题 * * @return void */ public function init_distribution_paper_manual() { set_time_limit(0); $db = Fn::db(); $this->load->model('cron/cron_place_student_paper_model', 'init_model'); /* 手动指定考场 */ /* $places = array(57,58,59,60); */ $places = array(60); $place_list = array(); /* 获取考场学生 */ foreach ($places as $key => $value) { $sql = "SELECT uid FROM rd_exam_place_student WHERE place_id='{$value}'"; $place_list[$value]['uids'] = $db->fetchCol($sql); } $place_uids = array(); $place_ids = array(); foreach ($place_list as $place_id => $place) { $exam_pid = $place['exam_pid']; foreach ($place['uids'] as $uid) { //给学生分配试卷 $result = $this->init_model->init_test_paper($place_id, $uid); if ($result) { $place_ids[$exam_pid][$place_id][] = $uid; } } } //给考场学生分配试题 if ($place_ids) { foreach ($place_ids as $exam_pid => $place) { foreach ($place as $place_id => $uids) { $uids = array_unique($uids); $this->init_model->init_test_question($exam_pid, $place_id, $uids); } } } }
/** * 读取管理员列表 * * @return array */ public static function get_cpuser_list() { return Fn::db()->fetchAssoc("SELECT * FROM rd_admin"); }
/** * 获取$profession_id所指定的职业信息,返回结果集 * @param mixed $profession_id * @param array map<string, variant> */ public static function professionInfo($profession_id) { if (!$profession_id) { return array(); } if (Validate::isInt($profession_id)) { $sql = "SELECT * FROM t_profession\n WHERE profession_id = ?"; return Fn::db()->fetchRow($sql, array($profession_id)); } else { if (Validate::isJoinedIntStr($profession_id)) { $sql = "SELECT * FROM t_profession\n WHERE profession_id IN ({$profession_id})"; return Fn::db()->fetchAssoc($sql); } else { return array(); } } }
public function __construct() { parent::__construct(); self::$_db = Fn::db(); $this->load->model('cron/report/class_report/class_common_model'); }
/** * 删除学习风格属性信息,成功返回非0,失败返回0 * @param int $lsattr_learnstyleid * @param int $lsattr_value * @return bool true|false */ public static function removeLearnStyleAttribute($lsattr_learnstyleid, $lsattr_value) { if (!Validate::isInt($lsattr_learnstyleid) || $lsattr_learnstyleid <= 0 || !in_array($lsattr_value, array(1, 2))) { return false; } $where = 'lsattr_learnstyleid = ? AND lsattr_value = ?'; $where_bind[] = $lsattr_learnstyleid; $where_bind[] = $lsattr_value; return Fn::db()->delete('t_learn_style_attribute', $where, $where_bind); }
/** * 检查考场名称是否重复 */ public static function checkPlaceNameIsRepeat($exam_pid, $place_id = null, $place_name) { if (!$exam_pid || !$place_name) { throw new Exception('考试期次或考场名称不能为空'); } $bind = array($exam_pid, $place_name); $sql = "SELECT COUNT(*) FROM rd_exam_place\n WHERE exam_pid = ? AND place_name = ?"; if ($place_id > 0) { $sql .= " AND place_id <> ?"; $bind[] = $place_id; } return Fn::db()->fetchOne($sql, $bind); }
/** * @description 批量删除产品分类 * @author * @final * @param array $ids 产品分类id */ public function batch_delete() { if (!$this->check_power_new('production_category_batch_delete')) { return; } $ids = $this->input->post('ids'); if (empty($ids) or !is_array($ids)) { message('请选择要删除的项目!'); return; } // 检查被关联试题 $success = $fail = 0; foreach ($ids as $id) { $pc_id = intval($id); $bool = true; $pc_ids = CommonModel::get_product_category($pc_id); if (empty($pc_ids)) { $bool = false; } $query = array(); $data = array(); $query['pc_id'] = $pc_id; $res = CommonModel::get_list($query, 'v_trans_log', 'count(pt_id) as pt_id_count'); $pt_id_count = $res[0]['pt_id_count']; if ($pt_id_count > 0) { $bool = false; } if (!$bool) { $fail++; continue; } $num = Fn::db()->delete('rd_product_category', "pc_id={$pc_id}"); admin_log('delete', 'product_category', $pc_id); if ($num > 0) { $success += $num; } else { $fail++; } } message('批量操作完成,成功删除:' . $success . ' 个,失败:' . $fail . ' 个。', 'javascript'); }
/** * 按 考试期次id 获取一个考试信息 * * @param int 考试期次ID(exam_id) * @param string 字段列表(多个字段用逗号分割,默认取全部字段) * @return mixed 指定单个字段则返回该字段值,否则返回关联数组 */ public static function get_exam_by_id($id = 0, $select_items = NULL) { if ($id == 0) { return FALSE; } if ($select_items) { $sql = 'SELECT ' . $select_items; } else { $sql = 'SELECT *'; } $sql .= " FROM rd_exam WHERE exam_id = {$id} LIMIT 1"; $row = Fn::db()->fetchRow($sql); if (is_string($select_items) && $select_items && isset($row[$select_items])) { return $row[$select_items]; } else { return $row; } }
/** * 导入机构和校区记录(从excel文件中), * 注意: 目前$ti_id参数未启用 * * @param int $ti_id = NULL 默认将校区全导入到该机构ID下 */ public function import_titc_excel($ti_id = NULL) { if ($_GET['dl'] == '1') { Func::dumpFile('application/vnd.ms-excel', 'file/import_training_campus_template.xls', '培训机构及校区导入模板.xls'); exit; } $data = array(); while (isset($_FILES['file'])) { $param = $_POST; $err_map = array(UPLOAD_ERR_OK => '没有错误发生,文件上传成功', UPLOAD_ERR_INI_SIZE => '上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值', UPLOAD_ERR_FORM_SIZE => '上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值', UPLOAD_ERR_PARTIAL => '文件只有部分被上传', UPLOAD_ERR_NO_FILE => '没有文件被上传', UPLOAD_ERR_NO_TMP_DIR => '找不到临时文件夹', UPLOAD_ERR_CANT_WRITE => '文件写入失败'); if ($_FILES['file']['error'] !== 0) { $data['error'] = $err_map[$_FILES['file']['error']]; break; } if (strpos($_FILES['file']['type'], 'excel') === false) { $mime = mime_content_type($_FILES['file']['tmp_name']); if (!in_array($mime, array('application/vnd.ms-excel', 'application/vnd.ms-office', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'))) { $data['error'] = "您上传的不是Excel文件({$mime})"; break; } } // 开始处理excel $excel = PHPExcel_IOFactory::load($_FILES['file']['tmp_name']); $sheet = $excel->getSheet(0); $row_num = $sheet->getHighestRow(); $col_num = $sheet->getHighestColumn(); $title = array('机构名称', '机构类型', '机构省份', '机构城市', '机构区县', '机构地址', '优先级', '学员人数/年', '机构网址', '校区名称', '校区省份', '校区城市', '校区区县', '校区地址', '联系人', '联系电话'); $col_num = base_convert($col_num, 36, 10); if ($col_num < count($title)) { $data['error'] = 'Excel列数验证未通过'; break; } $col_num = count($title); $col_char = array(); for ($j = 0; $j < $col_num; $j++) { $col_char[$j] = strtoupper(base_convert(10 + $j, 10, 36)); if ($title[$j] !== trim($sheet->getCell($col_char[$j] . '1')->getValue())) { $data['error'] = $col_char[$j] . '列标题不符'; break; } } if (isset($data['error'])) { break; } $rows = array(); for ($i = 2; $i <= $row_num; $i++) { $rows[$i - 2] = array(); for ($j = 0; $j < $col_num; $j++) { $rows[$i - 2][$j] = trim($sheet->getCell($col_char[$j] . $i)->getValue()); } if ($rows[$i - 2][0] == '') { unset($rows[$i - 2]); break; } } unset($sheet); unset($excel); if (empty($rows)) { $data['error'] = 'Excel文件工作表中没有任何要导入的记录'; break; } $tit_map = array_flip(array_map("trim", TrainingInstitutionModel::trainingInstitutionTypePairs())); $tipt_map = array_flip(array_map("trim", TrainingInstitutionModel::trainingInstitutionPriTypePairs())); $sql = <<<EOT SELECT * FROM rd_region WHERE region_id > 1 ORDER BY region_type EOT; $region_list = Fn::db()->fetchAll($sql); // 以region_id为键以行记录为值,同时加个children,以保存直接子项 $region_map = array(); // 以名字加'_'连接起来为键,以region_id为值 $regionname_map = array(); foreach ($region_list as $v) { $region_map[$v['region_id']] = $v; $region_map[$v['region_id']]['children'] = array(); if ($v['region_type'] == 1) { $regionname_map[trim($v['region_name'])] = $v['region_id']; } else { if ($v['region_type'] == 2) { $region_map[$v['parent_id']]['children'][] = $v['region_id']; $regionname_map[trim($region_map[$v['parent_id']]['region_name']) . '_' . trim($v['region_name'])] = $v['region_id']; } else { if ($v['region_type'] == 3) { $region_map[$v['parent_id']]['children'][] = $v['region_id']; $regionname_map[trim($region_map[$region_map[$v['parent_id']]['parent_id']]['region_name']) . '_' . trim($region_map[$v['parent_id']]['region_name']) . '_' . trim($v['region_name'])] = $v['region_id']; } } } } unset($region_list); $row_num = count($rows); $ti_arr = array(); //ti_arr[ti_name] => ti_list[i] $tc_arr = array(); //tc_arr[ti_name][tc_name] => tc_list[i] $ti_list = array(); $tc_list = array(); foreach ($rows as $k => $row) { // 机构名称 if (mb_strlen($row[0], 'UTF-8') > 60) { $data['error'] = $col_char[0] . ($k + 2) . ' - "机构名称"内容太长了,不可超过60个字符'; break; } $row['ti_name'] = $row[0]; // 机构类型 if ($row[1] == '') { $data['error'] = $col_char[1] . ($k + 2) . ' - "机构类型"内容不可为空'; break; } // 机构类型 if (!isset($tit_map[$row[1]])) { $data['error'] = $col_char[1] . ($k + 2) . ' - "机构类型"不正确'; break; } $row['ti_typeid'] = $tit_map[$row[1]]; if ($row[2] == '') { if ($param['ti_provid_required']) { $data['error'] = $col_char[2] . ($k + 2) . ' - "机构省份"不可为空'; break; } else { $row['ti_provid'] = 0; } } else { if (!isset($regionname_map[$row[2]])) { $data['error'] = $col_char[2] . ($k + 2) . ' - "机构省份"不存在'; break; } $row['ti_provid'] = $regionname_map[$row[2]]; } $row['ti_cityid'] = 0; $row['ti_areaid'] = 0; if (!empty($region_map[$regionname_map[$row[2]]]['children'])) { // 验证市 if ($row[3] == '') { if ($param['ti_cityid_required']) { $data['error'] = $col_char[3] . ($k + 2) . ' - "机构城市"不可为空'; break; } else { $row['ti_cityid'] = 0; } } else { if (!isset($regionname_map[$row[2] . '_' . $row[3]])) { $data['error'] = $col_char[3] . ($k + 2) . ' - "机构城市"不存在'; break; } $row['ti_cityid'] = $regionname_map[$row[2] . '_' . $row[3]]; } // 验证区县 if ($row[4] == '') { if ($param['ti_areaid_required']) { $data['error'] = $col_char[4] . ($k + 2) . ' - "机构区县"不可为空'; break; } else { $row['ti_areaid'] = 0; } } else { if (!isset($regionname_map[$row[2] . '_' . $row[3] . '_' . $row[4]])) { $data['error'] = $col_char[4] . ($k + 2) . ' - "机构区县"不存在'; break; } $row['ti_areaid'] = $regionname_map[$row[2] . '_' . $row[3] . '_' . $row[4]]; } } // 机构地址 if ($row[5] == '') { if ($param['ti_addr_required']) { $data['error'] = $col_char[5] . ($k + 2) . ' - "机构地址"不可为空'; break; } } if (mb_strlen($row[5], 'UTF-8') > 255) { $data['error'] = $col_char[5] . ($k + 2) . ' - "机构地址"内容太长了'; break; } $row['ti_addr'] = $row[5]; // 优先级 if ($row[6] == '') { if ($param['ti_priid_required']) { $data['error'] = $col_char[6] . ($k + 2) . ' - "优先级"不能为空'; break; } else { $row[6] = '一般'; } } if (!isset($tipt_map[$row[6]])) { $data['error'] = $col_char[6] . ($k + 2) . ' - "优先级"不正确'; break; } $row['ti_priid'] = $tipt_map[$row[6]]; if ($row[7] == '') { if ($param['ti_stumax_required']) { $data['error'] = $col_char[6] . ($k + 2) . ' - "学员人数/年"不能为空'; break; } else { $row[7] = '0'; } } // 学员人数/年 if (!Validate::isInt($row[7]) || $row[7] < 0) { $data['error'] = $col_char[7] . ($k + 2) . ' - "学员人数/年"必须为正整数'; break; } $row['ti_stumax'] = $row[7]; // 机构网址 if (mb_strlen($row[8], 'UTF-8') > 512) { $data['error'] = $col_char[8] . ($k + 2) . ' - "机构网址"内容太长了'; break; } $row['ti_url'] = $row[8]; // 校区名称 if ($row[9] == '') { $data['error'] = $col_char[9] . ($k + 2) . ' - "校区名称"不可为空'; break; } if (mb_strlen($row[9], 'UTF-8') > 60) { $data['error'] = $col_char[9] . ($k + 2) . ' - "校区名称"太长了'; break; } $row['tc_name'] = $row[9]; if ($row[10] == '') { if ($param['tc_provid_required']) { $data['error'] = $col_char[10] . ($k + 2) . ' - "校区省份"不可为空'; break; } else { $row['tc_provid'] = 0; } } else { if (!isset($regionname_map[$row[10]])) { $data['error'] = $col_char[10] . ($k + 2) . ' - "校区省份"不存在'; break; } $row['tc_provid'] = $regionname_map[$row[10]]; } $row['tc_cityid'] = 0; $row['tc_areaid'] = 0; if (!empty($region_map[$regionname_map[$row[10]]]['children'])) { // 验证市 if ($row[11] == '') { if ($param['tc_cityid_required']) { $data['error'] = $col_char[11] . ($k + 2) . ' - "校区城市"不可为空'; break; } else { $row['tc_cityid'] = 0; } } else { if (!isset($regionname_map[$row[10] . '_' . $row[11]])) { $data['error'] = $col_char[11] . ($k + 2) . ' - "校区城市"不存在'; break; } $row['tc_cityid'] = $regionname_map[$row[10] . '_' . $row[11]]; } // 验证区县 if ($row[12] == '') { if ($param['tc_areaid_required']) { $data['error'] = $col_char[12] . ($k + 2) . ' - "校区区县"不可为空'; break; } else { $row[12] = 0; } } else { if (!isset($regionname_map[$row[10] . '_' . $row[11] . '_' . $row[12]])) { $data['error'] = $col_char[12] . ($k + 2) . ' - "校区区县"不存在'; break; } $row['tc_areaid'] = $regionname_map[$row[10] . '_' . $row[11] . '_' . $row[12]]; } } // 校区地址 if ($row[13] == '') { if ($param['tc_ctcaddr_required']) { $data['error'] = $col_char[13] . ($k + 2) . ' - "校区地址"不可为空'; break; } } if (mb_strlen($row[13], 'UTF-8') > 255) { $data['error'] = $col_char[13] . ($k + 2) . ' - "校区地址"太长了'; break; } $row['tc_ctcaddr'] = $row[13]; // 联系人 if (mb_strlen($row[14], 'UTF-8') > 60) { $data['error'] = $col_char[14] . ($k + 2) . ' - "联系人"太长了'; break; } $row['tc_ctcperson'] = $row[14]; // 联系电话 if ($row['15'] == '') { if ($param['tc_ctcphone_required']) { $data['error'] = $col_char[15] . ($k + 2) . ' - "联系电话"不能为空'; break; } } if (mb_strlen($row[15], 'UTF-8') > 120) { $data['error'] = $col_char[15] . ($k + 2) . ' - "联系电话"太长了'; break; } $row['tc_ctcphone'] = $row[15]; if (!isset($ti_arr[$row[0]])) { $ti_arr[$row[0]] = count($ti_list); $ti_list[] = array('index' => $k + 2, 'ti_id' => 0, 'ti_name' => $row[0], 'ti_typeid' => $row['ti_typeid'], 'ti_provid' => $row['ti_provid'], 'ti_cityid' => $row['ti_cityid'], 'ti_areaid' => $row['ti_areaid'], 'ti_addr' => $row[5], 'ti_priid' => $row['ti_priid'], 'ti_stumax' => $row[7], 'ti_url' => $row[8]); } if (!isset($tc_arr[$row[0]])) { $tc_arr[$row[0]] = array(); } if (isset($tc_arr[$row[0]][$row[9]])) { $data['error'] = $col_char[9] . ($k + 2) . ' - "校区名称"同一机构内有重复'; break; } $tc_arr[$row[0]][$row[9]] = count($tc_list); $tc_list[] = array('index' => $k + 2, 'ti_name' => $row[0], 'tc_name' => $row[9], 'tc_provid' => $row['tc_provid'], 'tc_cityid' => $row['tc_cityid'], 'tc_areaid' => $row['tc_areaid'], 'tc_ctcaddr' => $row[13], 'tc_ctcperson' => $row[14], 'tc_ctcphone' => $row[15]); } if (isset($data['error'])) { break; } unset($region_map); unset($regionname_map); unset($tit_map); unset($tipt_map); unset($rows); // 这里开始导入 try { $db = Fn::db(); if (!$db->beginTransaction()) { throw new Exception('开始导入事务处理失败'); } $time = time(); $adduid = Fn::sess()->userdata('admin_id'); // 导入机构 $sql1 = <<<EOT SELECT ti_id FROM t_training_institution WHERE ti_name = ? EOT; $sql2 = <<<EOT SELECT tc_id FROM t_training_campus WHERE tc_tiid = ? AND tc_name = ? EOT; $sql3 = <<<EOT UPDATE t_training_institution SET ti_campusnum = ti_campusnum + 1 WHERE ti_id = EOT; $tc_update = 0; $tc_insert = 0; $ti_update = 0; $ti_insert = 0; foreach ($ti_list as $k => $row) { $ti_id = $db->fetchOne($sql1, array($row['ti_name'])); if ($ti_id) { $ti_list[$k]['ti_id'] = $ti_id; // update $row2 = array(); if ($param['same_tiname_update_ti_typeid']) { $row2['ti_typeid'] = $row['ti_typeid']; } if ($param['same_tiname_update_ti_region'] && intval($row['ti_provid']) != 0) { $row2['ti_provid'] = $row['ti_provid']; $row2['ti_cityid'] = $row['ti_provid']; $row2['ti_areaid'] = $row['ti_areaid']; } if ($param['same_tiname_update_ti_addr'] && $row['ti_addr'] != '') { $row2['ti_addr'] = $row['ti_addr']; } if ($param['same_tiname_update_ti_priid']) { $row2['ti_priid'] = $row['ti_priid']; } if ($param['same_tiname_update_ti_stumax'] && intval($row['ti_stumax']) != '0') { $row2['ti_stumax'] = $row['ti_stumax']; } if ($param['same_tiname_update_ti_url'] && $row['ti_url'] != '') { $row2['ti_url'] = $row['ti_url']; } if ($row2) { $db->update('t_training_institution', $row2, 'ti_id = ' . $ti_id); $ti_update++; } } else { // insert unset($row['index']); unset($row['ti_id']); $row['ti_flag'] = $time; if ($row['ti_addr'] == '') { $row['ti_addr'] = NULL; } if ($row['ti_url'] == '') { $row['ti_url'] = NULL; } $row['ti_addtime'] = date('Y-m-d H:i:s', $time); $row['ti_adduid'] = $adduid; $db->insert('t_training_institution', $row); $ti_list[$k]['ti_id'] = $db->lastInsertId('t_training_institution', 'ti_id'); $ti_insert++; } } // 导入校区 foreach ($tc_list as $k => $row) { $ti_id = $ti_list[$ti_arr[$row['ti_name']]]['ti_id']; $tc_list[$k]['ti_id'] = $ti_id; $tc_id = $db->fetchOne($sql2, array($ti_id, $row['tc_name'])); if ($tc_id) { // update $tc_list[$k]['tc_id'] = $tc_id; $row2 = array(); if ($param['same_tcname_update_tc_region'] && intval($row['tc_provid']) != 0) { $row2['tc_provid'] = $row['tc_provid']; $row2['tc_cityid'] = $row['tc_provid']; $row2['tc_areaid'] = $row['tc_areaid']; } if ($param['same_tcname_update_tc_ctcaddr'] && $row['tc_ctcaddr'] != '') { $row2['tc_ctcaddr'] = $row['tc_ctcaddr']; } if ($param['same_tcname_update_tc_ctcperson'] && $row['tc_ctcperson'] != '') { $row2['tc_ctcperson'] = $row['tc_ctcperson']; } if ($param['same_tcname_update_tc_ctcphone'] && $row['tc_ctcphone'] != '') { $row2['tc_ctcphone'] = $row['tc_ctcphone']; } if ($row2) { $db->update('t_training_campus', $row2, 'tc_id = ' . $tc_id); $tc_update++; } } else { // insert unset($row['index']); unset($row['ti_name']); $row['tc_tiid'] = $ti_id; $row['tc_flag'] = $time; $row['tc_environ'] = 3; $row['tc_addtime'] = date('Y-m-d H:i:s', $time); $row['tc_adduid'] = $adduid; if ($row['tc_ctcperson'] == '') { $row['tc_ctcperson'] = NULL; } $db->insert('t_training_campus', $row); $tc_list[$k]['tc_id'] = $db->lastInsertId('t_training_campus', 'tc_id'); $db->exec($sql3 . $ti_id); $tc_insert++; } } if ($db->commit()) { $data['success'] = <<<EOT 导入Excel文件({$_FILES['file']['name']})成功,共更新{$ti_update}条机构记录, 插入{$ti_insert}条机构记录, 更新{$tc_update}条校区记录, 插入{$tc_insert}条校区记录 EOT; admin_log('import', '', "培训机构和校区 " . $data['success']); } else { $err = $db->errorInfo()[2]; $db->rollBack(); throw new Exception($err); } } catch (Exception $e) { $data['error'] = $e->getMessage(); } break; } if (!isset($_FILES['file'])) { $param = array('ti_provid_required' => 1, 'ti_cityid_required' => 2, 'ti_areaid_required' => 3, 'ti_addr_required' => 1, 'ti_priid_required' => 1, 'ti_stumax_required' => 1, 'tc_provid_required' => 1, 'tc_cityid_required' => 2, 'tc_areaid_required' => 3, 'tc_ctcaddr_required' => 1, 'tc_ctcphone_required' => 1, 'same_tiname_update_ti_typeid' => 1, 'same_tiname_update_ti_region' => 1, 'same_tiname_update_ti_addr' => 1, 'same_tiname_update_ti_priid' => 1, 'same_tiname_update_ti_stumax' => 1, 'same_tiname_update_ti_url' => 1, 'same_tcname_update_tc_region' => 1, 'same_tcname_update_tc_ctcaddr' => 1, 'same_tcname_update_tc_ctcperson' => 1, 'same_tcname_update_tc_ctcphone' => 1); // 同名校区更新联系电话 } $data['param'] = $param; $this->load->view('traininginstitution/import_titc_excel', $data); }
/** * 支付宝调用回调方法 */ public static function paying_notify() { /** * 功能:支付宝服务器异步通知页面 *************************页面功能说明************************* * 创建该页面文件时,请留心该页面文件中无任何HTML代码及空格。 * 该页面不能在本机电脑测试,请到服务器上做测试。请确保外部可以访问该 * 页面。 * 该页面调试工具请使用写文本函数logResult,该函数已被默认关闭,见 * alipay_notify_class.php中的函数verifyNotify * 如果没有收到该页面返回的 success 信息,支付宝会在24小时内按一定的 * 时间策略重发通知 */ //require_once("alipay.config.php"); //require_once("lib/alipay_notify.class.php"); //计算得出通知验证结果 $alipay_config = AlipayConfig::config(); $alipayNotify = new AlipayNotify($alipay_config); $verify_result = $alipayNotify->verifyNotify(); if (!$verify_result) { die('error:verify_result_failed'); } //验证成功 //商户订单号 $out_trade_no = $_POST['out_trade_no']; //支付宝交易号 $trade_no = $_POST['trade_no']; //交易状态 $trade_status = $_POST['trade_status']; $time = time(); if (!in_array($_POST['trade_status'], array('TRADE_FINISHED', 'TRADE_SUCCESS'))) { die('error:trade_status_error'); } //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订 // 单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 $db = Fn::db(); $row = TransactionRecordModel::transactionRecordInfoByTrNo($out_trade_no); if (!$row) { die('error:out_trade_no_not_exist'); } if ($row['tr_flag'] == 1) { // 已处理过 echo 'success'; exit; } if (!$db->beginTransaction()) { die('error:start_transaction_failed'); } $param = array('tr_flag' => 1, 'tr_finishtime' => $time); TransactionRecordModel::setTransactionRecordByTrNo($out_trade_no, $param); $sql = <<<EOT UPDATE rd_student SET account = account + ({$row['tr_trade_amount']}) WHERE uid = {$row['tr_uid']} EOT; $flag = $db->exec($sql); if (!$db->commit()) { $db->rollBack(); die('error:commit_transaction_failed'); } //注意: //付款完成后,支付宝系统发送该交易状态通知 echo "success"; exit; }
/** * 获取记录列表 * @param array $query * @param integer $page * @param integer $per_page * @param string $order_by * @param string $select_what */ public static function get_cron_schedule_list($query, $page = 1, $per_page = 20, $order_by = null, $select_what = '*') { try { $where = array(); $bind = array(); if (is_array($query) && count($query)) { foreach ($query as $key => $val) { switch ($key) { case 'job_code': if (is_array($val)) { $tmpStr = array(); foreach ($val as $k => $v) { $tmpStr[] = '?'; $bind[] = intval($v); } $tmpStr = implode(', ', $tmpStr); $where[] = "job_code IN ({$tmpStr})"; } else { $where[] = 'job_code = ?'; $bind[] = $val; } break; case 'status': if (is_array($val)) { $tmpStr = array(); foreach ($val as $k => $v) { $tmpStr[] = '?'; $bind[] = intval($v); } $tmpStr = implode(', ', $tmpStr); $where[] = "status IN ({$tmpStr})"; } else { $where[] = 'status = ?'; $bind[] = $val; } break; case 'created_at': if (is_array($val)) { foreach ($val as $k => $v) { $where[] = "created_at {$k} ?"; $bind[] = $v; } } else { $where[] = 'created_at = ?'; $bind[] = $val; } break; case 'scheduled_at': if (is_array($val)) { foreach ($val as $k => $v) { $where[] = "scheduled_at {$k} ?"; $bind[] = $v; } } else { $where[] = 'scheduled_at = ?'; $bind[] = $val; } break; case 'executed_at': if (is_array($val)) { foreach ($val as $k => $v) { $where[] = "executed_at {$k} ?"; $bind[] = $v; } } else { $where[] = 'executed_at = ?'; $bind[] = $val; } break; case 'finished_at': if (is_array($val)) { foreach ($val as $k => $v) { $where[] = "finished_at {$k} ?"; $bind[] = $v; } } else { $where[] = 'finished_at = ?'; $bind[] = $val; } break; default: break; } } } $where = count($where) ? "WHERE " . implode(' AND ', $where) : ''; $order_by = !is_null($order_by) ? 'ORDER BY ' . $order_by : ''; $group_by = ''; $limit = ''; $page = intval($page); if ($page > 0) { $per_page = intval($per_page); $start = ($page - 1) * $per_page; $limit = " LIMIT {$per_page} OFFSET {$start}"; } $sql = "SELECT {$select_what} FROM rd_cron_schedule {$where} {$order_by} {$group_by} {$limit}"; $data = Fn::db()->fetchAll($sql, $bind); return $data; } catch (Exception $e) { throw new Exception($e->getMessage()); } }
/** * 检查某期考试的学科是否有关联 正在进行中的考场 */ public static function exam_subject_has_being_tested($exam_id = 0) { $exam_id = intval($exam_id); if (!$exam_id) { return false; } $now = time(); $sql = <<<EOT SELECT COUNT(eps.place_id) AS count FROM rd_exam_place_subject eps, rd_exam_place ep WHERE eps.exam_id = {$exam_id} AND eps.place_id = ep.place_id AND ep.start_time <= {$now} AND ep.end_time >= {$now} EOT; $test_result = Fn::db()->fetchAll($sql); return $test_result[0]['count'] > 0; }
/** * 批量更新数据 * * @param array 更新数据 * @return boolean */ public static function update_batch($update_data) { $bOk = false; $db = Fn::db(); if (!$db->beginTransaction()) { return $bOk; } try { foreach ($update_data as $v) { $id = $v['id']; unset($v['id']); $db->update('rd_question_stat', $v, 'id = ' . $id); } $bOk = $db->commit(); if (!$bOk) { $db->rollBack(); } } catch (Exception $e) { } return $bOk; }
/** * 执行考试成绩同步 */ public static function initSyncZmossExamResults() { $db = Fn::db(); $sql = "SELECT er_examid, er_zmoss_examid FROM t_exam_relate\n WHERE er_flag > 0 AND er_flag < 3 AND er_exampid > 0 limit 5"; $list = $db->fetchAll($sql); if (!$list) { return false; } foreach ($list as $item) { $db->update('t_exam_relate', array('er_flag' => 100), 'er_examid = ? AND er_zmoss_examid = ?', array($item['er_examid'], $item['er_zmoss_examid'])); } foreach ($list as $item) { $flag = self::syncZmossExamResults($item['er_examid'], $item['er_zmoss_examid']); if ($flag) { $bind = array('er_flag' => 3); } else { $bind = array('er_flag' => 2); } $db->update('t_exam_relate', $bind, 'er_examid = ? AND er_zmoss_examid = ?', array($item['er_examid'], $item['er_zmoss_examid'])); } }
public function __construct() { parent::__construct(); self::$_db = Fn::db(); }
/** * 获取交易记录 * @param string $tr_no 交易号 * @return array map<string, variant>类型数据 */ public static function transactionRecordInfoByTrNo($tr_no, $item = "*") { if (!$tr_no) { return false; } $item = $item ? $item : '*'; $sql = "SELECT {$item} FROM t_transaction_record\n WHERE tr_no = ?"; return Fn::db()->fetchRow($sql, array($tr_no)); }