ShareController.class.php 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329
  1. <?php
  2. namespace Api\Controller;
  3. use Common\Controller\ApiController;
  4. class ShareController extends ApiController {
  5. public function __construct(){
  6. parent::__construct();
  7. }
  8. //好友动态、我的动态(不用传uid)
  9. public function user(){
  10. $uid = I('uid');
  11. if (empty($uid)){
  12. $uid = $this->userId;
  13. $condition = array('s.user_id'=>$uid);
  14. }else{
  15. $groupInfo = M('GroupUser')->where(array('user_id'=>$uid))->group('group_id')->field('group_id')->select();
  16. if (function_exists('array_column')){
  17. $groupIdArr = array_column($groupInfo, 'group_id');
  18. }else{
  19. foreach ($groupInfo as $r){
  20. $groupIdArr[] = $r['group_id'];
  21. }
  22. }
  23. $groupIdArr[] = 0;
  24. $condition = array('s.user_id'=>$uid,'share_status'=>1,'group_id'=>array('IN',$groupIdArr));
  25. }
  26. $lastId = I('last_id',0);
  27. $pageSize = I('page_size',15);
  28. if (empty($uid) || $uid<1000000){
  29. $data = array('code'=>1,'msg'=>'用户ID错误');
  30. $this->returnData($data);exit;
  31. }
  32. if ($lastId>0){
  33. $condition['share_id'] = array('LT',$lastId);
  34. }
  35. $courseJoin = ' s LEFT JOIN t_course c ON s.course_id=c.course_id';
  36. $res = M('Share')->join($courseJoin)->where($condition)->field('share_id,share_content,s.course_id,c.course_name,share_type as course_flag,s.operate_dt')->order('share_id desc')->limit($pageSize)->select();
  37. //echo M('Share')->getLastSql();exit;
  38. if ($res == NULL){
  39. $data = array('code'=>0,'msg'=>'', 'data'=>array());
  40. $this->returnData($data);exit;
  41. }
  42. $userNicknameArr = $this->getUserNickname();
  43. foreach ($res as $k=>$r){
  44. $shareRes = M('ShareUser')->join('sw LEFT JOIN t_user u ON sw.user_id=u.user_id')
  45. ->where(array('share_id'=>$r['share_id']))
  46. ->field('sw.user_id,u.user_icon,u.user_name')->select();
  47. foreach ($shareRes as $key=>$item){
  48. if(isset($userNicknameArr[$item['user_id']])){
  49. $shareRes[$key]['user_nickname'] = $userNicknameArr[$item['user_id']];
  50. }else{
  51. $shareRes[$key]['user_nickname'] = '';
  52. }
  53. $shareRes[$key]['user_icon'] = empty($item['user_icon'])?'':$item['user_icon'];
  54. $shareRes[$key]['user_name'] = empty($item['user_name'])?'':$item['user_name'];
  55. }
  56. $res[$k]['user_list'] = $shareRes;
  57. }
  58. $data = array('code'=>0,'msg'=>'', 'data'=>$res);
  59. $this->returnData($data);exit;
  60. }
  61. //全部好友动态
  62. public function index(){
  63. $lastId = I('last_id',0);
  64. $pageSize = I('page_size',15);
  65. $condition = array('share_status'=>1);
  66. if ($lastId>0){
  67. $condition['share_id'] = array('LT',$lastId);
  68. }
  69. $condition['user_id|ref_user_id'] = $this->userId;
  70. $condition['friend_status'] = 2;
  71. $friendRes = M('Friend')->where($condition)->field('user_id,ref_user_id,user_nickname,ref_user_nickname')->order('friend_id desc')->limit($pageSize)->select();
  72. if ($friendRes!=NULL){
  73. $userIdArr = array();
  74. $userNickArr = array();
  75. foreach ($friendRes as $r){
  76. if ($r['user_id']==$this->userId){
  77. $userIdArr[] = $r['ref_user_id'];
  78. $userNickArr[$r['ref_user_id']] = $r['ref_user_nickname'];
  79. }else{
  80. $userIdArr[] = $r['user_id'];
  81. $userNickArr[$r['user_id']] = $r['user_nickname'];
  82. }
  83. }
  84. }
  85. $userIdArr[] = $this->userId;
  86. if (count($userIdArr)==0){
  87. $data = array('code'=>1,'msg'=>'暂时没有好友', 'data'=>array());
  88. $this->returnData($data);exit;
  89. }
  90. $userIdArr = array_unique($userIdArr);
  91. $cons['s.user_id'] = array('IN',implode(',', $userIdArr));
  92. //获取我所在的群组
  93. $groupInfo = M('GroupUser')->where(array('user_id'=>$this->userId))->group('group_id')->field('group_id')->select();
  94. if (function_exists('array_column')){
  95. $groupIdArr = array_column($groupInfo, 'group_id');
  96. }else{
  97. foreach ($groupInfo as $r){
  98. $groupIdArr[] = $r['group_id'];
  99. }
  100. }
  101. $groupIdArr[] = 0;
  102. $cons['group_id'] = array('IN',$groupIdArr);
  103. $res = M('Share')->join(' s LEFT JOIN t_user u ON s.user_id=u.user_id LEFT JOIN t_course c ON s.course_id=c.course_id')
  104. ->where($cons)->field('share_id,s.user_id,share_content,s.course_id,c.course_name,share_type as course_flag,s.operate_dt,u.user_name,u.user_icon')
  105. ->order('share_id desc')->limit($pageSize)->select();
  106. //echo M('Share')->getLastSql();exit;
  107. if ($res == NULL){
  108. $data = array('code'=>0,'msg'=>'', 'data'=>array());
  109. $this->returnData($data);exit;
  110. }
  111. $userNicknameArr = $this->getUserNickname();
  112. foreach ($res as $k=>$r){
  113. if (empty($r['user_name'])){
  114. $res[$k]['user_name'] = '';
  115. }
  116. if (isset($userNickArr[$r['user_id']])){
  117. $res[$k]['user_nickname'] = $userNickArr[$r['user_id']];
  118. }else{
  119. $res[$k]['user_nickname'] = '';
  120. }
  121. if (empty($r['user_icon'])){
  122. $res[$k]['user_icon'] = '';
  123. }
  124. //获取好友点赞
  125. $shareRes = M('ShareUser')->join('sw LEFT JOIN t_user u ON sw.user_id=u.user_id')
  126. ->where(array('share_id'=>$r['share_id']))
  127. ->field('sw.user_id,u.user_icon,u.user_name')->select();
  128. foreach ($shareRes as $key=>$item){
  129. if(isset($userNicknameArr[$item['user_id']])){
  130. $shareRes[$key]['user_nickname'] = $userNicknameArr[$item['user_id']];
  131. }else{
  132. $shareRes[$key]['user_nickname'] = '';
  133. }
  134. $shareRes[$key]['user_icon'] = empty($item['user_icon'])?'':$item['user_icon'];
  135. $shareRes[$key]['user_name'] = empty($item['user_name'])?'':$item['user_name'];
  136. }
  137. $res[$k]['user_list'] = $shareRes;
  138. }
  139. $data = array('code'=>0,'msg'=>'', 'data'=>$res);
  140. $this->returnData($data);exit;
  141. }
  142. //分享自由记
  143. public function notepad(){
  144. $groupId = I('group_id');
  145. $courseId = I('course_id');
  146. if (empty($courseId) || $courseId<1000000){
  147. $data = array('code'=>1,'msg'=>'自由记ID错误');
  148. $this->returnData($data);exit;
  149. }
  150. /* $shareInfo = M('Share')->where(array('course_id'=>$courseId,'user_id'=>$this->userId,'share_type'=>2))->field('share_id')->find();
  151. if ($shareInfo!=NULL){
  152. $data = array('code'=>1,'msg'=>'该自由记已经分享过了');
  153. $this->returnData($data);exit;
  154. } */
  155. $info = M('Course')->where(array('course_id'=>$courseId))->field('course_name')->find();
  156. $shareContent = '发现了一个好的自由记《'.$info['course_name'].'》,推荐给你,拿去不谢!';
  157. $saveData = array('user_id'=>$this->userId,'course_id'=>$courseId,'group_id'=>$groupId,'share_content'=>$shareContent,'operate_dt'=>time(),'share_type'=>2);
  158. $share_id = M('Share')->add($saveData);
  159. $data = array('code'=>0,'msg'=>'分享自由记成功', 'data'=>'');
  160. $this->returnData($data);exit;
  161. }
  162. //分享课程
  163. public function course(){
  164. $groupId = I('group_id');
  165. $courseId = I('course_id');
  166. if (empty($courseId) || $courseId<1000000){
  167. $data = array('code'=>1,'msg'=>'课程ID错误');
  168. $this->returnData($data);exit;
  169. }
  170. /* $shareInfo = M('Share')->where(array('course_id'=>$courseId,'user_id'=>$this->userId,'share_type'=>1))->field('share_id')->find();
  171. if ($shareInfo!=NULL){
  172. $data = array('code'=>1,'msg'=>'该课程已经分享过了');
  173. $this->returnData($data);exit;
  174. } */
  175. $info = M('Course')->where(array('course_id'=>$courseId))->field('course_name')->find();
  176. $shareContent = '发现了一门好的课程《'.$info['course_name'].'》,推荐给你,拿去不谢!';
  177. $saveData = array('user_id'=>$this->userId,'course_id'=>$courseId,'group_id'=>$groupId,'share_content'=>$shareContent,'operate_dt'=>time(),'share_type'=>1);
  178. $share_id = M('Share')->add($saveData);
  179. $data = array('code'=>0,'msg'=>'分享课程成功', 'data'=>'');
  180. $this->returnData($data);exit;
  181. }
  182. //分享课程给用户
  183. public function course_user(){
  184. $user_id = I('user_id');
  185. $courseId = I('course_id');
  186. if (empty($courseId) || $courseId<1000000){
  187. $data = array('code'=>1,'msg'=>'课程ID错误');
  188. $this->returnData($data);exit;
  189. }
  190. if(!$user_id){
  191. $data = array('code'=>1,'msg'=>'用户ID错误');
  192. $this->returnData($data);exit;
  193. }
  194. $userInfo = M('User')->where(array('user_id'=>$this->userId))->field('user_name')->find();
  195. $info = M('Course')->where(array('course_id'=>$courseId))->field('*')->find();
  196. $noticeContent = $userInfo['user_name']."给你分享了课程《".$info['course_name']."》";
  197. $userarr=explode(',',$user_id);
  198. $temp=$info;
  199. foreach($userarr as $k=>$uid){
  200. M('Notice')->add(array('ref_user_id'=>$uid,'user_id'=>$this->userId,'notice_flag'=>3,'notice_status'=>3,'notice_type'=>1,'notice_title'=>'课程分享','notice_content'=>$noticeContent,'operate_dt'=>time(),'extra'=>json_encode($temp)));
  201. M('User')->where(array('user_id'=>$uid))->setInc('friend_notice');
  202. $data = json_encode(array('type'=>1,'msg'=>$noticeContent,'data'=>array('title'=>$noticeContent,'course_id'=>$courseId,'course_name'=>$info['course_name'])));
  203. $this->umengPush($uid, $data);
  204. }
  205. $data = array('code'=>0,'msg'=>'分享课程成功', 'data'=>'');
  206. $this->returnData($data);exit;
  207. }
  208. //分享社区给用户
  209. public function choice_user(){
  210. $user_id = I('user_id');
  211. $choiceId = I('choice_id');
  212. if (empty($choiceId) || $choiceId<1000000){
  213. $data = array('code'=>1,'msg'=>'社区ID错误');
  214. $this->returnData($data);exit;
  215. }
  216. if(!$user_id){
  217. $data = array('code'=>1,'msg'=>'用户ID错误');
  218. $this->returnData($data);exit;
  219. }
  220. $userInfo = M('User')->where(array('user_id'=>$this->userId))->field('user_name')->find();
  221. $info = M('Choice')->where(array('choice_id'=>$choiceId))->field('*')->find();
  222. $noticeContent = $userInfo['user_name']."给你分享了文章《".$info['choice_name']."》";
  223. $userarr=explode(',',$user_id);
  224. $temp=$info;
  225. foreach($userarr as $k=>$uid){
  226. M('Notice')->add(array('ref_user_id'=>$uid,'user_id'=>$this->userId,'notice_flag'=>4,'notice_status'=>3,'notice_type'=>1,'notice_title'=>'文章分享','notice_content'=>$noticeContent,'operate_dt'=>time(),'extra'=>json_encode($temp)));
  227. M('User')->where(array('user_id'=>$uid))->setInc('friend_notice');
  228. $data = json_encode(array('type'=>1,'msg'=>$noticeContent,'data'=>array('title'=>$noticeContent,'choice_id'=>$choiceId,'choice_name'=>$info['choice_name'])));
  229. $this->umengPush($uid, $data);
  230. }
  231. $data = array('code'=>0,'msg'=>'分享社区文章成功', 'data'=>'');
  232. $this->returnData($data);exit;
  233. }
  234. //分享对战结果
  235. public function pk(){
  236. $groupId = I('group_id');
  237. $recordId = I('record_id');
  238. $shareContent = I('share_content');
  239. if (empty($recordId)){
  240. $data = array('code'=>1,'msg'=>'对战ID错误');
  241. $this->returnData($data);exit;
  242. }
  243. if (empty($shareContent)){
  244. $data = array('code'=>1,'msg'=>'分享内容不能为空');
  245. $this->returnData($data);exit;
  246. }
  247. /* $shareInfo = M('Share')->where(array('record_id'=>$recordId,'user_id'=>$this->userId,'share_type'=>3))->field('share_id')->find();
  248. if ($shareInfo!=NULL){
  249. $data = array('code'=>1,'msg'=>'该对战已经分享过了');
  250. $this->returnData($data);exit;
  251. } */
  252. //$shareContent = '经过1分58秒的对战,我轻松赢得跟xxx的单词对抗赛,我就想问:还有谁!';
  253. $saveData = array('user_id'=>$this->userId,'course_id'=>$recordId,'group_id'=>$groupId,'share_content'=>$shareContent,'operate_dt'=>time(),'share_type'=>3);
  254. $share_id = M('Share')->add($saveData);
  255. $data = array('code'=>0,'msg'=>'分享对战成功', 'data'=>'');
  256. $this->returnData($data);exit;
  257. }
  258. //好友动态点赞
  259. public function zan(){
  260. $shareId = I('share_id');
  261. $info = M('ShareUser')->where(array('user_id'=>$this->userId,'share_id'=>$shareId))->field('sw_id')->find();
  262. if ($info!=NULL){
  263. $data = array('code'=>1,'msg'=>'请不要重复点赞');
  264. $this->returnData($data);exit;
  265. }
  266. $shareInfo = M('Share')->where(array('share_id'=>$shareId))->field('user_id')->find();
  267. if ($shareInfo==NULL){
  268. $data = array('code'=>1,'msg'=>'该分享不存在');
  269. $this->returnData($data);exit;
  270. }
  271. /* if ($shareInfo['user_id']==$this->userId){
  272. $data = array('code'=>0,'msg'=>'点赞成功');
  273. $this->returnData($data);exit;
  274. } */
  275. $noticeTitle = '占消息';
  276. $noticeContent = '您的好友给你点赞了,请查看吧。';
  277. M('User')->where(array('user_id'=>$shareInfo['user_id']))->setInc('zan_notice');
  278. M('Notice')->add(array('ref_user_id'=>$shareInfo['user_id'],'user_id'=>$this->userId,'share_type'=>3,'notice_title'=>$noticeTitle,'notice_content'=>$noticeContent,'operate_dt'=>time()));
  279. M('ShareUser')->add(array('user_id'=>$this->userId,'share_id'=>$shareId,'operate_dt'=>time()));
  280. $data = array('code'=>0,'msg'=>'点赞成功');
  281. $this->returnData($data);exit;
  282. }
  283. //删除分享
  284. public function del(){
  285. $shareId = I('share_id');
  286. $shareInfo = M('Share')->where(array('share_id'=>$shareId))->field('user_id')->find();
  287. if ($shareInfo==NULL && $shareInfo['user_id']!=$this->userId){
  288. $data = array('code'=>1,'msg'=>'无权删除该分享');
  289. $this->returnData($data);exit;
  290. }
  291. M('Share')->where(array('share_id'=>$shareId))->delete();
  292. $data = array('code'=>0,'msg'=>'分享删除成功');
  293. $this->returnData($data);exit;
  294. }
  295. //删除点赞
  296. public function delZan(){
  297. $swId = I('sw_id');
  298. $shareInfo = M('ShareUser')->where(array('sw_id'=>$swId))->field('user_id')->find();
  299. if ($shareInfo==NULL){
  300. $data = array('code'=>0,'msg'=>'已删除');
  301. $this->returnData($data);exit;
  302. }
  303. M('ShareUser')->where(array('sw_id'=>$swId))->delete();
  304. $data = array('code'=>0,'msg'=>'已删除');
  305. $this->returnData($data);exit;
  306. }
  307. public function url(){
  308. $url = 'http://www.hanlinyuanonline.com/api/download';
  309. $data = array('code'=>0,'msg'=>'','data'=>array('url'=>$url,'title'=>'碰词儿, 全能的单词助手'));
  310. $this->returnData($data);exit;
  311. }
  312. }