WordsController.class.php 50 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037
  1. <?php
  2. namespace Api\Controller;
  3. use Common\Controller\ApiController;
  4. class WordsController extends ApiController {
  5. public function __construct(){
  6. parent::__construct();
  7. }
  8. //获取单词列表
  9. public function index(){
  10. $sort = I('sort',1);
  11. $lastId = I('last_id',0);
  12. $courseId = I('course_id');
  13. $pageSize = I('page_size',20);
  14. $keyword = I('keyword','');
  15. if (empty($courseId) || $courseId<1000000){
  16. $data = array('code'=>1,'msg'=>'课程ID错误');
  17. $this->returnData($data);exit;
  18. }
  19. $condition = array('is_delete'=>1,'course_id'=>$courseId);
  20. if (!empty($keyword)){
  21. $condition['words_name'] = array('LIKE','%'.$keyword.'%');
  22. }
  23. $orderby = '';
  24. if ($sort==1){
  25. $orderby = 'words_id asc';
  26. }else if($sort==2){
  27. $wordsSortInfo = M('WordsSort')->where(array('course_id'=>$courseId,'user_id'=>$this->userId,'sort_status'=>1))->field('word_ids')->find();
  28. if ($wordsSortInfo==NULL){
  29. $data = array('code'=>0,'msg'=>'占未设置乱序','data'=>array());
  30. $this->returnData($data);exit;
  31. }
  32. }
  33. if ($lastId>0 && $sort==1){
  34. $condition['words_id'] = array('LT',$lastId);
  35. }
  36. $courseInfo = M('Course')->where(array('course_id'=>$courseId,'is_show'=>1))->field('course_id,user_id,course_name,course_source,operate_dt')->find();
  37. if ($courseInfo['course_name']=='易错单词'){
  38. if ($lastId>0){
  39. $data = array('code'=>0,'msg'=>'无更多数据','data'=>array());
  40. $this->returnData($data);exit;
  41. }
  42. $errorInfo = M('Test')->where(array('user_id'=>$this->userId))->order('test_id desc')->field('words_error')->find();
  43. if ($errorInfo==NULL){
  44. $data = array('code'=>0,'msg'=>'暂无错误单词','data'=>array());
  45. $this->returnData($data);exit;
  46. }
  47. $res = M('Words')->where(array('words_id'=>array('IN',$errorInfo['words_error'])))->order($orderby)->select();
  48. }else{
  49. //$join = 'w LEFT JOIN t_words_notepad wn ON w.words_id=wn.words_id';
  50. if ($sort==1){
  51. $res = M('Words')->where($condition)->order($orderby)->limit($pageSize)->select();
  52. }else if($sort==2){
  53. $wordIdArr = explode(',', $wordsSortInfo['word_ids']);
  54. if ($lastId!=0){
  55. $key = array_search($lastId,$wordIdArr);
  56. $key = $key+1;
  57. }else{
  58. $key = 0;
  59. }
  60. $wordsIdPage = array_slice($wordIdArr,$key,$pageSize);
  61. if (empty($wordsIdPage)){
  62. $data = array('code'=>0,'msg'=>'无更多数据','data'=>array());
  63. $this->returnData($data);exit;
  64. }
  65. $wordsIdpageStr = implode(',', $wordsIdPage);
  66. $condition['words_id'] = array('IN',$wordsIdPage);
  67. $orderby = 'field(words_id,'. $wordsIdpageStr .')';
  68. $res = M('Words')->where($condition)->order($orderby)->select();
  69. //echo M('Words')->getLastSql();exit;
  70. }
  71. }
  72. $wordsList = array();
  73. foreach ($res as $row){
  74. $wnRes = M('WordsNotepad')->where(array('words_id'=>$row['words_id'],'user_id'=>$this->userId))->field('wn_content')->find();
  75. $wnContent = '';
  76. if ($wnRes!=NULL){
  77. $wnContent = $wnRes['wn_content'];
  78. }
  79. unset($row['is_delete']);
  80. unset($row['words_source']);
  81. $row['wn_content'] = $wnContent;
  82. $wordsList[] = $row;
  83. /* $wordsList[] = array(
  84. 'words_id' => $row['words_id'],
  85. 'course_id' => $row['course_id'],
  86. 'words_name' => $row['words_name'],
  87. 'wn_content'=>$wnContent,
  88. 'operate_dt' => $row['operate_dt'],
  89. 'words_text' => $this->getWordsText($row),
  90. ); */
  91. }
  92. if ($res==NULL&&$lastId>0){
  93. $data = array('code'=>0,'msg'=>'无更多数据','data'=>array());
  94. $this->returnData($data);exit;
  95. }
  96. if ($lastId==0){
  97. if ($courseInfo['user_id']!=$this->userId){
  98. $fansInfo = M('Fans')->where(array('user_id'=>$this->userId,'fans_user_id'=>$courseInfo['user_id']))->field('fans_id')->find();
  99. $courseInfo['is_fans'] = $fansInfo==NULL?0:1;
  100. /* if ($courseInfo['course_source']==1){
  101. $courseInfo['user_name'] = '系统课程';
  102. $courseInfo['user_icon'] = C('DOMAIN').'/Public/img/admin_icon.png';
  103. }else{
  104. $userInfo = M('User')->where(array('user_id'=>$courseInfo['user_id']))->field('user_name,user_icon,user_sex')->find();
  105. $courseInfo['user_name'] = $userInfo['user_name'];
  106. $courseInfo['user_icon'] = $userInfo['user_icon'];
  107. } */
  108. }else{
  109. $courseInfo['is_fans'] = 2;
  110. }
  111. $userInfo = M('User')->where(array('user_id'=>$courseInfo['user_id']))->field('user_id,user_name,user_icon,user_sex')->find();
  112. $courseInfo['user_id'] = $userInfo['user_id'];
  113. $courseInfo['user_sex'] = $userInfo['user_sex'];
  114. $courseInfo['user_icon'] = $userInfo['user_icon'];
  115. $courseInfo['user_name'] = $userInfo['user_name'];
  116. }else{
  117. $courseInfo = new \stdClass();
  118. }
  119. $data = array('code'=>0,'msg'=>'','data'=>$wordsList);
  120. if ($lastId==0){
  121. $data['info'] = $courseInfo;
  122. }
  123. $this->returnData($data);exit;
  124. }
  125. //获取指定章节单词列表
  126. public function part(){
  127. $sort = I('sort',1);
  128. $courseId = I('course_id');
  129. $partNum = I('part_num');
  130. if (empty($partNum) || $partNum<=0){
  131. $data = array('code'=>10,'msg'=>'章节ID错误');
  132. $this->returnData($data);exit;
  133. }
  134. if (empty($courseId) || $courseId<1000000){
  135. $data = array('code'=>1,'msg'=>'课程ID错误');
  136. $this->returnData($data);exit;
  137. }
  138. $partInfo = M('UserWords')->where(array('course_id'=>$courseId,'user_id'=>$this->userId))->field('uw_id,user_part,part_num')->find();
  139. if ($partInfo==NULL){
  140. $courseInfo = M('Course')->where(array('course_id'=>$courseId,'is_delete'=>1))->field('course_num')->find();
  141. $partInfo['user_part'] = 15;
  142. $partInfo['part_num'] = ceil($courseInfo['course_num']/$partInfo['user_part']);
  143. }
  144. if (empty($partInfo['part_num'])){
  145. $courseInfo = M('Course')->where(array('course_id'=>$courseId,'is_delete'=>1))->field('course_num')->find();
  146. $partInfo['user_part'] = 15;
  147. $partInfo['part_num'] = ceil($courseInfo['course_num']/$partInfo['user_part']);
  148. M('UserWords')->where(array('uw_id'=>$partInfo['uw_id']))->save(array('part_num'=>$partInfo['part_num']));
  149. }
  150. if ($partNum>$partInfo['part_num']){
  151. $data = array('code'=>10,'msg'=>'章节ID错误');
  152. $this->returnData($data);exit;
  153. }
  154. $wordsSortInfo = M('WordsSort')->where(array('course_id'=>$courseId,'user_id'=>$this->userId,'sort_status'=>1))->field('word_ids')->find();
  155. if ($wordsSortInfo==NULL){
  156. $condition = array('is_delete'=>1,'course_id'=>$courseId);
  157. $orderby = '';
  158. if ($sort==1){
  159. $orderby = 'words_id asc';
  160. }
  161. $condition['user_id'] = $this->userId;
  162. //$join = 'w LEFT JOIN t_words_notepad wn ON w.words_id=wn.words_id';
  163. $res =M('Words')->where($condition)->order($orderby)->limit(($partNum-1)*$partInfo['user_part'], $partInfo['user_part'])->select();
  164. }else{
  165. $wordIdArr = explode(',', $wordsSortInfo['word_ids']);
  166. $wordsIdPage = array_slice($wordIdArr,($partNum-1)*$partInfo['user_part'], $partInfo['user_part']);
  167. if (empty($wordsIdPage)){
  168. $data = array('code'=>0,'msg'=>'章节ID错误','data'=>array());
  169. $this->returnData($data);exit;
  170. }
  171. $wordsIdpageStr = implode(',', $wordsIdPage);
  172. $condition['words_id'] = array('IN',$wordsIdPage);
  173. $orderby = 'field(words_id,'. $wordsIdpageStr .')';
  174. $res = M('Words')->where($condition)->order($orderby)->select();
  175. }
  176. $wordsList = array();
  177. foreach ($res as $k=>$row){
  178. $wnRes = M('WordsNotepad')->where(array('words_id'=>$row['words_id'],'user_id'=>$this->userId))->field('wn_content')->find();
  179. $wnContent = '';
  180. if ($wnRes!=NULL){
  181. $wnContent = $wnRes['wn_content'];
  182. }
  183. unset($row['is_delete']);
  184. unset($row['words_source']);
  185. $row['wn_content'] = $wnContent;
  186. //判断读音是否空
  187. if (empty($row['words_read1'])){
  188. $row['words_read1'] = $row['words_read2'];
  189. $row['words_voice1'] = $row['words_voice2'];
  190. }
  191. $wordsList[] = $row;
  192. }
  193. $data = array('code'=>0,'msg'=>'','data'=>$wordsList);
  194. $this->returnData($data);exit;
  195. }
  196. //获取特殊课程指定章节单词列表
  197. public function specialPart(){
  198. $sort = I('sort',1);
  199. $courseId = I('course_id');
  200. $partNum = I('part_num');
  201. $wordsArr = array();
  202. $wordsRes = M('Words')->where(array('course_id'=>$courseId))->group('operate_dt')->order('operate_dt')->field('operate_dt')->select();
  203. if (function_exists('array_column')){
  204. $wordsArr = array_column($wordsRes, 'operate_dt');
  205. }else{
  206. foreach ($wordsRes as $row){
  207. $wordsArr[] = $row['operate_dt'];
  208. }
  209. }
  210. if (empty($partNum)){
  211. if ($wordsRes!=NULL){
  212. $partNum = $wordsArr[0];
  213. }else{
  214. $data = array('code'=>1,'msg'=>'章节ID错误');
  215. $this->returnData($data);exit;
  216. }
  217. }
  218. $partData = array('current_part'=>$partNum,'pre_part'=>'','next_part'=>'');
  219. $key = array_search($partNum,$wordsArr);
  220. //获取上一章
  221. if ($key-1>0){
  222. $partData['pre_part'] = isset($wordsArr[$key-1])?$wordsArr[$key-1]:'';
  223. }
  224. //下一章
  225. if (isset($wordsArr[$key+1])){
  226. $partData['next_part'] = $wordsArr[$key+1];
  227. }
  228. $wordsSortInfo = M('WordsSort')->where(array('course_id'=>$courseId,'user_id'=>$this->userId,'sort_status'=>1))->field('word_ids')->find();
  229. if ($wordsSortInfo==NULL){
  230. $orderby = '';
  231. if ($sort==1){
  232. $orderby = 'words_id asc';
  233. }
  234. //$join = 'w LEFT JOIN t_words_notepad wn ON w.words_id=wn.words_id';
  235. $res =M('Words')->where(array('course_id'=>$courseId,'operate_dt'=>$partNum))->order($orderby)->select();
  236. }else{
  237. $wordIdArr = explode(',', $wordsSortInfo['word_ids']);
  238. $wordsIdpageStr = implode(',', $wordIdArr);
  239. $condition['words_id'] = array('IN',$wordIdArr);
  240. $orderby = 'field(words_id,'. $wordsIdpageStr .')';
  241. $res = M('Words')->where($condition)->order($orderby)->select();
  242. }
  243. $wordsList = array();
  244. foreach ($res as $k=>$row){
  245. $wnRes = M('WordsNotepad')->where(array('words_id'=>$row['words_id'],'user_id'=>$this->userId))->field('wn_content')->find();
  246. $wnContent = '';
  247. if ($wnRes!=NULL){
  248. $wnContent = $wnRes['wn_content'];
  249. }
  250. unset($row['is_delete']);
  251. unset($row['words_source']);
  252. $row['wn_content'] = $wnContent;
  253. //判断读音是否空
  254. if (empty($row['words_read1'])){
  255. $row['words_read1'] = $row['words_read2'];
  256. $row['words_voice1'] = $row['words_voice2'];
  257. }
  258. $wordsList[] = $row;
  259. }
  260. $data = array('code'=>0,'msg'=>'','data'=>$wordsList,'partData'=>$partData);
  261. $this->returnData($data);exit;
  262. }
  263. //添加编辑单词
  264. public function edit(){
  265. $courseId = I('course_id');
  266. $wordsId = I('words_id','');
  267. $wordsName = I('words_name','');
  268. if (empty($courseId) || $courseId<1000000){
  269. $data = array('code'=>1,'msg'=>'课程ID错误');
  270. $this->returnData($data);exit;
  271. }
  272. //判断单词是否重复
  273. if (empty($wordsId)){
  274. $wordsInfo = M('Words')->where(array('course_id'=>$courseId,'words_name'=>$wordsName))->field('words_id,words_name')->find();
  275. if ($wordsInfo!=NUll){
  276. $data = array('code'=>1,'msg'=>'该课程已经添加过该单词,请勿重复添加!');
  277. $this->returnData($data);exit;
  278. }
  279. }
  280. if (!empty($wordsId)){
  281. $wordsInfo = M('Words')->where(array('course_id'=>$courseId,'words_name'=>$wordsName))->field('words_id,words_name')->find();
  282. if ($wordsInfo!=NUll && $wordsInfo['words_id']!=$wordsId){
  283. $data = array('code'=>1,'msg'=>'该课程已经添加过该单词,请勿重复添加!');
  284. $this->returnData($data);exit;
  285. }
  286. }
  287. $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();
  288. if ($courseInfo==NULL){
  289. $data = array('code'=>1,'msg'=>'课程ID错误');
  290. $this->returnData($data);exit;
  291. }
  292. if (in_array($courseInfo['course_name'], array('易错单词','重点单词'))){
  293. $data = array('code'=>1,'msg'=>'不能编辑特殊课程单词');
  294. $this->returnData($data);exit;
  295. }
  296. $oldCourseInfo = $courseInfo;
  297. if ($courseInfo['course_status']==3 || $courseInfo['user_id']!=$this->userId){
  298. //创建新课程,并把就课程里面的所有的单词添加到新创建的课程中
  299. $userCourseInfo = M('Course')->where(array('user_id'=>$this->userId))->field('operate_dt')->find();
  300. if($userCourseInfo!=NULL){
  301. $time = time() - $userCourseInfo['operate_dt'];
  302. if ($time<C('COURSE_TIME')){
  303. $data = array('code'=>1,'msg'=>'3分钟内无法连续创建课程');
  304. $this->returnData($data);exit;
  305. }
  306. }
  307. $oldCourseId = $courseInfo['course_id'];
  308. if ($courseInfo['user_id']==$this->userId){
  309. M('Course')->where(array('course_id'=>$oldCourseId,'user_id'=>$this->userId))->save(array('is_show'=>2));
  310. }else if($courseInfo['course_source']==1){
  311. //系统课程
  312. $sysCourse = M('UserWords')->where(array('course_id'=>$oldCourseId,'user_id'=>$this->userId))->field('uw_id')->find();
  313. if ($sysCourse==NULL){
  314. $userInfo = M('User')->where(array('user_id'=>$this->userId))->field('user_part')->find();
  315. if ($userInfo==NULL || empty($userInfo['user_part'])){
  316. $userPart = 15;
  317. $partNum =ceil($courseInfo['course_num']/15);
  318. }else{
  319. $userPart = $userInfo['user_part'];
  320. $partNum =ceil($courseInfo['course_num']/$userInfo['user_part']);
  321. }
  322. $sysCourseInfo = array(
  323. 'user_id'=>$this->userId,
  324. 'course_id'=>$courseId,
  325. 'user_part'=>$userPart,
  326. 'part_num'=>$partNum,
  327. 'is_show'=>2,
  328. 'operate_dt'=>time(),
  329. );
  330. M('UserWords')->add($sysCourseInfo);
  331. }else{
  332. M('UserWords')->where(array('course_id'=>$oldCourseId,'user_id'=>$this->userId))->save(array('is_show'=>2));
  333. }
  334. }
  335. //创建课程
  336. unset($courseInfo['course_id']);
  337. $courseInfo['course_status'] = 1;
  338. $courseInfo['operate_dt'] = time();
  339. $courseInfo['user_id'] = $this->userId;
  340. $courseInfo['course_source']=2;
  341. $courseInfo['course_name'] = $courseInfo['course_name'];//$this->getCourseName($courseInfo['course_name']);
  342. $courseId = M('Course')->add($courseInfo);
  343. $userWordsInfo = M('UserWords')->where(array('course_id'=>$oldCourseId,'user_id'=>$this->userId))->field('uw_id')->find();
  344. if ($userWordsInfo==NULL){
  345. $userInfo = M('User')->where(array('user_id'=>$this->userId))->field('user_part')->find();
  346. if ($userInfo==NULL || empty($userInfo['user_part'])){
  347. $userPart = 15;
  348. $partNum =ceil($courseInfo['course_num']/15);
  349. }else{
  350. $userPart = $userInfo['user_part'];
  351. $partNum =ceil($courseInfo['course_num']/$userInfo['user_part']);
  352. }
  353. $saveCourseWordsInfo = array(
  354. 'user_id'=>$this->userId,
  355. 'course_id'=>$courseId,
  356. 'user_part'=>$userPart,
  357. 'part_num'=>$partNum,
  358. 'operate_dt'=>time(),
  359. );
  360. M('UserWords')->add($saveCourseWordsInfo);
  361. }else{
  362. M('UserWords')->where(array('uw_id'=>$userWordsInfo['uw_id']))->save(array('course_id'=>$courseId));
  363. //M('UserWords')->where(array('course_id'=>$oldCourseId,'user_id'=>$this->userId))->save(array('course_id'=>$courseId));
  364. }
  365. //复制单词
  366. $this->copyWords($oldCourseId,$courseId);
  367. }else{
  368. $userWordsInfo = M('UserWords')->where(array('course_id'=>$courseId,'user_id'=>$this->userId))->field('uw_id')->find();
  369. if ($userWordsInfo==NULL){
  370. $userInfo = M('User')->where(array('user_id'=>$this->userId))->field('user_part')->find();
  371. if ($userInfo==NULL || empty($userInfo['user_part'])){
  372. $userPart = 15;
  373. $partNum =ceil($courseInfo['course_num']/15);
  374. }else{
  375. $userPart = $userInfo['user_part'];
  376. $partNum =ceil($courseInfo['course_num']/$userInfo['user_part']);
  377. }
  378. $saveCourseWordsInfo = array(
  379. 'user_id'=>$this->userId,
  380. 'course_id'=>$courseId,
  381. 'user_part'=>$userPart,
  382. 'part_num'=>$partNum,
  383. 'operate_dt'=>time(),
  384. );
  385. M('UserWords')->add($saveCourseWordsInfo);
  386. }
  387. }
  388. $wordsKeys = array('n'=>'words_n','pron'=>'words_pron','adj'=>'words_adj','num'=>'words_num','v'=>'words_v','adv'=>'words_adv','art'=>'words_art',
  389. 'prep'=>'words_prep','conj'=>'words_conj','int'=>'words_int','vt'=>'words_vt','vi'=>'words_vi','other'=>'words_other',);
  390. $saveData['course_id'] = $courseId;
  391. $saveData['words_name'] = I('words_name','');
  392. /* $wordsVoice = I('words_voice','');
  393. $wordsRead = I('words_read','');
  394. if (substr($wordsVoice,-1)==','){
  395. $wordsVoice = substr($wordsVoice, 0, -1);
  396. }
  397. $wordsVoiceArr = explode(',', $wordsVoice);
  398. $wordsReadArr = explode(',', $wordsRead);
  399. for ($i=0;$i<count($wordsVoiceArr);$i++){
  400. $j = $i+1;
  401. $saveData['words_read'.$j] = $wordsReadArr[$i];
  402. $saveData['words_voice'.$j] = $wordsVoiceArr[$i];
  403. } */
  404. $saveData['words_voice1'] = I('words_voice1','');
  405. $saveData['words_read1'] = I('words_read1','');
  406. $wordsVals = array_values($wordsKeys);
  407. $checkWords = true;
  408. foreach ($wordsVals as $keys){
  409. $saveData[$keys] = I($keys,'');
  410. if (!empty($saveData[$keys])){
  411. $checkWords = false;
  412. }
  413. }
  414. if (empty($saveData['words_name'])){
  415. $data = array('code'=>1,'msg'=>'单词不能为空');
  416. $this->returnData($data);exit;
  417. }
  418. if (empty($saveData['words_voice1'])){
  419. $data = array('code'=>1,'msg'=>'读音不能为空');
  420. $this->returnData($data);exit;
  421. }
  422. if (empty($saveData['words_read1'])){
  423. $data = array('code'=>1,'msg'=>'音标不能为空');
  424. $this->returnData($data);exit;
  425. }
  426. if ($checkWords){
  427. $data = array('code'=>1,'msg'=>'中文释义不能为空');
  428. $this->returnData($data);exit;
  429. }
  430. $saveData['jz_en1'] = I('jz_en1','');
  431. $saveData['jz_cn1'] = I('jz_cn1','');
  432. $saveData['jz_en2'] = I('jz_en2','');
  433. $saveData['jz_cn2'] = I('jz_cn2','');
  434. $saveData['jz_en3'] = I('jz_en3','');
  435. $saveData['jz_cn3'] = I('jz_cn3','');
  436. $saveData['similar_cn'] = I('similar_cn','');
  437. $saveData['similar_en'] = I('similar_en','');
  438. $saveData['words_similar'] = I('words_similar');
  439. $saveData['annotation_cn'] = I('annotation_cn','');
  440. if (!empty($saveData['jz_en1']) && strpos(strtolower($saveData['jz_en1']), $saveData['words_name'])===FALSE){
  441. $data = array('code'=>1,'msg'=>'您添加的例句1不包含对应单词,请仔细核对后提交');
  442. $this->returnData($data);exit;
  443. }
  444. if (!empty($saveData['jz_en2']) && strpos(strtolower($saveData['jz_en2']), $saveData['words_name'])===FALSE){
  445. $data = array('code'=>1,'msg'=>'您添加的例句2不包含对应单词,请仔细核对后提交交');
  446. $this->returnData($data);exit;
  447. }
  448. if (!empty($saveData['jz_en3']) && strpos(strtolower($saveData['jz_en3']), $saveData['words_name'])===FALSE){
  449. $data = array('code'=>1,'msg'=>'您添加的例句3不包含对应单词,请仔细核对后提交');
  450. $this->returnData($data);exit;
  451. }
  452. if (!empty($saveData['jz_en1']) && empty($saveData['jz_cn1'])){
  453. $data = array('code'=>1,'msg'=>'您添加的例句1释义不能为空,请仔细核对后提交');
  454. $this->returnData($data);exit;
  455. }
  456. if (!empty($saveData['jz_en2']) && empty($saveData['jz_cn2'])){
  457. $data = array('code'=>1,'msg'=>'您添加的例句1释义不能为空,请仔细核对后提交');
  458. $this->returnData($data);exit;
  459. }
  460. if (!empty($saveData['jz_en3']) && empty($saveData['jz_cn3'])){
  461. $data = array('code'=>1,'msg'=>'您添加的例句1释义不能为空,请仔细核对后提交');
  462. $this->returnData($data);exit;
  463. }
  464. if (!empty($saveData['words_similar']) && strlen($saveData['words_similar'])>50){
  465. $data = array('code'=>1,'msg'=>'近义词不能大于50个字节');
  466. $this->returnData($data);exit;
  467. }
  468. if (!empty($data['similar_cn']) && strlen($data['similar_cn'])>500){
  469. $data = array('code'=>1,'msg'=>'英文释义不能大于500个字节');
  470. $this->returnData($data);exit;
  471. }
  472. $saveData['operate_dt'] = time();
  473. if ($wordsId){
  474. if ($oldCourseInfo['course_status']==3 || $oldCourseInfo['user_id']!=$this->userId){
  475. //$wordsId = M('Words')->add($saveData);
  476. $wordsOldInfo = M('Words')->where(array('words_id'=>$wordsId,))->field('words_id,words_name')->find();
  477. $wordsNewInfo = M('Words')->where(array('course_id'=>$saveData['course_id'],'words_name'=>$wordsOldInfo['words_name'],))->field('words_id')->find();
  478. M('Words')->where(array('words_id'=>$wordsNewInfo['words_id']))->save($saveData);
  479. $returnWordsId = $wordsNewInfo['words_id'];
  480. }else{
  481. M('Words')->where(array('words_id'=>$wordsId))->save($saveData);
  482. $returnWordsId = $wordsId;
  483. }
  484. }else{
  485. $wordsId = M('Words')->add($saveData);
  486. $wordsSortInfo = M('WordsSort')->where(array('course_id'=>$oldCourseId,'user_id'=>$this->userId))->field('sort_id,word_ids')->find();
  487. if ($wordsSortInfo != NULL){
  488. $wordsSortInfo['word_ids'] = $wordsSortInfo['word_ids'].','.$wordsId;
  489. M('WordsSort')->where(array('sort_id'=>$wordsSortInfo['sort_id']))->save(array('word_ids'=>$wordsSortInfo['word_ids']));
  490. }
  491. M('Course')->where(array('course_id'=>$courseId))->setInc('course_num');
  492. $returnWordsId = $wordsId;
  493. }
  494. //重新计算章节信息
  495. $userInfo = M('User')->where(array('user_id'=>$this->userId))->field('user_part')->find();
  496. $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();
  497. if ($userInfo==NULL || empty($userInfo['user_part'])){
  498. $userPart = 15;
  499. $partNum =ceil($courseInfo['course_num']/15);
  500. }else{
  501. $userPart = $userInfo['user_part'];
  502. $partNum =ceil($courseInfo['course_num']/$userInfo['user_part']);
  503. }
  504. M('UserWords')->where(array('course_id'=>$courseId,'user_id'=>$this->userId))->save(array('part_num'=>$partNum));
  505. $join = 'uw LEFT JOIN t_course c ON uw.course_id=c.course_id';
  506. $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();
  507. $resUserWords['words_id'] = $returnWordsId;
  508. $data = array('code'=>0,'msg'=>'单词操作成功','data'=>$resUserWords);
  509. $this->returnData($data);exit;
  510. /* $data = array('code'=>0,'msg'=>'单词操作成功','data'=>array('words_id'=>$wordsId,'course_id'=>$courseId));
  511. $this->returnData($data);exit; */
  512. }
  513. //把其他课程里面的单词添加到指定课程中
  514. public function addWordsToCourse(){
  515. $wordsId = I('words_id');
  516. $courseId = I('course_id');
  517. if (empty($wordsId)){
  518. $data = array('code'=>1,'msg'=>'单词ID错误');
  519. $this->returnData($data);exit;
  520. }
  521. if (empty($courseId) || $courseId<1000000){
  522. $data = array('code'=>1,'msg'=>'课程ID错误');
  523. $this->returnData($data);exit;
  524. }
  525. $wordsInfo = M('Words')->where(array('words_id'=>$wordsId,'is_delete'=>1))->find();
  526. if ($wordsInfo!=NULL && $wordsInfo['course_id']==$courseId){
  527. $data = array('code'=>1,'msg'=>'已是该课程单词');
  528. $this->returnData($data);exit;
  529. }
  530. $wordsCourseInfo = M('Words')->where(array('words_name'=>$wordsInfo['words_name'],'course_id'=>$courseId))->field('words_id')->find();
  531. if ($wordsCourseInfo!=NULL){
  532. $data = array('code'=>1,'msg'=>'已是该课程单词');
  533. $this->returnData($data);exit;
  534. }
  535. $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();
  536. if ($courseInfo==NULL){
  537. $data = array('code'=>1,'msg'=>'课程ID错误');
  538. $this->returnData($data);exit;
  539. }
  540. if (in_array($courseInfo['course_name'], array('易错单词','重点单词'))){
  541. $data = array('code'=>1,'msg'=>'不能编辑特殊课程单词');
  542. $this->returnData($data);exit;
  543. }
  544. $oldCourseId = 0;
  545. if ($courseInfo['course_status']==3 || $courseInfo['user_id']!=$this->userId){
  546. //创建新课程,并把就课程里面的所有的单词添加到新创建的课程中
  547. $userCourseInfo = M('Course')->where(array('user_id'=>$this->userId))->field('operate_dt')->find();
  548. if($userCourseInfo!=NULL){
  549. $time = time() - $userCourseInfo['operate_dt'];
  550. if ($time<C('COURSE_TIME')){
  551. $data = array('code'=>1,'msg'=>'3分钟内无法连续创建课程');
  552. $this->returnData($data);exit;
  553. }
  554. }
  555. $oldCourseId = $courseInfo['course_id'];
  556. if ($courseInfo['user_id']==$this->userId){
  557. M('Course')->where(array('course_id'=>$oldCourseId,'user_id'=>$this->userId))->save(array('is_show'=>2));
  558. }else if($courseInfo['course_source']==1){
  559. //系统课程
  560. $sysCourse = M('UserWords')->where(array('course_id'=>$oldCourseId,'user_id'=>$this->userId))->field('uw_id')->find();
  561. if ($sysCourse==NULL){
  562. $userInfo = M('User')->where(array('user_id'=>$this->userId))->field('user_part')->find();
  563. if ($userInfo==NULL || empty($userInfo['user_part'])){
  564. $userPart = 15;
  565. $partNum =ceil($courseInfo['course_num']/15);
  566. }else{
  567. $userPart = $userInfo['user_part'];
  568. $partNum =ceil($courseInfo['course_num']/$userInfo['user_part']);
  569. }
  570. $sysCourseInfo = array(
  571. 'user_id'=>$this->userId,
  572. 'course_id'=>$courseId,
  573. 'user_part'=>$userPart,
  574. 'part_num'=>$partNum,
  575. 'is_show'=>2,
  576. 'operate_dt'=>time(),
  577. );
  578. M('UserWords')->add($sysCourseInfo);
  579. }else{
  580. M('UserWords')->where(array('course_id'=>$oldCourseId,'user_id'=>$this->userId))->save(array('is_show'=>2));
  581. }
  582. }
  583. //创建课程
  584. unset($courseInfo['course_id']);
  585. $courseInfo['course_status'] = 1;
  586. $courseInfo['operate_dt'] = time();
  587. $courseInfo['user_id'] = $this->userId;
  588. $courseInfo['course_source']=2;
  589. $courseInfo['course_name'] = $this->getCourseName($courseInfo['course_name']);
  590. $courseId = M('Course')->add($courseInfo);
  591. //复制单词
  592. $this->copyWords($oldCourseId,$courseId);
  593. }
  594. $wordsInfo['operate_dt'] = time();
  595. $wordsInfo['course_id'] = $courseId;
  596. $wordsInfo['words_source'] = 2;
  597. unset($wordsInfo['words_id']);
  598. M('Words')->add($wordsInfo);
  599. M('Course')->where(array('course_id'=>$courseId))->setInc('course_num');
  600. $data = array('code'=>0,'msg'=>'单词添加成功','data'=>'');
  601. if (empty($oldCourseId)){
  602. $data['data']['new_course'] = 0;
  603. }else{
  604. $data['data']['new_course'] = 1;
  605. }
  606. $this->returnData($data);exit;
  607. }
  608. //删除单词
  609. public function del(){
  610. $wordsId = I('words_id');
  611. $courseId = I('course_id');
  612. if (empty($wordsId)){
  613. $data = array('code'=>1,'msg'=>'单词ID错误');
  614. $this->returnData($data);exit;
  615. }
  616. if (empty($courseId) || $courseId<1000000){
  617. $data = array('code'=>1,'msg'=>'课程ID错误');
  618. $this->returnData($data);exit;
  619. }
  620. $wordsInfo = M('Words')->where(array('words_id'=>$wordsId,'is_delete'=>1))->find();
  621. if ($wordsInfo!=NULL && $wordsInfo['course_id']!=$courseId){
  622. $data = array('code'=>1,'msg'=>'不是该课程单词');
  623. $this->returnData($data);exit;
  624. }
  625. $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();
  626. if ($courseInfo==NULL){
  627. $data = array('code'=>1,'msg'=>'课程ID错误');
  628. $this->returnData($data);exit;
  629. }
  630. if (in_array($courseInfo['course_name'], array('易错单词','重点单词'))){
  631. $data = array('code'=>1,'msg'=>'不能编辑特殊课程单词');
  632. $this->returnData($data);exit;
  633. }
  634. $oldCourseInfo = $courseInfo;
  635. if ($courseInfo['course_status']==3 || $courseInfo['user_id']!=$this->userId){
  636. //创建新课程,并把就课程里面的所有的单词添加到新创建的课程中
  637. $userCourseInfo = M('Course')->where(array('user_id'=>$this->userId))->field('operate_dt')->find();
  638. if($userCourseInfo!=NULL){
  639. $time = time() - $userCourseInfo['operate_dt'];
  640. if ($time<C('COURSE_TIME')){
  641. $data = array('code'=>1,'msg'=>'3分钟内无法连续创建课程');
  642. $this->returnData($data);exit;
  643. }
  644. }
  645. $oldCourseId = $courseInfo['course_id'];
  646. if ($courseInfo['user_id']==$this->userId){
  647. M('Course')->where(array('course_id'=>$oldCourseId,'user_id'=>$this->userId))->save(array('is_show'=>2));
  648. }else if($courseInfo['course_source']==1){
  649. //系统课程
  650. $sysCourse = M('UserWords')->where(array('course_id'=>$oldCourseId,'user_id'=>$this->userId,'is_show'=>1))->field('uw_id')->find();
  651. if ($sysCourse==NULL){
  652. $userInfo = M('User')->where(array('user_id'=>$this->userId))->field('user_part')->find();
  653. if ($userInfo==NULL || empty($userInfo['user_part'])){
  654. $userPart = 15;
  655. $partNum =ceil($courseInfo['course_num']/15);
  656. }else{
  657. $userPart = $userInfo['user_part'];
  658. $partNum =ceil($courseInfo['course_num']/$userInfo['user_part']);
  659. }
  660. $sysCourseInfo = array(
  661. 'user_id'=>$this->userId,
  662. 'course_id'=>$courseId,
  663. 'user_part'=>$userPart,
  664. 'part_num'=>$partNum,
  665. 'is_show'=>2,
  666. 'operate_dt'=>time(),
  667. );
  668. M('UserWords')->add($sysCourseInfo);
  669. }else{
  670. M('UserWords')->where(array('course_id'=>$oldCourseId,'user_id'=>$this->userId))->save(array('is_show'=>2));
  671. }
  672. }
  673. //创建课程
  674. unset($courseInfo['course_id']);
  675. $courseInfo['course_status'] = 1;
  676. $courseInfo['operate_dt'] = time();
  677. $courseInfo['user_id'] = $this->userId;
  678. $courseInfo['course_source']=2;
  679. $courseInfo['course_name'] = $courseInfo['course_name'];//$this->getCourseName($courseInfo['course_name']);
  680. $courseId = M('Course')->add($courseInfo);
  681. $userWordsInfo = M('UserWords')->where(array('course_id'=>$courseId,'user_id'=>$this->userId))->field('uw_id')->find();
  682. if ($userWordsInfo==NULL){
  683. $userInfo = M('User')->where(array('user_id'=>$this->userId))->field('user_part')->find();
  684. if ($userInfo==NULL || empty($userInfo['user_part'])){
  685. $userPart = 15;
  686. $partNum =ceil($courseInfo['course_num']/15);
  687. }else{
  688. $userPart = $userInfo['user_part'];
  689. $partNum =ceil($courseInfo['course_num']/$userInfo['user_part']);
  690. }
  691. $userOldWordsInfo = M('UserWords')->where(array('course_id'=>$oldCourseId,'user_id'=>$this->userId))->field('current_course')->find();
  692. $saveCourseWordsInfo = array(
  693. 'user_id'=>$this->userId,
  694. 'course_id'=>$courseId,
  695. 'user_part'=>$userPart,
  696. 'part_num'=>$partNum,
  697. 'operate_dt'=>time(),
  698. );
  699. if ($userOldWordsInfo!=NULL && $userOldWordsInfo['current_course']==2){
  700. $saveCourseWordsInfo['current_course'] = 2;
  701. }
  702. M('UserWords')->add($saveCourseWordsInfo);
  703. }else{
  704. M('UserWords')->where(array('uw_id'=>$userWordsInfo['uw_id']))->save(array('course_id'=>$courseId));
  705. //M('UserWords')->where(array('course_id'=>$oldCourseId,'user_id'=>$this->userId))->save(array('course_id'=>$courseId));
  706. }
  707. //复制单词
  708. $this->copyWords($oldCourseId,$courseId,$wordsId);
  709. }else{
  710. $userWordsInfo = M('UserWords')->where(array('course_id'=>$courseId,'user_id'=>$this->userId))->field('uw_id')->find();
  711. if ($userWordsInfo==NULL){
  712. $userInfo = M('User')->where(array('user_id'=>$this->userId))->field('user_part')->find();
  713. if ($userInfo==NULL || empty($userInfo['user_part'])){
  714. $userPart = 15;
  715. $partNum =ceil($courseInfo['course_num']/15);
  716. }else{
  717. $userPart = $userInfo['user_part'];
  718. $partNum =ceil($courseInfo['course_num']/$userInfo['user_part']);
  719. }
  720. $saveCourseWordsInfo = array(
  721. 'user_id'=>$this->userId,
  722. 'course_id'=>$courseId,
  723. 'user_part'=>$userPart,
  724. 'part_num'=>$partNum,
  725. 'operate_dt'=>time(),
  726. );
  727. M('UserWords')->add($saveCourseWordsInfo);
  728. }
  729. M('Words')->where(array('words_id'=>array('IN',$wordsId)))->delete();
  730. }
  731. $wordsIdArr = explode(',', $wordsId);
  732. $num = count($wordsIdArr);
  733. M('Course')->where(array('course_id'=>$courseId))->setDec('course_num',$num);
  734. $wordsSortInfo = M('WordsSort')->where(array('course_id'=>$oldCourseInfo['course_id'],'user_id'=>$this->userId))->field('sort_id,word_ids')->find();
  735. if ($wordsSortInfo != NULL){
  736. $wordsSortIdArr = explode(',', $wordsSortInfo['word_ids']);
  737. $wordsSortInfo['word_ids'] = array_shift($wordsSortIdArr,$wordsIdArr);
  738. M('WordsSort')->where(array('sort_id'=>$wordsSortInfo['sort_id']))->save(array('word_ids'=>$wordsSortInfo['word_ids']));
  739. }
  740. //重新计算章节信息
  741. $userWordsInfo = M('UserWords')->where(array('course_id'=>$courseId,'user_id'=>$this->userId))->field('uw_id')->find();
  742. $userInfo = M('User')->where(array('user_id'=>$this->userId))->field('user_part')->find();
  743. $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();
  744. if ($userInfo==NULL || empty($userInfo['user_part'])){
  745. $userPart = 15;
  746. $partNum =ceil($courseInfo['course_num']/15);
  747. }else{
  748. $userPart = $userInfo['user_part'];
  749. $partNum =ceil($courseInfo['course_num']/$userInfo['user_part']);
  750. }
  751. M('UserWords')->where(array('uw_id'=>$userWordsInfo['uw_id']))->save(array('part_num'=>$partNum));
  752. $join = 'uw LEFT JOIN t_course c ON uw.course_id=c.course_id';
  753. $resUserWords = M('UserWords')->join($join)->where(array('c.course_id'=>$courseId,'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();
  754. $data = array('code'=>0,'msg'=>'单词删除成功','data'=>$resUserWords);
  755. $this->returnData($data);exit;
  756. /*$data = array('code'=>0,'msg'=>'单词删除成功','data'=>'');
  757. $this->returnData($data);exit;*/
  758. }
  759. //添加单词笔记
  760. public function notepad(){
  761. $wordsId = I('words_id');
  762. $courseId = I('course_id');
  763. $wnContent = I('wn_content');
  764. if(empty($wordsId)){
  765. $data = array('code'=>1,'msg'=>'单词ID错误');
  766. $this->returnData($data);exit;
  767. }
  768. if(empty($courseId)){
  769. $data = array('code'=>1,'msg'=>'课程ID错误');
  770. $this->returnData($data);exit;
  771. }
  772. if (mb_strlen($wnContent,'UTF8')<2 || mb_strlen($wnContent,'UTF8')>80){
  773. $data = array('code'=>1,'msg'=>'单词笔记2到80个汉字');
  774. $this->returnData($data);exit;
  775. }
  776. $res = M('WordsNotepad')->where(array('words_id'=>$wordsId,'user_id'=>$this->userId))->field('wn_id')->find();
  777. if ($res==NULL){
  778. $saveData = array('user_id'=>$this->userId,'words_id'=>$wordsId,'course_id'=>$courseId,'wn_content'=>$wnContent,'operate_dt'=>time());
  779. $wnId = M('WordsNotepad')->add($saveData);
  780. $msg = '单词笔记添加成功';
  781. }else{
  782. $wnId = $res['wn_id'];
  783. M('WordsNotepad')->where(array('wn_id'=>$wnId))->save(array('wn_content'=>$wnContent));
  784. $msg = '单词笔记修改成功';
  785. }
  786. $info = M('WordsNotepad')->where(array('wn_id'=>$wnId))->field('user_id,words_id,course_id,wn_content')->find();
  787. $data = array('code'=>0,'msg'=>$msg,'data'=>$info);
  788. $this->returnData($data);exit;
  789. }
  790. //添加错误单词到易错单词课程中
  791. private function addErrorWords($wordsId){
  792. $wordsId = rtrim(I('words_id'),',');
  793. if (empty($wordsId)){
  794. return false;
  795. }
  796. $courseInfo = M('Course')->where(array('user_id'=>$this->userId,'course_name'=>'易错单词','course_flag'=>1))->field('course_id,course_name')->find();
  797. if ($courseInfo==NULL){
  798. $courseId = M('Course')->add(array('course_type'=>0,'course_name'=>'易错单词','course_source'=>2,'user_id'=>$this->userId,'operate_dt'=>time()));
  799. }else if($courseInfo['course_name']=='易错单词'){
  800. return false;
  801. }else{
  802. $courseId = $courseInfo['course_id'];
  803. }
  804. $wordsList = M('Words')->where(array('words_id'=>array('IN',$wordsId),'is_delete'=>1))->order('words_id asc')->select();
  805. //var_dump($wordsList);exit;
  806. foreach ($wordsList as $words){
  807. unset($words['words_id']);
  808. $words['course_id'] = $courseId;
  809. $words['words_source'] = 2;
  810. //$words['operate_dt'] = time();
  811. $words['operate_dt'] = strtotime(date('Y-m-d'));
  812. M('Words')->add($words);
  813. }
  814. return false;
  815. }
  816. //测试模式上报
  817. public function test(){
  818. $testType = I('test_type');
  819. $wordsId = rtrim(I('words_id'),',');
  820. //$wordsTotal = I('words_total');
  821. $wordsError = rtrim(I('words_error'),',');
  822. //$wordsSuccess = rtrim(I('words_success'));
  823. //$testNum = I('test_num');
  824. //$testScore = I('test_score');
  825. if (!in_array($testType, array(1,2,3,4,5,6))){
  826. $data = array('code'=>1,'msg'=>'测试模式错误');
  827. $this->returnData($data);exit;
  828. }
  829. if (empty($wordsId)){
  830. $data = array('code'=>1,'msg'=>'测试单词id错误');
  831. $this->returnData($data);exit;
  832. }
  833. $wordsTotal = substr_count($wordsId,',')+1;
  834. if (empty($wordsError)){
  835. $wordsErrLen = 0;
  836. }else{
  837. $wordsErrLen = substr_count($wordsError,',')+1;
  838. }
  839. $wordsSucLen = $wordsTotal-$wordsErrLen;
  840. $score = round($wordsSucLen/$wordsTotal*100);
  841. $wordsIdArr = explode(',', $wordsId);
  842. $wordsErrorArr = explode(',', $wordsError);
  843. $wordsSuccess = implode(',', array_diff($wordsIdArr, $wordsErrorArr));
  844. //var_dump($wordsId,$wordsError,$wordsSuccess,$wordsSucLen,$wordsTotal);exit;
  845. $saveData = array(
  846. 'user_id'=>$this->userId,'test_type'=>$testType,'words_ids'=>$wordsId,
  847. 'words_total'=>$wordsTotal,'words_error'=>$wordsError,'words_success'=>$wordsSuccess,
  848. 'test_num'=>$wordsTotal,'test_score'=>$score,'operate_dt'=>time(),
  849. );
  850. M('Test')->add($saveData);
  851. $this->addErrorWords($wordsError);
  852. $data = array('code'=>0,'msg'=>'单词测试上报成功','data'=>array('score'=>$score));
  853. $this->returnData($data);exit;
  854. }
  855. //获取单词信息接口
  856. public function dict(){
  857. $wordsName = I('words_name','');
  858. if (empty($wordsName)){
  859. $data = array('code'=>1,'msg'=>'单词不能为空');
  860. $this->returnData($data);exit;
  861. }
  862. $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',);
  863. $httpCurl = new \Org\Net\HttpCurl();
  864. $url = C('TRANS').'&w='.$wordsName;
  865. $res = $httpCurl->get($url,'xml');
  866. $res = json_decode(json_encode(simplexml_load_string($res, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
  867. /* $url = C('TRANS').'&type=json&w='.$wordsName;
  868. $res = $httpCurl->get($url); */
  869. if (!isset($res['key'])){
  870. $data = array('code'=>1,'msg'=>'单词翻译出错');
  871. echo json_encode($data);
  872. }
  873. $saveData = array();
  874. if (isset($res['ps'])){
  875. if (is_array($res['ps'])){
  876. for ($i=0;$i<count($res['ps']);$i++){
  877. $j = $i+1;
  878. $saveData['words_read'.$j] = $res['ps'][$i];
  879. $saveData['words_voice'.$j] = $res['pron'][$i];
  880. }
  881. }else{
  882. $saveData['words_read1'] = $res['ps'];
  883. $saveData['words_voice1'] = $res['pron'];
  884. }
  885. }else{
  886. $saveData['words_read1'] = '';
  887. $saveData['words_voice1'] = '';
  888. }
  889. if (isset($res['pos'])){
  890. if (is_array($res['pos'])){
  891. foreach ($res['pos'] as $k=>$v){
  892. if (isset($wordsKeys[str_replace('.', '', $v)])){
  893. $saveData[$wordsKeys[str_replace('.', '', $v)]] = trim($res['acceptation'][$k]);
  894. }
  895. }
  896. }else{
  897. if (isset($wordsKeys[str_replace('.', '', $res['pos'])])){
  898. $saveData[$wordsKeys[str_replace('.', '', $res['pos'])]] = trim($res['acceptation']);
  899. }else{
  900. $saveData['words_other'] = trim($res['acceptation']);
  901. }
  902. }
  903. }
  904. if (isset($res['sent'])){
  905. for ($i=0;$i<count($res['sent']);$i++){
  906. $j = $i+1;
  907. if ($j>3){
  908. continue;
  909. }
  910. $saveData['jz_en'.$j] = trim($res['sent'][$i]['orig']);
  911. $saveData['jz_cn'.$j] = trim($res['sent'][$i]['trans']);
  912. }
  913. }
  914. $data = array('code'=>0,'msg'=>'','data'=>$saveData);
  915. $this->returnData($data);exit;
  916. }
  917. //删除单词笔记
  918. public function delNote(){
  919. $wordsId = I('words_id','');
  920. if (empty($wordsId)){
  921. $data = array('code'=>1,'msg'=>'单词ID出错');
  922. echo json_encode($data);
  923. }
  924. M('WordsNotepad')->where(array('words_id'=>$wordsId,'user_id'=>$this->userId))->delete();
  925. $data = array('code'=>0,'msg'=>'删除成功','data'=>'');
  926. $this->returnData($data);exit;
  927. }
  928. //单词乱序
  929. public function sort(){
  930. $courseId = I('course_id');
  931. if (empty($courseId) || $courseId<1000000){
  932. $data = array('code'=>1,'msg'=>'课程ID错误');
  933. $this->returnData($data);exit;
  934. }
  935. //1:乱序,0:取消乱序
  936. $type = I('type',1);
  937. if (!in_array($type, array(0,1))){
  938. $data = array('code'=>0,'msg'=>'类型错误');
  939. $this->returnData($data);exit;
  940. }
  941. $info = M('WordsSort')->where(array('course_id'=>$courseId,'user_id'=>$this->userId))->find();
  942. if ($type==1){
  943. if ($info!=NULL){
  944. if ($info['sort_status']==2){
  945. M('WordsSort')->where(array('sort_id'=>$info['sort_id']))->save(array('sort_status'=>1));
  946. }
  947. $data = array('code'=>0,'msg'=>'设置乱序成功');
  948. echo json_encode($data);
  949. }else{
  950. $wordsInfo = M('Words')->where(array('course_id'=>$courseId))->order('RAND()')->field('words_id')->select();
  951. if (function_exists('array_column')){
  952. $wordsIdArr = array_column($wordsInfo, 'words_id');
  953. }else{
  954. foreach ($wordsInfo as $row){
  955. $wordsIdArr[] = $row['words_id'];
  956. }
  957. }
  958. $saveData = array(
  959. 'user_id'=>$this->userId,
  960. 'course_id'=>$courseId,
  961. 'word_ids'=>implode(',', $wordsIdArr),
  962. 'operate_dt'=>time(),
  963. );
  964. M('WordsSort')->add($saveData);
  965. $data = array('code'=>0,'msg'=>'设置乱序成功');
  966. echo json_encode($data);
  967. }
  968. }else if($type==0){
  969. if ($info==NULL){
  970. $data = array('code'=>0,'msg'=>'设置默认排序成功');
  971. $this->returnData($data);exit;
  972. }else{
  973. M('WordsSort')->where(array('sort_id'=>$info['sort_id']))->save(array('sort_status'=>2));
  974. $data = array('code'=>0,'msg'=>'设置默认排序成功');
  975. $this->returnData($data);exit;
  976. }
  977. }
  978. }
  979. //添加重点单词课程
  980. public function addImportantWords(){
  981. $wordsId = rtrim(I('words_id'),',');
  982. if (empty($wordsId)){
  983. return false;
  984. }
  985. $courseInfo = M('Course')->where(array('user_id'=>$this->userId,'course_name'=>'重点单词','course_flag'=>1))->field('course_id')->find();
  986. if ($courseInfo==NULL){
  987. $courseId = M('Course')->add(array('course_type'=>0,'course_name'=>'重点单词','course_source'=>2,'user_id'=>$this->userId,'operate_dt'=>time()));
  988. }else{
  989. $courseId = $courseInfo['course_id'];
  990. }
  991. $wordsList = M('Words')->where(array('words_id'=>array('IN',$wordsId),'is_delete'=>1))->order('words_id asc')->select();
  992. foreach ($wordsList as $words){
  993. $wordsInfo = M('Words')->where(array('words_name'=>$words['words_name'],'course_id'=>$courseId))->field('words_id')->find();
  994. if ($wordsInfo){
  995. continue;
  996. }
  997. unset($words['words_id']);
  998. $words['course_id'] = $courseId;
  999. $words['words_source'] = 2;
  1000. $words['operate_dt'] = strtotime(date('Y-m-d'));
  1001. M('Words')->add($words);
  1002. M('Course')->where(array('course_id'=>$courseId))->setInc('course_num');
  1003. }
  1004. $data = array('code'=>0,'msg'=>'添加成功');
  1005. $this->returnData($data);exit;
  1006. }
  1007. }