GroupController.class.php 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. <?php
  2. namespace Api\Controller;
  3. use Common\Controller\ApiController;
  4. class GroupController extends ApiController {
  5. public function __construct(){
  6. parent::__construct();
  7. }
  8. //所在群组列表
  9. public function index(){
  10. //自己创建的群组
  11. $res1 = M('Group')->where(array('user_id'=>$this->userId))->order('group_id desc')->select();
  12. //加入的群组
  13. $join = 'gu LEFT JOIN t_group g ON gu.group_id=g.group_id';
  14. $res2 = M('GroupUser')->join($join)->where(array('gu.user_id'=>$this->userId,'g.user_id'=>array('neq',$this->userId)))->order('gu_id desc')->field('g.*')->select();
  15. if ($res1==NULL && $res2==NULL){
  16. $res = array();
  17. }else{
  18. $res = array_merge($res1,$res2);
  19. }
  20. $data = array('code'=>0,'msg'=>'','data'=>$res);
  21. $this->returnData($data);exit;
  22. }
  23. //编辑群组
  24. public function edit() {
  25. $userIds = I('uid');
  26. $groupId = I('group_id');
  27. $groupName = I('group_name');
  28. if(empty($userIds)){
  29. $data = array('code'=>1,'msg'=>'成员不能为空');
  30. $this->returnData($data);exit;
  31. }
  32. $userInfo = M('User')->where(array('user_id'=>$this->userId))->field('user_id,user_name')->find();
  33. if (empty($groupId)){
  34. //新增
  35. if (mb_strlen($groupName,'UTF8')<2 || mb_strlen($groupName,'UTF8')>12){
  36. $data = array('code'=>1,'msg'=>'群组名称2到12个汉字');
  37. $this->returnData($data);exit;
  38. }
  39. $groupId = M('Group')->add(array('group_name'=>$groupName,'user_id'=>$this->userId,'operate_dt'=>time(),));
  40. $userIdArr = explode(',', trim($userIds,','));
  41. foreach ($userIdArr as $uid){
  42. $dataList[] = array('user_id'=>$uid, 'group_id'=>$groupId, 'operate_dt'=>time(),);
  43. $noticeContent = $userInfo['user_name'].'已成功邀您加入“'.$groupName.'”群组,详情可进入到我的好友-群组中查看';
  44. $noticeList[] = array('user_id'=>$this->userId,'ref_user_id'=>$uid,'notice_content'=>$noticeContent,'operate_dt'=>time(),'notice_type'=>1,'notice_title'=>'群消息',);
  45. M('User')->where(array('user_id'=>$uid))->setInc('friend_notice');
  46. }
  47. $dataList[] = array('user_id'=>$this->userId, 'group_id'=>$groupId, 'operate_dt'=>time(),);
  48. M('Notice')->addAll($noticeList);
  49. M('GroupUser')->addAll($dataList);
  50. M('Group')->where(array('group_id'=>$groupId))->setInc('group_num',count($dataList));
  51. }else{
  52. //修改
  53. if (!empty($groupName)){
  54. if (mb_strlen($groupName,'UTF8')<2 || mb_strlen($groupName,'UTF8')>12){
  55. $data = array('code'=>1,'msg'=>'群组名称2到12个汉字');
  56. $this->returnData($data);exit;
  57. }
  58. }
  59. $info = M('Group')->where(array('group_id'=>$groupId))->find();
  60. if ($info['user_id']!=$this->userId){
  61. $data = array('code'=>1,'msg'=>'无权限编辑该群组');
  62. $this->returnData($data);exit;
  63. }
  64. if ($info['group_name'] != $groupName && !empty($groupName)){
  65. M('Group')->where(array('group_id'=>$info['group_id']))->save(array('group_name'=>$groupName));
  66. }
  67. $userIdArr = explode(',', $userIds);
  68. foreach ($userIdArr as $uid){
  69. $groupUserInfo = M('GroupUser')->where(array('group_id'=>$info['group_id'],'user_id'=>$uid))->find();
  70. if ($groupUserInfo){
  71. continue;
  72. }
  73. $noticeContent = $userInfo['user_name'].'已成功邀您加入“'.$groupName.'”群组,详情可进入到我的好友-群组中查看';
  74. $noticeList[] = array('user_id'=>$this->userId,'ref_user_id'=>$uid,'notice_content'=>$noticeContent,'operate_dt'=>time(),'notice_type'=>1,'notice_title'=>'群消息',);
  75. M('User')->where(array('user_id'=>$uid))->setInc('friend_notice');
  76. $dataList[] = array('user_id'=>$uid, 'group_id'=>$groupId, 'operate_dt'=>time(),);
  77. }
  78. //$dataList[] = array('user_id'=>$this->userId, 'group_id'=>$groupId, 'operate_dt'=>time(),);
  79. if (count($dataList)){
  80. M('Notice')->addAll($noticeList);
  81. M('GroupUser')->addAll($dataList);
  82. M('Group')->where(array('group_id'=>$groupId))->setInc('group_num',count($dataList));
  83. }
  84. }
  85. $data = array('code'=>0,'msg'=>'群组编辑成功');
  86. $this->returnData($data);exit;
  87. }
  88. //删除群组
  89. public function del(){
  90. $groupId = I('group_id');
  91. $info = M('Group')->where(array('group_id'=>$groupId))->find();
  92. if ($info==NULL){
  93. $data = array('code'=>1,'msg'=>'群组id错误');
  94. $this->returnData($data);exit;
  95. }
  96. if ($info['user_id']==$this->userId){
  97. M('GroupUser')->where(array('group_id'=>$info['group_id'],'user_id'=>$this->userId,))->delete();
  98. //自己创建的群组,删除后,最早的成员,设置成群管理员
  99. $groupUserInfo = M('GroupUser')->where(array('group_id'=>$info['group_id'],))->order('gu_id asc')->limit(1)->find();
  100. if ($groupUserInfo){
  101. M('Group')->where(array('group_id'=>$groupId))->save(array('user_id'=>$groupUserInfo['user_id']));
  102. }else{
  103. M('Group')->where(array('group_id'=>$groupId))->delete();
  104. }
  105. }else{
  106. M('GroupUser')->where(array('group_id'=>$info['group_id'],'user_id'=>$this->userId,))->delete();
  107. }
  108. $data = array('code'=>0,'msg'=>'退出群组成功');
  109. $this->returnData($data);exit;
  110. }
  111. //获取已经添加指定群的用户
  112. public function getUserListByGroupId(){
  113. $groupId = I('group_id');
  114. $join = 'gu LEFT JOIN t_user u ON gu.user_id=u.user_id';
  115. $res = M('GroupUser')->join($join)->where(array('group_id'=>$groupId,'gu.user_id'=>array('neq','u.user_id'),))->field('u.user_id,user_phone,user_name,user_level,user_sex,user_icon')->select();
  116. //echo M('GroupUser')->getLastSql();exit;
  117. $userNameArr = $this->getUserNickname();
  118. if ($res==NULL){
  119. $res = array();
  120. }
  121. foreach ($res as $key=>$val){
  122. if (isset($userNameArr[$val['user_id']])){
  123. $res[$key]['user_nickname'] = $userNameArr[$val['user_id']]['user_nickname'];
  124. }
  125. }
  126. $data = array('code'=>0,'msg'=>'','data'=>$res);
  127. $this->returnData($data);exit;
  128. }
  129. }