123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824 |
- <?php
- namespace Api\Controller;
- use Common\Controller\ApiController;
- class WordsController extends ApiController {
- public function __construct(){
- parent::__construct();
- }
- //获取单词列表
- public function index(){
- $sort = I('sort',1);
- $lastId = I('last_id',0);
- $courseId = I('course_id');
- $pageSize = I('page_size',20);
- $keyword = I('keyword','');
- if (empty($courseId) || $courseId<1000000){
- $data = array('code'=>1,'msg'=>'课程ID错误');
- $this->returnData($data);exit;
- }
- $condition = array('is_delete'=>1,'course_id'=>$courseId);
- if (!empty($keyword)){
- $condition['words_name'] = array('LIKE','%'.$keyword.'%');
- }
- $orderby = '';
- if ($sort==1){
- $orderby = 'words_id asc';
- }else if($sort==2){
- $wordsSortInfo = M('WordsSort')->where(array('course_id'=>$courseId,'user_id'=>$this->userId))->field('word_ids')->find();
- if ($wordsSortInfo==NULL){
- $data = array('code'=>0,'msg'=>'占未设置乱序','data'=>array());
- $this->returnData($data);exit;
- }
- }
- if ($lastId>0 && $sort==1){
- $condition['words_id'] = array('LT',$lastId);
- }
- $courseInfo = M('Course')->where(array('course_id'=>$courseId,'is_show'=>1))->field('course_id,user_id,course_name,course_source,operate_dt')->find();
- if ($courseInfo['course_name']=='易错单词'){
- if ($lastId>0){
- $data = array('code'=>0,'msg'=>'无更多数据','data'=>array());
- $this->returnData($data);exit;
- }
- $errorInfo = M('Test')->where(array('user_id'=>$this->userId))->order('test_id desc')->field('words_error')->find();
- if ($errorInfo==NULL){
- $data = array('code'=>0,'msg'=>'暂无错误单词','data'=>array());
- $this->returnData($data);exit;
- }
- $res = M('Words')->where(array('words_id'=>array('IN',$errorInfo['words_error'])))->order($orderby)->select();
- }else{
- //$join = 'w LEFT JOIN t_words_notepad wn ON w.words_id=wn.words_id';
- if ($sort==1){
- $res = M('Words')->where($condition)->order($orderby)->limit($pageSize)->select();
- }else if($sort==2){
- $wordIdArr = explode(',', $wordsSortInfo['word_ids']);
- if ($lastId!=0){
- $key = array_search($lastId,$wordIdArr);
- $key = $key+1;
- }else{
- $key = 0;
- }
- $wordsIdPage = array_slice($wordIdArr,$key,$pageSize);
- if (empty($wordsIdPage)){
- $data = array('code'=>0,'msg'=>'无更多数据','data'=>array());
- $this->returnData($data);exit;
- }
- $wordsIdpageStr = implode(',', $wordsIdPage);
- $condition['words_id'] = array('IN',$wordsIdPage);
- $orderby = 'field(words_id,'. $wordsIdpageStr .')';
- $res = M('Words')->where($condition)->order($orderby)->select();
- //echo M('Words')->getLastSql();exit;
- }
- }
- $wordsList = array();
- foreach ($res as $row){
- $wnRes = M('WordsNotepad')->where(array('words_id'=>$row['words_id'],'user_id'=>$this->userId))->field('wn_content')->find();
- $wnContent = '';
- if ($wnRes!=NULL){
- $wnContent = $wnRes['wn_content'];
- }
- unset($row['is_delete']);
- unset($row['words_source']);
- $row['wn_content'] = $wnContent;
- $wordsList[] = $row;
- /* $wordsList[] = array(
- 'words_id' => $row['words_id'],
- 'course_id' => $row['course_id'],
- 'words_name' => $row['words_name'],
- 'wn_content'=>$wnContent,
- 'operate_dt' => $row['operate_dt'],
- 'words_text' => $this->getWordsText($row),
- ); */
- }
- if ($res==NULL&&$lastId>0){
- $data = array('code'=>0,'msg'=>'无更多数据','data'=>array());
- $this->returnData($data);exit;
- }
- if ($lastId==0){
- if ($courseInfo['user_id']!=$this->userId){
- $fansInfo = M('Fans')->where(array('user_id'=>$this->userId,'fans_user_id'=>$courseInfo['user_id']))->field('fans_id')->find();
- $courseInfo['is_fans'] = $fansInfo==NULL?0:1;
- /* if ($courseInfo['course_source']==1){
- $courseInfo['user_name'] = '系统课程';
- $courseInfo['user_icon'] = C('DOMAIN').'/Public/img/admin_icon.png';
- }else{
- $userInfo = M('User')->where(array('user_id'=>$courseInfo['user_id']))->field('user_name,user_icon,user_sex')->find();
- $courseInfo['user_name'] = $userInfo['user_name'];
- $courseInfo['user_icon'] = $userInfo['user_icon'];
- } */
- }else{
- $courseInfo['is_fans'] = 2;
- }
- $userInfo = M('User')->where(array('user_id'=>$courseInfo['user_id']))->field('user_id,user_name,user_icon,user_sex')->find();
- $courseInfo['user_id'] = $userInfo['user_id'];
- $courseInfo['user_sex'] = $userInfo['user_sex'];
- $courseInfo['user_icon'] = $userInfo['user_icon'];
- $courseInfo['user_name'] = $userInfo['user_name'];
- }else{
- $courseInfo = new \stdClass();
- }
- $data = array('code'=>0,'msg'=>'','data'=>$wordsList);
- if ($lastId==0){
- $data['info'] = $courseInfo;
- }
- $this->returnData($data);exit;
- }
-
- //获取指定章节单词列表
- public function part(){
- $sort = I('sort',1);
- $courseId = I('course_id');
- $partNum = I('part_num');
- if (empty($partNum) || $partNum<=0){
- $data = array('code'=>10,'msg'=>'章节ID错误');
- $this->returnData($data);exit;
- }
- if (empty($courseId) || $courseId<1000000){
- $data = array('code'=>1,'msg'=>'课程ID错误');
- $this->returnData($data);exit;
- }
- $partInfo = M('UserWords')->where(array('course_id'=>$courseId,'user_id'=>$this->userId))->field('uw_id,user_part,part_num')->find();
- if ($partInfo==NULL){
- $courseInfo = M('Course')->where(array('course_id'=>$courseId,'is_delete'=>1))->field('course_num')->find();
- $partInfo['user_part'] = 15;
- $partInfo['part_num'] = ceil($courseInfo['course_num']/$partInfo['user_part']);
- }
- if (empty($partInfo['part_num'])){
- $courseInfo = M('Course')->where(array('course_id'=>$courseId,'is_delete'=>1))->field('course_num')->find();
- $partInfo['user_part'] = 15;
- $partInfo['part_num'] = ceil($courseInfo['course_num']/$partInfo['user_part']);
- M('UserWords')->where(array('uw_id'=>$partInfo['uw_id']))->save(array('part_num'=>$partInfo['part_num']));
- }
- if ($partNum>$partInfo['part_num']){
- $data = array('code'=>10,'msg'=>'章节ID错误');
- $this->returnData($data);exit;
- }
- $wordsSortInfo = M('WordsSort')->where(array('course_id'=>$courseId,'user_id'=>$this->userId))->field('word_ids')->find();
- if ($wordsSortInfo==NULL){
- $condition = array('is_delete'=>1,'course_id'=>$courseId);
- $orderby = '';
- if ($sort==1){
- $orderby = 'words_id asc';
- }
- $condition['user_id'] = $this->userId;
- //$join = 'w LEFT JOIN t_words_notepad wn ON w.words_id=wn.words_id';
- $res =M('Words')->where($condition)->order($orderby)->limit(($partNum-1)*$partInfo['user_part'], $partInfo['user_part'])->select();
- }else{
- $wordIdArr = explode(',', $wordsSortInfo['word_ids']);
- $wordsIdPage = array_slice($wordIdArr,($partNum-1)*$partInfo['user_part'], $partInfo['user_part']);
- if (empty($wordsIdPage)){
- $data = array('code'=>0,'msg'=>'章节ID错误','data'=>array());
- $this->returnData($data);exit;
- }
- $wordsIdpageStr = implode(',', $wordsIdPage);
- $condition['words_id'] = array('IN',$wordsIdPage);
- $orderby = 'field(words_id,'. $wordsIdpageStr .')';
- $res = M('Words')->where($condition)->order($orderby)->select();
- }
- $wordsList = array();
- foreach ($res as $k=>$row){
- $wnRes = M('WordsNotepad')->where(array('words_id'=>$row['words_id'],'user_id'=>$this->userId))->field('wn_content')->find();
- $wnContent = '';
- if ($wnRes!=NULL){
- $wnContent = $wnRes['wn_content'];
- }
- unset($row['is_delete']);
- unset($row['words_source']);
- $row['wn_content'] = $wnContent;
- $wordsList[] = $row;
- }
- $data = array('code'=>0,'msg'=>'','data'=>$wordsList);
- $this->returnData($data);exit;
- }
-
- //添加编辑单词
- public function edit(){
- $courseId = I('course_id');
- $wordsId = I('words_id','');
- $wordsName = I('words_name','');
- if (empty($courseId) || $courseId<1000000){
- $data = array('code'=>1,'msg'=>'课程ID错误');
- $this->returnData($data);exit;
- }
-
- //判断单词是否重复
- if (empty($wordsId)){
- $wordsInfo = M('Words')->where(array('course_id'=>$courseId,'words_name'=>$wordsName))->field('words_id,words_name')->find();
- if ($wordsInfo!=NUll){
- $data = array('code'=>1,'msg'=>'该课程已经添加过该单词,请勿重复添加!');
- $this->returnData($data);exit;
- }
- }
-
- if (!empty($wordsId)){
- $wordsInfo = M('Words')->where(array('course_id'=>$courseId,'words_name'=>$wordsName))->field('words_id,words_name')->find();
- if ($wordsInfo!=NUll && $wordsInfo['words_id']!=$wordsId){
- $data = array('code'=>1,'msg'=>'该课程已经添加过该单词,请勿重复添加!');
- $this->returnData($data);exit;
- }
- }
- $courseInfo = M('Course')->where(array('course_id'=>$courseId,'is_delete'=>1))->field('course_id,user_id,course_name,course_num,course_status,course_source')->find();
- if ($courseInfo==NULL){
- $data = array('code'=>1,'msg'=>'课程ID错误');
- $this->returnData($data);exit;
- }
- $oldCourseInfo = $courseInfo;
- if ($courseInfo['course_status']==3 || $courseInfo['user_id']!=$this->userId){
- //创建新课程,并把就课程里面的所有的单词添加到新创建的课程中
- $userCourseInfo = M('Course')->where(array('user_id'=>$this->userId))->field('operate_dt')->find();
- if($userCourseInfo!=NULL){
- $time = time() - $userCourseInfo['operate_dt'];
- if ($time<C('COURSE_TIME')){
- $data = array('code'=>1,'msg'=>'3分钟内无法连续创建课程');
- $this->returnData($data);exit;
- }
- }
- $oldCourseId = $courseInfo['course_id'];
- if ($courseInfo['user_id']==$this->userId){
- M('Course')->where(array('course_id'=>$oldCourseId,'user_id'=>$this->userId))->save(array('is_show'=>2));
- }else if($courseInfo['course_source']==1){
- //系统课程
- $sysCourse = M('UserWords')->where(array('course_id'=>$oldCourseId,'user_id'=>$this->userId))->field('uw_id')->find();
- if ($sysCourse==NULL){
- $userInfo = M('User')->where(array('user_id'=>$this->userId))->field('user_part')->find();
- if ($userInfo==NULL || empty($userInfo['user_part'])){
- $userPart = 15;
- $partNum =ceil($courseInfo['course_num']/15);
- }else{
- $userPart = $userInfo['user_part'];
- $partNum =ceil($courseInfo['course_num']/$userInfo['user_part']);
- }
- $sysCourseInfo = array(
- 'user_id'=>$this->userId,
- 'course_id'=>$courseId,
- 'user_part'=>$userPart,
- 'part_num'=>$partNum,
- 'is_show'=>2,
- 'operate_dt'=>time(),
- );
- M('UserWords')->add($sysCourseInfo);
- }else{
- M('UserWords')->where(array('uw_id'=>$sysCourse['uw_id']))->save(array('is_show'=>2));
- }
- }
- //创建课程
- unset($courseInfo['course_id']);
- $courseInfo['course_status'] = 1;
- $courseInfo['operate_dt'] = time();
- $courseInfo['user_id'] = $this->userId;
- $courseInfo['course_source']=2;
- $courseInfo['course_name'] = $courseInfo['course_name'];//$this->getCourseName($courseInfo['course_name']);
- $courseId = M('Course')->add($courseInfo);
- $userWordsInfo = M('UserWords')->where(array('course_id'=>$oldCourseId,'user_id'=>$this->userId))->field('uw_id')->find();
- if ($userWordsInfo==NULL){
- $userInfo = M('User')->where(array('user_id'=>$this->userId))->field('user_part')->find();
- if ($userInfo==NULL || empty($userInfo['user_part'])){
- $userPart = 15;
- $partNum =ceil($courseInfo['course_num']/15);
- }else{
- $userPart = $userInfo['user_part'];
- $partNum =ceil($courseInfo['course_num']/$userInfo['user_part']);
- }
- $saveCourseWordsInfo = array(
- 'user_id'=>$this->userId,
- 'course_id'=>$courseId,
- 'user_part'=>$userPart,
- 'part_num'=>$partNum,
- 'operate_dt'=>time(),
- );
- M('UserWords')->add($saveCourseWordsInfo);
- }else{
- M('UserWords')->where(array('uw_id'=>$userWordsInfo['uw_id']))->save(array('course_id'=>$courseId));
- //M('UserWords')->where(array('course_id'=>$oldCourseId,'user_id'=>$this->userId))->save(array('course_id'=>$courseId));
- }
- //复制单词
- $this->copyWords($oldCourseId,$courseId);
- }else{
- $userWordsInfo = M('UserWords')->where(array('course_id'=>$courseId,'user_id'=>$this->userId))->field('uw_id')->find();
- if ($userWordsInfo==NULL){
- $userInfo = M('User')->where(array('user_id'=>$this->userId))->field('user_part')->find();
- if ($userInfo==NULL || empty($userInfo['user_part'])){
- $userPart = 15;
- $partNum =ceil($courseInfo['course_num']/15);
- }else{
- $userPart = $userInfo['user_part'];
- $partNum =ceil($courseInfo['course_num']/$userInfo['user_part']);
- }
- $saveCourseWordsInfo = array(
- 'user_id'=>$this->userId,
- 'course_id'=>$courseId,
- 'user_part'=>$userPart,
- 'part_num'=>$partNum,
- 'operate_dt'=>time(),
- );
- M('UserWords')->add($saveCourseWordsInfo);
- }
- }
-
- $wordsKeys = array('n'=>'words_n','pron'=>'words_pron','adj'=>'words_adj','num'=>'words_num','v'=>'words_v','adv'=>'words_adv','art'=>'words_art',
- 'prep'=>'words_prep','conj'=>'words_conj','int'=>'words_int','vt'=>'words_vt','vi'=>'words_vi','other'=>'words_other',);
- $saveData['course_id'] = $courseId;
- $saveData['words_name'] = I('words_name','');
- /* $wordsVoice = I('words_voice','');
- $wordsRead = I('words_read','');
- if (substr($wordsVoice,-1)==','){
- $wordsVoice = substr($wordsVoice, 0, -1);
- }
- $wordsVoiceArr = explode(',', $wordsVoice);
- $wordsReadArr = explode(',', $wordsRead);
- for ($i=0;$i<count($wordsVoiceArr);$i++){
- $j = $i+1;
- $saveData['words_read'.$j] = $wordsReadArr[$i];
- $saveData['words_voice'.$j] = $wordsVoiceArr[$i];
- } */
- $saveData['words_voice1'] = I('words_voice1','');
- $saveData['words_read1'] = I('words_read1','');
- $wordsVals = array_values($wordsKeys);
- $checkWords = true;
- foreach ($wordsVals as $keys){
- $saveData[$keys] = I($keys,'');
- if (!empty($saveData[$keys])){
- $checkWords = false;
- }
- }
- if (empty($saveData['words_name'])){
- $data = array('code'=>1,'msg'=>'单词不能为空');
- $this->returnData($data);exit;
- }
- if (empty($saveData['words_voice1'])){
- $data = array('code'=>1,'msg'=>'读音不能为空');
- $this->returnData($data);exit;
- }
- if (empty($saveData['words_read1'])){
- $data = array('code'=>1,'msg'=>'音标不能为空');
- $this->returnData($data);exit;
- }
- if ($checkWords){
- $data = array('code'=>1,'msg'=>'中文释义不能为空');
- $this->returnData($data);exit;
- }
- $saveData['jz_en1'] = I('jz_en1','');
- $saveData['jz_cn1'] = I('jz_cn1','');
- $saveData['jz_en2'] = I('jz_en2','');
- $saveData['jz_cn2'] = I('jz_cn2','');
- $saveData['jz_en3'] = I('jz_en3','');
- $saveData['jz_cn3'] = I('jz_cn3','');
- $saveData['similar_cn'] = I('similar_cn','');
- $saveData['similar_en'] = I('similar_en','');
- $saveData['words_similar'] = I('words_similar');
- $saveData['annotation_cn'] = I('annotation_cn','');
- if (!empty($saveData['jz_en1']) && strpos(strtolower($saveData['jz_en1']), $saveData['words_name'])===FALSE){
- $data = array('code'=>1,'msg'=>'您添加的例句1不包含对应单词,请仔细核对后提交');
- $this->returnData($data);exit;
- }
- if (!empty($saveData['jz_en2']) && strpos(strtolower($saveData['jz_en2']), $saveData['words_name'])===FALSE){
- $data = array('code'=>1,'msg'=>'您添加的例句2不包含对应单词,请仔细核对后提交交');
- $this->returnData($data);exit;
- }
- if (!empty($saveData['jz_en3']) && strpos(strtolower($saveData['jz_en3']), $saveData['words_name'])===FALSE){
- $data = array('code'=>1,'msg'=>'您添加的例句3不包含对应单词,请仔细核对后提交');
- $this->returnData($data);exit;
- }
- if (!empty($saveData['jz_en1']) && empty($saveData['jz_cn1'])){
- $data = array('code'=>1,'msg'=>'您添加的例句1释义不能为空,请仔细核对后提交');
- $this->returnData($data);exit;
- }
- if (!empty($saveData['jz_en2']) && empty($saveData['jz_cn2'])){
- $data = array('code'=>1,'msg'=>'您添加的例句1释义不能为空,请仔细核对后提交');
- $this->returnData($data);exit;
- }
- if (!empty($saveData['jz_en3']) && empty($saveData['jz_cn3'])){
- $data = array('code'=>1,'msg'=>'您添加的例句1释义不能为空,请仔细核对后提交');
- $this->returnData($data);exit;
- }
-
- if (!empty($saveData['words_similar']) && strlen($saveData['words_similar'])>50){
- $data = array('code'=>1,'msg'=>'英文释义不能大于50个字节');
- $this->returnData($data);exit;
- }
-
- if (!empty($saveData['similar_cn']) && strlen($saveData['similar_cn'])>50){
- $data = array('code'=>1,'msg'=>'近义词不能大于50个字节');
- $this->returnData($data);exit;
- }
- if (!empty($saveData['similar_en']) && strlen($saveData['similar_en'])>240){
- $data = array('code'=>1,'msg'=>'英文释义不能大于240个字节');
- $this->returnData($data);exit;
- }
- $saveData['operate_dt'] = time();
- if ($wordsId){
- if ($oldCourseInfo['course_status']==3 || $oldCourseInfo['user_id']!=$this->userId){
- //$wordsId = M('Words')->add($saveData);
- $wordsOldInfo = M('Words')->where(array('words_id'=>$wordsId,))->field('words_id,words_name')->find();
- $wordsNewInfo = M('Words')->where(array('course_id'=>$saveData['course_id'],'words_name'=>$wordsOldInfo['words_name'],))->field('words_id')->find();
- M('Words')->where(array('words_id'=>$wordsNewInfo['words_id']))->save($saveData);
- $returnWordsId = $wordsNewInfo['words_id'];
- }else{
- M('Words')->where(array('words_id'=>$wordsId))->save($saveData);
- $returnWordsId = $wordsId;
- }
- }else{
- $wordsId = M('Words')->add($saveData);
- $wordsSortInfo = M('WordsSort')->where(array('course_id'=>$oldCourseId,'user_id'=>$this->userId))->field('sort_id,word_ids')->find();
- if ($wordsSortInfo != NULL){
- $wordsSortInfo['word_ids'] = $wordsSortInfo['word_ids'].','.$wordsId;
- M('WordsSort')->where(array('sort_id'=>$wordsSortInfo['sort_id']))->save(array('word_ids'=>$wordsSortInfo['word_ids']));
- }
- M('Course')->where(array('course_id'=>$courseId))->setInc('course_num');
- $returnWordsId = $wordsId;
- }
- $join = 'uw LEFT JOIN t_course c ON uw.course_id=c.course_id';
- $resUserWords = M('UserWords')->join($join)->where(array('c.course_id'=>$saveData['course_id'],'uw.user_id'=>$this->userId,))->field('uw.course_id,uw.user_id,course_join,course_num,course_name,uw_id,uw.user_part,uw.part_num')->find();
- $resUserWords['words_id'] = $returnWordsId;
- $data = array('code'=>0,'msg'=>'单词操作成功','data'=>$resUserWords);
- $this->returnData($data);exit;
- /* $data = array('code'=>0,'msg'=>'单词操作成功','data'=>array('words_id'=>$wordsId,'course_id'=>$courseId));
- $this->returnData($data);exit; */
- }
-
- //把其他课程里面的单词添加到指定课程中
- public function addWordsToCourse(){
- $wordsId = I('words_id');
- $courseId = I('course_id');
- if (empty($wordsId)){
- $data = array('code'=>1,'msg'=>'单词ID错误');
- $this->returnData($data);exit;
- }
- if (empty($courseId) || $courseId<1000000){
- $data = array('code'=>1,'msg'=>'课程ID错误');
- $this->returnData($data);exit;
- }
- $wordsInfo = M('Words')->where(array('words_id'=>$wordsId,'is_delete'=>1))->find();
- if ($wordsInfo!=NULL && $wordsInfo['course_id']==$courseId){
- $data = array('code'=>1,'msg'=>'已是该课程单词');
- $this->returnData($data);exit;
- }
- $courseInfo = M('Course')->where(array('course_id'=>$courseId,'is_delete'=>1))->field('course_id,user_id,course_name,course_num,course_status')->find();
- if ($courseInfo==NULL){
- $data = array('code'=>1,'msg'=>'课程ID错误');
- $this->returnData($data);exit;
- }
-
- if ($courseInfo['course_status']==3 || $courseInfo['user_id']!=$this->userId){
- //创建新课程,并把就课程里面的所有的单词添加到新创建的课程中
- $userCourseInfo = M('Course')->where(array('user_id'=>$this->userId))->field('operate_dt')->find();
- if($userCourseInfo!=NULL){
- $time = time() - $userCourseInfo['operate_dt'];
- if ($time<C('COURSE_TIME')){
- $data = array('code'=>1,'msg'=>'3分钟内无法连续创建课程');
- $this->returnData($data);exit;
- }
- }
- $oldCourseId = $courseInfo['course_id'];
- //创建课程
- unset($courseInfo['course_id']);
- $courseInfo['course_status'] = 1;
- $courseInfo['operate_dt'] = time();
- $courseInfo['user_id'] = $this->userId;
- $courseInfo['course_source']=2;
- $courseInfo['course_name'] = $this->getCourseName($courseInfo['course_name']);
- $courseId = M('Course')->add($courseInfo);
- //复制单词
- $this->copyWords($oldCourseId,$courseId);
- }
- $wordsInfo['operate_dt'] = time();
- $wordsInfo['course_id'] = $courseId;
- $wordsInfo['words_source'] = 2;
- unset($wordsInfo['words_id']);
- M('Words')->add($wordsInfo);
- M('Course')->where(array('course_id'=>$courseId))->setInc('course_num');
- $data = array('code'=>0,'msg'=>'单词添加成功','data'=>'');
- $this->returnData($data);exit;
- }
-
- //删除单词
- public function del(){
- $wordsId = I('words_id');
- $courseId = I('course_id');
- if (empty($wordsId)){
- $data = array('code'=>1,'msg'=>'单词ID错误');
- $this->returnData($data);exit;
- }
- if (empty($courseId) || $courseId<1000000){
- $data = array('code'=>1,'msg'=>'课程ID错误');
- $this->returnData($data);exit;
- }
- $wordsInfo = M('Words')->where(array('words_id'=>$wordsId,'is_delete'=>1))->find();
- if ($wordsInfo!=NULL && $wordsInfo['course_id']!=$courseId){
- $data = array('code'=>1,'msg'=>'不是该课程单词');
- $this->returnData($data);exit;
- }
- $courseInfo = M('Course')->where(array('course_id'=>$courseId,'is_delete'=>1))->field('course_id,user_id,course_name,course_num,course_status,course_source')->find();
- if ($courseInfo==NULL){
- $data = array('code'=>1,'msg'=>'课程ID错误');
- $this->returnData($data);exit;
- }
- $oldCourseInfo = $courseInfo;
- if ($courseInfo['course_status']==3 || $courseInfo['user_id']!=$this->userId){
- //创建新课程,并把就课程里面的所有的单词添加到新创建的课程中
- $userCourseInfo = M('Course')->where(array('user_id'=>$this->userId))->field('operate_dt')->find();
- if($userCourseInfo!=NULL){
- $time = time() - $userCourseInfo['operate_dt'];
- if ($time<C('COURSE_TIME')){
- $data = array('code'=>1,'msg'=>'3分钟内无法连续创建课程');
- $this->returnData($data);exit;
- }
- }
- $oldCourseId = $courseInfo['course_id'];
- if ($courseInfo['user_id']==$this->userId){
- M('Course')->where(array('course_id'=>$oldCourseId,'user_id'=>$this->userId))->save(array('is_show'=>2));
- }else if($courseInfo['course_source']==1){
- //系统课程
- $sysCourse = M('UserWords')->where(array('course_id'=>$oldCourseId,'user_id'=>$this->userId))->field('uw_id')->find();
- if ($sysCourse==NULL){
- $userInfo = M('User')->where(array('user_id'=>$this->userId))->field('user_part')->find();
- if ($userInfo==NULL || empty($userInfo['user_part'])){
- $userPart = 15;
- $partNum =ceil($courseInfo['course_num']/15);
- }else{
- $userPart = $userInfo['user_part'];
- $partNum =ceil($courseInfo['course_num']/$userInfo['user_part']);
- }
- $sysCourseInfo = array(
- 'user_id'=>$this->userId,
- 'course_id'=>$courseId,
- 'user_part'=>$userPart,
- 'part_num'=>$partNum,
- 'is_show'=>2,
- 'operate_dt'=>time(),
- );
- M('UserWords')->add($sysCourseInfo);
- }else{
- M('UserWords')->where(array('uw_id'=>$sysCourse['uw_id']))->save(array('is_show'=>2));
- }
- }
- //创建课程
- unset($courseInfo['course_id']);
- $courseInfo['course_status'] = 1;
- $courseInfo['operate_dt'] = time();
- $courseInfo['user_id'] = $this->userId;
- $courseInfo['course_source']=2;
- $courseInfo['course_name'] = $courseInfo['course_name'];//$this->getCourseName($courseInfo['course_name']);
- $courseId = M('Course')->add($courseInfo);
- $userWordsInfo = M('UserWords')->where(array('course_id'=>$courseId,'user_id'=>$this->userId))->field('uw_id')->find();
- if ($userWordsInfo==NULL){
- $userInfo = M('User')->where(array('user_id'=>$this->userId))->field('user_part')->find();
- if ($userInfo==NULL || empty($userInfo['user_part'])){
- $userPart = 15;
- $partNum =ceil($courseInfo['course_num']/15);
- }else{
- $userPart = $userInfo['user_part'];
- $partNum =ceil($courseInfo['course_num']/$userInfo['user_part']);
- }
- $saveCourseWordsInfo = array(
- 'user_id'=>$this->userId,
- 'course_id'=>$courseId,
- 'user_part'=>$userPart,
- 'part_num'=>$partNum,
- 'operate_dt'=>time(),
- );
- M('UserWords')->add($saveCourseWordsInfo);
- }else{
- M('UserWords')->where(array('uw_id'=>$userWordsInfo['uw_id']))->save(array('course_id'=>$courseId));
- //M('UserWords')->where(array('course_id'=>$oldCourseId,'user_id'=>$this->userId))->save(array('course_id'=>$courseId));
- }
- //复制单词
- $this->copyWords($oldCourseId,$courseId,$wordsId);
- }else{
- $userWordsInfo = M('UserWords')->where(array('course_id'=>$courseId,'user_id'=>$this->userId))->field('uw_id')->find();
- if ($userWordsInfo==NULL){
- $userInfo = M('User')->where(array('user_id'=>$this->userId))->field('user_part')->find();
- if ($userInfo==NULL || empty($userInfo['user_part'])){
- $userPart = 15;
- $partNum =ceil($courseInfo['course_num']/15);
- }else{
- $userPart = $userInfo['user_part'];
- $partNum =ceil($courseInfo['course_num']/$userInfo['user_part']);
- }
- $saveCourseWordsInfo = array(
- 'user_id'=>$this->userId,
- 'course_id'=>$courseId,
- 'user_part'=>$userPart,
- 'part_num'=>$partNum,
- 'operate_dt'=>time(),
- );
- M('UserWords')->add($saveCourseWordsInfo);
- }
- M('Words')->where(array('words_id'=>array('IN',$wordsId)))->delete();
- }
- $wordsIdArr = explode(',', $wordsId);
- $num = count($wordsIdArr);
- M('Course')->where(array('course_id'=>$courseId))->setDec('course_num',$num);
- $wordsSortInfo = M('WordsSort')->where(array('course_id'=>$oldCourseId,'user_id'=>$this->userId))->field('sort_id,word_ids')->find();
- if ($wordsSortInfo != NULL){
- $wordsSortIdArr = explode(',', $wordsSortInfo['word_ids']);
- $wordsSortInfo['word_ids'] = array_shift($wordsSortIdArr,$wordsIdArr);
- M('WordsSort')->where(array('sort_id'=>$wordsSortInfo['sort_id']))->save(array('word_ids'=>$wordsSortInfo['word_ids']));
- }
- $data = array('code'=>0,'msg'=>'单词删除成功','data'=>'');
- $this->returnData($data);exit;
- }
-
- //添加单词笔记
- public function notepad(){
- $wordsId = I('words_id');
- $courseId = I('course_id');
- $wnContent = I('wn_content');
- if(empty($wordsId)){
- $data = array('code'=>1,'msg'=>'单词ID错误');
- $this->returnData($data);exit;
- }
- if(empty($courseId)){
- $data = array('code'=>1,'msg'=>'课程ID错误');
- $this->returnData($data);exit;
- }
- if (mb_strlen($wnContent,'UTF8')<2 || mb_strlen($wnContent,'UTF8')>80){
- $data = array('code'=>1,'msg'=>'单词笔记2到80个汉字');
- $this->returnData($data);exit;
- }
- $res = M('WordsNotepad')->where(array('words_id'=>$wordsId,'user_id'=>$this->userId))->field('wn_id')->find();
- if ($res==NULL){
- $saveData = array('user_id'=>$this->userId,'words_id'=>$wordsId,'course_id'=>$courseId,'wn_content'=>$wnContent,'operate_dt'=>time());
- $wnId = M('WordsNotepad')->add($saveData);
- $msg = '单词笔记添加成功';
- }else{
- $wnId = $res['wn_id'];
- M('WordsNotepad')->where(array('wn_id'=>$wnId))->save(array('wn_content'=>$wnContent));
- $msg = '单词笔记修改成功';
- }
- $info = M('WordsNotepad')->where(array('wn_id'=>$wnId))->field('user_id,words_id,course_id,wn_content')->find();
- $data = array('code'=>0,'msg'=>$msg,'data'=>$info);
- $this->returnData($data);exit;
- }
-
- //添加错误单词到易错单词课程中
- private function addErrorWords($wordsId){
- $wordsId = rtrim(I('words_id'),',');
- if (empty($wordsId)){
- return false;
- }
- $courseInfo = M('Course')->where(array('user_id'=>$this->userId,'course_name'=>'易错单词','course_flag'=>1))->field('course_id')->find();
- if ($courseInfo==NULL){
- $courseId = M('Course')->add(array('course_type'=>0,'course_name'=>'易错单词','course_source'=>2,'user_id'=>$this->userId,'operate_dt'=>time()));
- }else{
- $courseId = $courseInfo['course_id'];
- }
- $wordsList = M('Words')->where(array('words_id'=>array('IN',$wordsId),'is_delete'=>1))->order('words_id asc')->select();
- //var_dump($wordsList);exit;
- foreach ($wordsList as $words){
- unset($words['words_id']);
- $words['course_id'] = $courseId;
- $words['words_source'] = 2;
- $words['operate_dt'] = time();
- M('Words')->add($words);
- }
- return false;
- }
-
- //测试模式上报
- public function test(){
- $testType = I('test_type');
- $wordsId = rtrim(I('words_id'),',');
- //$wordsTotal = I('words_total');
- $wordsError = rtrim(I('words_error'),',');
- //$wordsSuccess = rtrim(I('words_success'));
- //$testNum = I('test_num');
- //$testScore = I('test_score');
- if (!in_array($testType, array(1,2,3,4,5,6))){
- $data = array('code'=>1,'msg'=>'测试模式错误');
- $this->returnData($data);exit;
- }
- if (empty($wordsId)){
- $data = array('code'=>1,'msg'=>'测试单词id错误');
- $this->returnData($data);exit;
- }
-
- $wordsTotal = substr_count($wordsId,',')+1;
- if (empty($wordsError)){
- $wordsErrLen = 0;
- }else{
- $wordsErrLen = substr_count($wordsError,',')+1;
- }
- $wordsSucLen = $wordsTotal-$wordsErrLen;
- $score = round($wordsSucLen/$wordsTotal*100);
- $wordsIdArr = explode(',', $wordsId);
- $wordsErrorArr = explode(',', $wordsError);
- $wordsSuccess = implode(',', array_diff($wordsIdArr, $wordsErrorArr));
- //var_dump($wordsId,$wordsError,$wordsSuccess,$wordsSucLen,$wordsTotal);exit;
- $saveData = array(
- 'user_id'=>$this->userId,'test_type'=>$testType,'words_ids'=>$wordsId,
- 'words_total'=>$wordsTotal,'words_error'=>$wordsError,'words_success'=>$wordsSuccess,
- 'test_num'=>$wordsTotal,'test_score'=>$score,'operate_dt'=>time(),
- );
- M('Test')->add($saveData);
- $this->addErrorWords($wordsError);
-
- $data = array('code'=>0,'msg'=>'单词测试上报成功','data'=>array('score'=>$score));
- $this->returnData($data);exit;
- }
-
- //获取单词信息接口
- public function dict(){
- $wordsName = I('words_name','');
- if (empty($wordsName)){
- $data = array('code'=>1,'msg'=>'单词不能为空');
- $this->returnData($data);exit;
- }
- $wordsKeys = array('n'=>'words_n','pron'=>'words_pron','adj'=>'words_adj','num'=>'words_num','v'=>'words_v','adv'=>'words_adv','art'=>'words_art','prep'=>'words_prep','conj'=>'words_conj','int'=>'words_int','vt'=>'words_vt','vi'=>'words_vi',);
- $httpCurl = new \Org\Net\HttpCurl();
- $url = C('TRANS').'&w='.$wordsName;
- $res = $httpCurl->get($url,'xml');
- $res = json_decode(json_encode(simplexml_load_string($res, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
- /* $url = C('TRANS').'&type=json&w='.$wordsName;
- $res = $httpCurl->get($url); */
- if (!isset($res['key'])){
- $data = array('code'=>1,'msg'=>'单词翻译出错');
- echo json_encode($data);
- }
- $saveData = array();
- if (isset($res['ps'])){
- if (is_array($res['ps'])){
- for ($i=0;$i<count($res['ps']);$i++){
- $j = $i+1;
- $saveData['words_read'.$j] = $res['ps'][$i];
- $saveData['words_voice'.$j] = $res['pron'][$i];
- }
- }else{
- $saveData['words_read1'] = $res['ps'];
- $saveData['words_voice1'] = $res['pron'];
- }
- }else{
- $saveData['words_read1'] = '';
- $saveData['words_voice1'] = '';
- }
- if (isset($res['pos'])){
- if (is_array($res['pos'])){
- foreach ($res['pos'] as $k=>$v){
- if (isset($wordsKeys[str_replace('.', '', $v)])){
- $saveData[$wordsKeys[str_replace('.', '', $v)]] = trim($res['acceptation'][$k]);
- }
- }
- }else{
- if (isset($wordsKeys[str_replace('.', '', $res['pos'])])){
- $saveData[$wordsKeys[str_replace('.', '', $res['pos'])]] = trim($res['acceptation']);
- }else{
- $saveData['words_other'] = trim($res['acceptation']);
- }
- }
- }
- if (isset($res['sent'])){
- for ($i=0;$i<count($res['sent']);$i++){
- $j = $i+1;
- if ($j>3){
- continue;
- }
- $saveData['jz_en'.$j] = trim($res['sent'][$i]['orig']);
- $saveData['jz_cn'.$j] = trim($res['sent'][$i]['trans']);
- }
- }
- $data = array('code'=>0,'msg'=>'','data'=>$saveData);
- $this->returnData($data);exit;
- }
-
- //删除单词笔记
- public function delNote(){
- $wordsId = I('words_id','');
- if (empty($wordsId)){
- $data = array('code'=>1,'msg'=>'单词ID出错');
- echo json_encode($data);
- }
- M('WordsNotepad')->where(array('words_id'=>$wordsId,'user_id'=>$this->userId))->delete();
- $data = array('code'=>0,'msg'=>'删除成功','data'=>'');
- $this->returnData($data);exit;
- }
-
- //单词乱序
- public function sort(){
- $courseId = I('course_id');
- if (empty($courseId) || $courseId<1000000){
- $data = array('code'=>1,'msg'=>'课程ID错误');
- $this->returnData($data);exit;
- }
- $info = M('WordsSort')->where(array('course_id'=>$courseId,'user_id'=>$this->userId))->field('sort_id')->find();
- if ($info!=NULL){
- $data = array('code'=>1,'msg'=>'已经设置过乱序排列');
- echo json_encode($data);
- }
- $wordsInfo = M('Words')->where(array('course_id'=>$courseId))->order('RAND()')->field('words_id')->select();
- if (function_exists('array_column')){
- $wordsIdArr = array_column($wordsInfo, 'words_id');
- }else{
- foreach ($wordsInfo as $row){
- $wordsIdArr[] = $row['words_id'];
- }
- }
- $saveData = array(
- 'user_id'=>$this->userId,
- 'course_id'=>$courseId,
- 'word_ids'=>implode(',', $wordsIdArr),
- 'operate_dt'=>time(),
- );
- M('WordsSort')->add($saveData);
-
- }
- }
|