480 lines
12 KiB
PHP
Executable File
480 lines
12 KiB
PHP
Executable File
<?php
|
|
|
|
namespace Home\Controller;
|
|
|
|
/**
|
|
* 学生
|
|
* @author Devil
|
|
* @blog http://gong.gg/
|
|
* @version 0.0.1
|
|
* @datetime 2017-03-02T22:48:35+0800
|
|
*/
|
|
class StudentController extends CommonController
|
|
{
|
|
/**
|
|
* [_initialize 前置操作-继承公共前置方法]
|
|
* @author Devil
|
|
* @blog http://gong.gg/
|
|
* @version 0.0.1
|
|
* @datetime 2017-03-02T22:48:35+0800
|
|
*/
|
|
public function _initialize()
|
|
{
|
|
// 调用父类前置方法
|
|
parent::_initialize();
|
|
|
|
// 登录校验
|
|
$this->Is_Login();
|
|
}
|
|
|
|
/**
|
|
* [Index 首页]
|
|
* @author Devil
|
|
* @blog http://gong.gg/
|
|
* @version 0.0.1
|
|
* @datetime 2017-02-22T16:50:32+0800
|
|
*/
|
|
public function Index()
|
|
{
|
|
// 获取列表
|
|
$where = array('us.user_id'=>$this->user['id']);
|
|
$list = $this->StudentSetDataHandle(M('UserStudent')->alias('AS us')->join('__STUDENT__ AS s ON s.id=us.student_id ')->field('s.*, us.id AS user_student_id,us.add_time AS bundled_time')->where($where)->select());
|
|
|
|
// 数据列表
|
|
$this->assign('list', $list);
|
|
$this->display('Index');
|
|
}
|
|
|
|
/**
|
|
* [StudentSetDataHandle 数据处理]
|
|
* @author Devil
|
|
* @blog http://gong.gg/
|
|
* @version 0.0.1
|
|
* @datetime 2016-12-29T21:27:15+0800
|
|
* @param [array] $data [学生数据]
|
|
* @return [array] [处理好的数据]
|
|
*/
|
|
private function StudentSetDataHandle($data)
|
|
{
|
|
$result = array();
|
|
if(!empty($data))
|
|
{
|
|
$c = M('Class');
|
|
$r = M('Region');
|
|
$s = M('Semester');
|
|
foreach($data as $k=>$v)
|
|
{
|
|
if(!isset($result[$v['semester_id']]))
|
|
{
|
|
// 学期
|
|
$result[$v['semester_id']]['id'] = $v['semester_id'];
|
|
$result[$v['semester_id']]['name'] = $s->where(array('id'=>$v['semester_id']))->getField('name');
|
|
}
|
|
|
|
// 班级
|
|
$tmp_class = $c->field(array('pid', 'name'))->find($v['class_id']);
|
|
if(!empty($tmp_class))
|
|
{
|
|
$p_name = ($tmp_class['pid'] > 0) ? $c->where(array('id'=>$tmp_class['pid']))->getField('name') : '';
|
|
$v['class_name'] = empty($p_name) ? $tmp_class['name'] : $p_name.'-'.$tmp_class['name'];
|
|
} else {
|
|
$v['class_name'] = '';
|
|
}
|
|
|
|
// 地区
|
|
$v['region_name'] = $r->where(array('id'=>$v['region_id']))->getField('name');
|
|
|
|
// 学期
|
|
$v['semester_text'] = $result[$v['semester_id']]['name'];
|
|
|
|
// 出生
|
|
$v['birthday'] = date('Y-m-d', $v['birthday']);
|
|
|
|
// 报名时间
|
|
$v['add_time'] = date('Y-m-d H:i:s', $v['add_time']);
|
|
|
|
// 更新时间
|
|
$v['upd_time'] = date('Y-m-d H:i:s', $v['upd_time']);
|
|
|
|
// 绑定时间
|
|
$v['bundled_time'] = date('Y-m-d H:i:s', $v['bundled_time']);
|
|
|
|
// 性别
|
|
$v['gender'] = L('common_gender_list')[$v['gender']]['name'];
|
|
|
|
// 状态
|
|
$v['state'] = L('common_student_state_list')[$v['state']]['name'];
|
|
|
|
// 缴费状态
|
|
$v['tuition_state_text'] = L('common_tuition_state_list')[$v['tuition_state']]['name'];
|
|
|
|
$result[$v['semester_id']]['item'][] = $v;
|
|
}
|
|
}
|
|
return $result;
|
|
}
|
|
|
|
/**
|
|
* [ScoreInfo 成绩查询]
|
|
* @author Devil
|
|
* @blog http://gong.gg/
|
|
* @version 0.0.1
|
|
* @datetime 2017-03-22T22:39:04+0800
|
|
*/
|
|
public function ScoreInfo()
|
|
{
|
|
$id = I('id');
|
|
if(!empty($id))
|
|
{
|
|
$field = array('s.username', 's.class_id', 'f.score', 'f.subject_id', 'f.score_id', 'f.comment', 'f.add_time');
|
|
$where = array('us.user_id'=>$this->user['id'], 'us.id'=>$id);
|
|
$data = $this->ScoreSetDataHandle(M('UserStudent')->alias('AS us')->join('__STUDENT__ AS s ON us.student_id=s.id')->join('__FRACTION__ AS f ON s.id=f.student_id')->where($where)->field($field)->order('f.score_id ASC')->select());
|
|
$this->assign('data', $data);
|
|
$this->assign('student_score_title_list', L('student_score_title_list'));
|
|
}
|
|
$this->display('ScoreInfo');
|
|
}
|
|
|
|
/**
|
|
* [ScoreSetDataHandle 数据处理]
|
|
* @author Devil
|
|
* @blog http://gong.gg/
|
|
* @version 0.0.1
|
|
* @datetime 2016-12-29T21:27:15+0800
|
|
* @param [array] $data [学生数据]
|
|
* @return [array] [处理好的数据]
|
|
*/
|
|
private function ScoreSetDataHandle($data)
|
|
{
|
|
$result = array();
|
|
if(!empty($data))
|
|
{
|
|
$score = M('Score');
|
|
$subject = M('Subject');
|
|
$class = M('Class');
|
|
$score_level = L('common_fraction_level_list');
|
|
foreach($data as $k=>$v)
|
|
{
|
|
// 基础资料
|
|
if(!isset($result['username']))
|
|
{
|
|
// 姓名
|
|
$result['username'] = $v['username'];
|
|
|
|
// 班级
|
|
$tmp_class = $class->field(array('pid', 'name'))->find($v['class_id']);
|
|
if(!empty($tmp_class))
|
|
{
|
|
$p_name = ($tmp_class['pid'] > 0) ? $class->where(array('id'=>$tmp_class['pid']))->getField('name') : '';
|
|
$result['class_name'] = empty($p_name) ? $tmp_class['name'] : $p_name.'-'.$tmp_class['name'];
|
|
}
|
|
}
|
|
|
|
// 学期key
|
|
$score_key = $v['score_id'];
|
|
|
|
// 成绩期号
|
|
if(!isset($result['item'][$score_key]))
|
|
{
|
|
$result['item'][$score_key]['name'] = $score->where(array('id'=>$v['score_id']))->getField('name');
|
|
}
|
|
|
|
// 科目
|
|
$v['subject_name'] = $subject->where(array('id'=>$v['subject_id']))->getField('name');
|
|
|
|
// 成绩等级
|
|
foreach($score_level as $level)
|
|
{
|
|
if($v['score'] >= $level['min'] && $v['score'] <= $level['max'])
|
|
{
|
|
$v['score_level'] = $level['name'];
|
|
}
|
|
}
|
|
if(!isset($v['score_level']))
|
|
{
|
|
$v['score_level'] = '';
|
|
}
|
|
|
|
// 添加时间
|
|
$v['add_time'] = date('Y-m-d', $v['add_time']);
|
|
|
|
unset($v['username'], $v['class_id'], $v['subject_id'], $v['score_id']);
|
|
$result['item'][$score_key]['item'][] = $v;
|
|
}
|
|
}
|
|
return $result;
|
|
}
|
|
|
|
/**
|
|
* [PolyInfo 学生关联-页面]
|
|
* @author Devil
|
|
* @blog http://gong.gg/
|
|
* @version 0.0.1
|
|
* @datetime 2017-03-15T11:22:33+0800
|
|
*/
|
|
public function PolyInfo()
|
|
{
|
|
$this->display('PolyInfo');
|
|
}
|
|
|
|
/**
|
|
* [Delete 学生关联-解除]
|
|
* @author Devil
|
|
* @blog http://gong.gg/
|
|
* @version 0.0.1
|
|
* @datetime 2016-12-25T22:36:12+0800
|
|
*/
|
|
public function Delete()
|
|
{
|
|
if(!IS_AJAX)
|
|
{
|
|
$this->error(L('common_unauthorized_access'));
|
|
}
|
|
|
|
// 数据删除
|
|
if(M('UserStudent')->where(array('id'=>I('id'), 'user_id'=>$this->user['id']))->delete())
|
|
{
|
|
$this->ajaxReturn(L('common_operation_delete_success'));
|
|
} else {
|
|
$this->ajaxReturn(L('common_operation_delete_error'), -100);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* [Poly 学生关联]
|
|
* @author Devil
|
|
* @blog http://gong.gg/
|
|
* @version 0.0.1
|
|
* @datetime 2017-03-22T16:47:29+0800
|
|
*/
|
|
public function Poly()
|
|
{
|
|
// 是否ajax请求
|
|
if(!IS_AJAX)
|
|
{
|
|
$this->error(L('common_unauthorized_access'));
|
|
}
|
|
|
|
// 参数是否有误
|
|
if(empty($_POST['id']) || empty($_POST['accounts']) || empty($_POST['verify']))
|
|
{
|
|
$this->ajaxReturn(L('common_param_error'), -1);
|
|
}
|
|
|
|
// 账户是否存在
|
|
$accounts = I('accounts');
|
|
$field = $this->StudentPolyAccountsCheck($accounts);
|
|
|
|
// 验证码校验
|
|
$verify_param = array(
|
|
'key_prefix' => 'student_poly',
|
|
'expire_time' => MyC('common_verify_expire_time'),
|
|
'time_interval' => MyC('common_verify_time_interval'),
|
|
);
|
|
if($field == 'email')
|
|
{
|
|
$obj = new \My\Email($verify_param);
|
|
|
|
} else {
|
|
$obj = new \My\Sms($verify_param);
|
|
}
|
|
// 是否已过期
|
|
if(!$obj->CheckExpire())
|
|
{
|
|
$this->ajaxReturn(L('common_verify_expire'), -10);
|
|
}
|
|
// 是否正确
|
|
if(!$obj->CheckCorrect(I('verify')))
|
|
{
|
|
$this->ajaxReturn(L('common_verify_error'), -11);
|
|
}
|
|
|
|
// 查询用户数据
|
|
$where = array('id'=>I('id'), $field=>$accounts, 'semester_id'=>MyC('admin_semester_id'));
|
|
$student_id = M('Student')->where($where)->getField('id');
|
|
if(!empty($student_id))
|
|
{
|
|
$data = array(
|
|
'student_id' => $student_id,
|
|
'user_id' => $this->user['id'],
|
|
'add_time' => time(),
|
|
);
|
|
if(M('UserStudent')->add($data))
|
|
{
|
|
// 清除验证码
|
|
$obj->Remove();
|
|
|
|
$this->ajaxReturn(L('common_operation_join_success'));
|
|
}
|
|
$this->ajaxReturn(L('common_operation_join_error'), -100);
|
|
}
|
|
$this->ajaxReturn(L('common_student_no_exist_error'), -1000);
|
|
}
|
|
|
|
/**
|
|
* [PolyQuery 学生关联-数据查询]
|
|
* @author Devil
|
|
* @blog http://gong.gg/
|
|
* @version 0.0.1
|
|
* @datetime 2017-03-17T16:58:26+0800
|
|
*/
|
|
public function PolyQuery()
|
|
{
|
|
// 是否ajax请求
|
|
if(!IS_AJAX)
|
|
{
|
|
$this->error(L('common_unauthorized_access'));
|
|
}
|
|
|
|
// 参数是否有误
|
|
if(empty($_POST['username']) || empty($_POST['student_number']) || empty($_POST['id_card']))
|
|
{
|
|
$this->ajaxReturn(L('common_param_error'), -1);
|
|
}
|
|
|
|
// 查询用户数据
|
|
$where = array('username'=>I('username'), 'number'=>I('student_number'), 'id_card'=>I('id_card'), 'semester_id'=>MyC('admin_semester_id'));
|
|
$data = M('Student')->field(array('id', 'my_mobile', 'parent_mobile', 'email'))->where($where)->find();
|
|
if(!empty($data))
|
|
{
|
|
// 是否已关联过
|
|
$temp = M('UserStudent')->where(array('student_id'=>$data['id'], 'user_id'=>$this->user['id']))->getField('id');
|
|
if(!empty($temp))
|
|
{
|
|
$this->ajaxReturn(L('student_join_accounts_exist_tips'), -2);
|
|
}
|
|
|
|
// 封装返回数据
|
|
$result = array('id' => $data['id'], 'contact_list' => array());
|
|
if(!empty($data['my_mobile']))
|
|
{
|
|
$result['contact_list'][] = $data['my_mobile'];
|
|
}
|
|
if(!empty($data['parent_mobile']))
|
|
{
|
|
$result['contact_list'][] = $data['parent_mobile'];
|
|
}
|
|
if(!empty($data['email']))
|
|
{
|
|
$result['contact_list'][] = $data['email'];
|
|
}
|
|
$this->ajaxReturn(L('common_operation_success'), 0, $result);
|
|
}
|
|
$this->ajaxReturn(L('common_student_no_exist_error'), -1000);
|
|
}
|
|
|
|
/**
|
|
* [PolyVerifyEntry 学生关联-验证码显示]
|
|
* @author Devil
|
|
* @blog http://gong.gg/
|
|
* @version 0.0.1
|
|
* @datetime 2017-03-05T15:10:21+0800
|
|
*/
|
|
public function PolyVerifyEntry()
|
|
{
|
|
$this->CommonVerifyEntry(I('type', 'student_poly'));
|
|
}
|
|
|
|
/**
|
|
* [PolyVerifySend 学生关联-验证码发送]
|
|
* @author Devil
|
|
* @blog http://gong.gg/
|
|
* @version 0.0.1
|
|
* @datetime 2017-03-10T17:35:03+0800
|
|
*/
|
|
public function PolyVerifySend()
|
|
{
|
|
// 是否ajax请求
|
|
if(!IS_AJAX)
|
|
{
|
|
$this->error(L('common_unauthorized_access'));
|
|
}
|
|
|
|
// 参数
|
|
$accounts = I('accounts');
|
|
if(empty($accounts))
|
|
{
|
|
$this->ajaxReturn(L('common_param_error'), -10);
|
|
}
|
|
|
|
// 账户是否存在
|
|
$type = $this->StudentPolyAccountsCheck($accounts);
|
|
|
|
// 验证码公共基础参数
|
|
$verify_param = array(
|
|
'key_prefix' => 'student_poly',
|
|
'expire_time' => MyC('common_verify_expire_time'),
|
|
'time_interval' => MyC('common_verify_time_interval'),
|
|
);
|
|
|
|
// 是否开启图片验证码
|
|
$verify = $this->CommonIsImaVerify($verify_param);
|
|
|
|
// 验证码
|
|
$code = GetNumberCode(6);
|
|
|
|
// 邮箱
|
|
if($type == 'email')
|
|
{
|
|
$obj = new \My\Email($verify_param);
|
|
$email_param = array(
|
|
'email' => $accounts,
|
|
'content' => MyC('home_email_user_student_binding'),
|
|
'title' => MyC('home_site_name').' - '.L('student_operation_binding_text'),
|
|
'code' => $code,
|
|
);
|
|
$state = $obj->SendHtml($email_param);
|
|
|
|
// 短信
|
|
} else {
|
|
$obj = new \My\Sms($verify_param);
|
|
$state = $obj->SendText($accounts, MyC('home_sms_user_student_binding'), $code);
|
|
}
|
|
|
|
// 状态
|
|
if($state)
|
|
{
|
|
// 清除验证码
|
|
if(isset($verify) && is_object($verify))
|
|
{
|
|
$verify->Remove();
|
|
}
|
|
|
|
$this->ajaxReturn(L('common_send_success'));
|
|
} else {
|
|
$this->ajaxReturn(L('common_send_error').'['.$obj->error.']', -100);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* [StudentPolyAccountsCheck 学生是否存在]
|
|
* @author Devil
|
|
* @blog http://gong.gg/
|
|
* @version 0.0.1
|
|
* @datetime 2017-03-22T17:39:56+0800
|
|
* @param [string] $accounts [my_mobile, parent_mobile, email]
|
|
* @return [string] [表字段名称 my_mobile, parent_mobile, email]
|
|
*/
|
|
private function StudentPolyAccountsCheck($accounts)
|
|
{
|
|
$field = array('my_mobile', 'parent_mobile', 'email');
|
|
$where = array(
|
|
array(
|
|
'my_mobile' => $accounts,
|
|
'parent_mobile' => $accounts,
|
|
'email' => $accounts,
|
|
'_logic' => 'OR',
|
|
),
|
|
'semester_id' => MyC('admin_semester_id'),
|
|
);
|
|
$data = M('Student')->field($field)->where($where)->find();
|
|
if(!empty($data))
|
|
{
|
|
$key = array_search($accounts, $data);
|
|
return ($key === false) ? '' : $key;
|
|
} else {
|
|
$this->ajaxReturn(L('common_student_no_exist_error'), -1000);
|
|
}
|
|
}
|
|
}
|
|
?>
|