/** * @按产品查询交易数据信息 * @param int $p_id 产品id */ public function transactionp($p_id) { if (!$this->check_power('statistics_manage')) { return; } $p_id = intval($p_id); $student = CommonModel::get_product_list($p_id); if (empty($student)) { message('信息不存在'); return; } $admin = $this->session->userdata('admin_id'); $managers = explode(',', $student['p_managers']); if (!in_array($admin, $managers) && !$this->is_super_user()) { message('没有管理权限'); return; } /* * 基本信息 */ $p_id = intval($p_id); $student = CommonModel::get_product_list($p_id); if (empty($student)) { message('信息不存在'); return; } $data = array(); $data['p_id'] = $p_id; $data['p_name'] = $student[p_name]; $query = array(); $query['p_id'] = $p_id; $query['pt_type'] = 0; /* 搜索条件 */ if (isset($_GET['begin_time']) && !empty($_GET['begin_time'])) { $query['pt_u_time >='] = strtotime($_GET['begin_time'] . '00:00:59'); $search['begin_time'] = $_GET['begin_time']; } if (isset($_GET['end_time']) && !empty($_GET['end_time'])) { $query['pt_u_time <='] = strtotime($_GET['end_time'] . '23:59:59'); $search['end_time'] = $_GET['end_time']; } // 公共数据 $res = CommonModel::get_list($query, 'v_trans_log', 'count(pt_id) as pt_id_count,sum(pt_money)*(-1) as pt_money_count'); $data['p_id_count'] = $res[0]['pt_id_count']; $data['p_money_count'] = !empty($res[0]['pt_money_count']) ? $res[0]['pt_money_count'] : 0; $total = $res[0]['pt_id_count']; /* * 分页读取数据列表,并处理相关数据 */ $size = 10; $page = isset($_GET['page']) && intval($_GET['page']) > 1 ? intval($_GET['page']) : 1; $offset = ($page - 1) * $size; $list = array(); if ($total) { $res = CommonModel::get_list($query, 'v_trans_log', 'pt_id,p_name,pc_name,end_time,start_time,a_name,pt_money', $page, $size); foreach ($res as $row) { $row['start_time'] = $row['start_time'] > 0 ? date('Y-m-d H:i:s', $row['start_time']) : date('Y-m-d H:i:s', time()); $row['end_time'] = $row['end_time'] > 0 ? date('Y-m-d H:i:s', $row['end_time']) : date('Y-m-d H:i:s', time()); $row['p_name'] = !empty($row['p_name']) ? $row['p_name'] : '充值'; $row['pt_money'] = !empty($row['pt_money']) ? $row['pt_money'] * -1 : '0'; $row['pc_name'] = !empty($row['pc_name']) ? $row['pc_name'] : '充值'; $list[] = $row; } } $data['list'] = $list; // 分页 $purl = site_url('admin/account/transactionp/' . $p_id); $data['pagination'] = multipage($total, $size, $page, $purl); $data['search'] = $search; // 模版 $this->load->view('account/transactionp', $data); }
/** * @description 批量删除产品信息 * @author * @final * @param array $ids 产品id */ public function batch_delete() { if (!$this->check_power_new('production_batch_delete')) { return; } $ids = $this->input->post('ids'); if (empty($ids) or !is_array($ids)) { message('请选择要删除的项目!'); return; } // 检查被关联试题 $success = $fail = 0; foreach ($ids as $id) { $p_id = intval($id); $p_ids = CommonModel::get_product_list($p_id); $bool = true; if (empty($p_ids)) { $bool = false; } $admin = $this->session->userdata('admin_id'); /* $managers = explode(',',$p_ids['p_managers']); if(!in_array($admin, $managers)&&!$this->check_power_new('production_del')) { $bool = false; } */ $query = array(); $query['p_id'] = $p_id; $res = CommonModel::get_list($query, 'v_trans_log_count', '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', "p_id={$p_id}"); admin_log('delete', 'product', $p_id); if ($num > 0) { $success += $num; } else { $fail++; } } $back_url = 'admin/prodution/index/'; message('批量操作完成,成功删除:' . $success . ' 个,失败:' . $fail . ' 个。', 'javascript'); }
/** * 测试报名 * @param int $exam 期次id * @param int $place 场次id, 多个ID用英文逗号分隔开 * @param int $p_id 产品id * @return json 成功/失败 */ public function place_in() { $exam = intval($this->input->post('exam')); $place = $this->input->post('place'); $uid = $this->session->userdata('uid'); $p_id = intval($this->input->post('p_id')); $force = intval($this->input->post('force')); $b_pushcourse = intval($this->input->post('b_pushcourse')); if (!Validate::isJoinedIntStr($place)) { output_json(CODE_ERROR, '报名失败,考场不正确'); } // 检查是否存在该学生 $account = StudentModel::get_student($uid, 'account,account_status'); if (!count($account['account'])) { output_json(CODE_ERROR, '报名失败,不存在该学生.'); } else { if ($account['account_status']) { output_json(CODE_ERROR, '报名失败,学生帐号已被冻结'); } } if (CommonModel::get_product_trans($p_id, $uid, $place, $exam)) { output_json(CODE_ERROR, '报名失败,已报名该产品'); } $res = CommonModel::get_product_list($p_id); if (!$res) { output_json(CODE_ERROR, '报名失败,产品不存在'); } else { $price = $b_pushcourse ? $res['p_price_pushcourse'] : $res['p_price']; $pc_id = $res['pc_id']; } $account = $account['account']; $account1 = $account - $price; if ($account1 < 0) { output_json(CODE_ERROR, '帐号余额不足'); } $inserts = array(); $error = array(); $code = CODE_ERROR; $place_id_arr = array_unique(explode(',', $place)); $place_id_arr2 = array(); foreach ($place_id_arr as $place_id) { if ($place_id) { $query = $this->db->select('p.*,e.exam_name,e.exam_id,e.exam_pid,e.grade_id')->from('exam_place p')->join('exam e', 'p.exam_pid=e.exam_id')->where(array('p.place_id' => $place_id))->get(); $place = $query->row_array(); } else { continue; } if (empty($place)) { $error[] = "考场[{$place_id}]信息不存在"; //output_json(CODE_ERROR, '考场信息不存在'); continue; } $ids = $uid; // 控制考场只能在未开始考试操作 $no_start = ExamPlaceModel::place_is_no_start($place_id); if (!$no_start) { $error[] = "考场[{$place_id}]正确考试或已结束,无法报名"; continue; //output_json(CODE_ERROR, '该考场正在考试或已结束,无法做此操作'); } // $ids = my_intval($ids); // $school_id = (int)$this -> input ->post('school_id'); // 该考场所考到的学科 $subject_ids = array(); $query = $this->db->select('subject_id')->from('exam_place_subject')->where(array('place_id' => $place['place_id']))->get(); $subjects = $query->result_array(); $subject_ids = array(); foreach ($subjects as $subject) { $subject_ids[] = $subject['subject_id']; } $subject_ids = count($subject_ids) ? implode(',', $subject_ids) : '""'; $place['start_time'] = $place['start_time'] + 1; $place['end_time'] = $place['end_time'] - 1; if ($force == 0) { $sql = "SELECT count(u.uid) FROM rd_student u\n WHERE u.grade_id={$place['grade_id']} AND u.is_delete=0 AND u.uid ={$ids}"; $query = Fn::db()->fetchOne($sql); if ($query == 0) { $error[] = "考场[{$place_id}]您的年级不符合要求"; $code = -2; continue; //output_json('-2', '你的年级不符合要求'); } } $not_exists_sql = <<<EOT SELECT uid FROM rd_exam_place_student ps, rd_exam_place p, rd_exam e WHERE e.exam_isfree = 0 AND ps.place_id = p.place_id AND p.place_index = {$place['place_index']} AND ps.uid = u.uid AND p.exam_pid = e.exam_id AND ( ( (p.start_time >= {$place['start_time']} AND p.start_time <= {$place['end_time']} ) OR ( p.end_time >= {$place['start_time']} AND p.end_time <= {$place['end_time']} ) OR ( p.start_time <= {$place['start_time']} AND p.end_time >= {$place['end_time']} ) ) OR p.place_id IN ( SELECT DISTINCT(place_id) FROM rd_exam_place_subject eps WHERE eps.subject_id IN ({$subject_ids}) AND eps.exam_pid = {$place['exam_id']} ) ) EOT; $sql = <<<EOT SELECT u.uid FROM rd_student u WHERE u.is_delete = 0 AND u.uid = {$ids} AND NOT EXISTS({$not_exists_sql}) EOT; $tmp_inserts = array(); $query = $this->db->query($sql); foreach ($query->result_array() as $row) { $vrow = array('place_id' => $place_id, 'uid' => $row['uid']); $tmp_inserts[] = $vrow; $inserts[] = $vrow; } if (empty($tmp_inserts)) { $error[] = "考场[{$place_id}]时间段内您已经参加了相同时间段其它考试"; continue; //output_json(CODE_ERROR, '你已经参加相同时间段其他考试'); } $place_id_arr2[] = $place_id; } if (!empty($error) || empty($inserts)) { output_json($code, "报名失败\n" . implode("\n", $error)); } $vc = C('virtual_currency'); $pt_log = $account . $vc['name'] . '--' . $account1 . $vc['name']; $txt_account = -$price; $db = Fn::db(); $flag = false; if ($db->beginTransaction()) { foreach ($inserts as $val) { $db->replace('rd_exam_place_student', $val); } $param = array('tr_uid' => $uid, 'tr_type' => 3, 'tr_pid' => $p_id, 'tr_flag' => 1, 'tr_money' => $account1, 'tr_trade_amount' => $txt_account, 'tr_comment' => $pt_log); $number = TransactionRecordModel::addTransactionRecord($param); if ($b_pushcourse) { $now = date('Y-m-d H:i:s'); foreach ($place_id_arr2 as $place_id) { $db->insert('t_course_push', array('cp_stuuid' => $uid, 'cp_exampid' => $exam, 'cp_examplaceid' => $place_id, 'cp_addtime' => $now)); } } $sql = <<<EOT UPDATE rd_student SET account = account - {$price} WHERE uid = {$uid} EOT; $db->exec($sql); $flag = $db->commit(); if (!$flag) { $db->rollBack(); $error[] = "考场[{$place_id}]报名失败"; } } if (!$flag) { output_json(CODE_ERROR, "报名失败\n" . implode("\n", $error)); } else { output_json(CODE_SUCCESS, '报名成功.'); } }