浏览代码

家族申请,走环信。成员通过,走环信。

lizhen_gitee 1 年之前
父节点
当前提交
e18096aa60

+ 1 - 6
application/admin/view/family/edit.html

@@ -12,12 +12,7 @@
             <input id="c-user_id" data-rule="required" data-source="user/user/index" disabled data-field="username" class="form-control selectpage" name="row[user_id]" type="text" value="{$row.user_id|htmlentities}">
         </div>
     </div>
-    <!--<div class="form-group">
-        <label class="control-label col-xs-12 col-sm-2">{:__('Group_id')}:</label>
-        <div class="col-xs-12 col-sm-8">
-            <input id="c-group_id" data-rule="required" data-source="group/index" class="form-control selectpage" name="row[group_id]" type="text" value="{$row.group_id|htmlentities}">
-        </div>
-    </div>-->
+
     <div class="form-group">
         <label class="control-label col-xs-12 col-sm-2">{:__('Name')}:</label>
         <div class="col-xs-12 col-sm-8">

+ 19 - 9
application/api/controller/Family.php

@@ -6,6 +6,7 @@ use app\common\controller\Api;
 use app\common\service\UserService;
 use think\Db;
 use think\Exception;
+use app\common\library\Easemob;
 
 /**
  * 家族控制器
@@ -26,7 +27,7 @@ class Family extends Api
             $whereOr['name'] = array('like', '%' . $search . '%');
             $whereOr['g_id'] = $search;
         }
-        $res = Db::name('family')->field("id,g_id,user_id,group_id,name,image,desc,notice,member")
+        $res = Db::name('family')->field("id,g_id,user_id,easemob_group_id,name,image,desc,notice,member")
             ->where($where)
             ->where(function ($query) use($whereOr) {
                 $query->whereOr($whereOr);
@@ -45,7 +46,7 @@ class Family extends Api
             'status' => 1,
         ];
 
-        $res = Db::name('family')->field("id,g_id,user_id,group_id,name,image,desc,notice,member")
+        $res = Db::name('family')->field("id,g_id,user_id,easemob_group_id,name,image,desc,notice,member")
             ->where($where)
             ->autopage()
             ->select();
@@ -62,7 +63,7 @@ class Family extends Api
         ];
 
         $res = Db::name('family_member')->alias('fm')
-            ->field("f.id,f.g_id,f.user_id,f.group_id,f.name,f.image,f.desc,f.notice,f.member")
+            ->field("f.id,f.g_id,f.user_id,f.easemob_group_id,f.name,f.image,f.desc,f.notice,f.member")
             ->join('family f','fm.guild_id = f.id','LEFT')
             ->where($where)
             ->autopage()
@@ -104,7 +105,7 @@ class Family extends Api
         $res = [];
 
         //公会信息
-        $guildInfo = \app\common\model\Family::field("id,image,name,g_id,user_id,group_id,desc,notice,status")->where(["id"=>$guild_id])->find();
+        $guildInfo = \app\common\model\Family::field("id,image,name,g_id,user_id,easemob_group_id,desc,notice,status")->where(["id"=>$guild_id])->find();
         if(!$guildInfo) $this->error("家族信息获取失败!");
 
         // 获取公会成员信息
@@ -196,6 +197,13 @@ class Family extends Api
                 $guildInfo->user_id = $user_id;
                 $guildInfo->g_id = getUinqueId(4, [$ids]);
                 $guildInfo->status = 0;
+
+                //去环信建个房间
+                $easemob = new Easemob();
+                $maxusers = 300; //普通群:专业版300,旗舰版3000。大型群不支持离线推送
+                $easemob_group_id = $easemob->group_createPublicGroup($user_id,$guild_name,$guild_desc,$maxusers);
+
+                $guildInfo->easemob_group_id = $easemob_group_id;
             } else {
                 // 获取公会信息
                 $guildInfo = \app\common\model\Family::where(["id"=>$guild_id])->find();
@@ -333,17 +341,15 @@ class Family extends Api
         // 获取公会信息
         $guildInfo = \app\common\model\Family::where(["id"=>$memberInfo->guild_id])->find();
         // 验证更新条件
-        if($user_id !== $guildInfo->user_id) $this->error("身份验证失败!您不是族长,无权限更改!");
+        if($user_id !== $guildInfo->user_id) $this->error("身份验证失败!您不是族长,无权限!");
 
         //判断重复
-        $memberfind = \app\common\model\Family::where(["user_id"=>$memberInfo['user_id'],"status"=>1])->find();
-        if($memberfind) $this->error("该用户已自己的家族!");
+        $memberfind = \app\common\model\Family::where(["user_id"=>$memberInfo['user_id'],"status"=>['IN',[0,1]] ])->find();
+        if($memberfind) $this->error("该用户已申请了自己的家族!");
 
         Db::startTrans();
         try{
 
-
-
             // 更新申请状态
             $memberInfo->status = $is_pass;
             $memberInfo->updatetime = time();
@@ -351,6 +357,10 @@ class Family extends Api
 
             if($is_pass == 1) {
 
+                //[环信]把用户加到群组里
+                $easemob = new Easemob();
+                $easemob->group_addGroupMember($guildInfo['easemob_group_id'],$memberInfo['user_id']);
+
                 $res4 = \app\common\model\Family::where(["id"=>$guildInfo->id])->setInc("member");
                 if($res2 && $res4) {
                     // +message

+ 21 - 0
application/common/library/Easemob.php

@@ -2,6 +2,7 @@
 namespace app\common\library;
 
 use Easemob\Auth;
+use Easemob\Group;
 use Easemob\User;
 use Easemob\Room;
 
@@ -10,6 +11,7 @@ class Easemob {
     protected $auth;
     protected $room;
     protected $user;
+    protected $group;
 
     public function __construct() {
 
@@ -22,8 +24,10 @@ class Easemob {
         $this->auth = new Auth($appKey,$clientIdOrAppID,$clientSecretOrAppCertificate);
         $this->room = new Room($this->auth);
         $this->user = new User($this->auth);
+        $this->group = new Group($this->auth);
     }
 
+
     /////////////////////////////////管理用户/////////////////////////////
 
     //注册用户
@@ -54,6 +58,23 @@ class Easemob {
         return false;
     }
 
+
+    /////////////////////////////////管理群组/////////////////////////////
+
+    //创建群组,返回群组id
+    public function group_createPublicGroup($user_id,$guild_name,$guild_desc,$maxusers){
+        $user_id = ''.$user_id.'';
+        $rs = $this->group->createPublicGroup($user_id,$guild_name,$guild_desc,[],$maxusers);
+        return $rs;
+    }
+
+    //添加一个群组成员
+    //$rs === true;
+    public function group_addGroupMember($groupId,$user_id){
+        $rs = $this->group->addGroupMember($groupId,$user_id);
+        return $rs;
+    }
+
     /////////////////////////////////管理聊天室/////////////////////////////
     //https://docs-im-beta.easemob.com/document/server-side/chatroom.html
 

+ 1 - 1
vendor/maniac/easemob-php/src/Group.php

@@ -223,7 +223,7 @@ final class Group
         $public = true;
         // 公开群(public 为 true),则不允许群成员邀请别人加入此群
         $allowinvites = false;
-        $data = compact('owner', 'groupname', 'desc', 'public', 'maxusers', 'allowinvites', 'members_only', 'members', 'custom');
+        $data = compact('owner', 'groupname', 'desc', 'public', 'maxusers', 'allowinvites', 'members_only', /*'members',*/ 'custom');
         return $this->create($data);
     }