CourseController.class.php 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694
  1. <?php
  2. namespace Api\Controller;
  3. use Common\Controller\ApiController;
  4. class CourseController 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. $user_id = I('user_id',0);
  13. //$pageSize = I('page_size',1000);
  14. $pageSize=1000;
  15. $keyword = I('keyword','');
  16. $condition = array('course_status'=>3,'course_flag'=>1,'course_source'=>1,'is_delete'=>1);
  17. if (!empty($keyword)){
  18. $condition['course_name'] = array('LIKE','%'.$keyword.'%');
  19. }
  20. if ($lastId>0){
  21. $condition['course_id'] = array('LT',$lastId);
  22. }
  23. if (!empty($user_id)){
  24. $condition['user_id'] = $user_id;
  25. }
  26. //$count = M('Course')->where($condition)->count();
  27. $orderby = '';
  28. if ($sort==1){
  29. $orderby = 'course_join desc';
  30. }else if($sort==2){
  31. $orderby = 'operate_dt desc';
  32. }
  33. $res = D('Course')->getCourseList($condition, $pageSize, $orderby, $this->userId);
  34. if ($res!=NULL){
  35. $userWordsRes = $this->square();
  36. foreach ($res as $key=>$row){
  37. $Count = M('course_reply')->where(array('course_id'=>$row['course_id']))->count();
  38. $res[$key]['reply'] = $Count==NULL?0:$Count;
  39. $Count = M('course_praise')->where(array('course_id'=>$row['course_id']))->count();
  40. $res[$key]['praise'] = $Count==NULL?0:$Count;
  41. if (in_array($row['course_id'], $userWordsRes) || $row['user_id']==$this->userId){
  42. $res[$key]['is_add'] = 1;
  43. }else{
  44. $res[$key]['is_add'] = 0;
  45. }
  46. }
  47. }
  48. if ($lastId>0){
  49. $data = array('code'=>0,'msg'=>'无更多数据','data'=>array());
  50. $this->returnData($data);exit;
  51. }
  52. $data = array('code'=>0,'msg'=>'','data'=>$res);
  53. $this->returnData($data);exit;
  54. }
  55. //获取已经添加的课程或者自由记
  56. private function square($uwType=0){
  57. $condition = array('user_id'=>$this->userId,'is_show'=>1);
  58. if (!empty($uwType)){
  59. $condition['uw_type'] = $uwType;
  60. }
  61. $res = M('UserWords')->where($condition)->field('course_id')->select();
  62. if ($res==NULL){
  63. return array();
  64. }
  65. $arr = array();
  66. foreach ($res as $r){
  67. $arr[] = $r['course_id'];
  68. }
  69. return $arr;
  70. }
  71. //添加课程到我的课程
  72. public function favorite(){
  73. $courseId = I('course_id');
  74. if (empty($courseId) || $courseId<1000000){
  75. $data = array('code'=>1,'msg'=>'课程ID错误');
  76. $this->returnData($data);exit;
  77. }
  78. $userInfo = M('User')->where(array('user_id'=>$this->userId))->field('user_part')->find();
  79. $courseInfo = M('Course')->where(array('course_id'=>$courseId,'is_delete'=>1,'course_status'=>3))->field('course_num,course_id,user_id')->find();
  80. if ($courseInfo==NULL){
  81. $data = array('code'=>1,'msg'=>'等审核通过了才可以添加');
  82. $this->returnData($data);exit;
  83. }
  84. if ($courseInfo['user_id']==$this->userId){
  85. $data = array('code'=>1,'msg'=>'自己添加的课程无需添加');
  86. $this->returnData($data);exit;
  87. }
  88. //判断用户是否已经添加过该课程
  89. $userInfo = M('UserWords')->where(array('course_id'=>$courseId,'is_delete'=>1,'user_id'=>$this->userId,'is_show'=>1))->field('uw_id')->find();
  90. if ($userInfo!=NULL){
  91. $data = array('code'=>1,'msg'=>'已经添加过该课程,请勿重复添加');
  92. $this->returnData($data);exit;
  93. }
  94. $partNum = ceil($courseInfo['course_num']/$userInfo['user_part']);
  95. if (empty($userInfo['user_part'])){
  96. $userInfo['user_part'] = 15;
  97. }
  98. if (empty($userInfo['user_part'])){
  99. $userInfo['user_part'] = 15;
  100. }
  101. M('UserWords')->add(array('course_id'=>$courseId,'user_id'=>$this->userId,'user_part'=>$userInfo['user_part'],'part_num'=>$partNum,'operate_dt'=>time()));
  102. M('Course')->where(array('course_id'=>$courseId))->setInc('course_join');
  103. $data = array('code'=>0,'msg'=>'已添加至我的课程中','data'=>'');
  104. $this->returnData($data);exit;
  105. }
  106. //添加最近学习课程
  107. public function studyCourseAdd(){
  108. $courseId = I('course_id');
  109. if (empty($courseId)){
  110. $data = array('code'=>1,'msg'=>'收藏ID错误');
  111. $this->returnData($data);exit;
  112. }
  113. $courseIdArr = explode(',', $courseId);
  114. if (count($courseIdArr)<=0){
  115. $data = array('code'=>1,'msg'=>'收藏ID错误');
  116. $this->returnData($data);exit;
  117. }
  118. $userInfo = M('User')->where(array('user_id'=>$this->userId))->field('user_part')->find();
  119. foreach ($courseIdArr as $cid){
  120. $info = M('UserWords')->where(array('user_id'=>$this->userId,'course_id'=>$cid,'uw_type'=>2,'is_show'=>1))->field('uw_id')->find();
  121. if ($info==NULL){
  122. $courseInfo = M('Course')->where(array('course_id'=>$cid))->field('course_num')->find();
  123. $partNum = ceil($courseInfo['course_num']/$userInfo['user_part']);
  124. if (empty($userInfo['user_part'])){
  125. $userInfo['user_part'] = 15;
  126. }
  127. if (empty($userInfo['user_part'])){
  128. $userInfo['user_part'] = 15;
  129. }
  130. M('UserWords')->add(array('user_id'=>$this->userId,'course_id'=>$cid,'user_part'=>$userInfo['user_part'],'part_num'=>$partNum,'uw_type'=>2,'operate_dt'=>time()));
  131. M('Course')->where(array('course_id'=>$cid))->setInc('course_join');
  132. }else{
  133. M('UserWords')->where(array('uw_id'=>$info['uw_id']))->save(array('uw_type'=>2));
  134. }
  135. }
  136. $data = array('code'=>0,'msg'=>'添加成功','data'=>'');
  137. $this->returnData($data);exit;
  138. }
  139. //删除我的课程
  140. public function del(){
  141. $courseId = I('course_id');
  142. $courseId = rtrim($courseId,',');
  143. if (empty($courseId)){
  144. $data = array('code'=>1,'msg'=>'课程ID错误');
  145. $this->returnData($data);exit;
  146. }
  147. $info = M('UserWords')->where(array('course_id'=>array('IN',$courseId),'user_id'=>$this->userId))->field('user_id,course_id,uw_type')->find();
  148. if ($info['uw_type']==2){
  149. M('UserWords')->where(array('course_id'=>array('IN',$courseId),'user_id'=>$this->userId))->save(array('uw_type'=>1));
  150. }else if($info['uw_type']==1){
  151. M('UserWords')->where(array('course_id'=>array('IN',$courseId),'user_id'=>$this->userId))->delete();
  152. }
  153. $courseInfo = M('Course')->where(array('course_id'=>array('IN',$courseId)))->field('course_id,course_status,user_id')->select();
  154. foreach ($courseInfo as $row){
  155. if ($row['user_id'] != $this->userId){
  156. $data = array('code'=>0,'msg'=>'课程删除成功');
  157. $this->returnData($data);exit;
  158. }
  159. if ($row['course_status']==3){
  160. $data = array('code'=>1,'msg'=>'课程已审核到单词广场,无法删除');
  161. $this->returnData($data);exit;
  162. }
  163. }
  164. M('Words')->where(array('course_id'=>array('IN', $courseId)))->delete();
  165. M('Course')->where(array('course_id'=>array('IN',$courseId)))->delete();
  166. $data = array('code'=>0,'msg'=>'课程删除成功');
  167. $this->returnData($data);exit;
  168. }
  169. //清空收藏课程或者自由记信息表
  170. public function delCourse(){
  171. //$courseId = I('course_id');
  172. $currentCourse = I('current_course','2');
  173. M('UserWords')->where(array('current_course'=>$currentCourse,'user_id'=>$this->userId))->delete();
  174. $data = array('code'=>0,'msg'=>'删除成功');
  175. $this->returnData($data);exit;
  176. }
  177. //删除最近学习的课程
  178. public function studyCourseDel(){
  179. $courseId = I('course_id');
  180. $type = I('type',1);
  181. if (empty($courseId) || $courseId<=1000000){
  182. $data = array('code'=>1,'msg'=>'课程ID错误');
  183. $this->returnData($data);exit;
  184. }
  185. $info = M('UserWords')->where(array('course_id'=>array('IN',$courseId),'user_id'=>$this->userId))->field('user_id,course_id')->find();
  186. if ($info==NULL || $info['user_id']!=$this->userId){
  187. $data = array('code'=>1,'msg'=>'删除失败');
  188. $this->returnData($data);exit;
  189. }
  190. if ($type==1){
  191. M('UserWords')->where(array('course_id'=>array('IN',$courseId),'user_id'=>$this->userId))->save(array('uw_type'=>1));
  192. }else if($type==2){
  193. M('UserWords')->where(array('course_id'=>array('IN',$courseId),'user_id'=>$this->userId))->delete();
  194. /* $couseInfo = M('Course')->where(array('course_id'=>$info['course_id']))->field('user_id,course_status')->find();
  195. if ($couseInfo!=NULL && $couseInfo['course_status']!=3 && $couseInfo['user_id']==$this->userId){
  196. M('Course')->where(array('course_id'=>$info['course_id']))->delete();
  197. M('Words')->where(array('course_id'=>$info['course_id']))->delete();
  198. } */
  199. }
  200. $data = array('code'=>0,'msg'=>'删除成功','data'=>'');
  201. $this->returnData($data);exit;
  202. }
  203. //修改课程名称
  204. public function edit(){
  205. $courseId = I('course_id');
  206. $courseName = I('course_name');
  207. $course_intro = I('course_intro');
  208. if (empty($courseId) || $courseId<1000000){
  209. $data = array('code'=>1,'msg'=>'课程ID错误');
  210. $this->returnData($data);exit;
  211. }
  212. if (mb_strlen($courseName,'UTF8')<2 || mb_strlen($courseName,'UTF8')>12){
  213. $data = array('code'=>1,'msg'=>'课程名称2到12个汉字');
  214. $this->returnData($data);exit;
  215. }
  216. $info = M('Course')->where(array('course_id'=>$courseId))->field('user_id,course_status')->find();
  217. if ($info==NULL || $info['user_id']!=$this->userId ){
  218. $data = array('code'=>1,'msg'=>'课程名称不能修改');
  219. $this->returnData($data);exit;
  220. }
  221. M('Course')->where(array('course_id'=>$courseId))->save(array('course_name'=>$courseName,'course_intro'=>$course_intro));
  222. $data = array('code'=>0,'msg'=>'课程修改成功','data'=>'');
  223. $this->returnData($data);exit;
  224. }
  225. //新增课程
  226. public function add(){
  227. $courseName = I('course_name');
  228. $course_intro = I('course_intro');
  229. if ($courseName=='易错单词'){
  230. $data = array('code'=>1,'msg'=>'该课程名称不能创建');
  231. $this->returnData($data);exit;
  232. }
  233. if (mb_strlen($courseName,'UTF8')<2 || mb_strlen($courseName,'UTF8')>12){
  234. $data = array('code'=>1,'msg'=>'课程名称2到12个汉字');
  235. $this->returnData($data);exit;
  236. }
  237. $res = M('Course')->where(array('course_name'=>$courseName,'is_delete'=>1))->field('course_id')->find();
  238. if ($res!=NULL){
  239. $courseName = $this->getCourseName($courseName);
  240. }
  241. $courseId = M('Course')->add(array('course_type'=>0,'course_name'=>$courseName,'course_intro'=>$course_intro,'course_source'=>2,'user_id'=>$this->userId,'operate_dt'=>time()));
  242. $info = M('Course')->where(array('course_id'=>$courseId))->field('course_id,user_id,course_name,course_intro,course_join,course_content,course_source,operate_dt')->find();
  243. $data = array('code'=>0,'msg'=>'课程添加成功','data'=>$info);
  244. $this->returnData($data);exit;
  245. }
  246. //合并课程
  247. public function merge(){
  248. $courseId = rtrim(I('course_id'),',');
  249. $courseName = I('course_name');
  250. $courseIdArr = explode(',', $courseId);
  251. if (mb_strlen($courseName,'UTF8')<2 || mb_strlen($courseName,'UTF8')>12){
  252. $data = array('code'=>1,'msg'=>'课程名称2到12个汉字');
  253. $this->returnData($data);exit;
  254. }
  255. $res = M('Course')->where(array('course_name'=>$courseName,'is_delete'=>1))->field('course_id')->find();
  256. if ($res!=NULL){
  257. $courseName = $this->getCourseName($courseName);
  258. }
  259. $courseNum = M('Words')->where(array('course_id'=>array('IN',$courseId)))->count();
  260. $courseNewId = M('Course')->add(array('course_type'=>0,'user_id'=>$this->userId,'course_source'=>2,'course_num'=>$courseNum,'course_name'=>$courseName,'operate_dt'=>time()));
  261. foreach ($courseIdArr as $cid){
  262. $info = M('Course')->where(array('course_id'=>$cid,'is_delete'=>1))->field('course_id,user_id,course_status')->find();
  263. if ($info['user_id']!=$this->userId || $info['course_status']==3){
  264. //复制一份课程下面的单词
  265. $this->copyWords($cid,$courseNewId);
  266. }
  267. if ($info['user_id']==$this->userId && $info['course_status']==3){
  268. //同样复制一份课程下面的单词
  269. $this->copyWords($cid,$courseNewId);
  270. }
  271. if ($info['user_id']==$this->userId && $info['course_status']!=3){
  272. //自己未上到单词广场的课程,直接删除。同时把删除的课程单词,同步到新的课程
  273. M('Course')->where(array('course_id'=>$cid))->delete();
  274. M('UserWords')->where(array('course_id'=>$cid,'user_id'=>$this->userId))->delete();
  275. M('Words')->where(array('course_id'=>$cid))->save(array('course_id'=>$courseNewId));
  276. }
  277. }
  278. $courseInfo = M('Course')->where(array('course_id'=>$courseNewId))
  279. ->field('course_id,user_id,course_name,course_join,course_content,course_source,operate_dt')->find();
  280. $data = array('code'=>0,'msg'=>'课程合并成功','data'=>$courseInfo);
  281. $this->returnData($data);exit;
  282. }
  283. //设置单章节的单词数量
  284. public function part(){
  285. $uwId = I('uw_id');
  286. //1:乱序,0:取消乱序
  287. $type = I('type',0);
  288. $userPart = I('user_part',15);
  289. $courseId = I('course_id');
  290. $partNum = I('part_num');
  291. if (empty($courseId) || $courseId<1000000){
  292. $data = array('code'=>1,'msg'=>'课程ID错误');
  293. $this->returnData($data);exit;
  294. }
  295. if ($userPart<=0 || $partNum<=0){
  296. $data = array('code'=>1,'msg'=>'章节数错误');
  297. $this->returnData($data);exit;
  298. }
  299. if (!in_array($type, array(0,1))){
  300. $data = array('code'=>0,'msg'=>'类型错误');
  301. $this->returnData($data);exit;
  302. }
  303. $courseInfo = M('Course')->where(array('course_id'=>$courseId))->field('course_num')->find();
  304. $partNum1 = ceil($courseInfo['course_num']/$userPart);
  305. if ($partNum1!=$partNum){
  306. $data = array('code'=>1,'msg'=>'章节数错误');
  307. $this->returnData($data);exit;
  308. }
  309. if (empty($userPart)){
  310. $userPart = 15;
  311. }
  312. M('UserWords')->where(array('course_id'=>$courseId,'user_id'=>$this->userId))->save(array('user_part'=>$userPart,'part_num'=>$partNum1));
  313. M('User')->where(array('user_id'=>$this->userId))->save(array('user_part'=>$userPart));
  314. //设置乱序
  315. $info = M('WordsSort')->where(array('course_id'=>$courseId,'user_id'=>$this->userId))->find();
  316. if ($type==1){
  317. if ($info['sort_status']==2){
  318. M('WordsSort')->where(array('sort_id'=>$info['sort_id']))->save(array('sort_status'=>1));
  319. }
  320. if ($info==NULL){
  321. $wordsInfo = M('Words')->where(array('course_id'=>$courseId))->order('RAND()')->field('words_id')->select();
  322. if (function_exists('array_column')){
  323. $wordsIdArr = array_column($wordsInfo, 'words_id');
  324. }else{
  325. foreach ($wordsInfo as $row){
  326. $wordsIdArr[] = $row['words_id'];
  327. }
  328. }
  329. $saveData = array(
  330. 'user_id'=>$this->userId,
  331. 'course_id'=>$courseId,
  332. 'word_ids'=>implode(',', $wordsIdArr),
  333. 'operate_dt'=>time(),
  334. );
  335. M('WordsSort')->add($saveData);
  336. }
  337. }else if($type==0){
  338. if ($info!=NULL){
  339. M('WordsSort')->where(array('sort_id'=>$info['sort_id']))->save(array('sort_status'=>2));
  340. }
  341. }
  342. $data = array('code'=>0,'msg'=>'章节设置成功','data'=>'');
  343. $this->returnData($data);exit;
  344. }
  345. //获取课程的章节数
  346. public function getPart(){
  347. $courseId = I('course_id');
  348. if (empty($courseId) || $courseId<1000000){
  349. $data = array('code'=>1,'msg'=>'课程ID错误');
  350. $this->returnData($data);exit;
  351. }
  352. $partInfo = M('UserWords')->where(array('course_id'=>$courseId,'user_id'=>$this->userId))->field('user_part,part_num')->find();
  353. if ($partInfo==NULL){
  354. $courseInfo = M('Course')->where(array('course_id'=>$courseId,'is_delete'=>1))->field('course_num')->find();
  355. $partInfo['user_part'] = 15;
  356. $partInfo['part_num'] = ceil($courseInfo['course_num']/$partInfo['user_part']);
  357. }
  358. $res = M('Course')->where(array('course_id'=>$courseId,'is_delete'=>1))->field('course_id,user_id,course_name,course_join,course_num,operate_dt')->find();
  359. $res['part_num'] = $partInfo['part_num'];
  360. $res['user_part'] = empty($partInfo['user_part'])?'0':$partInfo['user_part'];
  361. $info = M('WordsSort')->where(array('course_id'=>$res['course_id'],'user_id'=>$this->userId,'sort_status'=>1))->field('sort_id')->find();
  362. if ($info!=NULL){
  363. $res['set_sort'] = 1;
  364. }else{
  365. $res['set_sort'] = 0;
  366. }
  367. $data = array('code'=>0,'msg'=>'','data'=>$res);
  368. $this->returnData($data);exit;
  369. }
  370. //获取特殊课程的章节
  371. public function getSpecialPart(){
  372. $courseId = I('course_id');
  373. if (empty($courseId) || $courseId<1000000){
  374. $data = array('code'=>1,'msg'=>'课程ID错误');
  375. $this->returnData($data);exit;
  376. }
  377. $res = M('Words')->where(array('course_id'=>$courseId))->group('operate_dt')->field('operate_dt')->order('operate_dt asc')->select();
  378. if ($res==NULL){
  379. $part = array();
  380. }else{
  381. foreach ($res as $r){
  382. $year = date('Y',$r['operate_dt']);
  383. $part[$year]['year'] = $year;
  384. $part[$year]['dates'][] = $r['operate_dt'];
  385. }
  386. }
  387. $data = array('code'=>0,'msg'=>'','data'=>array_values($part));
  388. $this->returnData($data);exit;
  389. }
  390. //删除章节
  391. public function delPart(){
  392. $courseId = I('course_id');
  393. M('UserWords')->where(array('course_id'=>$courseId,'user_id'=>$this->userId))->save(array('user_part'=>15,'part_num'=>0,'current_part'=>1));
  394. $data = array('code'=>0,'msg'=>'删除章节成功','data'=>'');
  395. $this->returnData($data);exit;
  396. }
  397. //上传到单词广场
  398. public function upSquare(){
  399. $courseId = I('course_id','');
  400. if (empty($courseId)){
  401. $data = array('code'=>1,'msg'=>'课程ID错误');
  402. $this->returnData($data);exit;
  403. }
  404. $courseId = rtrim($courseId,',');
  405. M('Course')->where(array('course_id'=>array('IN',$courseId),'user_id'=>$this->userId))->save(array('course_status'=>2));
  406. $data = array('code'=>0,'msg'=>'上传成功,请等待管理员审核!','data'=>'');
  407. $this->returnData($data);exit;
  408. }
  409. //获取课程信息
  410. public function info(){
  411. $courseId = I('course_id');
  412. if (empty($courseId) || $courseId<1000000){
  413. $data = array('code'=>1,'msg'=>'课程ID错误');
  414. $this->returnData($data);exit;
  415. }
  416. $info = M('Course')->where(array('course_id'=>$courseId))->field('course_id,user_id,course_name,course_intro,course_join,course_content,course_flag,course_source,operate_dt')->find();
  417. $res = M('UserWords')->where(array('course_id'=>$courseId,'user_id'=>$this->userId))->field('uw_id')->find();
  418. if ($res==NULL && $info['user_id']!=$this->userId){
  419. $info['is_add'] = 0;
  420. $info['is_course'] = 0;
  421. }else{
  422. $info['is_add'] = 1;
  423. $info['is_course'] = 1;
  424. }
  425. if ($info['user_id']!=$this->userId){
  426. $fansInfo = M('Fans')->where(array('user_id'=>$this->userId,'fans_user_id'=>$info['user_id']))->field('fans_id')->find();
  427. $info['is_fans'] = $fansInfo==NULL?0:1;
  428. }else{
  429. $info['is_fans'] = 2;
  430. }
  431. $userInfo = M('User')->where(array('user_id'=>$info['user_id']))->field('user_id,user_name,user_icon')->find();
  432. $info['user_icon'] = $userInfo['user_icon'];
  433. $info['user_name'] = $userInfo['user_name'];
  434. $replyCount = M('course_reply')->where(array('course_id'=>$courseId))->count();
  435. $info['reply'] = $replyCount==NULL?0:$replyCount;
  436. $Count = M('course_praise')->where(array('course_id'=>$courseId))->count();
  437. $info['praise'] = $Count==NULL?0:$Count;
  438. $Count = M('course_praise')->where(array('course_id'=>$courseId,'user_id'=>$this->userId))->count();
  439. $info['is_praise'] = $Count?1:0;
  440. $data = array('code'=>0,'msg'=>'','data'=>$info);
  441. $this->returnData($data);exit;
  442. }
  443. //记录学习模式,学习到的最后一个单词
  444. public function studyWords(){
  445. //$partId = I('part_id');
  446. $wordsId = I('words_id');
  447. $courseId = I('course_id');
  448. if (empty($courseId) || $courseId<1000000){
  449. $data = array('code'=>1,'msg'=>'课程ID错误');
  450. $this->returnData($data);exit;
  451. }
  452. if (empty($wordsId)){
  453. $data = array('code'=>1,'msg'=>'单词ID错误');
  454. $this->returnData($data);exit;
  455. }
  456. /* if (empty($partId)){
  457. $data = array('code'=>1,'msg'=>'章节ID错误');
  458. $this->returnData($data);exit;
  459. } */
  460. $info = M('StudyWords')->where(array('user_id'=>$this->userId))->field('study_id')->find();
  461. if ($info == NULL){
  462. M('StudyWords')->add(array('words_id'=>$wordsId,'course_id'=>$courseId,'part_id'=>0,'user_id'=>$this->userId,'operate_dt'=>time(),));
  463. }else{
  464. M('StudyWords')->where(array('study_id'=>$info['study_id']))->save(array('words_id'=>$wordsId,'course_id'=>$courseId,'part_id'=>0,));
  465. }
  466. $data = array('code'=>0,'msg'=>'','data'=>'记录成功');
  467. $this->returnData($data);exit;
  468. }
  469. //评论列表
  470. public function reply_list(){
  471. $courseId = I('course_id');
  472. if (empty($courseId)){
  473. $data = array('code'=>1,'msg'=>'课程ID错误');
  474. $this->returnData($data);exit;
  475. }
  476. $lastId = I('last_id','');
  477. if(!$lastId){
  478. $lastId=10000000;
  479. }
  480. $pageSize = I('page_size',20);
  481. $res = M('course_reply')->join('left join t_user as a on a.user_id = t_course_reply.user_id')->join('left join t_user as b on b.user_id = t_course_reply.reply_user_id')->join('left join t_course_reply_praise on t_course_reply_praise.cr_id = t_course_reply.cr_id')->where(array('t_course_reply.is_delete'=>1,'t_course_reply.reply_cr_id'=>0,'t_course_reply.course_id'=>$courseId,'t_course_reply.cr_id'=>array('LT',$lastId)))->group('t_course_reply.cr_id')->field('t_course_reply.*,a.user_name,a.user_icon,a.forbidden,b.forbidden as reply_forbidden,b.user_name as reply_user_name,count(t_course_reply_praise.cr_id) as praise')->order('t_course_reply.operate_dt desc')->limit('0,'.$pageSize)->select();
  482. $arr=array();
  483. foreach($res as $k=>$v){
  484. if(!$v['cr_id']){
  485. unset($res[$k]);
  486. }else{
  487. $arr[]=$v['cr_id'];
  488. $res[$k]['reply_list']=array();
  489. }
  490. if($v['forbidden']>time()){
  491. $res[$k]['is_forbidden']=1;
  492. }else{
  493. $res[$k]['is_forbidden']=0;
  494. }
  495. }
  496. if($arr){
  497. $res2 = M('course_reply')->join('left join t_user as a on a.user_id = t_course_reply.user_id')->join('left join t_user as b on b.user_id = t_course_reply.reply_user_id')->join('left join t_course_reply_praise on t_course_reply_praise.cr_id = t_course_reply.cr_id')->where("t_course_reply.course_id='$courseId' and t_course_reply.is_delete=1 and t_course_reply.reply_cr_id in ( ".implode(',',$arr).")" )->group('t_course_reply.cr_id')->field('t_course_reply.*,a.user_name,a.user_icon,b.user_name as reply_user_name,count(t_course_reply_praise.cr_id) as praise')->order('t_course_reply.operate_dt desc')->select();;
  498. }else{
  499. $res2=array();
  500. }
  501. $praiseInfo = M('course_reply_praise')->where(array('is_delete'=>1,'user_id'=>$this->userId))->field('cr_id')->select();
  502. $praise_arr=array();
  503. foreach($praiseInfo as $k=>$v){
  504. $praise_arr[]=$v['cr_id'];
  505. }
  506. foreach($res as $k=>$v){
  507. foreach($res2 as $m=>$n){
  508. if($n['forbidden']>time()){
  509. $res2[$m]['is_forbidden']=1;
  510. }else{
  511. $res2[$m]['is_forbidden']=0;
  512. }
  513. if(in_array($n['cr_id'],$praise_arr)){
  514. $res2[$m]['is_praise']=1;
  515. }else{
  516. $res2[$m]['is_praise']=0;
  517. }
  518. if($n['reply_cr_id']==$v['cr_id']){
  519. array_unshift($res[$k]['reply_list'],$res2[$m]);
  520. }
  521. }
  522. if(in_array($v['cr_id'],$praise_arr)){
  523. $res[$k]['is_praise']=1;
  524. }else{
  525. $res[$k]['is_praise']=0;
  526. }
  527. }
  528. $data = array('code'=>0,'msg'=>'','data'=>$res);
  529. $this->returnData($data);exit;
  530. }
  531. //评论点赞
  532. public function reply_praise(){
  533. $cr_id = I('cr_id');
  534. if (empty($cr_id)){
  535. $data = array('code'=>1,'msg'=>'评论ID错误');
  536. $this->returnData($data);exit;
  537. }
  538. $replyInfo = M('course_reply')->where(array('cr_id'=>$cr_id,'is_delete'=>1))->field('cr_id,course_id')->find();
  539. if (!$replyInfo){
  540. $data = array('code'=>1,'msg'=>'该评论不存在');
  541. $this->returnData($data);exit;
  542. }
  543. $course_reply_praise = M('course_reply_praise')->where(array('cr_id'=>$cr_id,'is_delete'=>1,'user_id'=>$this->userId))->field('cr_id')->find();
  544. if ($course_reply_praise!=NULL){
  545. $data = array('code'=>1,'msg'=>'已经点赞过该评论');
  546. $this->returnData($data);exit;
  547. }
  548. $courseId=$replyInfo['course_id'];
  549. $userInfo = M('user')->where(array('user_id'=>$this->userId))->field('*')->find();
  550. $noticeContent = $userInfo['user_name'].'点赞了您的评论!';
  551. $res = M('course')->where(array('course_id'=>$courseId,'is_delete'=>1))->field('user_id,course_type')->find();
  552. $uid=$res['user_id'];
  553. if($uid){
  554. $reply_content=$replyInfo['reply_content'];
  555. $temp=array('course_id'=>$courseId,'reply_content'=>$reply_content,'course_type'=>$res['course_type']);
  556. M('Notice')->add(array('ref_user_id'=>$uid,'user_id'=>$this->userId,'notice_flag'=>0,'notice_status'=>1,'notice_type'=>4,'notice_title'=>'点赞消息','notice_content'=>$noticeContent,'operate_dt'=>time(),'extra'=>json_encode($temp)));
  557. M('User')->where(array('user_id'=>$uid))->setInc('praise_notice');
  558. $data = json_encode(array('type'=>4,'msg'=>$noticeContent,'data'=>array('title'=>$noticeContent,'course_id'=>$courseId,'course_content'=>$reply_content)));
  559. $this->umengPush($uid, $data);
  560. }
  561. M('course_reply_praise')->add(array('cr_id'=>$cr_id,'user_id'=>$this->userId,'operate_dt'=>time()));
  562. $data = array('code'=>0,'msg'=>'评论点赞成功');
  563. $this->returnData($data);exit;
  564. }
  565. //取消评论点赞
  566. public function reply_praise_cancel(){
  567. $cr_id = I('cr_id');
  568. $cr_id = rtrim($cr_id,',');
  569. if (empty($cr_id)){
  570. $data = array('code'=>1,'msg'=>'ID错误');
  571. $this->returnData($data);exit;
  572. }
  573. M('course_reply_praise')->where(array('cr_id'=>array('IN',$cr_id),'user_id'=>$this->userId))->delete();
  574. $data = array('code'=>0,'msg'=>'取消点赞成功');
  575. $this->returnData($data);exit;
  576. }
  577. //编辑社区评论
  578. public function reply_edit(){
  579. $courseId = I('course_id','');
  580. $reply_user_id = I('reply_user_id','0');
  581. $reply_cr_id = I('reply_cr_id','0');
  582. $reply_content = I('reply_content','');
  583. $userInfo = M('user')->where(array('user_id'=>$this->userId))->field('*')->find();
  584. if($userInfo['forbidden']>time()){
  585. $data = array('code'=>1,'msg'=>'用户被禁言','data'=>array());
  586. $this->returnData($data);exit;
  587. }
  588. if(!$reply_content){
  589. $data = array('code'=>1,'msg'=>'评论内容必须','data'=>array());
  590. $this->returnData($data);exit;
  591. }
  592. if ( mb_strlen($reply_content,'UTF8')>140){
  593. $data = array('code'=>1,'msg'=>'评论内容限制140个汉字','data'=>array());
  594. $this->returnData($data);exit;
  595. }
  596. M('course_reply')->add(array('course_id'=>$courseId,'user_id'=>$this->userId,'reply_user_id'=>$reply_user_id,'reply_cr_id'=>$reply_cr_id,'reply_content'=>$reply_content,'operate_dt'=>time()));
  597. $noticeContent = $userInfo['user_name'].'评论了您的课程!';
  598. $res = M('course')->where(array('course_id'=>$courseId,'is_delete'=>1))->field('user_id,course_type')->find();
  599. $uid=$res['user_id'];
  600. if($uid){
  601. $temp=array('course_id'=>$courseId,'reply_content'=>$reply_content,'course_type'=>$res['course_type']);
  602. M('Notice')->add(array('ref_user_id'=>$uid,'user_id'=>$this->userId,'notice_flag'=>0,'notice_status'=>1,'notice_type'=>3,'notice_title'=>'评论消息','notice_content'=>$noticeContent,'operate_dt'=>time(),'extra'=>json_encode($temp)));
  603. M('User')->where(array('user_id'=>$uid))->setInc('reply_notice');
  604. $data = json_encode(array('type'=>3,'msg'=>$noticeContent,'data'=>array('title'=>$noticeContent,'course_id'=>$courseId,'course_content'=>$reply_content)));
  605. $this->umengPush($uid, $data);
  606. }
  607. $data = array('code'=>0,'msg'=>'评论发布成功');
  608. $this->returnData($data);exit;
  609. }
  610. //点赞
  611. public function praise(){
  612. $courseId = I('course_id');
  613. if (empty($courseId)){
  614. $data = array('code'=>1,'msg'=>'ID错误');
  615. $this->returnData($data);exit;
  616. }
  617. $praiseInfo = M('course_praise')->where(array('course_id'=>$courseId,'is_delete'=>1,'user_id'=>$this->userId))->field('cp_id')->find();
  618. if ($praiseInfo!=NULL){
  619. $data = array('code'=>1,'msg'=>'已经点赞过该课程');
  620. $this->returnData($data);exit;
  621. }
  622. $userInfo = M('user')->where(array('user_id'=>$this->userId))->field('*')->find();
  623. $noticeContent = $userInfo['user_name'].'点赞了您的课程!';
  624. $res = M('course')->where(array('course_id'=>$courseId,'is_delete'=>1))->field('user_id,course_type')->find();
  625. $uid=$res['user_id'];
  626. if($uid){
  627. $reply_content='';
  628. $temp=array('course_id'=>$courseId,'reply_content'=>$reply_content,'course_type'=>$res['course_type']);
  629. M('Notice')->add(array('ref_user_id'=>$uid,'user_id'=>$this->userId,'notice_flag'=>0,'notice_status'=>1,'notice_type'=>4,'notice_title'=>'点赞消息','notice_content'=>$noticeContent,'operate_dt'=>time(),'extra'=>json_encode($temp)));
  630. M('User')->where(array('user_id'=>$uid))->setInc('praise_notice');
  631. $data = json_encode(array('type'=>4,'msg'=>$noticeContent,'data'=>array('title'=>$noticeContent,'course_id'=>$courseId,'course_content'=>$reply_content)));
  632. $this->umengPush($uid, $data);
  633. }
  634. M('course_praise')->add(array('course_id'=>$courseId,'user_id'=>$this->userId,'operate_dt'=>time()));
  635. $data = array('code'=>0,'msg'=>'课程点赞成功');
  636. $this->returnData($data);exit;
  637. }
  638. //取消点赞
  639. public function praise_cancel(){
  640. $courseId = I('course_id');
  641. $courseId = rtrim($courseId,',');
  642. if (empty($courseId)){
  643. $data = array('code'=>1,'msg'=>'ID错误');
  644. $this->returnData($data);exit;
  645. }
  646. M('course_praise')->where(array('course_id'=>array('IN',$courseId),'user_id'=>$this->userId))->delete();
  647. $data = array('code'=>0,'msg'=>'取消点赞成功');
  648. $this->returnData($data);exit;
  649. }
  650. //删除我的评论
  651. public function reply_del(){
  652. $cr_id = I('cr_id');
  653. $cr_id = rtrim($cr_id,',');
  654. if (empty($cr_id)){
  655. $data = array('code'=>1,'msg'=>'ID错误');
  656. $this->returnData($data);exit;
  657. }
  658. M('course_reply')->where(array('cr_id'=>array('IN',$cr_id),'user_id'=>$this->userId))->delete();
  659. $data = array('code'=>0,'msg'=>'评论删除成功');
  660. $this->returnData($data);exit;
  661. }
  662. }