Beispiel #1
0
    /**
     * 提交申请第 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();
 }
Beispiel #3
0
    /**
     * @上传额外材料操作
     * @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'));
        }
    }