/** * 提交申请第 3 步处理. * * @access public * @return void * @author Liuping <*****@*****.**> */ public function appSubmit3Action() { // 校验一级中介是否有权限添加申请 if (!AgentAuth::checkTopAgentOfApply()) { $this->error('No permission'); } // 申请 id $appStatusId = intval(I('post.appStatus', '')); // 陈述内容 $stateContent = I('post.stateText', ''); if (empty($appStatusId)) { $this->error('Parameters error', U('Student/noApplyStudentList')); } $modelAppStatus = new ApplyStatusModel(); $appStatusInfo = $modelAppStatus->find($appStatusId); if (NULL === $appStatusInfo || FALSE === $appStatusInfo) { $appStatusInfo = []; } if (empty($appStatusInfo)) { $this->error('Parameters error', U('Student/noApplyStudentList')); } // 操作类型 1 : 添加, 2 : 编辑 $operFlag = intval(I('post.oper', 1)); // 根据操作类型, 设置不同的权限 $authRule = []; if (1 === $operFlag) { $authRule[] = AgentAuth::ADD; } else { $authRule[] = AgentAuth::WRITE; } $modelStu = new MemberStuModel(); // 验证权限 $res = AgentAuth::checkStu($appStatusInfo['s_no'], $authRule); if ($res['status'] !== 9) { $this->error('No permission'); } // 申请状态 $applyStatus = intval($appStatusInfo['a_status']); // 若申请状态为材料出错(a_status : 2), 就不验证是否超过允许添加的条数和不更新申请数量 $res = FALSE; // 默认为未超过申请条数 if (2 !== $applyStatus) { // 检查是否已超过允许添加的条数 $res = $modelAppStatus->checkApplyNum($appStatusInfo['year'], $appStatusInfo['s_no']); } if ($res) { // 超过申请次数跳转到中介未申请学生列表 $msg = 'The application amount of ' . $appStatusInfo['year'] . 'entry for this student has run out.'; $this->error($msg, U('Student/noApplyStudentList')); } // 开始组装新添加的数据 $uid = $appStatusInfo['uid']; $fuid = $appStatusInfo['fuid']; $partid = $appStatusInfo['partid']; $stuId = $appStatusInfo['s_no']; $ano = $appStatusInfo['a_no']; // 个人陈述 $perStateInfo = $modelStu->fetchPerStateInfo($stuId, $ano); if (empty($perStateInfo)) { // 新增 $perStateInfo = $modelStu->fetchPerStateInfo($stuId, ''); $perStateInfo['id'] = ''; $perStateInfo['uid'] = $uid; $perStateInfo['fuid'] = $fuid; $perStateInfo['partid'] = $partid; $perStateInfo['s_id'] = $stuId; $perStateInfo['a_no'] = $ano; $perStateInfo['create_time'] = time(); } // 陈述内容 $perStateInfo['content'] = $stateContent; // 执行验证规则 $res = $modelStu->validate($modelStu->perStateRules)->create($perStateInfo); if (!$res) { $this->error($modelStu->getError()); } $modelStu->startTrans(); // 开启事务 $res = $modelStu->procPerStateInfo($perStateInfo, $uid, $stuId, $ano); $res1 = $modelAppStatus->switchCompleteStatus($appStatusId, 1, time()); $stuFullName = $appStatusInfo['first_name'] . ' ' . $appStatusInfo['family_name']; // 若申请状态为材料出错(a_status : 2), 就不验证是否超过允许添加的条数和不更新申请数量 $res2 = TRUE; // 默认为更新数量成功 if (2 !== $applyStatus) { $res2 = $modelAppStatus->updateApplyNum($appStatusInfo['year'], $stuId, $stuFullName); } $aoInfo = $modelStu->fetchAoInfo($stuId); $res3 = $modelAppStatus->switchApplyStatus($appStatusId, 1); // 更新状态为 审核中. $res4 = TRUE; $res5 = TRUE; $res6 = TRUE; $_cont = '用户重新提交了申请'; $_cont1 = 'Application has been resubmitted, application status changes to"Verifying by ApplicationUK"'; if (!empty($aoInfo) && 2 === $applyStatus) { // 有跟进AO且状态是材料出错, 就记录日志 $res4 = $modelStu->writeLog($aoInfo['ao_uid'], $uid, $ano, 1, date('Y-m-d H:i:s') . ', ' . $_cont); $res5 = $modelStu->writeApplyLog($aoInfo['ao_uid'], $uid, $ano, 1, $_cont1); } // 新申请记录新申请日志. if (0 === $applyStatus) { $_cont1 = 'Your application has been submitted and now under verification, application status changes to "Verifing by ApplicationUK"'; $res6 = $modelStu->writeApplyLog(empty($aoInfo) ? 0 : $aoInfo['ao_uid'], $uid, $ano, 1, $_cont1); } if ($res && $res1 && $res2 && $res3 && $res4 && $res5 && $res6) { $modelStu->commit(); if (!empty($aoInfo) && 2 === $applyStatus) { // 材料出错重新提交, 给 AO 发邮件 $resubmitTime = date('Y-m-d H:i:s', time()); $emailTitle = $stuFullName . ' ' . $_cont; $emailContent = <<<MAIL 学生姓名: {$stuFullName}. 提交时间: {$resubmitTime}. 描述: {$_cont}. MAIL; // 发送邮件 MemberStuModel::sendEmail($aoInfo['ao_user_email'], $emailTitle, $emailContent); } elseif (!empty($aoInfo)) { // 新添加/修改申请时要发邮件 $_cont = '提交了新的申请'; $resubmitTime = date('Y-m-d H:i:s', time()); $emailTitle = $stuFullName . ' ' . $_cont; $emailContent = <<<MAIL 学生姓名: {$stuFullName}. 提交时间: {$resubmitTime}. 描述: {$_cont}. MAIL; // 发送邮件 MemberStuModel::sendEmail($aoInfo['ao_user_email'], $emailTitle, $emailContent); } // 写入系统日志 $_mark = session('username') . '在' . date('Y-m-d H:i:s') . ', 添加了一个申请资料, 申请编号 : ' . $ano . ', 学生姓名 : ' . $appStatusInfo['first_name'] . $appStatusInfo['family_name']; if (1 === $operFlag) { // 写入新增日志 system_log($_mark, $modelAppStatus->getTableName(), $ano, 'a', $appStatusInfo, NULL, 1); } // 成功跳转到已申请列表. //$this->success('Successful!', U('Student/studentList')); $this->success('Successful!', U('Student/studentDetail', ['id' => $stuId])); } else { $modelStu->rollback(); $this->error('Action failed'); } }
/** * 学生有申请的列表. * * @access public * @return void * @author Liuping <*****@*****.**> */ public function studentList() { // 允许申请的部门 $allowParts = AgentAuth::getAllowParts([AgentAuth::READ]); $part_ids = []; foreach ($allowParts as $row) { $part_ids[] = $row['id']; } $modelAppStatus = new ApplyStatusModel(); // 已有申请的年份 $allAppYears = $modelAppStatus->fetchApplyYears($part_ids); // 当前允许申请的年份 $allowAppYears = getApplyForYears(); // 从第几个年份显示 $_tmp_year = $allowAppYears[0]; // 增加一个 全部 的部门 array_unshift($allowParts, ['id' => '', 'name' => 'All']); // 默认显示的部门名称 $default_show_part_name = 'All'; // 页面展示的全部年份 $showYears = $allowAppYears; foreach ($allAppYears as $row) { $showYears[] = intval($row['year']); } $showYears = array_unique($showYears); // 去重 sort($showYears); // 排序 // 获取 左右 移动控制默认显示的第几页 $_tmp_key = array_search($_tmp_year, $showYears); // selectYear(integer), startDate(string), endDate(string), dept(integer), firstName(string), // familyName(string), birth(string) $defaultWhere = ['selectYear' => '', 'startDate' => '', 'endDate' => '', 'dept' => '', 'firstName' => '', 'familyName' => '', 'birth' => '']; // 列表数据 $lists = []; foreach ($showYears as $row) { $defaultWhere['selectYear'] = $row; $lists[$row] = $this->fetchApplyStuList($defaultWhere, TRUE, 20); // 替换分页请求的控制器为 ajaxGetStudentList $pageList = $lists[$row]['pageList']; $pageList = str_replace(ACTION_NAME, 'ajaxGetStudentList', $pageList); $lists[$row]['pageList'] = $pageList; } $this->assign('controlPage', $_tmp_key + 1); $this->assign('lists', $lists); $this->assign('defaultDeptName', $default_show_part_name); $this->assign('allowParts', $allowParts); $this->assign('showYears', $showYears); $this->display(); }
/** * @上传额外材料操作 * @Author: 段涛 * @function name: extraFilesAction */ public function extraFilesAction() { $ano = I('get.ano'); if (empty($ano)) { $this->error(L('MSG_VALIDATE18'), U('/Home/index')); } $data = I('post.'); if ($data['detail']['src'][0] == '') { $this->error('Please upload at least one file.'); } $model1 = M('member_upload_extra'); $model1->startTrans(); $model2 = M('member_upload_extra_deputy'); $model2->startTrans(); $status = 1; // $isComplete=$model1->where(array('a_no'=>$ano))->getField('is_complete'); // if($isComplete==1){ // $this->error('对不起,您已经提交过了,切勿重复提交!'); // } foreach ($data['detail']['id'] as $k => $rs) { if (empty($data['detail']['src'][$k])) { //如果为空,则删除 $result = $model2->where(array('id' => $rs))->delete(); if ($result === false) { $status = 0; } } elseif (!empty($data['detail']['src'][$k]) && empty($rs)) { //链接不为空,和数据ID为空,则为添加 $data['fid'] = $data['extraStatus']; $data['uid'] = session('uid'); $data['a_no'] = $ano; $data['src'] = $data['detail']['src'][$k]; $data['create_time'] = date("Y-m-d H:i:s", strtotime(time())); $data['name'] = '学生'; $result = $model2->add($data); if ($result === false) { $status = 0; } } else { //不为空则为添加 $result = $model2->save(array('id' => $rs, 'src' => $data['detail']['src'][$k])); if ($result === false) { $status = 0; } } } //更新额外材料主附表 $result2 = $model1->save(array('id' => $data['extraStatus'], 'is_complete' => 1, 'updata_time' => time())); // 写入日志 $stuId = M('member_stu')->where(array('uid' => session('uid')))->getField('id'); if ($stuId == "") { $model2->rollback(); $model1->rollback(); $this->error(L('data error')); } $modelStu = new MemberStuModel(); $aoInfo = $modelStu->fetchAoInfo($stuId); // 获取AO信息 $modelAppStatus = new ApplyStatusModel(); // 获取申请信息 $appStatusInfo = $modelAppStatus->where('s_no=:sno AND a_no=:ano')->bind([':sno' => $stuId, ':ano' => $ano])->find(); $strFullName = ''; if (!empty($appStatusInfo)) { $strFullName = $appStatusInfo['first_name'] . ' ' . $appStatusInfo['family_name']; } $res2 = TRUE; $res3 = TRUE; $_cont = '用户提交了额外材料'; $_cont1 = 'Your extra files have been received, application status changes to "Assessing by university"'; if (!empty($aoInfo) && !empty($appStatusInfo)) { $res2 = $modelStu->writeLog($aoInfo['ao_uid'], $appStatusInfo['uid'], $ano, 1, date('Y-m-d H:i:s') . ', ' . $_cont); $res3 = $modelStu->writeApplyLog($aoInfo['ao_uid'], $appStatusInfo['uid'], $ano, 1, $_cont1); } // 更新额外材料标志位 $res4 = $modelAppStatus->switchExtraFilesStatus($appStatusInfo['id'], 2); $res5 = $modelAppStatus->switchApplyStatus($appStatusInfo['id'], 5); // 评估中 if ($status && $result2 && $res2 && $res3 && $res4 && $res5) { $model2->commit(); $model1->commit(); // 都成功, 给 AO 发送邮件 if (!empty($aoInfo) && !empty($appStatusInfo)) { $resubmitTime = date('Y-m-d H:i:s', time()); $emailTitle = $strFullName . ' ' . $_cont; $emailContent = <<<MAIL 学生姓名: {$strFullName}. 提交时间: {$resubmitTime}. 描述: {$_cont}. MAIL; // 发送邮件 MemberStuModel::sendEmail($aoInfo['ao_user_email'], $emailTitle, $emailContent); //给学生发邮件 $this->sentMailToUser($ano); } $this->success(L('MSG_VALIDATE22'), U('Home/Member/index')); } else { $model2->rollback(); $model1->rollback(); $this->error(L('MSG_VALIDATE23')); } }