Browse Source

家族信息

zhangxiaobin 1 year ago
parent
commit
76a215215b
2 changed files with 101 additions and 0 deletions
  1. 61 0
      application/api/controller/Guild.php
  2. 40 0
      application/common/service/RoomService.php

+ 61 - 0
application/api/controller/Guild.php

@@ -7,6 +7,7 @@ use think\Db;
 use think\Exception;
 use Redis;
 use app\api\controller\Tenim;
+use app\common\service\RoomService;
 
 /**
  * 公会控制器
@@ -72,6 +73,66 @@ class Guild extends Api
     }
 
     /**
+     * 获取公会信息-新
+     */
+    public function getGuildInfoNew() {
+        $guild_id = $this->request->request("guild_id"); //公会ID
+        $is_member = 0;
+        if($guild_id <= 0) {
+            $is_member = 1;
+            $user_id = $this->auth->id;
+            // 获取当前用户是否是公会成员
+            $idcardfind = \app\common\model\GuildJoinin::where(["user_id"=>$user_id,"status"=>0])->find();
+            if($idcardfind) $this->error("您存在加入公会的申请,正在审核中,请耐心等待!");
+
+            $memberfind = \app\common\model\GuildMember::where(["user_id"=>$user_id,"status"=>1,"sign_time"=>["gt",time()]])->find();
+            if($memberfind) $guild_id = $memberfind->guild_id;
+
+            if(!$guild_id) {
+                $res["is_member"] = 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();
+        // 获取公会成员信息
+        $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("公会信息获取失败!");
+        // 获取公会成员总数
+        $guildMemberCount = \app\common\model\GuildMember::where(["guild_id"=>$guild_id])->count("id");
+        // 获取会长信息
+        //$guilderInfo = \app\common\model\User::field("avatar,nickname,u_id")->where(["id"=>$guildInfo->user_id])->find();
+        // 获取房间信息
+        $partyInfo = \app\common\model\Party::field("id,party_logo,party_type,is_online,party_name,party_notice_detail")->where(["id"=>$guildInfo->party_id])->find();
+        $partyParams = ['party_id' => $guildInfo->party_id];
+        $roomService = new RoomService();
+        $partyOnlineRes = $roomService->getPartyUserList($partyParams);
+        $onlineData = isset($partyOnlineRes['data']) ? $partyOnlineRes['data'] : [];
+        $partyInfo['user_list'] = isset($onlineData['user_list']) ? $onlineData['user_list'] : [];
+        $partyInfo['online_num'] = isset($onlineData['online_num']) ? $onlineData['online_num'] : 0;
+        // 派对类型
+        $partyTypeName = "普通房";
+        if($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;
+        $partyInfo["party_type_color"] = $mod == 0?5:$mod;
+        $partyInfo["type_name"] = $partyTypeName;
+
+        // 返回参数拼接
+        $res["guildInfo"] = $guildInfo; // 公会基本信息
+        $res["partyInfo"] = $partyInfo; // 派对悉尼下
+        $res["guildMemberInfo"] = $guildMemberInfo; // 成员列表
+        $res["guildMemberCount"] = $guildMemberCount; // 成员总数
+        //$res["guilderInfo"] = $guilderInfo; // 会长
+        $res["is_member"] = $is_member; // 是否为派对成员
+        $this->success("获取成功!",$res);
+    }
+
+    /**
      * 更新公会基本信息
      */
     public function guildSaveInfo() {

+ 40 - 0
application/common/service/RoomService.php

@@ -202,4 +202,44 @@ class RoomService
         }
         return $result;
     }
+
+    /**
+     * 房间用户信息
+     * @return void
+     */
+    public function getPartyUserList($params=[])
+    {
+        $result = [
+            'status' => 1,
+            'msg' => '',
+            'data' => [],
+        ];
+        try {
+            $partyId = isset($params['party_id']) ? $params['party_id'] : 0;
+            $userIds = $this->redis->zRange("party_user_".$partyId,0,-1);
+            $field = 'id,avatar';
+            $fieldArr = explode(',',$field);
+            $userWhere['id'] = ['in', $userIds];
+            $userModel = new \app\common\model\User();
+            $userData = $userModel->field($field)->where($userWhere)->select();
+            $userDatas = [];
+            if (!empty($userData)) {
+                foreach($userData as $key => $value) {
+                    foreach ($fieldArr as $fieldk => $fieldv) {
+                        $userDatas[$key][$fieldv] = $value[$fieldv];
+                    }
+                }
+                $userDatas = list_domain_image($userDatas,['avatar']);
+            }
+            $partyUserList = [
+                'user_list' => $userDatas,
+                'online_num' => count($userData),
+            ];
+            $result['data'] = $partyUserList;
+        } catch (Exception $e) {
+            $result['status'] = 0;
+            $result['msg'] = $e->getMessage();
+        }
+        return $result;
+    }
 }