UserController.class.php 30 KB

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