zhangxiaobin 1 год назад
Родитель
Сommit
f9558d3d9e
2 измененных файлов с 81 добавлено и 33 удалено
  1. 72 31
      application/api/controller/Guild.php
  2. 9 2
      application/api/controller/Party.php

+ 72 - 31
application/api/controller/Guild.php

@@ -88,20 +88,24 @@ class Guild extends Api
 
             $memberfind = \app\common\model\GuildMember::where(["user_id"=>$user_id,"status"=>1,"sign_time"=>["gt",time()]])->find();
             if($memberfind) $guild_id = $memberfind->guild_id;
-
+            $guildWhere['user_id'] = $user_id;
+            $guildWhere['status'] = ['in',[0,1]];
+            $guildInfo = \app\common\model\Guild::field("id,image,name,g_id,user_id,party_id,desc,notice,status")->where($guildWhere)->find();
             if(!$guild_id) {
                 $res["is_member"] = 2; // 是否为派对成员
+                $res["guild_status"] = isset($guildInfo['status']) ? (int)$guildInfo['status'] : -2; // 是否为派对成员
                 $this->success("获取成功!",$res);
             }
         }
         $res = [];
-        $guildInfo = \app\common\model\Guild::field("id,image,name,g_id,user_id,party_id,desc,notice")->where(["id"=>$guild_id])->find();
+        $guildInfo = \app\common\model\Guild::field("id,image,name,g_id,user_id,party_id,desc,notice,status")->where(["id"=>$guild_id])->find();
         // 获取公会成员信息
         $guildMemberInfo = \app\common\model\GuildMember::alias("a")
             ->field("a.user_id,a.role,u.nickname,u.avatar")
             ->join("hx_user u","a.user_id = u.id")
             ->where(["a.guild_id"=>$guild_id])->limit(5)->order("a.role","desc")->select();
         if(!$guildInfo || !$guildMemberInfo) $this->error("公会信息获取失败!");
+        $guildStatus = (int)$guildInfo['status'];
         // 获取公会成员总数
         $guildMemberCount = \app\common\model\GuildMember::where(["guild_id"=>$guild_id])->count("id");
         // 获取会长信息
@@ -116,7 +120,7 @@ class Guild extends Api
         $partyInfo['online_num'] = isset($onlineData['online_num']) ? $onlineData['online_num'] : 0;
         // 派对类型
         $partyTypeName = "普通房";
-        if($partyInfo["party_type"]) {
+        if(isset($partyInfo["party_type"])) {
             $partyTypeName = \app\common\model\PartyType::where(["id"=>$partyInfo["party_type"]])->value("name");
         }
         $mod = isset($partyInfo["party_type"])?intval($partyInfo["party_type"])%5:1;
@@ -130,6 +134,7 @@ class Guild extends Api
         $res["guildMemberCount"] = $guildMemberCount; // 成员总数
         //$res["guilderInfo"] = $guilderInfo; // 会长
         $res["is_member"] = $is_member; // 是否为派对成员
+        $res['guild_status'] = $guildStatus; //家族状态
         $this->success("获取成功!",$res);
     }
 
@@ -137,35 +142,71 @@ class Guild extends Api
      * 更新公会基本信息
      */
     public function guildSaveInfo() {
-        $guild_id = $this->request->request("guild_id"); //公会id
-        $guild_name = $this->request->request("guild_name"); //公会简介
-        $guild_image = $this->request->request("guild_image"); //公会简介
-        $guild_desc = $this->request->request("guild_desc"); //公会简介
-        $guild_notice = $this->request->request("guild_notice"); //公会公告
+        Db::startTrans();
+        try {
+            $guild_id = $this->request->request("guild_id"); //公会id
+            $guild_name = $this->request->request("guild_name"); //公会简介
+            $guild_image = $this->request->request("guild_image"); //公会简介
+            $guild_desc = $this->request->request("guild_desc"); //公会简介
+            $guild_notice = $this->request->request("guild_notice"); //公会公告
 
-        if(!$guild_name && !$guild_image && !$guild_desc && !$guild_notice) $this->error("请输入要修改的内容!");
-        $user_id = $this->auth->id;
-        if (empty($guild_id)) {
-            $guildInfo = new \app\common\model\Guild();
-            $guildInfo->user_id = $user_id;
-            $ids = \app\common\model\Guild::column("g_id");
-            $guildInfo->g_id = getUinqueId(4, [$ids]);
-            $guildInfo->status = 0;
-        } else {
-            // 获取公会信息
-            $guildInfo = \app\common\model\Guild::where(["id"=>$guild_id])->find();
-            // 验证更新条件
-            if($user_id !== $guildInfo->user_id) $this->error("身份验证失败!您不是公会长,无权限更改!");
-        }
-        $guild_name && $guildInfo->name = $guild_name;
-        $guild_image && $guildInfo->image = $guild_image;
-        $guild_desc && $guildInfo->desc = $guild_desc;
-        $guild_notice && $guildInfo->notice = $guild_notice;
-        $res = $guildInfo->save();
-        if($res !== false) {
-            $this->success("操作成功!");
-        } else {
-            $this->error("网络错误,请稍后重试!");
+            if(!$guild_name && !$guild_image && !$guild_desc && !$guild_notice) throw new Exception("请输入要修改的内容!");
+            $user_id = $this->auth->id;
+            if (empty($guild_id)) {
+                $guildWhere['user_id'] = $user_id;
+                $guildWhere['status'] = ['in',[0,1]];
+                $guildData = model('Guild')->where($guildWhere)->find();
+                if (!empty($guildData)) {
+                    throw new Exception('您已创建过家族!');
+                }
+                $guildInfo = new \app\common\model\Guild();
+                $guildInfo->user_id = $user_id;
+                $ids = \app\common\model\Guild::column("g_id");
+                $guildInfo->g_id = getUinqueId(4, [$ids]);
+                $guildInfo->status = 0;
+            } else {
+                // 获取公会信息
+                $guildInfo = \app\common\model\Guild::where(["id"=>$guild_id])->find();
+                // 验证更新条件
+                if($user_id !== $guildInfo->user_id) throw new Exception("身份验证失败!您不是公会长,无权限更改!");
+            }
+            $guild_name && $guildInfo->name = $guild_name;
+            $guild_image && $guildInfo->image = $guild_image;
+            $guild_desc && $guildInfo->desc = $guild_desc;
+            $guild_notice && $guildInfo->notice = $guild_notice;
+            $res = $guildInfo->save();
+            if($res !== false) {
+                if (empty($guild_id)) {
+                    $guildMemberData = [
+                        'guild_id' => $guildInfo->id,
+                        'user_id' => $user_id,
+                        'role' => 2,
+                        'sign_type' => 3,
+                        'sign_time' => 0,
+                        'status' => 1,
+                        'createtime' => time(),
+                    ];
+                    $guildRes = model('GuildMember')->insertGetId($guildMemberData);
+                    if (!$guildRes) {
+                        throw new Exception('生成成员失败');
+                    }
+                    $userWhere['id'] = $user_id;
+                    $user = model('User')->where($userWhere)->find();
+                    if (!empty($user) && $user['guild_id'] != $guildInfo->id) {
+                        $userRes = model('User')->where($userWhere)->update(['is_guild'=>3,'guild_id'=>$guildInfo->id]);
+                        if (!$userRes) {
+                            throw new Exception('用户绑定家族失败');
+                        }
+                    }
+                }
+                Db::commit();
+                $this->success("操作成功!");
+            } else {
+                throw new Exception("网络错误,请稍后重试!");
+            }
+        } catch (Exception $e) {
+            Db::rollback();
+            $this->error($e->getMessage());
         }
     }
 

+ 9 - 2
application/api/controller/Party.php

@@ -163,8 +163,15 @@ class Party extends Common
 
             if($room_type != 2) {
                 // 创建公会
-                \app\common\model\Guild::createGuild($partyInfo["id"], $partyInfo["party_name"], $user_id);
-                \app\common\model\User::update(["is_guild" => 3], ["id" => $user_id]);
+                /*\app\common\model\Guild::createGuild($partyInfo["id"], $partyInfo["party_name"], $user_id);
+                \app\common\model\User::update(["is_guild" => 3,'guild_id'], ["id" => $user_id]);*/
+                //更新家族 party_id
+                $guildWhere['id'] = $user_id;
+                $guildWhere['status'] = ['in',[0,1]];
+                $guild = model('Guild')->where($guildWhere)->find();
+                if (!empty($guild)) {
+                    model('Guild')->where($guildWhere)->update(['party_id'=>$partyInfo['id']]);
+                }
             }
 
         } else {