Procházet zdrojové kódy

Merge branch 'master' of http://git.huxiukeji.com/zhangxiaobin/ggyuyin

lizhen_gitee před 1 rokem
rodič
revize
94a9f2dc90

+ 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 = Guild::column("g_id");
-            $guildInfo->g_id = $this->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());
         }
     }
 

+ 13 - 5
application/api/controller/Party.php

@@ -34,11 +34,12 @@ class Party extends Common
      * 创建/进入派对
      */
     public function createParty() {
-        $room_type = $this->request->request('room_type',1); // 房间类型:1=派对,2=直播
+        $room_type = $this->request->request('room_type',2); // 房间类型:1=派对,2=直播
         $partyModel = new \app\common\model\Party();
 
         $user_id = $this->auth->id;
         // 开直播时,判断当前用户是否为主播
+        $anchorInfo = [];
         if($room_type == 2) {
             $anchorInfo = \app\common\model\UserAnchor::where(["user_id"=>$user_id])->find();
 
@@ -99,7 +100,7 @@ class Party extends Common
 
             $party_name = $this->auth->u_id."的房间"; // 派对名称
             $party_logo = "/assets/api/party_logo.png"; // 派对logo
-            $party_type = 0; // 派对类型(情感互动,心动点单 等)
+            $party_type = isset($anchorInfo['party_type_id']) ? $anchorInfo['party_type_id'] : 0; // 派对类型(情感互动,心动点单 等)
             $party_notice = "请编辑房间公告"; // 派对公告
             $party_notice_detail = "请编辑房间公告内容!"; // 派对公告详情
             if (!$party_name || !$party_logo || !$party_notice) {
@@ -122,7 +123,7 @@ class Party extends Common
             $data["party_notice"] = $party_notice;
             $data["party_notice_detail"] = $party_notice_detail;
             $data["is_online"] = 1;
-            $data["status"] = 0;
+            $data["status"] = 1;
             $data["is_recommend"] = 0;
             $data["createtime"] = time();
             $id = $partyModel->insertGetId($data);
@@ -162,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 {

+ 4 - 2
application/api/controller/Usercenter.php

@@ -614,15 +614,17 @@ class UserCenter extends Common
      * 主播申请
      */
     public function anchorApply() {
-        $type_id = $this->request->request('type_id'); // 技能分类ID
+        $type_id = $this->request->request('type_id',0); // 技能分类ID
+        $party_type_id = $this->request->request('party_type_id'); //分类ID
         $desc = $this->request->request('desc'); // 申请备注
-        if (!$type_id && !$desc) {
+        if (!$party_type_id && !$desc) {
             $this->error(__('Invalid parameters'));
         }
         $useranchorModel = new \app\common\model\UserAnchor();
         $data = [];
         $data["user_id"] = $this->auth->id;
         $data["type_id"] = $type_id;
+        $data["party_type_id"] = $party_type_id;
         if($useranchorModel->where($data)->find()) $this->error(__('您已申请过该类型的主播,请勿重复申请!'));
         $data["desc"] = $desc;
         $data["createtime"] = time();

+ 14 - 0
application/common.php

@@ -2,6 +2,7 @@
 
 // 公共助手函数
 
+use fast\Random;
 use Symfony\Component\VarExporter\VarExporter;
 
 if (!function_exists('__')) {
@@ -630,3 +631,16 @@ function createUniqueNo($prifix = 'P',$id = 0)
 
     return $rt;
 }
+if (!function_exists('getUinqueId')) {
+    /**
+     * 生成不重复的随机数字
+     */
+    function getUinqueId($length = 8, $ids = [])
+    {
+        $newid = Random::build("nozero", $length);
+        if (in_array($newid, $ids)) {
+            $newid = $this->getUinqueId($length, $ids);
+        }
+        return $newid;
+    }
+}