123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039 |
- <?php
- /**
- * Class ProductdownloadController
- */
- class ProductdownloadController extends Controller
- {
- /**
- * 下载错题本/二步/三步产品文件
- */
- public function actionGetImproveFile()
- {
- $examId = Req::get("examId");
- $classId = Req::get("classId");
- $type = Req::get("type");
- $studentsIds = Req::get("studentsIds");
- $printType = Req::get("printType");
- $absentFilter = Req::get("absent_filter");
- $classDownload = $studentsIds ? false : true;
- if (!$examId || !$classId || !$type) {
- echo json_encode(array("success" => 0, "message" => "缺少参数"));
- exit();
- }
- if (!in_array($type, array(1, 2, 3))) {
- echo json_encode(array("success" => 0, "message" => "参数错误[1]"));
- exit();
- }
- $groupInfo = Exam::model()->getGroupInfo($examId);
- if (empty($groupInfo)) exit(json_encode(array("success" => 0, "message" => "考试信息错误")));
- $typeRel = array('1' => 'wb_group_id', '2' => 'isp_group_id', '3' => 'wbisp_group_id');
- $groupId = $groupInfo[$typeRel[$type]];
- if (!empty($groupId)) {
- $apiUrl = isset(Yii::app()->params["improve_url"][$groupId]) ? Yii::app()->params["improve_url"][$groupId] : null;
- } else {
- $apiUrl = isset(Yii::app()->params["improve_url"][$this->schoolGroupId]) ? Yii::app()->params["improve_url"][$this->schoolGroupId] : null;
- }
- if (!$apiUrl) {
- echo json_encode(array("success" => 0, "message" => "接口配置信息错误"));
- exit();
- }
- $params = array(
- "schoolId" => $this->schoolId,
- "examId" => $examId,
- "classId" => $classId,
- "type" => $type,
- "studentIds" => array(),
- );
- $classinfo = ClassModel::model()->find("class_id=:id", array(":id" => $classId));
- $Sem = new SSemester();
- $code = $Sem->conn->createQuery()->from('semester')->where("semester_id = '" . $classinfo['semester_id'] . "'")
- ->limit(1)
- ->query()
- ->read();
- $print_time = ClassExamPrinter::model()->findAll('exam_id=:exam_id and class_id=:classid and type=0', array(':exam_id' => $examId, ':classid' => $classId));
- $intarr = array(
- "schoolId" => $this->schoolId,
- "clazzId" => $classId,
- "semester" => $code['refer_code'],
- "grade" => $classinfo['grade'],
- "students" => array(),
- "examTime" => $print_time[0]->add_time,
- "classify" => $type,
- );
- //判断学科
- $examInfo = Exam::model()->findByPk($examId);
- $intarr['subject'] = $examInfo['subject_id'];
- if (in_array($intarr['subject'], $this->mathSubjectId)) {
- $intarr['subject'] = 3;
- }
- if ($type == 1) {
- $productName = $examInfo->name . '"错题本"';
- $pdfPathColumn = 'wrongbook_pdf_path';
- $isGenerateColumn = 'is_wrongbook_pdf';
- $isDownloadColumn = 'is_wrongbook_download';
- $downloadTimeCoulmn = 'download_wrongbook_time';
- } elseif ($type == 2) {
- $productName = $examInfo->name . '"个性化学习方案"';
- $pdfPathColumn = 'isp_pdf_path';
- $isGenerateColumn = 'is_isp_pdf';
- $isDownloadColumn = 'is_two_isp_download';
- $downloadTimeCoulmn = 'download_two_isp_time';
- } else {
- $productName = $examInfo->name . '"个性化学习宝"';
- $pdfPathColumn = 'wbisp_pdf_path';
- $isGenerateColumn = 'is_wbisp_pdf';
- $isDownloadColumn = 'is_three_isp_download';
- $downloadTimeCoulmn = 'download_three_isp_time';
- }
- $productDownload = new ProductDownload($type);
- //*****获取生成的学生***//
- $generateStu = $productDownload->getGenerateStu('student_paper_relation', 'exam_id', $pdfPathColumn, $isGenerateColumn, $examId, $studentsIds, $absentFilter);
- if(!$generateStu){
- echo json_encode(array("success" => 0, "message" => "无生成的学生"));exit();
- }
- $params['studentIds'] = $generateStu['studentIds'];
- $pathArr = $generateStu['pathArr'];
- if ($printType == 'third_isp') {
- $params["subjectId"] = 8;
- $params["type"] = 3;
- }
- if (Yii::app()->params["limit_open"]) {
- $params["studentIds"] = $productDownload->getCanDownloadStu($generateStu['studentIds'], $intarr, $this->schoolId);
- }
- ProductProcessTime::model()->updateDownloadTime($params["studentIds"],$type,$examId);
- //**************** Step-2 判断是否已经存在下载任务 ********************//
- if ($classDownload) {
- $packTask = $this->getExistTask($examId, $classId, $type, count($params['studentIds']));
- if (isset($packTask->pack_status) && $packTask->pack_status == 0) {
- echo json_encode(array("success" => 3, "message" => ""));
- exit;
- }
- if (isset($packTask->pack_url) && $packTask->pack_url) {
- if($this->updateIspDownloadStatus($params["studentIds"],$classId,$examId,$isDownloadColumn,$downloadTimeCoulmn) !== false){
- ProductProcessTime::model()->updateDownloadTime($params["studentIds"],$type,$examId);
- }
- echo json_encode(array("success" => 1, "downloadPath" => $packTask->pack_url));
- exit;
- }
- }
- //**************** Step-3 根据接口获取文件大小来判断走原有接口打包流程还是走脚本任务 ************//
- $sizeRs = Curl::post($apiUrl . "/rest/download_file_size/index", array('path_arr' => $pathArr));
- if (!($sizeRs = json_decode($sizeRs))) {
- echo json_encode(array("success" => 0, "downloadPath" => '请求接口失败'));
- exit;
- }
- if (isset($sizeRs->size)) {
- //************ Step-3-1 大于限定值 发送任务到后台打包 ******//
- if (Yii::app()->params["pack_product_file_limit"] < $sizeRs->size) {
- $packProductModel = new BusinessPackProductTask();
- $packProductModel->school_id = $this->schoolId;
- $packProductModel->auth_username = $this->authUsername;
- $packProductModel->product_type = $type;
- $packProductModel->product_name = $productName;
- $packProductModel->subject_id = $this->subjectId;
- $packProductModel->class_id = $classId;
- $packProductModel->class_name = $classinfo['class_name'];
- $packProductModel->unique_key = $examId;
- $packProductModel->student_count = count($params["studentIds"]);
- $packProductModel->pack_json = json_encode($params);
- $packProductModel->pack_api_url = $apiUrl . "/rest/download_pdf/index";
- $packProductModel->create_time = time();
- $packProductModel->save();
- $this->updateIspDownloadStatus($params["studentIds"],$classId,$examId,$isDownloadColumn,$downloadTimeCoulmn);
- echo json_encode(array("success" => 3, "message" => ""));
- exit;
- } else {
- //************ Step-3-2 小于限定值 原有接口流程 ******//
- $rs = Curl::post($apiUrl . "/rest/download_pdf/index", $params);
- if (!($rs = json_decode($rs))) {
- $rs = array("success" => 0, "message" => "请求接口失败",);
- }
- if ($printType != 'third_wb') {
- if ($rs->success != 0) {
- $rs->success = 2;
- }
- }
- if (isset($rs->downloadPath)) {
- if($this->updateIspDownloadStatus($params["studentIds"],$classId,$examId,$isDownloadColumn,$downloadTimeCoulmn) !== false){
- ProductProcessTime::model()->updateDownloadTime($params["studentIds"],$type,$examId);
- }
- }
- if ($groupId && isset($rs->downloadPath)) {
- if (YII_ENV == 'pro' || YII_ENV == 'production') {
- $rs->downloadPath = preg_replace('/http\:\/\/zstatic\d{1,2}/', 'http://zstatic' . $groupId, $rs->downloadPath);
- }
- }
- echo json_encode($rs);
- exit;
- }
- } else {
- echo json_encode(array("success" => 0, "message" => $sizeRs->message));
- exit;
- }
- }
- /**
- * 更新个性化学习宝下载状态
- * @param array $studentIds
- * @param $classId
- * @param $examId
- * @param $isDownloadColumn
- * @param $downloadTimeCoulmn
- * @return mixed
- */
- private function updateIspDownloadStatus($studentIds=array(), $classId, $examId, $isDownloadColumn, $downloadTimeCoulmn)
- {
- $criteria = new CDbCriteria();
- if ($studentIds) {
- $criteria->addInCondition('student_id', $studentIds);
- } else {
- $criteria->addCondition('(is_complete = :is_complete and is_feedback = :is_complete) or is_del = :is_complete ');
- $criteria->params[':is_complete'] = 1;
- $criteria->params[':is_feedback'] = 1;
- $criteria->params[':is_del'] = 1;
- }
- $criteria->addCondition('class_id=:class_id');
- $criteria->params[':class_id'] = $classId;
- $criteria->addCondition('exam_id=:exam_id');
- $criteria->addCondition("{$isDownloadColumn}=:is_download");
- $criteria->params[':exam_id'] = $examId;
- $criteria->params[':is_download'] = 0;
- return SStudentPaperRelation::model()->updateAll(array($isDownloadColumn => 1, $downloadTimeCoulmn => time()), $criteria);
- }
- //添加错题本/两步/三步提分下载任务
- public function actionAddIspTask()
- {
- $examId = Req::get("examId");
- $classId = Req::get("classId");
- $type = Req::get("type");
- $studentsIds = Req::get("studentsIds");
- $printType = Req::get("printType");
- $absentFilter = Req::get("absent_filter");
- if (!$examId || !$classId || !$type) {
- echo json_encode(array("success" => 0, "message" => "缺少参数"));
- exit();
- }
- if (!in_array($type, array(1, 2, 3))) {
- echo json_encode(array("success" => 0, "message" => "参数错误[1]"));
- exit();
- }
- $groupInfo = Exam::model()->getGroupInfo($examId);
- if (empty($groupInfo)) exit(json_encode(array("success" => 0, "message" => "考试信息错误")));
- $typeRel = array('1' => 'wb_group_id', '2' => 'isp_group_id', '3' => 'wbisp_group_id');
- $groupId = $groupInfo[$typeRel[$type]];
- if (!empty($groupId)) {
- $apiUrl = isset(Yii::app()->params["improve_url"][$groupId]) ? Yii::app()->params["improve_url"][$groupId] : null;
- } else {
- $apiUrl = isset(Yii::app()->params["improve_url"][$this->schoolGroupId]) ? Yii::app()->params["improve_url"][$this->schoolGroupId] : null;
- }
- if (!$apiUrl) {
- echo json_encode(array("success" => 0, "message" => "接口配置信息错误"));
- exit();
- }
- $params = array(
- "schoolId" => $this->schoolId,
- "examId" => $examId,
- "classId" => $classId,
- "type" => $type,
- "studentIds" => array(),
- );
- $classinfo = ClassModel::model()->find("class_id=:id", array(":id" => $classId));
- $Sem = new SSemester();
- $code = $Sem->conn->createQuery()->from('semester')->where("semester_id = '" . $classinfo['semester_id'] . "'")
- ->limit(1)
- ->query()
- ->read();
- $print_time = ClassExamPrinter::model()->findAll('exam_id=:exam_id and class_id=:classid and type=0', array(':exam_id' => $examId, ':classid' => $classId));
- $intarr = array(
- "schoolId" => $this->schoolId,
- "clazzId" => $classId,
- "semester" => $code['refer_code'],
- "grade" => $classinfo['grade'],
- "students" => array(),
- "examTime" => $print_time[0]->add_time,
- "classify" => $type,
- );
- //判断学科
- $examInfo = Exam::model()->findByPk($examId);
- $intarr['subject'] = $examInfo['subject_id'];
- if (in_array($intarr['subject'], $this->mathSubjectId)) {
- $intarr['subject'] = 3;
- }
- if ($type == 1) {
- $productName = $examInfo->name . '"错题本"';
- $pdfPathColumn = 'wrongbook_pdf_path';
- $isGenerateColumn = 'is_wrongbook_pdf';
- $isDownloadColumn = 'is_wrongbook_download';
- $downloadTimeCoulmn = 'download_wrongbook_time';
- } elseif ($type == 2) {
- $productName = $examInfo->name . '"个性化学习方案"';
- $pdfPathColumn = 'isp_pdf_path';
- $isGenerateColumn = 'is_isp_pdf';
- $isDownloadColumn = 'is_two_isp_download';
- $downloadTimeCoulmn = 'download_two_isp_time';
- } else {
- $productName = $examInfo->name . '"个性化学习宝"';
- $pdfPathColumn = 'wbisp_pdf_path';
- $isGenerateColumn = 'is_wbisp_pdf';
- $isDownloadColumn = 'is_three_isp_download';
- $downloadTimeCoulmn = 'download_three_isp_time';
- }
- $productDoanload = new ProductDownload($type);
- //*****获取生成的学生***//
- $generateStu = $productDoanload->getGenerateStu('student_paper_relation', 'exam_id', $pdfPathColumn, $isGenerateColumn, $examId, $studentsIds, $absentFilter);
- if(!$generateStu){
- echo json_encode(array("success" => 0, "message" => "无生成的学生"));exit();
- }
- $params['studentIds'] = $generateStu['studentIds'];
- if ($printType == 'third_isp') {
- $params["subjectId"] = 8;
- $params["type"] = 3;
- }
- if (Yii::app()->params["limit_open"]) {
- $params["studentIds"] = $productDoanload->getCanDownloadStu($generateStu['studentIds'], $intarr, $this->schoolId);
- }
- $packProductModel = new BusinessPackProductTask();
- $packProductModel->school_id = $this->schoolId;
- $packProductModel->auth_username = $this->authUsername;
- $packProductModel->product_type = $type;
- $packProductModel->product_name = $productName;
- $packProductModel->subject_id = $this->subjectId;
- $packProductModel->class_id = $classId;
- $packProductModel->class_name = $classinfo['class_name'];
- $packProductModel->unique_key = $examId;
- $packProductModel->student_count = count($params['studentIds']);
- $packProductModel->pack_json = json_encode($params);
- $packProductModel->pack_api_url = $apiUrl . "/rest/download_pdf/index";
- $packProductModel->create_time = time();
- $packProductModel->save();
- if($this->updateIspDownloadStatus($params["studentIds"],$classId,$examId,$isDownloadColumn,$downloadTimeCoulmn) !== false){
- ProductProcessTime::model()->updateDownloadTime($params["studentIds"],$type,$examId);
- }
- echo json_encode(array("success" => 3, "message" => ""));
- exit;
- }
- //阶段复习个性化学习宝下载
- public function actionDownload_student_product()
- {
- $classId = Req::get("classId");
- $type = Req::get("type");
- $studentsIds = Req::get("studentsIds");
- $classDownload = $studentsIds ? false : true;
- if (!$classId || !$type) {
- echo json_encode(array("success" => 0, "message" => "缺少参数"));
- exit();
- }
- if (!in_array($type, array(1, 2, 3))) {
- echo json_encode(array("success" => 0, "message" => "参数错误[1]"));
- exit();
- }
- $apiUrl = isset(Yii::app()->params["improve_url"][$this->schoolGroupId]) ? Yii::app()->params["improve_url"][$this->schoolGroupId] : null;
- if (!$apiUrl) {
- echo json_encode(array("success" => 0, "message" => "接口配置信息错误"));
- exit();
- }
- $classinfo = ClassModel::model()->find("class_id=:id", array(":id" => $classId));
- $student_class_data = SStudentClassRelation::model()->findAll('class_id=:class_id and status=:status', array(':class_id' => $classId, ':status' => 0));
- if ($student_class_data) {
- if (!$studentsIds) {
- $studentsIds = array();
- foreach ($student_class_data as $v) {
- $studentsIds[] = $v->student_id;
- }
- }
- }else{
- echo json_encode(array("success" => 0, "message" => "班级暂无学生"));
- exit;
- }
- if(in_array($this->subjectId,$this->mathSubjectId)){
- $subjectId=3;
- }else{
- $subjectId=$this->subjectId;
- }
- $params = array(
- "schoolId" => $this->schoolId,
- "classId" => $classId,
- "type" => $type,
- 'subjectId'=>$subjectId
- );
- if ($studentsIds) {
- if (!is_array($studentsIds)) {
- $studentsIds = explode(',', $studentsIds);
- }
- $stuids = array();
- if (Yii::app()->params["limit_open"]) {
- $semester = new SSemester();
- $nowsem = $semester->getCurrentSemester();
- $intarr = array(
- "schoolId" => $this->schoolId,
- "clazzId" => $classId,
- "semester" => $nowsem['refer_code'],
- "grade" => $classinfo['grade'],
- "examTime" => time(),
- "classify" => 1,
- "subject" => $subjectId,
- "students" => $studentsIds
- );
- $this->getStuOrder($intarr, $stuids);
- } else {
- $stuids = $studentsIds;
- }
- if (!$stuids) {
- echo json_encode(array("success" => 0, "message" => "所选的学生没有下载权限"));
- exit;
- }
- $params['studentIds'] = $stuids;
- $_students = array();
- if ($params["studentIds"]) {
- $_students = $params["studentIds"];
- }
- $_student_product_data=SStudentProductModel::model()->getStudentCreate($_students,$subjectId,$type,$this->semesterId);
- if (!$_student_product_data) {
- echo json_encode(array("success" => 0, "message" => "所选的学生尚未生成PDF"));
- exit;
- }
- }
- $planId=SStudentProductModel::model()->getPlanId($classId,$subjectId,$type);
- $params['planId']=$planId;
- //**************** Step-2 判断是否已经存在下载任务 ********************//
- if ($classDownload) {
- $packTask = $this->getExistTask($this->semesterId . '_' . $type, $classId, ProductDownload::PRODUCT_TYPE_STAGE_REVIEW, count($studentsIds));
- if (isset($packTask->pack_status) && $packTask->pack_status == 0) {
- echo json_encode(array("success" => 3, "message" => ""));
- exit;
- }
- if (isset($packTask->pack_url) && $packTask->pack_url) {
- $this->updateSpDownloadStatus($params['studentIds'],$type,$planId);
- echo json_encode(array("success" => 1, "downloadPath" => $packTask->pack_url));
- exit;
- }
- }
- //**************** Step-3 根据接口获取文件大小来判断走原有接口打包流程还是走脚本任务 ************//
- $pathArr = array();
- if (isset($_student_product_data)) {
- foreach ($_student_product_data as $item) {
- $pathArr[] = $item['pdf_path'];
- }
- }
- $sizeRs = Curl::post($apiUrl . "/rest/download_file_size/index", array('path_arr' => $pathArr));
- if (!($sizeRs = json_decode($sizeRs))) {
- echo json_encode(array("success" => 0, "message" => "请求接口失败"));
- exit;
- }
- if (isset($sizeRs->size)) {
- //************ Step-3-1 大于限定值 发送任务到后台打包 ******//
- if (Yii::app()->params["pack_product_file_limit"] < $sizeRs->size) {
- $semesterName = isset($nowsem->semester_name) ? $nowsem->semester_name : '';
- if ($type == 1) {
- $productName = $semesterName . '"期中阶段复习个性化学习宝"';
- } elseif ($type == 2) {
- $productName = $semesterName . '"期末阶段复习个性化学习宝"';
- } else {
- $productName = $semesterName . '"总复习个性化学习宝"';
- }
- $packProductModel = new BusinessPackProductTask();
- $packProductModel->school_id = $this->schoolId;
- $packProductModel->auth_username = $this->authUsername;
- $packProductModel->product_type = ProductDownload::PRODUCT_TYPE_STAGE_REVIEW;
- $packProductModel->product_name = $productName;
- $packProductModel->subject_id = $this->subjectId;
- $packProductModel->class_id = $classId;
- $packProductModel->class_name = $classinfo['class_name'];
- $packProductModel->unique_key = $this->semesterId . '_' . $type;
- $packProductModel->student_count = count($params['studentIds']);
- $packProductModel->pack_json = json_encode($params);
- $packProductModel->pack_api_url = $apiUrl . "/rest/download_sp/index";
- $packProductModel->create_time = time();
- $packProductModel->save();
- $this->updateSpDownloadStatus($params['studentIds'],$type,$planId);
- echo json_encode(array("success" => 3, "message" => ""));
- exit;
- } else {
- //************ Step-3-2 小于限定值 走原有api流程 ******//
- $rs = Curl::post($apiUrl . "/rest/download_sp/index", $params);
- if (!($rs = json_decode($rs))) {
- echo json_encode(array("success" => 0, "message" => "请求接口失败"));
- exit;
- }
- if ($rs->success != 0) {
- $rs->success = 2;
- $rs->limitinfo = '全班允许下载';
- }
- if ($params["studentIds"] && ($rs->success == 1 || $rs->success == 2)) {
- $this->updateSpDownloadStatus($params['studentIds'],$type,$planId);
- }
- echo json_encode($rs);
- exit;
- }
- } else {
- echo json_encode(array("success" => 0, "message" => $sizeRs->message));
- exit;
- }
- }
- /**
- * 更新阶段复习个性化学习宝下载状态
- * @param $studentIds
- * @param $type
- */
- private function updateSpDownloadStatus($studentIds, $type,$planId)
- {
- $criteria = new CDbCriteria();
- $criteria->addInCondition('student_id', $studentIds);
- $criteria->addCondition('type=:type');
- $criteria->addCondition('plan_id=:pid');
- $criteria->params[':type'] = $type;
- $criteria->params[':pid'] = $planId;
- SStudentProductModel::model()->updateAll(array('is_download' => 1, 'download_time' => time()), $criteria);
- }
- //添加阶段复习个性化学习宝下载任务
- public function actionAddSpTask()
- {
- $classId = Req::get("classId");
- $type = Req::get("type");
- $studentsIds = Req::get("studentsIds");
- if (!$classId || !$type) {
- echo json_encode(array("success" => 0, "message" => "缺少参数"));
- exit();
- }
- if (!in_array($type, array(1, 2, 3))) {
- echo json_encode(array("success" => 0, "message" => "参数错误[1]"));
- exit();
- }
- $apiUrl = isset(Yii::app()->params["improve_url"][$this->schoolGroupId]) ? Yii::app()->params["improve_url"][$this->schoolGroupId] : null;
- if (!$apiUrl) {
- echo json_encode(array("success" => 0, "message" => "接口配置信息错误"));
- exit();
- }
- $params = array(
- "schoolId" => $this->schoolId,
- "classId" => $classId,
- "type" => $type,
- );
- $student_class_data = SStudentClassRelation::model()->findAll('class_id=:class_id and status=:status', array(':class_id' => $classId, ':status' => 0));
- if ($student_class_data) {
- if (!$studentsIds) {
- $studentsIds = array();
- foreach ($student_class_data as $v) {
- $studentsIds[] = $v->student_id;
- }
- }
- } else {
- echo json_encode(array("success" => 0, "message" => "班级暂无学生"));
- exit;
- }
- $classinfo = ClassModel::model()->find("class_id=:id", array(":id" => $classId));
- if ($studentsIds) {
- if (!is_array($studentsIds)) {
- $studentsIds = explode(',', $studentsIds);
- }
- $stuids = array();
- if (Yii::app()->params["limit_open"]) {
- $semester = new SSemester();
- $nowsem = $semester->getCurrentSemester();
- $intarr = array(
- "schoolId" => $this->schoolId,
- "clazzId" => $classId,
- "semester" => $nowsem['refer_code'],
- "grade" => $classinfo['grade'],
- "examTime" => time(),
- "classify" => 1,
- "subject" => 3,
- "students" => $studentsIds
- );
- $this->getStuOrder($intarr, $stuids);
- } else {
- $stuids = $studentsIds;
- }
- if (!$stuids) {
- echo json_encode(array("success" => 0, "message" => "所选的学生没有下载权限"));
- exit;
- }
- $params['studentIds'] = $stuids;
- $criteria = new CDbCriteria();
- $_students = array();
- if ($params["studentIds"]) {
- $_students = $params["studentIds"];
- }
- $criteria->addInCondition('student_id',$_students);
- $criteria->addCondition('semester_id=:semester_id');
- $criteria->addCondition('type=:type');
- $criteria->addCondition('is_pdf_created=:is_pdf_created');
- $criteria->params[':semester_id'] = $this->semesterId;
- $criteria->params[':type'] = $type;
- $criteria->params[':is_pdf_created'] = 1;
- $_student_product_data = SStudentProductModel::model()->findAll($criteria);
- if (!$_student_product_data) {
- echo json_encode(array("success" => 0, "message" => "所选的学生尚未生成PDF"));
- exit;
- }
- }
- $semesterName = isset($nowsem->semester_name) ? $nowsem->semester_name : '';
- if ($type == 1) {
- $productName = $semesterName . '"期中阶段复习个性化学习宝"';
- } elseif ($type == 2) {
- $productName = $semesterName . '"期末阶段复习个性化学习宝"';
- } else {
- $productName = $semesterName . '"总复习个性化学习宝"';
- }
- $packProductModel = new BusinessPackProductTask();
- $packProductModel->school_id = $this->schoolId;
- $packProductModel->auth_username = $this->authUsername;
- $packProductModel->product_type = ProductDownload::PRODUCT_TYPE_STAGE_REVIEW;
- $packProductModel->product_name = $productName;
- $packProductModel->subject_id = $this->subjectId;
- $packProductModel->class_id = $classId;
- $packProductModel->class_name = $classinfo['class_name'];
- $packProductModel->unique_key = $this->semesterId . '_' . $type;
- $packProductModel->student_count = count($params['studentIds']);
- $packProductModel->pack_json = json_encode($params);
- $packProductModel->pack_api_url = $apiUrl . "/rest/download_sp/index";
- $packProductModel->create_time = time();
- $packProductModel->save();
- $this->updateSpDownloadStatus($params['studentIds'],$type);
- echo json_encode(array("success" => 3, "message" => ""));
- exit;
- }
- /**
- * 下载二轮复习个性化提分手册
- */
- public function actionGetMathReviewFile()
- {
- $mrId = (string)Req::get("mrId");
- $studentsIds = Req::get("studentsIds");
- $classDownload = $studentsIds ? false : true;
- $params = array();
- if (!$mrId) {
- echo json_encode(array("success" => 0, "message" => "缺少参数"));
- exit();
- }
- //*****获取生成的学生***//
- $productDownload = new ProductDownload(ProductDownload::PRODUCT_TYPE_SECOND_RUN);
- $generateStu = $productDownload->getGenerateStu('math_review_student', 'mr_id', 'review_pdf_path', 'is_review_pdf', $mrId, $studentsIds);
- if(!$generateStu){
- echo json_encode(array("success" => 0, "message" => "无生成的学生"));exit();
- }
- $params['studentIds'] = $generateStu['studentIds'];
- $pathArr = $generateStu['pathArr'];
- $params['mrId'] = $mrId;
- $sql = "select class_id,grade,create_time,semester_id,school_group_id,`name` from math_review_setting where mr_id = '{$mrId}'";
- $msg = $this->sConn->createCommand($sql)->queryRow();
- $Sem = new SSemester();
- $code = $Sem->conn->createQuery()
- ->from('semester')
- ->where("semester_id = '" . $msg['semester_id'] . "'")
- ->limit(1)
- ->query()
- ->read();
- $classinfo = ClassModel::model()->find("class_id=:id", array(":id" => $msg['class_id']));
- $intarr = array(
- "schoolId" => $this->schoolId,
- "clazzId" => $msg['class_id'],
- "semester" => $code['refer_code'],
- "grade" => $msg['grade'],
- "students" => $studentsIds,
- "examTime" => $msg['create_time'],
- "classify" => 5,
- "subject" => 3
- );
- if (isset($msg['school_group_id']) && $msg['school_group_id']) {
- $apiUrl = isset(Yii::app()->params["improve_url"][$msg['school_group_id']]) ? Yii::app()->params["improve_url"][$msg['school_group_id']] : null;
- } else {
- $apiUrl = isset(Yii::app()->params["improve_url"][$this->schoolGroupId]) ? Yii::app()->params["improve_url"][$this->schoolGroupId] : null;
- }
- if (!$apiUrl) {
- echo json_encode(array("success" => 0, "message" => "接口配置信息错误"));
- exit();
- }
- //************ Step-1 判断是否有订单 *************//
- if (Yii::app()->params["limit_open"]) {
- if (Yii::app()->params["limit_open"]) {
- $params["studentIds"] = $productDownload->getCanDownloadStu($params['studentIds'], $intarr, $this->schoolId);
- }
- }
- $params['schoolId'] = $this->schoolId;
- $params['type'] = 1;
- //**************** Step-2 判断是否已经存在下载任务 ********************//
- if ($classDownload) {
- $packTask = $this->getExistTask($mrId, $msg['class_id'], ProductDownload::PRODUCT_TYPE_SECOND_RUN, count($params["studentIds"]));
- if (isset($packTask->pack_status) && $packTask->pack_status == 0) {
- echo json_encode(array("success" => 3, "message" => ""));
- exit;
- }
- if (isset($packTask->pack_url) && $packTask->pack_url) {
- $this->updateSecondRunDownloadStatus($params['studentIds'],$mrId);
- echo json_encode(array("success" => 1, "downloadPath" => $packTask->pack_url));
- exit;
- }
- }
- //**************** Step-3 根据接口获取文件大小来判断走原有接口打包流程还是走脚本任务 ************//
- $sizeRs = Curl::post($apiUrl . "/rest/download_file_size/index", array('path_arr' => $pathArr));
- if (!($sizeRs = json_decode($sizeRs))) {
- echo json_encode(array("success" => 0, "message" => "请求接口失败"));
- exit;
- }
- if (isset($sizeRs->size)) {
- //************ Step-3-1 大于限定值 发送任务到后台打包 ******//
- if (Yii::app()->params["pack_product_file_limit"] < $sizeRs->size) {
- $packProductModel = new BusinessPackProductTask();
- $packProductModel->school_id = $this->schoolId;
- $packProductModel->auth_username = $this->authUsername;
- $packProductModel->product_type = ProductDownload::PRODUCT_TYPE_SECOND_RUN;
- $packProductModel->product_name = $msg['name'].'二轮复习提分手册';
- $packProductModel->subject_id = $this->subjectId;
- $packProductModel->class_id = $msg['class_id'];
- $packProductModel->class_name = $classinfo['class_name'];
- $packProductModel->unique_key = $mrId;
- $packProductModel->student_count = count($params['studentIds']);
- $packProductModel->pack_json = json_encode($params);
- $packProductModel->pack_api_url = $apiUrl . "/rest/download_math_pdf/index";
- $packProductModel->create_time = time();
- $packProductModel->save();
- $this->updateSecondRunDownloadStatus($params['studentIds'],$mrId);
- echo json_encode(array("success" => 3, "message" => ""));
- exit;
- } else {
- $rs = Curl::post($apiUrl . "/rest/download_math_pdf/index", $params);
- if (!($rs = json_decode($rs))) {
- echo json_encode(array("success" => 0, "message" => '请求接口失败'));
- exit;
- } else {
- //更新下载时间
- if ($rs->success == 1 || $rs->success == 2) {
- $this->updateSecondRunDownloadStatus($params['studentIds'],$mrId);
- }
- }
- if (isset($msg['school_group_id']) && $msg['school_group_id'] && isset($rs->downloadPath)) {
- if (YII_ENV == 'pro' || YII_ENV == 'production') {
- $rs->downloadPath = preg_replace('/http\:\/\/zstatic\d{1,2}/', 'http://zstatic' . $msg['school_group_id'], $rs->downloadPath);
- }
- }
- echo json_encode($rs);
- exit;
- }
- } else {
- echo json_encode(array("success" => 0, "message" => $sizeRs->message));
- exit;
- }
- }
- /**
- * 更新二轮下载状态
- * @param $studentsIds
- * @param $mrId
- */
- private function updateSecondRunDownloadStatus($studentsIds, $mrId)
- {
- $time = time();
- $sql = "update math_review_student set is_review_download = 1,review_download_time={$time} where mr_id = '{$mrId}' and student_id in (" . implode(',', $studentsIds) . ")";
- $this->sConn->createCommand($sql)->execute();
- }
- /**
- * 添加二轮提分手册下载任务
- */
- public function actionAddSecondRunTask()
- {
- $mrId = (string)Req::get("mrId");
- $studentsIds = Req::get("studentsIds");
- $params = array();
- if (!$mrId) {
- echo json_encode(array("success" => 0, "message" => "缺少参数"));
- exit();
- }
- //*****获取生成的学生***//
- $productDownload = new ProductDownload(ProductDownload::PRODUCT_TYPE_SECOND_RUN);
- $generateStu = $productDownload->getGenerateStu('math_review_student', 'mr_id', 'review_pdf_path', 'is_review_pdf', $mrId, $studentsIds);
- if(!$generateStu){
- echo json_encode(array("success" => 0, "message" => "无生成的学生"));exit();
- }
- $params['studentIds'] = $generateStu['studentIds'];
- $sql = "select class_id,grade,create_time,semester_id,school_group_id,`name` from math_review_setting where mr_id = '{$mrId}'";
- $msg = $this->sConn->createCommand($sql)->queryRow();
- $Sem = new SSemester();
- $code = $Sem->conn->createQuery()
- ->from('semester')
- ->where("semester_id = '" . $msg['semester_id'] . "'")
- ->limit(1)
- ->query()
- ->read();
- $classinfo = ClassModel::model()->find("class_id=:id", array(":id" => $msg['class_id']));
- $intarr = array(
- "schoolId" => $this->schoolId,
- "clazzId" => $msg['class_id'],
- "semester" => $code['refer_code'],
- "grade" => $msg['grade'],
- "examTime" => $msg['create_time'],
- "classify" => 5,
- "subject" => 3
- );
- if (isset($msg['school_group_id']) && $msg['school_group_id']) {
- $apiUrl = isset(Yii::app()->params["improve_url"][$msg['school_group_id']]) ? Yii::app()->params["improve_url"][$msg['school_group_id']] : null;
- } else {
- $apiUrl = isset(Yii::app()->params["improve_url"][$this->schoolGroupId]) ? Yii::app()->params["improve_url"][$this->schoolGroupId] : null;
- }
- if (!$apiUrl) {
- echo json_encode(array("success" => 0, "message" => "接口配置信息错误"));
- exit();
- }
- //************ Step-1 判断是否有订单 *************//
- if (Yii::app()->params["limit_open"]) {
- if (Yii::app()->params["limit_open"]) {
- $params["studentIds"] = $productDownload->getCanDownloadStu($params['studentIds'], $intarr, $this->schoolId);
- }
- }
- $params['mrId'] = $mrId;
- $params['schoolId'] = $this->schoolId;
- $params['type'] = 1;
- $packProductModel = new BusinessPackProductTask();
- $packProductModel->school_id = $this->schoolId;
- $packProductModel->auth_username = $this->authUsername;
- $packProductModel->product_type = ProductDownload::PRODUCT_TYPE_SECOND_RUN;
- $packProductModel->product_name = $msg['name'].'二轮复习提分手册';
- $packProductModel->subject_id = $this->subjectId;
- $packProductModel->class_id = $msg['class_id'];
- $packProductModel->class_name = $classinfo['class_name'];
- $packProductModel->unique_key = $mrId;
- $packProductModel->student_count = count($params['studentIds']);
- $packProductModel->pack_json = json_encode($params);
- $packProductModel->pack_api_url = $apiUrl . "/rest/download_math_pdf/index";
- $packProductModel->create_time = time();
- $packProductModel->save();
- $this->updateSecondRunDownloadStatus($params['studentIds'],$mrId);
- echo json_encode(array("success" => 3, "message" => ""));
- exit;
- }
- /**
- * 下载好题本
- */
- public function actionGetHtbFile()
- {
- $htbId = (string)Req::get("htbId");
- $studentsIds = Req::get("studentsIds");
- $classDownload = $studentsIds ? false : true;
- $params = array();
- if (!$htbId) {
- echo json_encode(array("success" => 0, "message" => "缺少参数"));
- exit();
- }
- //*****获取生成的学生***//
- $productDownload = new ProductDownload(ProductDownload::PRODUCT_TYPE_HTB);
- $generateStu = $productDownload->getGenerateStu('math_htb_student', 'htb_id', 'htb_pdf_path', 'is_htb_pdf', $htbId, $studentsIds);
- if(!$generateStu){
- echo json_encode(array("success" => 0, "message" => "无生成的学生"));exit();
- }
- $params['studentIds'] = $generateStu['studentIds'];
- $pathArr = $generateStu['pathArr'];
- $sql = "select class_id,grade,create_time,semester_id,school_group_id,name from math_htb_setting where htb_id = '{$htbId}'";
- $msg = $this->sConn->createCommand($sql)->queryRow();
- $Sem = new SSemester();
- $code = $Sem->conn->createQuery()
- ->from('semester')
- ->where("semester_id = '" . $msg['semester_id'] . "'")
- ->limit(1)
- ->query()
- ->read();
- $classinfo = ClassModel::model()->find("class_id=:id", array(":id" => $msg['class_id']));
- $intarr = array(
- "schoolId" => $this->schoolId,
- "clazzId" => $msg['class_id'],
- "semester" => $code['refer_code'],
- "grade" => $msg['grade'],
- "examTime" => $msg['create_time'],
- "classify" => 9,
- "subject" => 3
- );
- if (isset($msg['school_group_id']) && $msg['school_group_id']) {
- $apiUrl = isset(Yii::app()->params["improve_url"][$msg['school_group_id']]) ? Yii::app()->params["improve_url"][$msg['school_group_id']] : null;
- } else {
- $apiUrl = isset(Yii::app()->params["improve_url"][$this->schoolGroupId]) ? Yii::app()->params["improve_url"][$this->schoolGroupId] : null;
- }
- if (!$apiUrl) {
- echo json_encode(array("success" => 0, "message" => "接口配置信息错误"));
- exit();
- }
- //************ Step-1 判断是否有订单 *************//
- if (Yii::app()->params["limit_open"]) {
- if (Yii::app()->params["limit_open"]) {
- $params["studentIds"] = $productDownload->getCanDownloadStu($params['studentIds'], $intarr, $this->schoolId);
- }
- }
- $params['schoolId'] = $this->schoolId;
- $params['type'] = 5;
- $params['htbId'] = $htbId;
- //**************** Step-2 判断是否已经存在下载任务 ********************//
- if ($classDownload) {
- $packTask = $this->getExistTask($htbId, $msg['class_id'], ProductDownload::PRODUCT_TYPE_HTB, count($params["studentIds"]));
- if (isset($packTask->pack_status) && $packTask->pack_status == 0) {
- echo json_encode(array("success" => 3, "message" => ""));
- exit;
- }
- if (isset($packTask->pack_url) && $packTask->pack_url) {
- $this->updateHtbDownloadStatus($params['studentIds'],$htbId);
- echo json_encode(array("success" => 1, "downloadPath" => $packTask->pack_url));
- exit;
- }
- }
- //**************** Step-3 根据接口获取文件大小来判断走原有接口打包流程还是走脚本任务 ************//
- $sizeRs = Curl::post($apiUrl . "/rest/download_file_size/index", array('path_arr' => $pathArr));
- if (!($sizeRs = json_decode($sizeRs))) {
- echo json_encode(array("success" => 0, "message" => "请求接口失败"));
- exit;
- }
- if (isset($sizeRs->size)) {
- //************ Step-3-1 大于限定值 发送任务到后台打包 ******//
- if (Yii::app()->params["pack_product_file_limit"] < $sizeRs->size) {
- $packProductModel = new BusinessPackProductTask();
- $packProductModel->school_id = $this->schoolId;
- $packProductModel->auth_username = $this->authUsername;
- $packProductModel->product_type = ProductDownload::PRODUCT_TYPE_HTB;
- $packProductModel->product_name = $msg['name'].'好题本';
- $packProductModel->subject_id = $this->subjectId;
- $packProductModel->class_id = $msg['class_id'];
- $packProductModel->class_name = $classinfo['class_name'];
- $packProductModel->unique_key = $htbId;
- $packProductModel->student_count = count($params['studentIds']);
- $packProductModel->pack_json = json_encode($params);
- $packProductModel->pack_api_url = $apiUrl . "/rest/download_week_pdf/index";
- $packProductModel->create_time = time();
- $packProductModel->save();
- $this->updateHtbDownloadStatus($params['studentIds'],$htbId);
- echo json_encode(array("success" => 3, "message" => ""));
- exit;
- } else {
- $rs = Curl::post($apiUrl . "/rest/download_week_pdf/index", $params);
- if (!($rs = json_decode($rs))) {
- echo json_encode(array("success" => 0, "message" => '请求接口失败'));
- exit;
- } else {
- //更新下载时间
- if ($rs->success == 1 || $rs->success == 2) {
- $this->updateHtbDownloadStatus($params['studentIds'],$htbId);
- }
- }
- if (isset($msg['school_group_id']) && $msg['school_group_id'] && isset($rs->downloadPath)) {
- if (YII_ENV == 'pro' || YII_ENV == 'production') {
- $rs->downloadPath = preg_replace('/http\:\/\/zstatic\d{1,2}/', 'http://zstatic' . $msg['school_group_id'], $rs->downloadPath);
- }
- }
- echo json_encode($rs);
- exit;
- }
- } else {
- echo json_encode(array("success" => 0, "message" => $sizeRs->message));
- exit;
- }
- }
- /**
- * 更新好题本下载状态
- * @param $studentsIds
- * @param $htbId
- */
- private function updateHtbDownloadStatus($studentsIds, $htbId)
- {
- $time = time();
- $sql = "update math_htb_student set is_htb_download = 1,htb_download_time={$time} where htb_id = '{$htbId}' and student_id in (" . implode(',', $studentsIds) . ")";
- $this->sConn->createCommand($sql)->execute();
- }
- /**
- * 添加好题本下载任务
- */
- public function actionAddHtbTask()
- {
- $htbId = (string)Req::get("htbId");
- $studentsIds = Req::get("studentsIds");
- $params = array();
- if (!$htbId) {
- echo json_encode(array("success" => 0, "message" => "缺少参数"));
- exit();
- }
- //*****获取生成的学生***//
- $productDownload = new ProductDownload(ProductDownload::PRODUCT_TYPE_HTB);
- $generateStu = $productDownload->getGenerateStu('math_htb_student', 'htb_id', 'htb_pdf_path', 'is_htb_pdf', $htbId, $studentsIds);
- if(!$generateStu){
- echo json_encode(array("success" => 0, "message" => "无生成的学生"));exit();
- }
- $params['studentIds'] = $generateStu['studentIds'];
- $sql = "select class_id,grade,create_time,semester_id,school_group_id from math_htb_setting where htb_id = '{$htbId}'";
- $msg = $this->sConn->createCommand($sql)->queryRow();
- $Sem = new SSemester();
- $code = $Sem->conn->createQuery()
- ->from('semester')
- ->where("semester_id = '" . $msg['semester_id'] . "'")
- ->limit(1)
- ->query()
- ->read();
- $classinfo = ClassModel::model()->find("class_id=:id", array(":id" => $msg['class_id']));
- $intarr = array(
- "schoolId" => $this->schoolId,
- "clazzId" => $msg['class_id'],
- "semester" => $code['refer_code'],
- "grade" => $msg['grade'],
- "examTime" => $msg['create_time'],
- "classify" => 9,
- "subject" => 3
- );
- if (isset($msg['school_group_id']) && $msg['school_group_id']) {
- $apiUrl = isset(Yii::app()->params["improve_url"][$msg['school_group_id']]) ? Yii::app()->params["improve_url"][$msg['school_group_id']] : null;
- } else {
- $apiUrl = isset(Yii::app()->params["improve_url"][$this->schoolGroupId]) ? Yii::app()->params["improve_url"][$this->schoolGroupId] : null;
- }
- if (!$apiUrl) {
- echo json_encode(array("success" => 0, "message" => "接口配置信息错误"));
- exit();
- }
- $productDownload = new ProductDownload(ProductDownload::PRODUCT_TYPE_HTB);
- //************ Step-1 判断是否有订单 *************//
- if (Yii::app()->params["limit_open"]) {
- if (Yii::app()->params["limit_open"]) {
- $params["studentIds"] = $productDownload->getCanDownloadStu($params['studentIds'], $intarr, $this->schoolId);
- }
- }
- $params['schoolId'] = $this->schoolId;
- $params['type'] = 5;
- $params['htbId'] = $htbId;
- $packProductModel = new BusinessPackProductTask();
- $packProductModel->school_id = $this->schoolId;
- $packProductModel->auth_username = $this->authUsername;
- $packProductModel->product_type = ProductDownload::PRODUCT_TYPE_HTB;
- $packProductModel->product_name = $msg['name']."好题本";
- $packProductModel->subject_id = $this->subjectId;
- $packProductModel->class_id = $msg['class_id'];
- $packProductModel->class_name = $classinfo['class_name'];
- $packProductModel->unique_key = $htbId;
- $packProductModel->student_count = count($params['studentIds']);
- $packProductModel->pack_json = json_encode($params);
- $packProductModel->pack_api_url = $apiUrl . "/rest/download_week_pdf/index";
- $packProductModel->create_time = time();
- $packProductModel->save();
- $this->updateHtbDownloadStatus($params['studentIds'],$htbId);
- echo json_encode(array("success" => 3, "message" => ""));
- exit;
- }
- /**
- * 下载假期报告
- */
- public function actionGetHolidayReportFile()
- {
- $reportId = (string)Req::get("reportId");
- $studentsIds = Req::get("studentsIds");
- $classDownload = $studentsIds ? false : true;
- $params = array();
- if (!$reportId) {
- echo json_encode(array("success" => 0, "message" => "缺少参数"));
- exit();
- }
- //获取组ID
- $sql = "select school_group_id,semester_id from holiday_report_setting where report_id = '{$reportId}'";
- $report_settint_data = $this->sConn->createCommand($sql)->queryRow();
- if (!$report_settint_data) {
- echo json_encode(array("success" => 0, "message" => "设置信息错误"));
- exit();
- } else {
- $school_group_id = $report_settint_data['school_group_id'];
- }
- if (isset($school_group_id) && $school_group_id) {
- $apiUrl = isset(Yii::app()->params["improve_url"][$school_group_id]) ? Yii::app()->params["improve_url"][$school_group_id] : null;
- } else {
- $apiUrl = isset(Yii::app()->params["improve_url"][$this->schoolGroupId]) ? Yii::app()->params["improve_url"][$this->schoolGroupId] : null;
- }
- //*****获取生成的学生***//
- $productDownload = new ProductDownload(ProductDownload::PRODUCT_TYPE_HOLIDAY_REPORT);
- $generateStu = $productDownload->getGenerateStu('holiday_report_student', 'report_id', 'report_pdf_path', 'is_report_pdf', $reportId, $studentsIds);
- if(!$generateStu){
- echo json_encode(array("success" => 0, "message" => "无生成的学生"));exit();
- }
- $params['studentIds'] = $generateStu['studentIds'];
- $pathArr = $generateStu['pathArr'];
- if (!$apiUrl) {
- echo json_encode(array("success" => 0, "message" => "接口配置信息错误"));
- exit();
- }
- $sql = "select class_id,grade,create_time,semester_id from holiday_report_setting where report_id = '{$reportId}'";
- $msg = $this->sConn->createCommand($sql)->queryRow();
- $Sem = new SSemester();
- $code = $Sem->conn->createQuery()
- ->from('semester')
- ->where("semester_id = '" . $msg['semester_id'] . "'")
- ->limit(1)
- ->query()
- ->read();
- $classinfo = ClassModel::model()->find("class_id=:id", array(":id" => $msg['class_id']));
- $intarr = array(
- "subject" => 3,
- "grade" => $msg['grade'],
- "examTime" => $msg['create_time'],
- );
- //************ Step-1 判断是否有订单 *************//
- $params["studentIds"] = $params['studentIds'];
- // if (Yii::app()->params["limit_open"]) {
- // $params["studentIds"] = $productDownload->getCanDownloadStu($params['studentIds'], $intarr, $this->schoolId);
- // }
- $params['schoolId'] = $this->schoolId;
- $params['type'] = 4;
- $params['reportId'] = $reportId;
- //**************** Step-2 判断是否已经存在下载任务 ********************//
- if ($classDownload) {
- $packTask = $this->getExistTask($reportId, $msg['class_id'], ProductDownload::PRODUCT_TYPE_HOLIDAY_REPORT, count($params["studentIds"]));
- if (isset($packTask->pack_status) && $packTask->pack_status == 0) {
- echo json_encode(array("success" => 3, "message" => ""));
- exit;
- }
- if (isset($packTask->pack_url) && $packTask->pack_url) {
- $this->updateHrpDownloadStatus($params['studentIds'],$reportId);
- echo json_encode(array("success" => 1, "downloadPath" => $packTask->pack_url));
- exit;
- }
- }
- //**************** Step-3 根据接口获取文件大小来判断走原有接口打包流程还是走脚本任务 ************//
- $sizeRs = Curl::post($apiUrl . "/rest/download_file_size/index", array('path_arr' => $pathArr));
- if (!($sizeRs = json_decode($sizeRs))) {
- echo json_encode(array("success" => 0, "message" => "请求接口失败"));
- exit;
- }
- $smeName = isset($code['name'] ) ? $code['name'] : '';
- if (isset($sizeRs->size)) {
- //************ Step-3-1 大于限定值 发送任务到后台打包 ******//
- if (Yii::app()->params["pack_product_file_limit"] < $sizeRs->size) {
- $packProductModel = new BusinessPackProductTask();
- $packProductModel->school_id = $this->schoolId;
- $packProductModel->auth_username = $this->authUsername;
- $packProductModel->product_type = ProductDownload::PRODUCT_TYPE_HOLIDAY_REPORT;
- $packProductModel->product_name = $classinfo['class_name'].$smeName . '假期总结报告';
- $packProductModel->subject_id = $this->subjectId;
- $packProductModel->class_id = $msg['class_id'];
- $packProductModel->class_name = $classinfo['class_name'];
- $packProductModel->unique_key = $reportId;
- $packProductModel->student_count = count($params['studentIds']);
- $packProductModel->pack_json = json_encode($params);
- $packProductModel->pack_api_url = $apiUrl . "/rest/download_week_pdf/index";
- $packProductModel->create_time = time();
- $packProductModel->save();
- $this->updateHrpDownloadStatus($params['studentIds'],$reportId);
- echo json_encode(array("success" => 3, "message" => ""));
- exit;
- } else {
- $rs = Curl::post($apiUrl . "/rest/download_week_pdf/index", $params);
- if (!($rs = json_decode($rs))) {
- $rs = array(
- "success" => 0,
- "message" => "请求接口失败",
- );
- } else {
- //更新下载时间
- $this->updateHrpDownloadStatus($params['studentIds'],$reportId);
- }
- if (isset($school_group_id) && $school_group_id && isset($rs->downloadPath)) {
- if (YII_ENV == 'pro' || YII_ENV == 'production') {
- $rs->downloadPath = preg_replace('/http\:\/\/zstatic\d{1,2}/', 'http://zstatic' . $school_group_id, $rs->downloadPath);
- }
- }
- echo json_encode($rs);
- exit;
- }
- } else {
- echo json_encode(array("success" => 0, "message" => $sizeRs->message));
- exit;
- }
- }
- /**
- * 更新假期报告下载状态
- * @param $studentsIds
- * @param $reportId
- */
- private function updateHrpDownloadStatus($studentsIds, $reportId){
- $time = time();
- $sql = "update holiday_report_student set is_report_download = 1,report_download_time={$time} where report_id = '{$reportId}' and student_id in (" . implode(',', $studentsIds) . ") and report_download_time = 0";
- $this->sConn->createCommand($sql)->execute();
- }
- /**
- * 添加假期报告下载任务
- */
- public function actionAddHolidayReportTask()
- {
- $reportId = (string)Req::get("reportId");
- $studentsIds = Req::get("studentsIds");
- $params = array();
- if (!$reportId) {
- echo json_encode(array("success" => 0, "message" => "缺少参数"));
- exit();
- }
- //获取组ID
- $sql = "select school_group_id,semester_id from holiday_report_setting where report_id = '{$reportId}'";
- $report_settint_data = $this->sConn->createCommand($sql)->queryRow();
- if (!$report_settint_data) {
- echo json_encode(array("success" => 0, "message" => "设置信息错误"));
- exit();
- } else {
- $school_group_id = $report_settint_data['school_group_id'];
- }
- if (isset($school_group_id) && $school_group_id) {
- $apiUrl = isset(Yii::app()->params["improve_url"][$school_group_id]) ? Yii::app()->params["improve_url"][$school_group_id] : null;
- } else {
- $apiUrl = isset(Yii::app()->params["improve_url"][$this->schoolGroupId]) ? Yii::app()->params["improve_url"][$this->schoolGroupId] : null;
- }
- //*****获取生成的学生***//
- $productDownload = new ProductDownload(ProductDownload::PRODUCT_TYPE_HOLIDAY_REPORT);
- $generateStu = $productDownload->getGenerateStu('holiday_report_student', 'report_id', 'report_pdf_path', 'is_report_pdf', $reportId, $studentsIds);
- if(!$generateStu){
- echo json_encode(array("success" => 0, "message" => "无生成的学生"));exit();
- }
- $params['studentIds'] = $generateStu['studentIds'];
- if (!$apiUrl) {
- echo json_encode(array("success" => 0, "message" => "接口配置信息错误"));
- exit();
- }
- $sql = "select class_id,grade,create_time,semester_id from holiday_report_setting where report_id = '{$reportId}'";
- $msg = $this->sConn->createCommand($sql)->queryRow();
- $Sem = new SSemester();
- $code = $Sem->conn->createQuery()
- ->from('semester')
- ->where("semester_id = '" . $msg['semester_id'] . "'")
- ->limit(1)
- ->query()
- ->read();
- $classinfo = ClassModel::model()->find("class_id=:id", array(":id" => $msg['class_id']));
- $intarr = array(
- "subject" => 3,
- "grade" => $msg['grade'],
- "examTime" => $msg['create_time'],
- );
- //************ Step-1 判断是否有订单 *************//
- if (Yii::app()->params["limit_open"]) {
- $params["studentIds"] = $productDownload->getCanDownloadStu($params['studentIds'], $intarr, $this->schoolId);
- }
- $params['schoolId'] = $this->schoolId;
- $params['type'] = 4;
- $params['reportId'] = $reportId;
- $smeName = isset($code['name'] ) ? $code['name'] : '';
- $packProductModel = new BusinessPackProductTask();
- $packProductModel->school_id = $this->schoolId;
- $packProductModel->auth_username = $this->authUsername;
- $packProductModel->product_type = ProductDownload::PRODUCT_TYPE_HOLIDAY_REPORT;
- $packProductModel->product_name = $classinfo['class_name'].$smeName . '假期总结报告';
- $packProductModel->subject_id = $this->subjectId;
- $packProductModel->class_id = $msg['class_id'];
- $packProductModel->class_name = $classinfo['class_name'];
- $packProductModel->unique_key = $reportId;
- $packProductModel->student_count = count($params['studentIds']);
- $packProductModel->pack_json = json_encode($params);
- $packProductModel->pack_api_url = $apiUrl . "/rest/download_week_pdf/index";
- $packProductModel->create_time = time();
- $packProductModel->save();
- $this->updateHrpDownloadStatus($params['studentIds'],$reportId);
- echo json_encode(array("success" => 3, "message" => ""));
- exit;
- }
- /**
- * 下载晨读词汇
- */
- public function actionGetEnglishFile()
- {
- $weekId = (string)Req::get("weekId");
- $studentsIds = Req::get("studentsIds");
- $classDownload = $studentsIds ? false : true;
- $params = array();
- if (!$weekId) {
- echo json_encode(array("success" => 0, "message" => "缺少参数"));
- exit();
- }
- //*****获取生成的学生***//
- $productDownload = new ProductDownload(ProductDownload::PRODUCT_TYPE_EN_MRV);
- $generateStu = $productDownload->getGenerateStu('english_week_student', 'week_id', 'week_pdf_path', 'is_week_pdf', $weekId, $studentsIds);
- if(!$generateStu){
- echo json_encode(array("success" => 0, "message" => "无生成的学生"));exit();
- }
- $params['studentIds'] = $generateStu['studentIds'];
- $pathArr = $generateStu['pathArr'];
- $apiUrl = isset(Yii::app()->params["improve_url"][$this->schoolGroupId]) ? Yii::app()->params["improve_url"][$this->schoolGroupId] : null;
- if (!$apiUrl) {
- echo json_encode(array("success" => 0, "message" => "接口配置信息错误"));
- exit();
- }
- $sql = "select class_id,grade,create_time,semester_id,`name` from english_week where week_id = '{$weekId}'";
- $msg = $this->sConn->createCommand($sql)->queryRow();
- $Sem = new SSemester();
- $code = $Sem->conn->createQuery()
- ->from('semester')
- ->where("semester_id = '" . $msg['semester_id'] . "'")
- ->limit(1)
- ->query()
- ->read();
- $classinfo = ClassModel::model()->find("class_id=:id", array(":id" => $msg['class_id']));
- $intarr = array(
- "schoolId" => $this->schoolId,
- "clazzId" => $msg['class_id'],
- "semester" => $code['refer_code'],
- "grade" => $msg['grade'],
- "examTime" => $msg['create_time'],
- "classify" => 3,
- "subject" => 8
- );
- //************ Step-1 判断是否有订单 *************//
- if (Yii::app()->params["limit_open"]) {
- if (Yii::app()->params["limit_open"]) {
- $params["studentIds"] = $productDownload->getCanDownloadStu($params['studentIds'], $intarr, $this->schoolId);
- }
- }
- $params['schoolId'] = $this->schoolId;
- $params['type'] = 1;
- $params['weekId'] = $weekId;
- //**************** Step-2 判断是否已经存在下载任务 ********************//
- if($classDownload) {
- $packTask = $this->getExistTask($weekId, $msg['class_id'], ProductDownload::PRODUCT_TYPE_EN_MRV, count($params["studentIds"]));
- if (isset($packTask->pack_status) && $packTask->pack_status == 0) {
- echo json_encode(array("success" => 3, "message" => ""));
- exit;
- }
- if (isset($packTask->pack_url) && $packTask->pack_url) {
- $this->updateEnMrvDownloadStatus($params['studentIds'],$weekId);
- echo json_encode(array("success" => 1, "downloadPath" => $packTask->pack_url));
- exit;
- }
- }
- //**************** Step-3 根据接口获取文件大小来判断走原有接口打包流程还是走脚本任务 ************//
- $sizeRs = Curl::post($apiUrl . "/rest/download_file_size/index", array('path_arr' => $pathArr));
- if (!($sizeRs = json_decode($sizeRs))) {
- echo json_encode(array("success" => 0, "message" => "请求接口失败"));
- exit;
- }
- if (isset($sizeRs->size)) {
- //************ Step-3-1 大于限定值 发送任务到后台打包 ******//
- if (Yii::app()->params["pack_product_file_limit"] < $sizeRs->size) {
- $packProductModel = new BusinessPackProductTask();
- $packProductModel->school_id = $this->schoolId;
- $packProductModel->auth_username = $this->authUsername;
- $packProductModel->product_type = ProductDownload::PRODUCT_TYPE_EN_MRV;
- $packProductModel->product_name = $msg['name'] . '晨读词汇';
- $packProductModel->subject_id = $this->subjectId;
- $packProductModel->class_id = $msg['class_id'];
- $packProductModel->class_name = $classinfo['class_name'];
- $packProductModel->unique_key = $weekId;
- $packProductModel->student_count = count($params['studentIds']);
- $packProductModel->pack_json = json_encode($params);
- $packProductModel->pack_api_url = $apiUrl . "/rest/download_week_pdf/index";
- $packProductModel->create_time = time();
- $packProductModel->save();
- $this->updateEnMrvDownloadStatus($params['studentIds'],$weekId);
- echo json_encode(array("success" => 3, "message" => ""));
- exit;
- } else {
- $rs = Curl::post($apiUrl . "/rest/download_week_pdf/index", $params);
- if (!($rs = json_decode($rs))) {
- $rs = array(
- "success" => 0,
- "message" => "请求接口失败",
- );
- } else {
- //更新下载时间
- if ($rs->success == 1 || $rs->success == 2) {
- $this->updateEnMrvDownloadStatus($params['studentIds'],$weekId);
- }
- }
- echo json_encode($rs);
- exit;
- }
- } else {
- echo json_encode(array("success" => 0, "message" => $sizeRs->message));
- exit;
- }
- }
- /**
- * 更新晨读词汇下载状态
- * @param $studentsIds
- * @param $weekId
- */
- private function updateEnMrvDownloadStatus($studentsIds, $weekId)
- {
- $time = time();
- $sql = "update english_week_student set is_week_download = 1,week_download_time={$time} where week_id = '{$weekId}' and student_id in (" . implode(',', $studentsIds) . ")";
- $this->sConn->createCommand($sql)->execute();
- }
- /**
- * 添加晨读词汇下载任务
- */
- public function actionAddEnMrvTask()
- {
- $weekId = (string)Req::get("weekId");
- $studentsIds = Req::get("studentsIds");
- $params = array();
- if (!$weekId) {
- echo json_encode(array("success" => 0, "message" => "缺少参数"));
- exit();
- }
- //*****获取生成的学生***//
- $productDownload = new ProductDownload(ProductDownload::PRODUCT_TYPE_EN_MRV);
- $generateStu = $productDownload->getGenerateStu('english_week_student', 'week_id', 'week_pdf_path', 'is_week_pdf', $weekId, $studentsIds);
- if(!$generateStu){
- echo json_encode(array("success" => 0, "message" => "无生成的学生"));exit();
- }
- $params['studentIds'] = $generateStu['studentIds'];
- $apiUrl = isset(Yii::app()->params["improve_url"][$this->schoolGroupId]) ? Yii::app()->params["improve_url"][$this->schoolGroupId] : null;
- if (!$apiUrl) {
- echo json_encode(array("success" => 0, "message" => "接口配置信息错误"));
- exit();
- }
- $sql = "select class_id,grade,create_time,semester_id,`name` from english_week where week_id = '{$weekId}'";
- $msg = $this->sConn->createCommand($sql)->queryRow();
- $Sem = new SSemester();
- $code = $Sem->conn->createQuery()
- ->from('semester')
- ->where("semester_id = '" . $msg['semester_id'] . "'")
- ->limit(1)
- ->query()
- ->read();
- $classinfo = ClassModel::model()->find("class_id=:id", array(":id" => $msg['class_id']));
- $intarr = array(
- "schoolId" => $this->schoolId,
- "clazzId" => $msg['class_id'],
- "semester" => $code['refer_code'],
- "grade" => $msg['grade'],
- "examTime" => $msg['create_time'],
- "classify" => 3,
- "subject" => 8
- );
- //************ Step-1 判断是否有订单 *************//
- if (Yii::app()->params["limit_open"]) {
- if (Yii::app()->params["limit_open"]) {
- $params["studentIds"] = $productDownload->getCanDownloadStu($params['studentIds'], $intarr, $this->schoolId);
- }
- }
- $params['schoolId'] = $this->schoolId;
- $params['type'] = 1;
- $params['weekId'] = $weekId;
- $packProductModel = new BusinessPackProductTask();
- $packProductModel->school_id = $this->schoolId;
- $packProductModel->auth_username = $this->authUsername;
- $packProductModel->product_type = ProductDownload::PRODUCT_TYPE_EN_MRV;
- $packProductModel->product_name = $msg['name'] . '晨读词汇';
- $packProductModel->subject_id = $this->subjectId;
- $packProductModel->class_id = $msg['class_id'];
- $packProductModel->class_name = $classinfo['class_name'];
- $packProductModel->unique_key = $weekId;
- $packProductModel->student_count = count($params['studentIds']);
- $packProductModel->pack_json = json_encode($params);
- $packProductModel->pack_api_url = $apiUrl . "/rest/download_week_pdf/index";
- $packProductModel->create_time = time();
- $packProductModel->save();
- $this->updateEnMrvDownloadStatus($params['studentIds'],$weekId);
- echo json_encode(array("success" => 3, "message" => ""));
- exit;
- }
- /**
- * 下载外刊美文个性化学习宝
- */
- public function actionGetEnglishReadingFile()
- {
- $weekId = (string)Req::get("weekId");
- $studentsIds = Req::get("studentsIds");
- $classDownload = $studentsIds ? false : true;
- $params = array();
- if (!$weekId) {
- echo json_encode(array("success" => 0, "message" => "缺少参数"));
- exit();
- }
- $sql = "select class_id,er.grade,er.create_time,er.semester_id,name,ers.category,ers.product_type from english_reading er join english_reading_setting ers on ers.reading_id=er.reading_id where week_id = '{$weekId}'";
- $msg = $this->sConn->createCommand($sql)->queryRow();
- $Sem = new SSemester();
- $code = $Sem->conn->createQuery()
- ->from('semester')
- ->where("semester_id = '" . $msg['semester_id'] . "'")
- ->limit(1)
- ->query()
- ->read();
- $classify=6;
- if($msg['category']==2){
- if($msg['product_type']==1){
- $classify=57;
- $productDownload = new ProductDownload(ProductDownload::PRODUCT_TYPE_EN_READING_JICHU);
- }elseif($msg['product_type']==2){
- $classify=61;
- $productDownload = new ProductDownload(ProductDownload::PRODUCT_TYPE_EN_READING_WAIKAN);
- }elseif($msg['product_type']==3){
- $classify=58;
- $productDownload = new ProductDownload(ProductDownload::PRODUCT_TYPE_EN_READING_REDIAN);
- }
- }else{
- $productDownload = new ProductDownload(ProductDownload::PRODUCT_TYPE_EN_READING);
- }
- //*****获取生成的学生***//
- $generateStu = $productDownload->getGenerateStu('english_reading_student', 'week_id', 'week_pdf_path', 'is_week_pdf', $weekId, $studentsIds);
- if(!$generateStu){
- echo json_encode(array("success" => 0, "message" => "无生成的学生"));exit();
- }
- $params['studentIds'] = $generateStu['studentIds'];
- $pathArr = $generateStu['pathArr'];
- $apiUrl = isset(Yii::app()->params["improve_url"][$this->schoolGroupId]) ? Yii::app()->params["improve_url"][$this->schoolGroupId] : null;
- if (!$apiUrl) {
- echo json_encode(array("success" => 0, "message" => "接口配置信息错误"));
- exit();
- }
- $classinfo = ClassModel::model()->find("class_id=:id", array(":id" => $msg['class_id']));
- $intarr = array(
- "schoolId" => $this->schoolId,
- "clazzId" => $msg['class_id'],
- "semester" => $code['refer_code'],
- "grade" => $msg['grade'],
- "students" => $studentsIds,
- "examTime" => $msg['create_time'],
- "classify" => $classify,
- "subject" => 8
- );
- //************ Step-1 判断是否有订单 *************//
- if (Yii::app()->params["limit_open"]) {
- if (Yii::app()->params["limit_open"]) {
- $params["studentIds"] = $productDownload->getCanDownloadStu($params['studentIds'], $intarr, $this->schoolId);
- }
- }
- $params['schoolId'] = $this->schoolId;
- $params['type'] = 3;
- $params['weekId'] = $weekId;
- //**************** Step-2 判断是否已经存在下载任务 ********************//
- if($classDownload) {
- $packTask = $this->getExistTask($weekId, $msg['class_id'], ProductDownload::PRODUCT_TYPE_EN_READING, count($params["studentIds"]));
- if (isset($packTask->pack_status) && $packTask->pack_status == 0) {
- echo json_encode(array("success" => 3, "message" => ""));
- exit;
- }
- if (isset($packTask->pack_url) && $packTask->pack_url) {
- $this->updateEnreadingDownloadStatus($params['studentIds'],$weekId);
- echo json_encode(array("success" => 1, "downloadPath" => $packTask->pack_url));
- exit;
- }
- }
- //**************** Step-3 根据接口获取文件大小来判断走原有接口打包流程还是走脚本任务 ************//
- $sizeRs = Curl::post($apiUrl . "/rest/download_file_size/index", array('path_arr' => $pathArr));
- if (!($sizeRs = json_decode($sizeRs))) {
- echo json_encode(array("success" => 0, "message" => "请求接口失败"));
- exit;
- }
- if (isset($sizeRs->size)) {
- //************ Step-3-1 大于限定值 发送任务到后台打包 ******//
- if (Yii::app()->params["pack_product_file_limit"] < $sizeRs->size) {
- $packProductModel = new BusinessPackProductTask();
- $packProductModel->school_id = $this->schoolId;
- $packProductModel->auth_username = $this->authUsername;
- $packProductModel->product_type = ProductDownload::PRODUCT_TYPE_EN_READING;
- $packProductModel->product_name = $msg['name'] . '外刊宝';
- $packProductModel->subject_id = $this->subjectId;
- $packProductModel->class_id = $msg['class_id'];
- $packProductModel->class_name = $classinfo['class_name'];
- $packProductModel->unique_key = $weekId;
- $packProductModel->student_count = count($params['studentIds']);
- $packProductModel->pack_json = json_encode($params);
- $packProductModel->pack_api_url = $apiUrl . "/rest/download_week_pdf/index";
- $packProductModel->create_time = time();
- $packProductModel->save();
- $this->updateEnreadingDownloadStatus($params['studentIds'],$weekId);
- echo json_encode(array("success" => 3, "message" => ""));
- exit;
- } else {
- $rs = Curl::post($apiUrl . "/rest/download_week_pdf/index", $params);
- if (!($rs = json_decode($rs))) {
- $rs = array(
- "success" => 0,
- "message" => "请求接口失败",
- );
- } else {
- //更新下载时间
- if ($rs->success == 1 || $rs->success == 2) {
- $this->updateEnreadingDownloadStatus($params['studentIds'],$weekId);
- }
- }
- echo json_encode($rs);
- exit;
- }
- } else {
- echo json_encode(array("success" => 0, "message" => $sizeRs->message));
- exit;
- }
- }
- /**
- * 更新外刊下载状态
- * @param $studentsIds
- * @param $weekId
- */
- private function updateEnreadingDownloadStatus($studentsIds, $weekId)
- {
- $time = time();
- $sql = "update english_reading_student set is_week_download = 1,week_download_time={$time} where week_id = '{$weekId}' and student_id in (" . implode(',', $studentsIds) . ") and week_download_time = 0";
- $this->sConn->createCommand($sql)->execute();
- }
- /**
- * 添加外刊美文个性化学习宝下载任务
- */
- public function actionAddEnReadingTask()
- {
- $weekId = (string)Req::get("weekId");
- $studentsIds = Req::get("studentsIds");
- if (!$weekId) {
- echo json_encode(array("success" => 0, "message" => "缺少参数"));
- exit();
- }
- //*****获取生成的学生***//
- $productDownload = new ProductDownload(ProductDownload::PRODUCT_TYPE_EN_READING);
- $generateStu = $productDownload->getGenerateStu('english_reading_student', 'week_id', 'week_pdf_path', 'is_week_pdf', $weekId, $studentsIds);
- if(!$generateStu){
- echo json_encode(array("success" => 0, "message" => "无生成的学生"));exit();
- }
- $params['studentIds'] = $generateStu['studentIds'];
- $sql = "select class_id,grade,create_time,semester_id,name from english_reading where week_id = '{$weekId}'";
- $msg = $this->sConn->createCommand($sql)->queryRow();
- $Sem = new SSemester();
- $code = $Sem->conn->createQuery()
- ->from('semester')
- ->where("semester_id = '" . $msg['semester_id'] . "'")
- ->limit(1)
- ->query()
- ->read();
- $classinfo = ClassModel::model()->find("class_id=:id", array(":id" => $msg['class_id']));
- $intarr = array(
- "schoolId" => $this->schoolId,
- "clazzId" => $msg['class_id'],
- "semester" => $code['refer_code'],
- "grade" => $msg['grade'],
- "students" => $studentsIds,
- "examTime" => $msg['create_time'],
- "classify" => 6,
- "subject" => 8
- );
- //************ Step-1 判断是否有订单 *************//
- //$params = array();
- $apiUrl = isset(Yii::app()->params["improve_url"][$this->schoolGroupId]) ? Yii::app()->params["improve_url"][$this->schoolGroupId] : null;
- if (!$apiUrl) {
- echo json_encode(array("success" => 0, "message" => "接口配置信息错误"));
- exit();
- }
- if (Yii::app()->params["limit_open"]) {
- if (Yii::app()->params["limit_open"]) {
- $params["studentIds"] = $productDownload->getCanDownloadStu($params['studentIds'], $intarr, $this->schoolId);
- }
- }
- //*******产品接口参数******//
- $params['weekId'] = $weekId;
- $params['schoolId'] = $this->schoolId;
- $params['type'] = 3;
- $packProductModel = new BusinessPackProductTask();
- $packProductModel->school_id = $this->schoolId;
- $packProductModel->auth_username = $this->authUsername;
- $packProductModel->product_type = ProductDownload::PRODUCT_TYPE_EN_READING;
- $packProductModel->product_name = $msg['name'] . '外刊宝';
- $packProductModel->subject_id = $this->subjectId;
- $packProductModel->class_id = $msg['class_id'];
- $packProductModel->class_name = $classinfo['class_name'];
- $packProductModel->unique_key = $weekId;
- $packProductModel->student_count = count($params['studentIds']);
- $packProductModel->pack_json = json_encode($params);
- $packProductModel->pack_api_url = $apiUrl . "/rest/download_week_pdf/index";
- $packProductModel->create_time = time();
- $packProductModel->save();
- $this->updateEnreadingDownloadStatus($params['studentIds'],$weekId);
- echo json_encode(array("success" => 3, "message" => ""));
- exit;
- }
- /**
- * 获取已存在的下载任务
- * @param $unique_id
- * @param $class_id
- * @param $type
- * @param $studentCount
- * @return bool|mixed
- */
- private function getExistTask($unique_id, $class_id, $type, $studentCount)
- {
- $schoolId = $this->schoolId;
- $subjectId = $this->subjectId;
- $effectTime = time() - 86400;
- $sql = <<<SQL
- select pack_status,pack_url from pack_product_task where unique_key='{$unique_id}' and school_id={$schoolId} and subject_id={$subjectId}
- and product_type={$type} and class_id='{$class_id}' and student_count={$studentCount} and pack_status<>2 and create_time>{$effectTime} order by create_time desc limit 1;
- SQL;
- $rs = BusinessPackProductTask::model()->findBySql($sql);
- return $rs;
- }
- /**
- * 获取学生是否有订单
- * @param $intarr
- * @param $stuids
- */
- protected function getStuOrder($intarr, &$stuids)
- {
- $basic = imsBasicAuth($this->schoolId . '_' . Yii::app()->session['coachInfo']['coach_name'], Yii::app()->params["zsy_api_key"]);
- foreach (array(1, 2, 3) as $type) {
- $intarr['classify'] = $type;
- $rs = json_decode(Curl::http_post_Basic_json(Yii::app()->params["get_limit_url"], json_encode($intarr), $basic));
- if (!$rs) {
- Yii::app()->jump->error("接口错误");
- }
- if ($rs->errCode != "00") {
- Yii::app()->jump->error($rs->errMsg);
- }
- $stuids = array_unique(array_merge($stuids, $rs->data));
- }
- }
- //批量下载假期报告
- public function actionBatchHoliday(){
- $json_params = file_get_contents('php://input');
- $params_arr = json_decode($json_params, true);
- $notFound = 0;
- foreach ($params_arr as $param) {
- $reportId = isset($param['reportId']) ? $param['reportId'] : null;
- if (!$reportId) {
- echo json_encode(array("status" => 0, "message" => "缺少参数"));exit();
- }
- $params = array();
- //获取组ID
- $sql = "select school_group_id,semester_id from holiday_report_setting where report_id = '{$reportId}'";
- $report_settint_data = $this->sConn->createCommand($sql)->queryRow();
- if (!$report_settint_data) {
- echo json_encode(array("success" => 0, "message" => "设置信息错误"));
- exit();
- } else {
- $school_group_id = $report_settint_data['school_group_id'];
- }
- if (isset($school_group_id) && $school_group_id) {
- $apiUrl = isset(Yii::app()->params["improve_url"][$school_group_id]) ? Yii::app()->params["improve_url"][$school_group_id] : null;
- } else {
- $apiUrl = isset(Yii::app()->params["improve_url"][$this->schoolGroupId]) ? Yii::app()->params["improve_url"][$this->schoolGroupId] : null;
- }
- //*****获取生成的学生***//
- $productDownload = new ProductDownload(ProductDownload::PRODUCT_TYPE_HOLIDAY_REPORT);
- $generateStu = $productDownload->getGenerateStu('holiday_report_student', 'report_id', 'report_pdf_path', 'is_report_pdf', $reportId, array());
- if(!$generateStu){
- $notFound++;
- continue;
- }
- $params['studentIds'] = $generateStu['studentIds'];
- if (!$apiUrl) {
- echo json_encode(array("success" => 0, "message" => "接口配置信息错误"));
- exit();
- }
- $sql = "select class_id,grade,create_time,semester_id from holiday_report_setting where report_id = '{$reportId}'";
- $msg = $this->sConn->createCommand($sql)->queryRow();
- $Sem = new SSemester();
- $code = $Sem->conn->createQuery()
- ->from('semester')
- ->where("semester_id = '" . $msg['semester_id'] . "'")
- ->limit(1)
- ->query()
- ->read();
- $classinfo = ClassModel::model()->find("class_id=:id", array(":id" => $msg['class_id']));
- $params['schoolId'] = $this->schoolId;
- $params['type'] = 4;
- $params['reportId'] = $reportId;
- //**************** Step-2 判断是否已经存在下载任务 ********************//
- $packTask = $this->getExistTask($reportId, $msg['class_id'], ProductDownload::PRODUCT_TYPE_HOLIDAY_REPORT, count($params["studentIds"]));
- if ($packTask) {
- continue;
- }
- $smeName = isset($code['name'] ) ? $code['name'] : '';
- //************ 批量直接发送任务到后台打包 ******//
- $packProductModel = new BusinessPackProductTask();
- $packProductModel->school_id = $this->schoolId;
- $packProductModel->auth_username = $this->authUsername;
- $packProductModel->product_type = ProductDownload::PRODUCT_TYPE_HOLIDAY_REPORT;
- $packProductModel->product_name = $classinfo['class_name'].$smeName . '假期总结报告';
- $packProductModel->subject_id = $this->subjectId;
- $packProductModel->class_id = $msg['class_id'];
- $packProductModel->class_name = $classinfo['class_name'];
- $packProductModel->unique_key = $reportId;
- $packProductModel->student_count = count($params['studentIds']);
- $packProductModel->pack_json = json_encode($params);
- $packProductModel->pack_api_url = $apiUrl . "/rest/download_week_pdf/index";
- $packProductModel->create_time = time();
- $packProductModel->save();
- $this->updateHrpDownloadStatus($params['studentIds'],$reportId);
- }
- if($notFound == count($params_arr)){
- echo json_encode(array("success" => 0, "message" => "无生成的学生"));exit();
- }
- echo json_encode(array("success" => 1, "message" => "success"));
- }
- //批量下载错题本 提分方案 个性化学习宝
- public function actionBatchIsp()
- {
- $json_params = file_get_contents('php://input');
- $params_arr = json_decode($json_params, true);
- $notFound = 0;
- foreach ($params_arr as $param) {
- $examId = isset($param['examId']) ? $param['examId'] : null;
- $classId = isset($param['classId']) ? $param['classId'] : null;
- $type = isset($param['type']) ? $param['type'] : null;
- $printType = isset($param['printType']) ? $param['printType'] : null;
- $absentFilter = isset($param['absent_filter']) ? $param['absent_filter'] : false;
- if (!$examId || !$classId || !$type) {
- echo json_encode(array("success" => 0, "message" => "缺少参数"));exit();
- }
- if (!in_array($type, array(1, 2, 3))) {
- echo json_encode(array("success" => 0, "message" => "参数错误[1]"));exit();
- }
- $groupInfo = Exam::model()->getGroupInfo($examId);
- if (empty($groupInfo)) exit(json_encode(array("success" => 0, "message" => "考试信息错误")));
- $typeRel = array('1' => 'wb_group_id', '2' => 'isp_group_id', '3' => 'wbisp_group_id');
- $groupId = $groupInfo[$typeRel[$type]];
- if (!empty($groupId)) {
- $apiUrl = isset(Yii::app()->params["improve_url"][$groupId]) ? Yii::app()->params["improve_url"][$groupId] : null;
- } else {
- $apiUrl = isset(Yii::app()->params["improve_url"][$this->schoolGroupId]) ? Yii::app()->params["improve_url"][$this->schoolGroupId] : null;
- }
- if (!$apiUrl) {
- echo json_encode(array("success" => 0, "message" => "接口配置信息错误"));
- exit();
- }
- $params = array(
- "schoolId" => $this->schoolId,
- "examId" => $examId,
- "classId" => $classId,
- "type" => $type,
- "studentIds" => array(),
- );
- $classinfo = ClassModel::model()->find("class_id=:id", array(":id" => $classId));
- //判断学科
- $examInfo = Exam::model()->findByPk($examId);
- if ($type == 1) {
- $productName = $examInfo->name . '"错题本"';
- $pdfPathColumn = 'wrongbook_pdf_path';
- $isGenerateColumn = 'is_wrongbook_pdf';
- $isDownloadColumn = 'is_wrongbook_download';
- $downloadTimeCoulmn = 'download_wrongbook_time';
- } elseif ($type == 2) {
- $productName = $examInfo->name . '"个性化学习方案"';
- $pdfPathColumn = 'isp_pdf_path';
- $isGenerateColumn = 'is_isp_pdf';
- $isDownloadColumn = 'is_two_isp_download';
- $downloadTimeCoulmn = 'download_two_isp_time';
- } else {
- $productName = $examInfo->name . '"个性化学习宝"';
- $pdfPathColumn = 'wbisp_pdf_path';
- $isGenerateColumn = 'is_wbisp_pdf';
- $isDownloadColumn = 'is_three_isp_download';
- $downloadTimeCoulmn = 'download_two_isp_time';
- }
- $productDownload = new ProductDownload($type);
- //*****获取生成的学生***//
- $generateStu = $productDownload->getGenerateStu('student_paper_relation', 'exam_id', $pdfPathColumn, $isGenerateColumn, $examId, array(), $absentFilter);
- if(!$generateStu){
- $notFound++;
- continue;
- }
- $params['studentIds'] = $generateStu['studentIds'];
- if ($printType == 'third_isp') {
- $params["subjectId"] = 8;
- $params["type"] = 3;
- }
- ProductProcessTime::model()->updateDownloadTime($params["studentIds"],$type,$examId);
- //**************** Step-2 判断是否已经存在下载任务 ********************//
- $packTask = $this->getExistTask($examId, $classId, $type, count($params['studentIds']));
- if ($packTask) {
- continue;
- }
- //************Step-3 批量直接发送任务到后台打包 ******//
- $packProductModel = new BusinessPackProductTask();
- $packProductModel->school_id = $this->schoolId;
- $packProductModel->auth_username = $this->authUsername;
- $packProductModel->product_type = $type;
- $packProductModel->product_name = $productName;
- $packProductModel->subject_id = $this->subjectId;
- $packProductModel->class_id = $classId;
- $packProductModel->class_name = $classinfo['class_name'];
- $packProductModel->unique_key = $examId;
- $packProductModel->student_count = count($params["studentIds"]);
- $packProductModel->pack_json = json_encode($params);
- $packProductModel->pack_api_url = $apiUrl . "/rest/download_pdf/index";
- $packProductModel->create_time = time();
- $packProductModel->save();
- $this->updateIspDownloadStatus($params["studentIds"],$classId,$examId,$isDownloadColumn,$downloadTimeCoulmn);
- }
- if($notFound == count($params_arr)){
- echo json_encode(array("success" => 0, "message" => "无生成的学生"));exit();
- }
- echo json_encode(array("success" => 1, "message" => "success"));
- }
- //批量下载阶段复习个性化学习宝
- public function actionBatchSp()
- {
- $json_params = file_get_contents('php://input');
- $params_arr = json_decode($json_params, true);
- $notFound = 0;
- foreach ($params_arr as $param) {
- $classId = isset($param['classId'])?$param['classId']:null;
- $type = isset($param['type'])?$param['type']:null;
- if (!$classId || !$type) {
- echo json_encode(array("success" => 0, "message" => "缺少参数"));exit();
- }
- if (!in_array($type, array(1, 2, 3))) {
- echo json_encode(array("success" => 0, "message" => "参数错误[1]"));exit();
- }
- $apiUrl = isset(Yii::app()->params["improve_url"][$this->schoolGroupId]) ? Yii::app()->params["improve_url"][$this->schoolGroupId] : null;
- if (!$apiUrl) {
- echo json_encode(array("success" => 0, "message" => "接口配置信息错误"));
- exit();
- }
- $params = array(
- "schoolId" => $this->schoolId,
- "classId" => $classId,
- "type" => $type,
- );
- $studentsIds = array();
- $student_class_data = SStudentClassRelation::model()->findAll('class_id=:class_id and status=:status', array(':class_id' => $classId, ':status' => 0));
- if ($student_class_data) {
- foreach ($student_class_data as $v) {
- $studentsIds[] = $v->student_id;
- }
- } else {
- echo json_encode(array("success" => 0, "message" => "班级暂无学生"));
- exit;
- }
- $classinfo = ClassModel::model()->find("class_id=:id", array(":id" => $classId));
- $params['studentIds'] = $studentsIds;
- if(in_array($this->subjectId,$this->mathSubjectId)){
- $subjectId=3;
- }else{
- $subjectId=$this->subjectId;
- }
- $_student_product_data=SStudentProductModel::model()->getStudentCreate($studentsIds,$subjectId,$type,$this->semesterId);
- if (!$_student_product_data) {
- //echo json_encode(array("success" => 0, "message" => $classinfo['class_name']."学生尚未生成PDF"));
- $notFound++;
- continue;
- }
- $planId=SStudentProductModel::model()->getPlanId($classId,$subjectId,$type);
- $params['planId']=$planId;
- //************ 判断是否已经存在下载任务 **********//
- $packTask = $this->getExistTask($this->semesterId . '_' . $type, $classId, ProductDownload::PRODUCT_TYPE_STAGE_REVIEW, count($_student_product_data));
- if ($packTask) {
- continue;
- }
- $semester = new SSemester();
- $nowsem = $semester->getCurrentSemester();
- $semesterName = isset($nowsem->semester_name) ? $nowsem->semester_name : '';
- if ($type == 1) {
- $productName = $semesterName . '"期中阶段复习个性化学习宝"';
- } elseif ($type == 2) {
- $productName = $semesterName . '"期末阶段复习个性化学习宝"';
- } else {
- $productName = $semesterName . '"总复习个性化学习宝"';
- }
- $packProductModel = new BusinessPackProductTask();
- $packProductModel->school_id = $this->schoolId;
- $packProductModel->auth_username = $this->authUsername;
- $packProductModel->product_type = ProductDownload::PRODUCT_TYPE_STAGE_REVIEW;
- $packProductModel->product_name = $productName;
- $packProductModel->subject_id = $this->subjectId;
- $packProductModel->class_id = $classId;
- $packProductModel->class_name = $classinfo['class_name'];
- $packProductModel->unique_key = $this->semesterId . '_' . $type;
- $packProductModel->student_count = count($_student_product_data);
- $packProductModel->pack_json = json_encode($params);
- $packProductModel->pack_api_url = $apiUrl . "/rest/download_sp/index";
- $packProductModel->create_time = time();
- $packProductModel->save();
- $this->updateSpDownloadStatus($params['studentIds'], $type,$planId);
- }
- if($notFound == count($params_arr)){
- echo json_encode(array("success" => 0, "message" => "无生成的学生"));exit();
- }
- echo json_encode(array("success" => 1, "message" => "success"));
- }
- //批量下载二轮复习提分手册
- public function actionBatchMathReview(){
- $json_params = file_get_contents('php://input');
- $params_arr = json_decode($json_params, true);
- $notFound = 0;
- foreach ($params_arr as $param) {
- $mrId = isset($param['mrId'])?$param['mrId']:null;
- $params = array();
- if (!$mrId) {
- echo json_encode(array("success" => 0, "message" => "缺少参数"));
- exit();
- }
- //*****获取生成的学生***//
- $productDownload = new ProductDownload(ProductDownload::PRODUCT_TYPE_SECOND_RUN);
- $generateStu = $productDownload->getGenerateStu('math_review_student', 'mr_id', 'review_pdf_path', 'is_review_pdf', $mrId, array());
- if(!$generateStu){
- $notFound++;
- continue;
- }
- $params['studentIds'] = $generateStu['studentIds'];
- $sql = "select class_id,grade,create_time,semester_id,school_group_id,`name` from math_review_setting where mr_id = '{$mrId}'";
- $msg = $this->sConn->createCommand($sql)->queryRow();
- $classinfo = ClassModel::model()->find("class_id=:id", array(":id" => $msg['class_id']));
- if (isset($msg['school_group_id']) && $msg['school_group_id']) {
- $apiUrl = isset(Yii::app()->params["improve_url"][$msg['school_group_id']]) ? Yii::app()->params["improve_url"][$msg['school_group_id']] : null;
- } else {
- $apiUrl = isset(Yii::app()->params["improve_url"][$this->schoolGroupId]) ? Yii::app()->params["improve_url"][$this->schoolGroupId] : null;
- }
- if (!$apiUrl) {
- echo json_encode(array("success" => 0, "message" => "接口配置信息错误"));
- exit();
- }
- $packTask = $this->getExistTask($mrId, $msg['class_id'], ProductDownload::PRODUCT_TYPE_SECOND_RUN, count($params["studentIds"]));
- if ($packTask) {
- continue;
- }
- $params['mrId'] = $mrId;
- $params['schoolId'] = $this->schoolId;
- $params['type'] = 1;
- $packProductModel = new BusinessPackProductTask();
- $packProductModel->school_id = $this->schoolId;
- $packProductModel->auth_username = $this->authUsername;
- $packProductModel->product_type = ProductDownload::PRODUCT_TYPE_SECOND_RUN;
- $packProductModel->product_name = $msg['name'] . '二轮复习学习手册';
- $packProductModel->subject_id = $this->subjectId;
- $packProductModel->class_id = $msg['class_id'];
- $packProductModel->class_name = $classinfo['class_name'];
- $packProductModel->unique_key = $mrId;
- $packProductModel->student_count = count($params['studentIds']);
- $packProductModel->pack_json = json_encode($params);
- $packProductModel->pack_api_url = $apiUrl . "/rest/download_math_pdf/index";
- $packProductModel->create_time = time();
- $packProductModel->save();
- $this->updateSecondRunDownloadStatus($params['studentIds'], $mrId);
- }
- if($notFound == count($params_arr)){
- echo json_encode(array("success" => 0, "message" => "无生成的学生"));exit();
- }
- echo json_encode(array("success" => 1, "message" => "success"));
- }
- //批量下载好题本
- public function actionBatchHtb()
- {
- $json_params = file_get_contents('php://input');
- $params_arr = json_decode($json_params, true);
- $notFound = 0;
- foreach ($params_arr as $param) {
- $htbId = isset($param['htbId']) ? $param['htbId'] : null;
- $params = array();
- if (!$htbId) {
- echo json_encode(array("success" => 0, "message" => "缺少参数"));
- exit();
- }
- //*****获取生成的学生***//
- $productDownload = new ProductDownload(ProductDownload::PRODUCT_TYPE_HTB);
- $generateStu = $productDownload->getGenerateStu('math_htb_student', 'htb_id', 'htb_pdf_path', 'is_htb_pdf', $htbId, array());
- if(!$generateStu){
- $notFound++;
- continue;
- }
- $params['studentIds'] = $generateStu['studentIds'];
- $sql = "select class_id,grade,create_time,semester_id,school_group_id from math_htb_setting where htb_id = '{$htbId}'";
- $msg = $this->sConn->createCommand($sql)->queryRow();
- $classinfo = ClassModel::model()->find("class_id=:id", array(":id" => $msg['class_id']));
- if (isset($msg['school_group_id']) && $msg['school_group_id']) {
- $apiUrl = isset(Yii::app()->params["improve_url"][$msg['school_group_id']]) ? Yii::app()->params["improve_url"][$msg['school_group_id']] : null;
- } else {
- $apiUrl = isset(Yii::app()->params["improve_url"][$this->schoolGroupId]) ? Yii::app()->params["improve_url"][$this->schoolGroupId] : null;
- }
- if (!$apiUrl) {
- echo json_encode(array("success" => 0, "message" => "接口配置信息错误"));
- exit();
- }
- $packTask = $this->getExistTask($htbId, $msg['class_id'], ProductDownload::PRODUCT_TYPE_HTB, count($params["studentIds"]));
- if ($packTask) {
- continue;
- }
- $params['schoolId'] = $this->schoolId;
- $params['type'] = 5;
- $params['htbId'] = $htbId;
- $packProductModel = new BusinessPackProductTask();
- $packProductModel->school_id = $this->schoolId;
- $packProductModel->auth_username = $this->authUsername;
- $packProductModel->product_type = ProductDownload::PRODUCT_TYPE_HTB;
- $packProductModel->product_name = $msg['name']."好题本";
- $packProductModel->subject_id = $this->subjectId;
- $packProductModel->class_id = $msg['class_id'];
- $packProductModel->class_name = $classinfo['class_name'];
- $packProductModel->unique_key = $htbId;
- $packProductModel->student_count = count($params['studentIds']);
- $packProductModel->pack_json = json_encode($params);
- $packProductModel->pack_api_url = $apiUrl . "/rest/download_week_pdf/index";
- $packProductModel->create_time = time();
- $packProductModel->save();
- $this->updateHtbDownloadStatus($params['studentIds'],$htbId);
- }
- if($notFound == count($params_arr)){
- echo json_encode(array("success" => 0, "message" => "无生成的学生"));exit();
- }
- echo json_encode(array("success" => 1, "message" => "success"));
- }
- //批量晨读词汇
- public function actionBatchEnMrv()
- {
- $json_params = file_get_contents('php://input');
- $params_arr = json_decode($json_params, true);
- $notFound = 0;
- foreach ($params_arr as $param) {
- $weekId = isset($param['weekId']) ? $param['weekId'] : null;
- $params = array();
- if (!$weekId) {
- echo json_encode(array("success" => 0, "message" => "缺少参数"));
- exit();
- }
- //*****获取生成的学生***//
- $productDownload = new ProductDownload(ProductDownload::PRODUCT_TYPE_EN_MRV);
- $generateStu = $productDownload->getGenerateStu('english_week_student', 'week_id', 'week_pdf_path', 'is_week_pdf', $weekId, array());
- if(!$generateStu){
- $notFound++;
- continue;
- }
- $params['studentIds'] = $generateStu['studentIds'];
- $apiUrl = isset(Yii::app()->params["improve_url"][$this->schoolGroupId]) ? Yii::app()->params["improve_url"][$this->schoolGroupId] : null;
- if (!$apiUrl) {
- echo json_encode(array("success" => 0, "message" => "接口配置信息错误"));
- exit();
- }
- $sql = "select class_id,grade,create_time,semester_id,`name` from english_week where week_id = '{$weekId}'";
- $msg = $this->sConn->createCommand($sql)->queryRow();
- $classinfo = ClassModel::model()->find("class_id=:id", array(":id" => $msg['class_id']));
- //************ 判断是任务是否存在 *************//
- $packTask = $this->getExistTask($weekId, $msg['class_id'], ProductDownload::PRODUCT_TYPE_EN_MRV, count($params["studentIds"]));
- if ($packTask) {
- continue;
- }
- $params['schoolId'] = $this->schoolId;
- $params['type'] = 1;
- $params['weekId'] = $weekId;
- $packProductModel = new BusinessPackProductTask();
- $packProductModel->school_id = $this->schoolId;
- $packProductModel->auth_username = $this->authUsername;
- $packProductModel->product_type = ProductDownload::PRODUCT_TYPE_EN_MRV;
- $packProductModel->product_name = $msg['name'] . '晨读词汇';
- $packProductModel->subject_id = $this->subjectId;
- $packProductModel->class_id = $msg['class_id'];
- $packProductModel->class_name = $classinfo['class_name'];
- $packProductModel->unique_key = $weekId;
- $packProductModel->student_count = count($params['studentIds']);
- $packProductModel->pack_json = json_encode($params);
- $packProductModel->pack_api_url = $apiUrl . "/rest/download_week_pdf/index";
- $packProductModel->create_time = time();
- $packProductModel->save();
- $this->updateEnMrvDownloadStatus($params['studentIds'], $weekId);
- }
- if($notFound == count($params_arr)){
- echo json_encode(array("success" => 0, "message" => "无生成的学生"));exit();
- }
- echo json_encode(array("success" => 1, "message" => "success"));
- }
- /**
- * 批量外刊美文个性化学习宝
- */
- public function actionBatchEnReading()
- {
- $json_params = file_get_contents('php://input');
- $params_arr = json_decode($json_params, true);
- $notFound = 0;
- foreach ($params_arr as $param) {
- $weekId = isset($param['weekId']) ? (string)$param['weekId'] : null;
- $params = array();
- if (!$weekId) {
- echo json_encode(array("success" => 0, "message" => "缺少参数"));
- exit();
- }
- //*****获取生成的学生***//
- $productDownload = new ProductDownload(ProductDownload::PRODUCT_TYPE_EN_READING);
- $generateStu = $productDownload->getGenerateStu('english_reading_student', 'week_id', 'week_pdf_path', 'is_week_pdf', $weekId, array());
- if(!$generateStu){
- $notFound++;
- continue;
- }
- $params['studentIds'] = $generateStu['studentIds'];
- $apiUrl = isset(Yii::app()->params["improve_url"][$this->schoolGroupId]) ? Yii::app()->params["improve_url"][$this->schoolGroupId] : null;
- if (!$apiUrl) {
- echo json_encode(array("success" => 0, "message" => "接口配置信息错误"));
- exit();
- }
- $sql = "select class_id,grade,create_time,semester_id,name from english_reading where week_id = '{$weekId}'";
- $msg = $this->sConn->createCommand($sql)->queryRow();
- $classinfo = ClassModel::model()->find("class_id=:id", array(":id" => $msg['class_id']));
- $params['schoolId'] = $this->schoolId;
- $params['type'] = 3;
- $params['weekId'] = $weekId;
- //**************** Step-2 判断是否已经存在下载任务 ********************//
- $packTask = $this->getExistTask($weekId, $msg['class_id'], ProductDownload::PRODUCT_TYPE_EN_READING, count($params["studentIds"]));
- if($packTask){
- continue;
- }
- $packProductModel = new BusinessPackProductTask();
- $packProductModel->school_id = $this->schoolId;
- $packProductModel->auth_username = $this->authUsername;
- $packProductModel->product_type = ProductDownload::PRODUCT_TYPE_EN_READING;
- $packProductModel->product_name = $msg['name'] . '外刊宝';
- $packProductModel->subject_id = $this->subjectId;
- $packProductModel->class_id = $msg['class_id'];
- $packProductModel->class_name = $classinfo['class_name'];
- $packProductModel->unique_key = $weekId;
- $packProductModel->student_count = count($params['studentIds']);
- $packProductModel->pack_json = json_encode($params);
- $packProductModel->pack_api_url = $apiUrl . "/rest/download_week_pdf/index";
- $packProductModel->create_time = time();
- $packProductModel->save();
- $this->updateEnreadingDownloadStatus($params['studentIds'], $weekId);
- }
- if($notFound == count($params_arr)){
- echo json_encode(array("success" => 0, "message" => "无生成的学生"));exit();
- }
- echo json_encode(array("success" => 1, "message" => "success"));
- }
- /**
- * 下载词汇宝
- */
- public function actionGetMagicWordFile()
- {
- $mwId = (string)Req::get("mw_id");
- $studentsIds = Req::get("studentsIds");
- $classDownload = $studentsIds ? false : true;
- $params = array();
- if (!$mwId) {
- echo json_encode(array("success" => 0, "message" => "缺少参数"));
- exit();
- }
- $sql = "select class_id,grade,create_time,semester_id,name from english_magic_word where mw_id = '{$mwId}'";
- $msg = $this->sConn->createCommand($sql)->queryRow();
- //*****获取生成的学生***//
- $productDownload = new ProductDownload($msg['grade']==3?ProductDownload::PRODUCT_TYPE_EN_MAGIC_WORD:ProductDownload::PRODUCT_TYPE_EN_INTEREST_WORD);
- $generateStu = $productDownload->getGenerateStu('english_magic_word_student', 'mw_id', 'week_pdf_path', 'is_week_pdf', $mwId, $studentsIds);
- if(!$generateStu){
- echo json_encode(array("success" => 0, "message" => "无生成的学生"));exit();
- }
- $params['studentIds'] = $generateStu['studentIds'];
- $pathArr = $generateStu['pathArr'];
- $apiUrl = isset(Yii::app()->params["improve_url"][$this->schoolGroupId]) ? Yii::app()->params["improve_url"][$this->schoolGroupId] : null;
- if (!$apiUrl) {
- echo json_encode(array("success" => 0, "message" => "接口配置信息错误"));
- exit();
- }
- $Sem = new SSemester();
- $code = $Sem->conn->createQuery()
- ->from('semester')
- ->where("semester_id = '" . $msg['semester_id'] . "'")
- ->limit(1)
- ->query()
- ->read();
- $classinfo = ClassModel::model()->find("class_id=:id", array(":id" => $msg['class_id']));
- $intarr = array(
- "schoolId" => $this->schoolId,
- "clazzId" => $msg['class_id'],
- "semester" => $code['refer_code'],
- "grade" => $msg['grade'],
- "students" => $studentsIds,
- "examTime" => $msg['create_time'],
- "classify" => 11,
- "subject" => 8
- );
- //************ Step-1 判断是否有订单 *************//
- if (Yii::app()->params["limit_open"]) {
- if (Yii::app()->params["limit_open"]) {
- $params["studentIds"] = $productDownload->getCanDownloadStu($params['studentIds'], $intarr, $this->schoolId);
- }
- }
- $params['schoolId'] = $this->schoolId;
- $params['type'] = 6;
- $params['mwId'] = $mwId;
- //**************** Step-2 判断是否已经存在下载任务 ********************//
- if($classDownload) {
- $packTask = $this->getExistTask($mwId, $msg['class_id'], ProductDownload::PRODUCT_TYPE_EN_MAGIC_WORD, count($params["studentIds"]));
- if (isset($packTask->pack_status) && $packTask->pack_status == 0) {
- echo json_encode(array("success" => 3, "message" => ""));
- exit;
- }
- if (isset($packTask->pack_url) && $packTask->pack_url) {
- $this->updateMagicWordDownloadStatus($params['studentIds'],$mwId);
- echo json_encode(array("success" => 1, "downloadPath" => $packTask->pack_url));
- exit;
- }
- }
- //**************** Step-3 根据接口获取文件大小来判断走原有接口打包流程还是走脚本任务 ************//
- $sizeRs = Curl::post($apiUrl . "/rest/download_file_size/index", array('path_arr' => $pathArr));
- if (!($sizeRs = json_decode($sizeRs))) {
- echo json_encode(array("success" => 0, "message" => "请求接口失败"));
- exit;
- }
- if (isset($sizeRs->size)) {
- //************ Step-3-1 大于限定值 发送任务到后台打包 ******//
- if (Yii::app()->params["pack_product_file_limit"] < $sizeRs->size) {
- $packProductModel = new BusinessPackProductTask();
- $packProductModel->school_id = $this->schoolId;
- $packProductModel->auth_username = $this->authUsername;
- $packProductModel->product_type = ProductDownload::PRODUCT_TYPE_EN_READING;
- $packProductModel->product_name = $msg['name'] . '词汇宝';
- $packProductModel->subject_id = $this->subjectId;
- $packProductModel->class_id = $msg['class_id'];
- $packProductModel->class_name = $classinfo['class_name'];
- $packProductModel->unique_key = $mwId;
- $packProductModel->student_count = count($params['studentIds']);
- $packProductModel->pack_json = json_encode($params);
- $packProductModel->pack_api_url = $apiUrl . "/rest/download_week_pdf/index";
- $packProductModel->create_time = time();
- $packProductModel->save();
- $this->updateMagicWordDownloadStatus($params['studentIds'],$mwId);
- echo json_encode(array("success" => 3, "message" => ""));
- exit;
- } else {
- $rs = Curl::post($apiUrl . "/rest/download_week_pdf/index", $params);
- if (!($rs = json_decode($rs))) {
- $rs = array(
- "success" => 0,
- "message" => "请求接口失败",
- );
- } else {
- //更新下载时间
- if ($rs->success == 1 || $rs->success == 2) {
- $this->updateMagicWordDownloadStatus($params['studentIds'],$mwId);
- }
- }
- echo json_encode($rs);
- exit;
- }
- } else {
- echo json_encode(array("success" => 0, "message" => $sizeRs->message));
- exit;
- }
- }
- /**
- * 更新词汇宝下载状态
- * @param $studentsIds
- * @param $weekId
- */
- private function updateMagicWordDownloadStatus($studentsIds, $weekId)
- {
- $time = time();
- $sql = "update english_magic_word_student set is_week_download = 1,week_download_time={$time} where mw_id = '{$weekId}' and student_id in (" . implode(',', $studentsIds) . ") and week_download_time = 0";
- $this->sConn->createCommand($sql)->execute();
- }
- /**
- * 更新词汇宝批改后检测卡下载状态
- * @param $studentsIds
- * @param $weekId
- */
- private function updateMagicWordAfterDownloadStatus($studentsIds, $weekId)
- {
- $time = time();
- $sql = "update english_magic_word_student set is_card_download = 1,card_download_time={$time} where mw_id = '{$weekId}' and student_id in (" . implode(',', $studentsIds) . ") and card_download_time = 0";
- $this->sConn->createCommand($sql)->execute();
- }
- /**
- * 添加词汇宝下载任务
- */
- public function actionAddMagicWordTask()
- {
- $weekId = (string)Req::get("mw_id");
- $studentsIds = Req::get("studentsIds");
- if (!$weekId) {
- echo json_encode(array("success" => 0, "message" => "缺少参数"));
- exit();
- }
- $sql = "select class_id,grade,create_time,semester_id,name from english_magic_word where mw_id = '{$weekId}'";
- $msg = $this->sConn->createCommand($sql)->queryRow();
- //*****获取生成的学生***//
- $productDownload = new ProductDownload($msg['grade']==3?ProductDownload::PRODUCT_TYPE_EN_MAGIC_WORD:ProductDownload::PRODUCT_TYPE_EN_INTEREST_WORD);
- $generateStu = $productDownload->getGenerateStu('english_magic_word_student', 'mw_id', 'week_pdf_path', 'is_week_pdf', $weekId, $studentsIds);
- if(!$generateStu){
- echo json_encode(array("success" => 0, "message" => "无生成的学生"));exit();
- }
- $params['studentIds'] = $generateStu['studentIds'];
- $Sem = new SSemester();
- $code = $Sem->conn->createQuery()
- ->from('semester')
- ->where("semester_id = '" . $msg['semester_id'] . "'")
- ->limit(1)
- ->query()
- ->read();
- $classinfo = ClassModel::model()->find("class_id=:id", array(":id" => $msg['class_id']));
- $intarr = array(
- "schoolId" => $this->schoolId,
- "clazzId" => $msg['class_id'],
- "semester" => $code['refer_code'],
- "grade" => $msg['grade'],
- "students" => $studentsIds,
- "examTime" => $msg['create_time'],
- "classify" => 11,
- "subject" => 8
- );
- //************ Step-1 判断是否有订单 *************//
- $params = array();
- $apiUrl = isset(Yii::app()->params["improve_url"][$this->schoolGroupId]) ? Yii::app()->params["improve_url"][$this->schoolGroupId] : null;
- if (!$apiUrl) {
- echo json_encode(array("success" => 0, "message" => "接口配置信息错误"));
- exit();
- }
- if (Yii::app()->params["limit_open"]) {
- if (Yii::app()->params["limit_open"]) {
- $params["studentIds"] = $productDownload->getCanDownloadStu($params['studentIds'], $intarr, $this->schoolId);
- }
- }
- //*******产品接口参数******//
- $params['mwId'] = $weekId;
- $params['schoolId'] = $this->schoolId;
- $params['type'] = 6;
- $packProductModel = new BusinessPackProductTask();
- $packProductModel->school_id = $this->schoolId;
- $packProductModel->auth_username = $this->authUsername;
- $packProductModel->product_type = ProductDownload::PRODUCT_TYPE_EN_MAGIC_WORD;
- $packProductModel->product_name = $msg['name'] . '词汇宝';
- $packProductModel->subject_id = $this->subjectId;
- $packProductModel->class_id = $msg['class_id'];
- $packProductModel->class_name = $classinfo['class_name'];
- $packProductModel->unique_key = $weekId;
- $packProductModel->student_count = count($params['studentIds']);
- $packProductModel->pack_json = json_encode($params);
- $packProductModel->pack_api_url = $apiUrl . "/rest/download_week_pdf/index";
- $packProductModel->create_time = time();
- $packProductModel->save();
- $this->updateMagicWordDownloadStatus($params['studentIds'],$weekId);
- echo json_encode(array("success" => 3, "message" => ""));
- exit;
- }
- /**
- * 批量词汇宝下载
- */
- public function actionBatchMagicWord()
- {
- $json_params = file_get_contents('php://input');
- $params_arr = json_decode($json_params, true);
- $notFound = 0;
- foreach ($params_arr as $param) {
- $weekId = isset($param['mw_id']) ? (string)$param['mw_id'] : null;
- $params = array();
- if (!$weekId) {
- echo json_encode(array("success" => 0, "message" => "缺少参数"));
- exit();
- }
- //*****获取生成的学生***//
- $productDownload = new ProductDownload(ProductDownload::PRODUCT_TYPE_EN_MAGIC_WORD);
- $generateStu = $productDownload->getGenerateStu('english_magic_word_student', 'mw_id', 'week_pdf_path', 'is_week_pdf', $weekId, array());
- if(!$generateStu){
- $notFound++;
- continue;
- }
- $params['studentIds'] = $generateStu['studentIds'];
- $apiUrl = isset(Yii::app()->params["improve_url"][$this->schoolGroupId]) ? Yii::app()->params["improve_url"][$this->schoolGroupId] : null;
- if (!$apiUrl) {
- echo json_encode(array("success" => 0, "message" => "接口配置信息错误"));
- exit();
- }
- $sql = "select class_id,grade,create_time,semester_id,name from english_magic_word where mw_id = '{$weekId}'";
- $msg = $this->sConn->createCommand($sql)->queryRow();
- $classinfo = ClassModel::model()->find("class_id=:id", array(":id" => $msg['class_id']));
- $params['schoolId'] = $this->schoolId;
- $params['type'] = 6;
- $params['mwId'] = $weekId;
- //**************** Step-2 判断是否已经存在下载任务 ********************//
- $packTask = $this->getExistTask($weekId, $msg['class_id'], ProductDownload::PRODUCT_TYPE_EN_MAGIC_WORD, count($params["studentIds"]));
- if($packTask){
- continue;
- }
- $packProductModel = new BusinessPackProductTask();
- $packProductModel->school_id = $this->schoolId;
- $packProductModel->auth_username = $this->authUsername;
- $packProductModel->product_type = ProductDownload::PRODUCT_TYPE_EN_MAGIC_WORD;
- $packProductModel->product_name = $msg['name'] . '词汇宝';
- $packProductModel->subject_id = $this->subjectId;
- $packProductModel->class_id = $msg['class_id'];
- $packProductModel->class_name = $classinfo['class_name'];
- $packProductModel->unique_key = $weekId;
- $packProductModel->student_count = count($params['studentIds']);
- $packProductModel->pack_json = json_encode($params);
- $packProductModel->pack_api_url = $apiUrl . "/rest/download_week_pdf/index";
- $packProductModel->create_time = time();
- $packProductModel->save();
- $this->updateMagicWordDownloadStatus($params['studentIds'], $weekId);
- }
- if($notFound == count($params_arr)){
- echo json_encode(array("success" => 0, "message" => "无生成的学生"));exit();
- }
- echo json_encode(array("success" => 1, "message" => "success"));
- }
- /**
- * 下载词汇宝检测卡
- */
- public function actionGetMagicWordCard()
- {
- $mwId = (string)Req::get("mw_id");
- $params = array();
- if (!$mwId) {
- echo json_encode(array("success" => 0, "message" => "缺少参数"));
- exit();
- }
- $sql = "select student_id from english_magic_word_student where mw_id = '{$mwId}' and is_card_pdf = 1";
- $stuArr = $this->getDbConnection()->createCommand($sql)->queryAll();
- if ($stuArr) {
- foreach ($stuArr as $k => $v) {
- $params['studentIds'][] = $v['student_id'];
- }
- }else{
- echo json_encode(array("success" => 0, "message" => "未找到生成的检测卡"));
- exit();
- }
- $apiUrl = isset(Yii::app()->params["improve_url"][$this->schoolGroupId]) ? Yii::app()->params["improve_url"][$this->schoolGroupId] : null;
- if (!$apiUrl) {
- echo json_encode(array("success" => 0, "message" => "接口配置信息错误"));
- exit();
- }
- $params['schoolId'] = $this->schoolId;
- $params['type'] = 6;
- $params['mwId'] = $mwId;
- $params['isMwCard'] = 1;
- $rs = Curl::post($apiUrl . "/rest/download_week_pdf/index", $params);
- if (!($rs = json_decode($rs))) {
- $rs = array(
- "success" => 0,
- "message" => "请求接口失败",
- );
- } else {
- //更新下载时间
- if ($rs->success == 1 || $rs->success == 2) {
- $this->updateMagicWordAfterDownloadStatus($params['studentIds'],$mwId);
- }
- }
- echo json_encode($rs);
- exit;
- }
- /**
- * 下载写作宝
- */
- public function actionGetWritingFile()
- {
- $ewId = (string)Req::get("ew_id");
- $studentsIds = Req::get("studentsIds");
- $classDownload = $studentsIds ? false : true;
- $params = array();
- if (!$ewId) {
- echo json_encode(array("success" => 0, "message" => "缺少参数"));
- exit();
- }
- $sql = "select class_id,grade,create_time,semester_id,name from english_writing where ew_id = '{$ewId}'";
- $msg = $this->sConn->createCommand($sql)->queryRow();
- //*****获取生成的学生***//
- $productDownload = new ProductDownload(ProductDownload::PRODUCT_TYPE_WRITING);
- $generateStu = $productDownload->getGenerateStu('english_writing_student', 'ew_id', 'week_pdf_path', 'is_week_pdf', $ewId, $studentsIds);
- if(!$generateStu){
- echo json_encode(array("success" => 0, "message" => "无生成的学生"));exit();
- }
- $params['studentIds'] = $generateStu['studentIds'];
- $pathArr = $generateStu['pathArr'];
- $apiUrl = isset(Yii::app()->params["improve_url"][$this->schoolGroupId]) ? Yii::app()->params["improve_url"][$this->schoolGroupId] : null;
- if (!$apiUrl) {
- echo json_encode(array("success" => 0, "message" => "接口配置信息错误"));
- exit();
- }
- $Sem = new SSemester();
- $code = $Sem->conn->createQuery()
- ->from('semester')
- ->where("semester_id = '" . $msg['semester_id'] . "'")
- ->limit(1)
- ->query()
- ->read();
- $classinfo = ClassModel::model()->find("class_id=:id", array(":id" => $msg['class_id']));
- $intarr = array(
- "schoolId" => $this->schoolId,
- "clazzId" => $msg['class_id'],
- "semester" => $code['refer_code'],
- "grade" => $msg['grade'],
- "students" => $studentsIds,
- "examTime" => $msg['create_time'],
- "classify" => 32,
- "subject" => 8
- );
- //************ Step-1 判断是否有订单 *************//
- if (Yii::app()->params["limit_open"]) {
- if (Yii::app()->params["limit_open"]) {
- $params["studentIds"] = $productDownload->getCanDownloadStu($params['studentIds'], $intarr, $this->schoolId);
- }
- }
- $params['schoolId'] = $this->schoolId;
- $params['type'] = 7;
- $params['ewId'] = $ewId;
- //**************** Step-2 判断是否已经存在下载任务 ********************//
- if($classDownload) {
- $packTask = $this->getExistTask($ewId, $msg['class_id'], ProductDownload::PRODUCT_TYPE_WRITING, count($params["studentIds"]));
- if (isset($packTask->pack_status) && $packTask->pack_status == 0) {
- echo json_encode(array("success" => 3, "message" => ""));
- exit;
- }
- if (isset($packTask->pack_url) && $packTask->pack_url) {
- $this->updateWritingDownloadStatus($params['studentIds'],$ewId);
- echo json_encode(array("success" => 1, "downloadPath" => $packTask->pack_url));
- exit;
- }
- }
- //**************** Step-3 根据接口获取文件大小来判断走原有接口打包流程还是走脚本任务 ************//
- $sizeRs = Curl::post($apiUrl . "/rest/download_file_size/index", array('path_arr' => $pathArr));
- if (!($sizeRs = json_decode($sizeRs))) {
- echo json_encode(array("success" => 0, "message" => "请求接口失败"));
- exit;
- }
- if (isset($sizeRs->size)) {
- //************ Step-3-1 大于限定值 发送任务到后台打包 ******//
- if (Yii::app()->params["pack_product_file_limit"] < $sizeRs->size) {
- $packProductModel = new BusinessPackProductTask();
- $packProductModel->school_id = $this->schoolId;
- $packProductModel->auth_username = $this->authUsername;
- $packProductModel->product_type = ProductDownload::PRODUCT_TYPE_WRITING;
- $packProductModel->product_name = $msg['name'] . '写作宝';
- $packProductModel->subject_id = $this->subjectId;
- $packProductModel->class_id = $msg['class_id'];
- $packProductModel->class_name = $classinfo['class_name'];
- $packProductModel->unique_key = $ewId;
- $packProductModel->student_count = count($params['studentIds']);
- $packProductModel->pack_json = json_encode($params);
- $packProductModel->pack_api_url = $apiUrl . "/rest/download_week_pdf/index";
- $packProductModel->create_time = time();
- $packProductModel->save();
- $this->updateWritingDownloadStatus($params['studentIds'],$ewId);
- echo json_encode(array("success" => 3, "message" => ""));
- exit;
- } else {
- $rs = Curl::post($apiUrl . "/rest/download_week_pdf/index", $params);
- if (!($rs = json_decode($rs))) {
- $rs = array(
- "success" => 0,
- "message" => "请求接口失败",
- );
- } else {
- //更新下载时间
- if ($rs->success == 1 || $rs->success == 2) {
- $this->updateWritingDownloadStatus($params['studentIds'],$ewId);
- }
- }
- echo json_encode($rs);
- exit;
- }
- } else {
- echo json_encode(array("success" => 0, "message" => $sizeRs->message));
- exit;
- }
- }
- /**
- * 更新写作宝下载状态
- * @param $studentsIds
- * @param $weekId
- */
- private function updateWritingDownloadStatus($studentsIds, $weekId)
- {
- $time = time();
- $sql = "update english_writing_student set is_week_download = 1,week_download_time={$time} where ew_id = '{$weekId}' and student_id in (" . implode(',', $studentsIds) . ") and week_download_time = 0";
- $this->sConn->createCommand($sql)->execute();
- }
- /**
- * 添加写作宝下载任务
- */
- public function actionAddWritingTask()
- {
- $weekId = (string)Req::get("ew_id");
- $studentsIds = Req::get("studentsIds");
- if (!$weekId) {
- echo json_encode(array("success" => 0, "message" => "缺少参数"));
- exit();
- }
- $sql = "select class_id,grade,create_time,semester_id,name from english_writing where ew_id = '{$weekId}'";
- $msg = $this->sConn->createCommand($sql)->queryRow();
- //*****获取生成的学生***//
- $productDownload = new ProductDownload(ProductDownload::PRODUCT_TYPE_WRITING);
- $generateStu = $productDownload->getGenerateStu('english_writing_student', 'ew_id', 'week_pdf_path', 'is_week_pdf', $weekId, $studentsIds);
- if(!$generateStu){
- echo json_encode(array("success" => 0, "message" => "无生成的学生"));exit();
- }
- $params['studentIds'] = $generateStu['studentIds'];
- $Sem = new SSemester();
- $code = $Sem->conn->createQuery()
- ->from('semester')
- ->where("semester_id = '" . $msg['semester_id'] . "'")
- ->limit(1)
- ->query()
- ->read();
- $classinfo = ClassModel::model()->find("class_id=:id", array(":id" => $msg['class_id']));
- $intarr = array(
- "schoolId" => $this->schoolId,
- "clazzId" => $msg['class_id'],
- "semester" => $code['refer_code'],
- "grade" => $msg['grade'],
- "students" => $studentsIds,
- "examTime" => $msg['create_time'],
- "classify" => 32,
- "subject" => 8
- );
- //************ Step-1 判断是否有订单 *************//
- $params = array();
- $apiUrl = isset(Yii::app()->params["improve_url"][$this->schoolGroupId]) ? Yii::app()->params["improve_url"][$this->schoolGroupId] : null;
- if (!$apiUrl) {
- echo json_encode(array("success" => 0, "message" => "接口配置信息错误"));
- exit();
- }
- if (Yii::app()->params["limit_open"]) {
- if (Yii::app()->params["limit_open"]) {
- $params["studentIds"] = $productDownload->getCanDownloadStu($params['studentIds'], $intarr, $this->schoolId);
- }
- }
- //*******产品接口参数******//
- $params['ewId'] = $weekId;
- $params['schoolId'] = $this->schoolId;
- $params['type'] = 7;
- $packProductModel = new BusinessPackProductTask();
- $packProductModel->school_id = $this->schoolId;
- $packProductModel->auth_username = $this->authUsername;
- $packProductModel->product_type = ProductDownload::PRODUCT_TYPE_WRITING;
- $packProductModel->product_name = $msg['name'] . '写作宝';
- $packProductModel->subject_id = $this->subjectId;
- $packProductModel->class_id = $msg['class_id'];
- $packProductModel->class_name = $classinfo['class_name'];
- $packProductModel->unique_key = $weekId;
- $packProductModel->student_count = count($params['studentIds']);
- $packProductModel->pack_json = json_encode($params);
- $packProductModel->pack_api_url = $apiUrl . "/rest/download_week_pdf/index";
- $packProductModel->create_time = time();
- $packProductModel->save();
- $this->updateWritingDownloadStatus($params['studentIds'],$weekId);
- echo json_encode(array("success" => 3, "message" => ""));
- exit;
- }
- /**
- * 批量写作宝下载
- */
- public function actionBatchWriting()
- {
- $json_params = file_get_contents('php://input');
- $params_arr = json_decode($json_params, true);
- $notFound = 0;
- foreach ($params_arr as $param) {
- $weekId = isset($param['ew_id']) ? (string)$param['ew_id'] : null;
- $params = array();
- if (!$weekId) {
- echo json_encode(array("success" => 0, "message" => "缺少参数"));
- exit();
- }
- //*****获取生成的学生***//
- $productDownload = new ProductDownload(ProductDownload::PRODUCT_TYPE_WRITING);
- $generateStu = $productDownload->getGenerateStu('english_writing_student', 'ew_id', 'week_pdf_path', 'is_week_pdf', $weekId, array());
- if(!$generateStu){
- $notFound++;
- continue;
- }
- $params['studentIds'] = $generateStu['studentIds'];
- $apiUrl = isset(Yii::app()->params["improve_url"][$this->schoolGroupId]) ? Yii::app()->params["improve_url"][$this->schoolGroupId] : null;
- if (!$apiUrl) {
- echo json_encode(array("success" => 0, "message" => "接口配置信息错误"));
- exit();
- }
- $sql = "select class_id,grade,create_time,semester_id,name from english_writing where ew_id = '{$weekId}'";
- $msg = $this->sConn->createCommand($sql)->queryRow();
- $classinfo = ClassModel::model()->find("class_id=:id", array(":id" => $msg['class_id']));
- $params['schoolId'] = $this->schoolId;
- $params['type'] = 7;
- $params['ewId'] = $weekId;
- //**************** Step-2 判断是否已经存在下载任务 ********************//
- $packTask = $this->getExistTask($weekId, $msg['class_id'], ProductDownload::PRODUCT_TYPE_WRITING, count($params["studentIds"]));
- if($packTask){
- continue;
- }
- $packProductModel = new BusinessPackProductTask();
- $packProductModel->school_id = $this->schoolId;
- $packProductModel->auth_username = $this->authUsername;
- $packProductModel->product_type = ProductDownload::PRODUCT_TYPE_WRITING;
- $packProductModel->product_name = $msg['name'] . '写作宝';
- $packProductModel->subject_id = $this->subjectId;
- $packProductModel->class_id = $msg['class_id'];
- $packProductModel->class_name = $classinfo['class_name'];
- $packProductModel->unique_key = $weekId;
- $packProductModel->student_count = count($params['studentIds']);
- $packProductModel->pack_json = json_encode($params);
- $packProductModel->pack_api_url = $apiUrl . "/rest/download_week_pdf/index";
- $packProductModel->create_time = time();
- $packProductModel->save();
- $this->updateWritingDownloadStatus($params['studentIds'], $weekId);
- }
- if($notFound == count($params_arr)){
- echo json_encode(array("success" => 0, "message" => "无生成的学生"));exit();
- }
- echo json_encode(array("success" => 1, "message" => "success"));
- }
- /**
- * 下载写作宝检测卡
- */
- public function actionGetWritingCard()
- {
- $ewId = (string)Req::get("ew_id");
- $params = array();
- if (!$ewId) {
- echo json_encode(array("success" => 0, "message" => "缺少参数"));
- exit();
- }
- $sql = "select student_id from english_writing_student where ew_id = '{$ewId}' and is_card_pdf = 1";
- $stuArr = $this->getDbConnection()->createCommand($sql)->queryAll();
- if ($stuArr) {
- foreach ($stuArr as $k => $v) {
- $params['studentIds'][] = $v['student_id'];
- }
- }else{
- echo json_encode(array("success" => 0, "message" => "未找到生成的检测卡"));
- exit();
- }
- $apiUrl = isset(Yii::app()->params["improve_url"][$this->schoolGroupId]) ? Yii::app()->params["improve_url"][$this->schoolGroupId] : null;
- if (!$apiUrl) {
- echo json_encode(array("success" => 0, "message" => "接口配置信息错误"));
- exit();
- }
- $params['schoolId'] = $this->schoolId;
- $params['type'] = 7;
- $params['ewId'] = $ewId;
- $params['isMwCard'] = 1;
- $rs = Curl::post($apiUrl . "/rest/download_week_pdf/index", $params);
- if (!($rs = json_decode($rs))) {
- $rs = array(
- "success" => 0,
- "message" => "请求接口失败",
- );
- } else {
- //更新下载时间
- if ($rs->success == 1 || $rs->success == 2) {
- $time = time();
- $sql = "update english_writing_student set is_card_download = 1,card_download_time={$time} where ew_id = '{$ewId}' and student_id in (" . implode(',', $params['studentIds']) . ")";
- $this->sConn->createCommand($sql)->execute();
- }
- }
- echo json_encode($rs);
- exit;
- }
- }
|