UserController.class.php 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756
  1. <?php
  2. namespace Api\Controller;
  3. use Common\Controller\ApiController;
  4. class UserController extends ApiController {
  5. public function __construct(){
  6. parent::__construct();
  7. }
  8. //完善个人资料
  9. public function edit(){
  10. $userSex = I('user_sex');
  11. $userIcon = I('user_icon');
  12. $userName = I('user_name');
  13. $userBirthdate = I('user_birthdate');
  14. $userAddress = I('user_address');
  15. $userCity = I('user_city');
  16. $userProvince = I('user_province');
  17. $userIntro = I('user_intro');
  18. $saveData = array();
  19. if (!empty($userName)){
  20. if (mb_strlen($userName,'UTF8')<2 || mb_strlen($userName,'UTF8')>12){
  21. $data = array('code'=>1,'msg'=>'昵称长度2到12个字符之间');
  22. $this->returnData($data);exit;
  23. }
  24. $saveData['user_name'] = $userName;
  25. }
  26. if (!empty($userSex)){
  27. $saveData['user_sex'] = $userSex;
  28. }
  29. if (!empty($userIcon)){
  30. $saveData['user_icon'] = $userIcon;
  31. }
  32. if (!empty($userBirthdate)){
  33. $saveData['user_birthdate'] = strtotime(date('Y-m-d',$userBirthdate));
  34. }
  35. if (!empty($userAddress)){
  36. $saveData['userAddress'] = $userAddress;
  37. }
  38. if (!empty($userCity)){
  39. $saveData['user_city'] = $userCity;
  40. }
  41. if (!empty($userProvince)){
  42. $saveData['user_province'] = $userProvince;
  43. }
  44. if (!empty($userIntro)){
  45. if (mb_strlen($userIntro,'UTF8')>140){
  46. $data = array('code'=>1,'msg'=>'个人介绍不能超过140字符');
  47. $this->returnData($data);exit;
  48. }
  49. $saveData['user_intro'] = $userIntro;
  50. }
  51. if (count($saveData)){
  52. M('User')->where(array('user_id'=>$this->userId))->save($saveData);
  53. $info = M('User')->where(array('user_id'=>$this->userId))->field('user_id,user_phone,user_name,user_intro,user_level,user_sex,user_icon,user_city,user_province,user_birthdate,user_score,zan_notice,friend_notice,operate_dt')->find();
  54. $levelInfo = M('UserLevel')->where(array('level_id'=>$info['user_level']))->field('level_name,min_score,max_score')->find();
  55. if ($levelInfo['min_score']<=$info['user_score'] && $info['user_score']<$levelInfo['max_score']){
  56. $info['level_name'] = $levelInfo['level_name'];
  57. }else{
  58. $levelRes = M('UserLevel')->field('level_name,min_score,max_score')->select();
  59. //修改等级
  60. foreach ($levelRes as $level){
  61. if ($level['min_score']<=$info['user_score'] && $info['user_score']<$level['max_score']){
  62. $info['level_name'] = $levelInfo['level_name'];
  63. M('User')->where(array('user_id'=>$info['user_id']))->save(array('user_level'=>$level['level_id']));
  64. break;
  65. }
  66. }
  67. }
  68. $fansCount = M('Fans')->where(array('fans_user_id'=>$info['user_id']))->count();
  69. $info['fans_nums'] = $fansCount==NULL?0:$fansCount;
  70. $fansCount = M('Fans')->where(array('user_id'=>$info['user_id']))->count();
  71. $info['fans_user_nums'] = $fansCount==NULL?0:$fansCount;
  72. $data = array('code'=>0,'msg'=>'','data'=>$info);
  73. $this->returnData($data);exit;
  74. }else{
  75. $data = array('code'=>1,'msg'=>'没有修改任何内容');
  76. $this->returnData($data);exit;
  77. }
  78. }
  79. //添加到我的课程列表
  80. public function course(){
  81. $uwType = I('uw_type');
  82. $uid = I('user_id');
  83. if(!$uid)$uid=$this->userId;
  84. //$this->userId = 1000001;
  85. $condition = array(
  86. 'uw.user_id'=>$uid,
  87. 'uw.is_delete'=>1,
  88. 'uw.is_show'=>1,
  89. //'c.course_status'=>3,
  90. 'c.course_flag'=>1,
  91. 'c.is_delete'=>1,
  92. );
  93. if (!empty($uwType)){
  94. $condition['uw.uw_type'] = $uwType;
  95. }
  96. //我收藏的课程
  97. $join = 'uw LEFT JOIN t_course c ON uw.course_id=c.course_id';
  98. $res1 = M('UserWords')->join($join)->where($condition)->field('c.course_id,c.user_id,c.course_name,c.course_intro,c.course_num,c.course_join,c.course_flag,c.course_status,uw.operate_dt,uw.uw_id,uw.uw_type')->order('uw_id desc')->select();
  99. $courseList = array();
  100. foreach ($res1 as $row){
  101. $courseList[$row['course_id']] = $row;
  102. }
  103. if (empty($uwType)){
  104. //我添加的课程
  105. $res2 = M('Course')->where(array('user_id'=>$uid,'course_flag'=>1,'is_delete'=>1,'is_show'=>1,))->field('course_id,user_id,course_name,course_intro,course_num,course_join,course_status,course_flag,operate_dt,0 as uw_id,0 as uw_type')->order('course_id desc')->select();
  106. foreach ($res2 as $row){
  107. if (isset($courseList[$row['course_id']])){
  108. continue;
  109. }else{
  110. if($row['course_name']=='易错单词'){
  111. array_unshift($courseList,$row);
  112. }else{
  113. $courseList[$row['course_id']] = $row;
  114. }
  115. }
  116. }
  117. }
  118. $res = array();
  119. foreach ($courseList as $r){
  120. if ($r['course_name']=='易错单词' || $r['course_name']=='重点单词'){
  121. $r['is_special'] = 1;
  122. }else{
  123. $r['is_special'] = 0;
  124. }
  125. $res[] = $r;
  126. }
  127. $data = array('code'=>0,'msg'=>'','data'=>$res);
  128. $this->returnData($data);exit;
  129. }
  130. //好友列表
  131. public function friend(){
  132. $lastId = I('last_id',0);
  133. $groupId = I('group_id');
  134. $pageSize = I('page_size',10);
  135. if (empty($this->userId) || $this->userId<1000000){
  136. $data = array('code'=>1,'msg'=>'用户ID错误');
  137. $this->returnData($data);exit;
  138. }
  139. if ($lastId>0){
  140. $condition['friend_id'] = array('GT',$lastId);
  141. }
  142. $condition['user_id|ref_user_id'] = $this->userId;
  143. $condition['friend_status'] = 2;
  144. $res = M('Friend')->where($condition)->field('user_id,ref_user_id,user_nickname,ref_user_nickname')->order('friend_id desc')->limit($pageSize)->select();
  145. if ($res==NULL){
  146. $data = array('code'=>0,'msg'=>'','data'=>array());
  147. $this->returnData($data);exit;
  148. }
  149. $userIdArr = array();
  150. $userNameArr = array();
  151. foreach ($res as $r){
  152. if ($r['user_id']==$this->userId){
  153. $userIdArr[] = $r['ref_user_id'];
  154. $userNameArr[$r['ref_user_id']] = $r['ref_user_nickname'];
  155. }else{
  156. $userIdArr[] = $r['user_id'];
  157. $userNameArr[$r['user_id']] = $r['user_nickname'];
  158. }
  159. }
  160. $cons = array('user_id'=>array('IN',implode(',', $userIdArr)),'is_delete'=>1);
  161. $resList = M('User')->where($cons)->order('user_id desc')->field('user_id,user_phone,user_name,user_level,user_sex,user_icon')->select();
  162. if (!empty($groupId)){
  163. $groupInfo = M('GroupUser')->where(array('group_id'=>$groupId))->field('user_id')->select();
  164. if ($groupInfo==NULL){
  165. $groupUserIdArr = array();
  166. }else{
  167. if (function_exists('array_column')){
  168. $groupUserIdArr = array_column($groupInfo, 'user_id');
  169. }else{
  170. foreach ($groupInfo as $r){
  171. $groupUserIdArr[] = $r['user_id'];
  172. }
  173. }
  174. }
  175. }
  176. //添加备注名
  177. foreach ($resList as $key=>$res){
  178. $resList[$key]['user_nickname'] = $userNameArr[$res['user_id']];
  179. if (!empty($groupId)){
  180. if (in_array($res['user_id'], $groupUserIdArr)){
  181. $resList[$key]['is_add'] = 1;
  182. }else{
  183. $resList[$key]['is_add'] = 0;
  184. }
  185. }
  186. }
  187. if ($resList==NULL){
  188. $resList = array();
  189. }
  190. $data = array('code'=>0,'msg'=>'','data'=>$resList);
  191. $this->returnData($data);exit;
  192. }
  193. //获取好友基本信息
  194. public function getInfoByUserId(){
  195. $uid = I('uid');
  196. /*
  197. if ($uid>0 && $uid<1000000){
  198. $data = array('code'=>1,'msg'=>'用户ID错误');
  199. $this->returnData($data);exit;
  200. }
  201. if ($uid<$this->userId){
  202. $field = 'u.user_id,user_phone,user_intro,user_name,user_level,user_sex,user_birthdate,user_score,user_city,user_province,user_icon,f.user_nickname,ul.level_name';
  203. $info = M('Friend')->join(' f LEFT JOIN t_user u ON f.user_id=u.user_id LEFT JOIN t_user_level ul ON u.user_level=ul.level_id')
  204. ->where(array('f.user_id'=>$uid,'ref_user_id'=>$this->userId,'friend_status'=>2))
  205. ->field($field)->find();
  206. }else{
  207. $field = 'u.user_id,user_phone,user_intro,user_name,user_level,user_sex,user_birthdate,user_score,user_city,user_province,user_icon,f.ref_user_nickname as user_nickname,ul.level_name';
  208. $info = M('Friend')->join(' f LEFT JOIN t_user u ON f.ref_user_id=u.user_id LEFT JOIN t_user_level ul ON u.user_level=ul.level_id')
  209. ->where(array('ref_user_id'=>$uid,'f.user_id'=>$this->userId,'friend_status'=>2))
  210. ->field($field)->find();
  211. }
  212. */
  213. if ($info==NULL){
  214. $info = M('User')->join(' u LEFT JOIN t_user_level ul ON u.user_level=ul.level_id')->where(array('user_id'=>$uid))->field('user_id,user_phone,user_intro,user_name,user_level,user_sex,user_icon,user_birthdate,user_score,user_city,user_province,"" as user_nickname,ul.level_name')->find();
  215. if ($info==NULL){
  216. $data = array('code'=>1,'msg'=>'用户不存在',);
  217. $this->returnData($data);exit;
  218. }
  219. }
  220. $FriendCount = M('Friend')->where(array('ref_user_id'=>$this->userId,'user_id'=>$uid,'friend_status'=>2))->count();
  221. if($FriendCount){
  222. $info['is_friend'] = 1;
  223. }else{
  224. $info['is_friend'] = 0;
  225. }
  226. //认证作者判断
  227. $AuthCount = M('choice')->where(array('user_id'=>$uid,'choice_status'=>3,'choice_type'=>2))->count();
  228. if($AuthCount){
  229. $info['is_auth'] = 1;
  230. }else{
  231. $AuthCount = M('course')->where(array('user_id'=>$uid,'course_status'=>3))->count();
  232. if($AuthCount){
  233. $info['is_auth'] = 1;
  234. }else{
  235. $info['is_auth'] = 0;
  236. }
  237. }
  238. if ($uid!=$this->userId){
  239. $fansInfo = M('Fans')->where(array('user_id'=>$this->userId,'fans_user_id'=>$uid))->field('fans_id')->find();
  240. $info['is_fans'] = $fansInfo==NULL?0:1;
  241. }else{
  242. $info['is_fans'] = 2;
  243. }
  244. $fansCount = M('Fans')->where(array('fans_user_id'=>$uid))->count();
  245. $info['fans_nums'] = $fansCount==NULL?0:$fansCount;
  246. $fansCount = M('Fans')->where(array('user_id'=>$uid))->count();
  247. $info['fans_user_nums'] = $fansCount==NULL?0:$fansCount;
  248. $data = array('code'=>0,'msg'=>'','data'=>$info);
  249. $this->returnData($data);exit;
  250. }
  251. //修改好友备注名
  252. public function editNicknameByUserId(){
  253. $uid = I('uid','');
  254. $userNickname = I('user_nickname');
  255. if ($uid==''){
  256. $data = array('code'=>1,'msg'=>'用户ID错误');
  257. $this->returnData($data);exit;
  258. }
  259. if (mb_strlen($userNickname,'UTF8')<2 || mb_strlen($userNickname,'UTF8')>12){
  260. $data = array('code'=>1,'msg'=>'备注长度2到12个汉字之间');
  261. $this->returnData($data);exit;
  262. }
  263. if ($uid<$this->userId){
  264. $condition = array('user_id'=>$uid);
  265. $upData = array('user_nickname'=>$userNickname);
  266. }else{
  267. $condition = array('ref_user_id'=>$uid);
  268. $upData = array('ref_user_nickname'=>$userNickname);
  269. }
  270. M('Friend')->where($condition)->save($upData);
  271. //删除昵称缓存
  272. S($this->userId.'_user_nickname',null);
  273. $data = array('code'=>0,'msg'=>'备注修改成功','data'=>array('user_nickname'=>$userNickname));
  274. $this->returnData($data);exit;
  275. }
  276. //搜索用户信息
  277. public function search(){
  278. $keyword = I('keyword');
  279. if (empty($keyword)){
  280. $data = array('code'=>1,'msg'=>'搜索关键词不能为空');
  281. $this->returnData($data);exit;
  282. }
  283. $condition['user_id|user_phone'] = $keyword;
  284. $join = ' u LEFT JOIN t_user_level ul ON u.user_level=ul.level_id';
  285. $info = M('User')->join($join)->where($condition)->field('user_id,user_phone,user_name,user_level,user_sex,user_icon,ul.level_name')->select();
  286. if ($info == NULL){
  287. $data = array('code'=>1,'msg'=>'未搜索到用户信息');
  288. $this->returnData($data);exit;
  289. }
  290. foreach ($info as $key=>$row){
  291. if ($row['user_id']<$this->userId){
  292. $cons = array('user_id'=>$row['user_id'],'ref_user_id'=>$this->userId);
  293. }else{
  294. $cons = array('user_id'=>$this->userId,'ref_user_id'=>$row['user_id']);
  295. }
  296. $res = M('Friend')->where($cons)->field('friend_id,friend_status,user_nickname,ref_user_nickname')->find();
  297. if ($res==NULL || $res['friend_status']!=2){
  298. $info[$key]['is_friend'] = 0;
  299. }else{
  300. if ($row['user_id']<$this->userId){
  301. $info[$key]['user_nickname'] = $res['user_nickname'];
  302. }else{
  303. $info[$key]['user_nickname'] = $res['ref_user_nickname'];
  304. }
  305. $info[$key]['is_friend'] = 1;
  306. }
  307. }
  308. $data = array('code'=>0,'msg'=>'','data'=>$info);
  309. $this->returnData($data);exit;
  310. }
  311. //我的自由记
  312. public function notepad(){
  313. /* $lastId = I('last_id',0);
  314. $pageSize = I('page_size',100);
  315. $condition = array('course_flag'=>2,'user_id'=>$this->userId);
  316. if ($lastId>0){
  317. $condition['course_id'] = array('GT',$lastId);
  318. }
  319. $res = M('Course')->where($condition)->order('course_id desc')->limit($pageSize)->field('course_id,user_id,course_name,course_join,course_content,course_source,operate_dt')->select();
  320. $data = array('code'=>0,'msg'=>'','data'=>$res);
  321. $this->returnData($data);exit; */
  322. $condition = array(
  323. 'uw.user_id'=>$this->userId,
  324. 'uw.is_delete'=>1,
  325. 'uw.is_show'=>1,
  326. //'c.course_status'=>3,
  327. 'c.course_flag'=>2,
  328. 'c.is_delete'=>1,
  329. );
  330. //我收藏的课程
  331. $join = 'uw LEFT JOIN t_course c ON uw.course_id=c.course_id';
  332. $res1 = M('UserWords')->join($join)->where($condition)->field('c.course_id,c.user_id,c.course_name,c.course_num,c.course_join,c.course_content,c.course_flag,c.course_status,uw.operate_dt,uw.uw_id,uw.uw_type')->order('uw_id desc')->select();
  333. //echo M('UserWords')->getLastSql();exit;
  334. $courseList = array();
  335. foreach ($res1 as $row){
  336. $courseList[$row['course_id']] = $row;
  337. }
  338. //我添加的课程
  339. $res2 = M('Course')->where(array('user_id'=>$this->userId,'course_flag'=>2,'is_delete'=>1,'is_show'=>1,))->field('course_id,user_id,course_name,course_num,course_join,course_content,course_status,course_flag,operate_dt,0 as uw_id,0 as uw_type')->order('course_id desc')->select();
  340. //echo M('Course')->getLastSql();exit;
  341. foreach ($res2 as $row){
  342. if (isset($courseList[$row['course_id']])){
  343. continue;
  344. }else{
  345. $courseList[$row['course_id']] = $row;
  346. }
  347. }
  348. $res = array();
  349. foreach ($courseList as $r){
  350. $res[] = $r;
  351. }
  352. $data = array('code'=>0,'msg'=>'','data'=>$res);
  353. $this->returnData($data);exit;
  354. }
  355. //删除好友
  356. public function friendDel(){
  357. $uid = I('uid');
  358. if ($uid>$this->userId){
  359. M('Friend')->where(array('user_id'=>$this->userId,'ref_user_id'=>$uid))->delete();
  360. }else{
  361. M('Friend')->where(array('ref_user_id'=>$this->userId,'user_id'=>$uid))->delete();
  362. }
  363. $data = array('code'=>0,'msg'=>'','data'=>'');
  364. $this->returnData($data);exit;
  365. }
  366. //添加好友
  367. public function add(){
  368. $uid = I('uid');
  369. if (empty($uid)){
  370. $uid=0;
  371. }
  372. if ($uid<$this->userId){
  373. $condition = array('user_id'=>$uid,'ref_user_id'=>$this->userId);
  374. }else{
  375. $condition = array('user_id'=>$this->userId,'ref_user_id'=>$uid);
  376. }
  377. $info = M('Friend')->where($condition)->field('friend_id')->find();
  378. if ($info==NULL){
  379. //查询用户详细信息
  380. $userInfo = M('User')->where(array('user_id'=>$this->userId))->field('user_name')->find();
  381. $saveData = $condition;
  382. $saveData['operate_dt'] = time();
  383. $friendId = M('Friend')->add($saveData);
  384. $noticeContent = $userInfo['user_name'].'请求添加成为您的好友!';
  385. M('Notice')->add(array('ref_user_id'=>$uid,'user_id'=>$this->userId,'notice_flag'=>1,'notice_status'=>3,'notice_type'=>1,'notice_title'=>'请求添加','notice_content'=>$noticeContent,'operate_dt'=>time()));
  386. M('User')->where(array('user_id'=>$uid))->setInc('friend_notice');
  387. $data = json_encode(array('type'=>1,'msg'=>$noticeContent,'data'=>array('title'=>$noticeContent,'friend_id'=>$friendId)));
  388. $this->umengPush($uid, $data);
  389. $data = array('code'=>0,'msg'=>'','data'=>'');
  390. $this->returnData($data);exit;
  391. }else{
  392. if($info['friend_status']==1){
  393. $data = array('code'=>1,'msg'=>'已申请, 等待对方同意','data'=>'');
  394. }elseif($info['friend_status']==2){
  395. $data = array('code'=>1,'msg'=>'该用户已经是好友,无需重复申请','data'=>'');
  396. }elseif($info['friend_status']==3){
  397. $data = array('code'=>1,'msg'=>'该用户拒绝了您的好友申请','data'=>'');
  398. }
  399. $this->returnData($data);exit;
  400. }
  401. }
  402. //是否同意加好友
  403. public function friendAgree(){
  404. $uid = I('uid');
  405. $friendStatus = I('friend_status');
  406. if (empty($uid)){
  407. $data = array('code'=>1,'msg'=>'好友user_id不能为空','data'=>'');
  408. $this->returnData($data);exit;
  409. }
  410. if (!in_array($friendStatus, array(2,3))){
  411. $data = array('code'=>1,'msg'=>'修改好友关系状态错误','data'=>'');
  412. $this->returnData($data);exit;
  413. }
  414. if ($this->userId>$uid){
  415. $info = M('Friend')->where(array('user_id'=>$uid,'ref_user_id'=>$this->userId))->field('friend_id,user_id,ref_user_id')->find();
  416. }else{
  417. $info = M('Friend')->where(array('user_id'=>$this->userId,'ref_user_id'=>$uid))->field('friend_id,user_id,ref_user_id')->find();
  418. }
  419. if ($info==NULL){
  420. $data = array('code'=>1,'msg'=>'好友关系user_id错误','data'=>'');
  421. $this->returnData($data);exit;
  422. }
  423. M('Friend')->where(array('friend_id'=>$info['friend_id']))->save(array('friend_status'=>$friendStatus));
  424. $userInfo = M('User')->where(array('user_id'=>$this->userId))->field('user_name')->find();
  425. $userName = '';
  426. if ($userInfo!=NULL){
  427. $userName = $userInfo['user_name'];
  428. }
  429. if ($friendStatus==2){
  430. $noticeTitle = '好友申请通过';
  431. $noticeContent = $userName.'已经同意您的好友添加申请了。';
  432. }else{
  433. $noticeTitle = '好友申请失败';
  434. $noticeContent = $userName.'已经拒绝了您的好友添加申请了。';
  435. }
  436. M('Notice')->where(array('user_id'=>$uid,'ref_user_id'=>$this->userId,))->save(array('notice_status'=>2));
  437. M('User')->where(array('user_id'=>$uid))->setInc('friend_notice');
  438. M('Notice')->add(array('ref_user_id'=>$uid,'user_id'=>$this->userId,'notice_flag'=>2,'notice_type'=>2,'notice_title'=>$noticeTitle,'notice_content'=>$noticeContent,'operate_dt'=>time()));
  439. $data = array('code'=>0,'msg'=>'好友关系修改成功','data'=>'');
  440. $this->returnData($data);exit;
  441. }
  442. //设置为当前正在学习的课程
  443. public function currentCourse(){
  444. $courseId = I('course_id');
  445. $wordsId = I('words_id','');
  446. $with_list = I('with_list','');
  447. if (empty($courseId) || $courseId<1000000){
  448. $data = array('code'=>1,'msg'=>'课程ID错误');
  449. $this->returnData($data);exit;
  450. }
  451. $condition = array(
  452. 'uw_type'=>2,
  453. 'current_course'=>2,
  454. 'is_show'=>1,
  455. 'user_id'=>$this->userId,
  456. );
  457. $partInfo = M('User')->where(array('user_id'=>$this->userId))->field('user_part')->find();
  458. $courseInfo = M('Course')->where(array('course_id'=>$courseId))->field('course_num')->find();
  459. if ($courseInfo==NULL){
  460. $data = array('code'=>1,'msg'=>'当前课程还未添加单词');
  461. $this->returnData($data);exit;
  462. }else{
  463. $courseNum = $courseInfo['course_num'];
  464. }
  465. if ($partInfo==null){
  466. $userPart = 15;
  467. }else{
  468. $userPart = $partInfo['user_part'];
  469. }
  470. $partNum = ceil($courseNum/$userPart);
  471. $uwInfo = M('UserWords')->where($condition)->field('course_id,uw_id')->find();
  472. if (empty($userPart)){
  473. $userPart = 15;
  474. }
  475. $saveData = array(
  476. 'uw_type'=>2,
  477. 'current_course'=>2,
  478. 'user_part'=>$userPart,
  479. 'part_num'=>$partNum,
  480. 'course_id'=>$courseId,
  481. 'user_id'=>$this->userId,
  482. 'operate_dt'=>time(),
  483. );
  484. if ($uwInfo==NULL){
  485. M('UserWords')->add($saveData);
  486. }else if($uwInfo['course_id']!=$courseId){
  487. M('UserWords')->where(array('user_id'=>$this->userId,'current_course'=>2))->save(array('current_course'=>1));
  488. M('UserWords')->where(array('uw_id'=>$uwInfo['uw_id']))->save($saveData);
  489. }
  490. //$res = M('UserWords')->where($condition)->field('course_id,uw_id')->find();
  491. $cons = array(
  492. 'current_course'=>2,
  493. 'uw.is_show'=>1,
  494. 'uw.user_id'=>$this->userId,
  495. );
  496. $join = 'uw LEFT JOIN t_course c ON uw.course_id=c.course_id';
  497. $res = M('UserWords')->join($join)->where($cons)->field('uw.course_id,uw.user_id,course_join,course_num,course_name,uw_id,uw.user_part,uw.part_num')->find();
  498. if ($res==NULL){
  499. $data = array('code'=>0,'msg'=>'暂未设置正在学习的课程');
  500. $this->returnData($data);exit;
  501. }
  502. $res['user_part'] = empty($res['user_part'])?'0':$res['user_part'];
  503. //获取指定章节的单词
  504. if (!empty($wordsId)){
  505. $dataArr = $this->getPartWords($res['course_id'], $wordsId);
  506. if ($dataArr){
  507. //$res['list'] = $dataArr['partWordsList'];
  508. $res['part'] = $dataArr['part'];
  509. }
  510. }
  511. $data = array('code'=>0,'msg'=>'','data'=>$res);
  512. $this->returnData($data);exit;
  513. }
  514. //获取当前正在学习的课程
  515. public function getCurrentCourse(){
  516. $wordsId = I('words_id','');
  517. $with_list = I('with_list','');
  518. $condition = array(
  519. 'current_course'=>2,
  520. 'uw.is_show'=>1,
  521. 'uw.user_id'=>$this->userId,
  522. );
  523. $join = 'uw LEFT JOIN t_course c ON uw.course_id=c.course_id';
  524. $res = M('UserWords')->join($join)->where($condition)->field('uw.course_id,uw.user_id,course_join,course_num,course_name,uw_id,uw.user_part,uw.part_num')->find();
  525. if ($res==NULL){
  526. $data = array('code'=>0,'msg'=>'暂未设置正在学习的课程');
  527. $this->returnData($data);exit;
  528. }
  529. $res['user_part'] = empty($res['user_part'])?'0':$res['user_part'];
  530. $studyInfo = M('StudyWords')->where(array('user_id'=>$this->userId))->field('study_id,words_id,course_id')->find();
  531. if ($studyInfo!=NULL && empty($wordsId)){
  532. $wordsId = $studyInfo['words_id'];
  533. }
  534. //获取指定章节的单词
  535. if (!empty($wordsId)){
  536. $dataArr = $this->getPartWords($res['course_id'], $wordsId);
  537. if ($dataArr){
  538. //$res['list'] = $dataArr['partWordsList'];
  539. if (function_exists('array_column')){
  540. $wordsIdArr = array_column($dataArr['partWordsList'], 'words_id');
  541. }else{
  542. foreach ($dataArr['partWordsList'] as $wRow){
  543. $wordsIdArr[] = $wRow['words_id'];
  544. }
  545. }
  546. $res['position'] = array_search($wordsId,$wordsIdArr);
  547. $res['part'] = $dataArr['part'];
  548. $res['words_id'] = $wordsId;
  549. }
  550. }
  551. $info = M('WordsSort')->where(array('course_id'=>$res['course_id'],'user_id'=>$this->userId,'sort_status'=>1))->field('sort_id')->find();
  552. if ($info!=NULL){
  553. $res['set_sort'] = 1;
  554. }else{
  555. $res['set_sort'] = 0;
  556. }
  557. if ($res['course_name']=='易错单词' || $res['course_name']=='重点单词'){
  558. $wordsPart = M('Words')->where(array('course_id'=>$res['course_id']))->field('operate_dt')->group('operate_dt')->select();
  559. $res['part_num'] = count($wordsPart);
  560. $res['is_special'] = 1;
  561. }else{
  562. $res['is_special'] = 0;
  563. }
  564. $data = array('code'=>0,'msg'=>'','data'=>$res);
  565. $this->returnData($data);exit;
  566. }
  567. //获取指定单词所在章节单词
  568. private function getPartWords($courseId,$wordsId){
  569. //判断是否设置乱序
  570. $sortInfo = M('WordsSort')->where(array('course_id'=>$courseId,'user_id'=>$this->userId,'sort_status'=>1))->find();
  571. if ($sortInfo==NULL){
  572. $wordsInfo = M('Words')->where(array('course_id'=>$courseId))->order('words_id asc')->select();
  573. }else{
  574. $orderby = 'field(words_id,'. $sortInfo['word_ids'] .')';
  575. $wordsInfo = M('Words')->where(array('course_id'=>$courseId))->order($orderby)->select();
  576. //$wordsInfo = explode(',', $sortInfo['word_ids']);
  577. }
  578. $partInfo = M('UserWords')->where(array('course_id'=>$courseId,'user_id'=>$this->userId))->field('user_part,part_num')->find();
  579. if ($partInfo==NULL){
  580. //$partInfo['user_part'] = 15;
  581. return false;
  582. }
  583. if ($partInfo['user_part']==15&&$partInfo['part_num']==0){
  584. return false;
  585. }
  586. $total = M('Words')->where(array('course_id'=>$courseId))->count();
  587. //每章节单词数量(10/3)=4 3,3,3,1
  588. $partWordsNum = ceil($total/$partInfo['user_part']);
  589. $firstPartWordsList = array();
  590. for($i=1;$i<=$partWordsNum;$i++){
  591. $page = ($i-1)*$partInfo['user_part'];
  592. //截取每章节单词
  593. $partWordsList = array_slice($wordsInfo,$page,$partInfo['user_part']);
  594. if ($i==1){
  595. $firstPartWordsList = $partWordsList;
  596. }
  597. if (empty($wordsId)){
  598. return array('partWordsList'=>$firstPartWordsList,'part'=>1);
  599. }
  600. foreach ($partWordsList as $r){
  601. if($r['words_id']==$wordsId){
  602. return array('partWordsList'=>$partWordsList,'part'=>$i);
  603. }
  604. }
  605. }
  606. return array('partWordsList'=>$firstPartWordsList,'part'=>1);
  607. }
  608. //获取当前正在学习课程的章节
  609. private function getCurrentPart(){
  610. $partInfo = M('UserWords')->where(array('current_course'=>2,'user_id'=>$this->userId))->field('course_id,user_part,part_num')->find();
  611. if ($partInfo==NULL){
  612. $data = array('code'=>-1,'msg'=>'暂未设置正在学习的课程');
  613. $this->returnData($data);exit;
  614. }
  615. $res = M('Course')->where(array('course_id'=>$partInfo['course_id'],'is_delete'=>1))->field('course_id,user_id,course_name,course_join,course_num,operate_dt')->find();
  616. $res['part_num'] = $partInfo['part_num'];
  617. $res['user_part'] = empty($partInfo['user_part'])?'0':$partInfo['user_part'];
  618. $data = array('code'=>0,'msg'=>'','data'=>$res);
  619. $this->returnData($data);exit;
  620. }
  621. //获取已经添加的课程或者自由记
  622. public function square(){
  623. $uwType = I('uw_type',0);
  624. if (!in_array($uwType, array(0,1,2))){
  625. $data = array('code'=>1,'msg'=>'类型错误');
  626. $this->returnData($data);exit;
  627. }
  628. $condition = array('user_id'=>$this->userId);
  629. if (!empty($uwType)){
  630. $condition['uw_type'] = $uwType;
  631. }
  632. $res = M('UserWords')->where($condition)->field('course_id')->select();
  633. $data = array('code'=>0,'msg'=>'','data'=>$res);
  634. $this->returnData($data);exit;
  635. }
  636. //修改友盟token
  637. public function umengToken(){
  638. $accessToken = I('access_token');
  639. M('User')->where(array('user_id'=>$this->userId))->save(array('access_token'=>$accessToken));
  640. $data = array('code'=>0,'msg'=>'修改友盟token成功','data'=>array());
  641. $this->returnData($data);exit;
  642. }
  643. //获取等级列表
  644. public function getLevel() {
  645. $info = M('UserLevel')->field('level_id,level_name,min_score,max_score')->select();
  646. $data = array('code'=>0,'msg'=>'','data'=>$info);
  647. $this->returnData($data);exit;
  648. }
  649. //获取通知
  650. public function getPrompt(){
  651. $info = M('User')->where(array('user_id'=>$this->userId))->field('sys_notice,friend_notice,zan_notice,reply_notice,praise_notice')->find();
  652. $data = array('code'=>0,'msg'=>'','data'=>$info);
  653. $this->returnData($data);exit;
  654. }
  655. //获取用户信息
  656. public function info(){
  657. $info = M('User')->where(array('user_id'=>$this->userId))->field('user_id,user_phone,user_intro,user_pwd,user_name,user_level,user_sex,user_icon,user_city,user_province,user_birthdate,user_score,zan_notice,sys_notice,friend_notice,reply_notice,operate_dt,forbidden,admin_id')->find();
  658. $levelInfo = M('UserLevel')->where(array('level_id'=>$info['user_level']))->field('level_name,min_score,max_score')->find();
  659. if ($levelInfo['min_score']<=$info['user_score'] && $info['user_score']<$levelInfo['max_score']){
  660. $info['level_name'] = $levelInfo['level_name'];
  661. }else{
  662. $levelRes = M('UserLevel')->field('level_name,min_score,max_score')->select();
  663. //修改等级
  664. foreach ($levelRes as $level){
  665. if ($level['min_score']<=$info['user_score'] && $info['user_score']<$level['max_score']){
  666. $info['level_name'] = $levelInfo['level_name'];
  667. M('User')->where(array('user_id'=>$info['user_id']))->save(array('user_level'=>$level['level_id']));
  668. break;
  669. }
  670. }
  671. }
  672. $pkInfo = M('PkRecord')->where(array('user_id|ref_user_id'=>$this->userId))->field('record_id')->find();
  673. if ($pkInfo==NULL){
  674. $info['level_name'] = '暂无称号';
  675. }
  676. session('user_id', $info['user_id']);
  677. $fansCount = M('Fans')->where(array('fans_user_id'=>$info['user_id']))->count();
  678. $info['fans_nums'] = $fansCount==NULL?0:$fansCount;
  679. $fansCount = M('Fans')->where(array('user_id'=>$info['user_id']))->count();
  680. $info['fans_user_nums'] = $fansCount==NULL?0:$fansCount;
  681. if($info['admin_id']){
  682. $info['is_admin']=1;
  683. }else{
  684. $info['is_admin']=0;
  685. }
  686. $data = array('code'=>0,'msg'=>'','data'=>$info);
  687. $this->returnData($data);exit;
  688. }
  689. //用户禁言
  690. public function forbidden(){
  691. $info = M('User')->where(array('user_id'=>$this->userId))->field('user_id,user_phone,user_intro,user_pwd,user_name,user_level,user_sex,user_icon,user_city,user_province,user_birthdate,user_score,zan_notice,sys_notice,friend_notice,reply_notice,operate_dt,forbidden,admin_id')->find();
  692. if(!$info['admin_id']){
  693. $data = array('code'=>-1,'msg'=>'权限受限');
  694. $this->returnData($data);exit;
  695. }
  696. $userId = I('user_id','');
  697. $days = I('days','0');
  698. if (empty($userId) || $userId<1000000){
  699. $data = array('code'=>-1,'msg'=>'用户错误');
  700. $this->returnData($data);exit;
  701. }
  702. M('user')->where(array('user_id'=>$userId))->save(array('forbidden'=>time()+$days*24*60*60));
  703. $data = array('code'=>0,'msg'=>'','data'=>array());
  704. $this->returnData($data);exit;
  705. }
  706. //管理员删除评论
  707. public function del_reply(){
  708. $info = M('User')->where(array('user_id'=>$this->userId))->field('user_id,user_phone,user_intro,user_pwd,user_name,user_level,user_sex,user_icon,user_city,user_province,user_birthdate,user_score,zan_notice,sys_notice,friend_notice,reply_notice,operate_dt,forbidden,admin_id')->find();
  709. /*if(!$info['admin_id']){
  710. $data = array('code'=>-1,'msg'=>'权限受限');
  711. $this->returnData($data);exit;
  712. }*/
  713. $id = I('reply_id','');
  714. $type = I('type','0');
  715. if($type==1){
  716. M('choice_reply')->where(array('cr_id'=>$id))->delete();
  717. }elseif($type==2){
  718. M('course_praise')->where(array('cp_id'=>$id))->delete();
  719. }
  720. $data = array('code'=>0,'msg'=>'','data'=>array());
  721. $this->returnData($data);exit;
  722. }
  723. }