Browse Source

filter & mk_qrcode

huangdong 6 years atrás
parent
commit
7de3f35189

+ 14 - 0
.idea/php-test-framework.xml

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="PhpTestFrameworkVersionCache">
+    <tools_cache>
+      <tool tool_name="PHPUnit">
+        <cache>
+          <versions>
+            <info id="Local" version="5.4.4" />
+          </versions>
+        </cache>
+      </tool>
+    </tools_cache>
+  </component>
+</project>

+ 8 - 0
.idea/php.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="PhpUnit">
+    <phpunit_settings>
+      <PhpUnitSettings load_method="PHPUNIT_PHAR" custom_loader_path="" phpunit_phar_path="$PROJECT_DIR$/../phpunit-5.4.4.phar" />
+    </phpunit_settings>
+  </component>
+</project>

+ 15 - 3
helper/room/room_parts.php

@@ -59,13 +59,25 @@ class room_parts
         return $result;
     }
 
-    public function allparts()
+    public function allparts($filter=[])
     {
         $uids = [];
         $items = $this->mModRoom->getRoomParts(["room_id" => $this->mRoomID, 'state' => 0], 'member_id', false);
-        foreach ($items as $item) {
-            $uids[] = intval($item['member_id']);
+
+        if(empty($filter))
+        {
+            foreach ($items as $item) {
+                $uids[] = intval($item['member_id']);
+            }
+        }
+        else
+        {
+            foreach ($items as $item) {
+                if(in_array($item['member_id'],$filter)) continue;
+                $uids[] = intval($item['member_id']);
+            }
         }
+
         return $uids;
     }
 }

+ 17 - 0
helper/room/tpl_group_home.php

@@ -9,8 +9,13 @@
 
 namespace room;
 require_once(BASE_ROOT_PATH . '/helper/room/factory.php');
+require_once(BASE_ROOT_PATH . '/helper/url_helper.php');
+require_once(BASE_ROOT_PATH . '/helper/util_helper.php');
 
 use Exception;
+use url_helper;
+use util;
+
 class tpl_group_home
 {
     private $mod_room = null;
@@ -266,4 +271,16 @@ class tpl_group_home
         }
         echo $html;
     }
+
+
+    public function show_qrcode()
+    {
+        $html = "";
+        $url = url_helper::room_invite_url($this->room_id,$this->cur_user);
+        $save_path = BASE_UPLOAD_PATH."/room/qrcodes/{$this->room_id}_{$this->cur_user}.png";
+        if(!file_exists($save_path)){
+            util::qrcode_path($url,$save_path);
+        }
+        echo $html;
+    }
 }

+ 12 - 0
helper/url_helper.php

@@ -77,6 +77,12 @@ class url_helper
         $url = BASE_SITE_URL . "/mobile/index.php?act=bargain&op=open&client_type=wap&bargain_id={$bargain_id}&relay_id={$relay_id}";
         return $url;
     }
+    public static function room_invite_url($room_id,$inviter)
+    {
+        $relay_id = session_helper::share_id();
+        $url = BASE_SITE_URL . "/mobile/index.php?act=qrcode&op=room_invite&client_type=ajax&room_id={$room_id}&inviter={$inviter}&relay_id={$relay_id}";
+        return $url;
+    }
 }
 
 class author_url
@@ -142,4 +148,10 @@ class author_url
         $url = BASE_SITE_URL . "/mobile/index.php?act=bargain&op=open&client_type=wap&bargain_id={$bargain_id}&relay_id={$relay_id}";
         return $url;
     }
+    public static function room_invite_url($room_id,$inviter)
+    {
+        $relay_id = session_helper::share_id();
+        $url = BASE_SITE_URL . "/mobile/index.php?act=qrcode&op=room_invite&client_type=ajax&room_id={$room_id}&inviter={$inviter}&relay_id={$relay_id}";
+        return $url;
+    }
 }

+ 13 - 2
mobile/control/member_talk.php

@@ -207,7 +207,18 @@ class member_talkControl extends mbMemberControl
 
     private function roomsg($msgid,$room_id)
     {
+        $user = session_helper::memberid();
         $mod_room = Model('room');
+
+        $room = $mod_room->getRoomParts(["room_id"=>$room_id, "member_id"=>$user, "state" => 0],"hide_msg",1);
+        if(!empty($room)){
+            $hide_msg = intval($room[0]["hide_msg"]);
+        }else{
+            $hide_msg = 0;
+        }
+
+        $msgid = $msgid > $hide_msg ? $msgid : $hide_msg;
+
         $msgs = $mod_room->getRoomsgList(['room_id' => $room_id,'msg_id' => ['lt',$msgid],'msg_type' => 0], $this->page_size);
 
         $uids = [];
@@ -520,7 +531,7 @@ class member_talkControl extends mbMemberControl
         }
 
         $parts = new room\room_parts($room_id);
-        $uids = $parts->allparts();
+        $uids = $parts->allparts([session_helper::memberid()]);
         $members = member_info::get_members($uids);
 
         return self::outsuccess([
@@ -685,7 +696,7 @@ class member_talkControl extends mbMemberControl
         $mod_room = Model('room');
 
         $hide_msg = 0;
-        $cond = ["room_id"=>$room_id, "member_id"=>$user, "state" => 0,];
+        $cond = ["room_id"=>$room_id, "member_id"=>$user, "state" => 0];
         $item = $mod_room->getRoomParts($cond,"hide_msg",1);
         if(!empty($item)) {
             $hide_msg = $item[0]['hide_msg'];

+ 47 - 0
mobile/control/qrcode.php

@@ -0,0 +1,47 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: huangdong
+ * Date: 2018/8/20
+ * Time: 下午4:46
+ */
+
+require_once(BASE_ROOT_PATH . '/helper/search/tcp_client.php');
+require_once(BASE_ROOT_PATH . '/helper/room/factory_client.php');
+require_once(BASE_ROOT_PATH . '/helper/room/proto_type.php');
+
+class qrcodeControl extends mobileControl
+{
+    public function room_inviteOp()
+    {
+        $room_id = intval($_GET['room']);
+        $inviter = intval($_GET["inviter"]);
+
+        if(session_helper::need_wechat_author())
+        {
+            $author = new thrid_author\wxauthor();
+            $url = author_url::room_invite_url($room_id,$inviter);
+            $url = $author->enter($url);
+            return self::outsuccess(['direct_uri' => $url],"redirect");
+        }
+
+        $result = room\factory_client::instance()->invite($room_id,$inviter,[session_helper::memberid()]);
+
+        if(util::from_wechat() == false){
+            $_SESSION['client_type'] = 'ajax';
+        }else{
+            $_SESSION['client_type'] = 'wap';
+        }
+
+        //todo 修改成同时兼容APP请求返回打开回话和微信返回打开小程序
+        if($result === false) {
+            return self::outerr(errcode::ErrRoom,"邀请失败");
+        }
+        else
+        {
+            $members = member_info::get_members($result['newusers']);
+            $result['invitees'] = $members;
+            return self::outsuccess($result);
+        }
+    }
+}

+ 15 - 0
test/TestQRcode.php

@@ -41,4 +41,19 @@ class TestQRcode extends PHPUnit_Framework_TestCase
             $i++;
         }
     }
+
+
+    public function testPgenD()
+    {
+        $roomid = 37;
+        $inviter = 39623;
+        require_once(BASE_ROOT_PATH . '/helper/url_helper.php');
+//        $url = url_helper::room_invite_url($roomid,$inviter);
+        $url = "http://192.168.0.131/mobile/index.php?act=member_talk&op=qr_invite&client_type=ajax&room_id=37&inviter=39623&relay_id=0";
+        $save_path = "/Users/huangdong/work/shopnc/data/upload/room/qrcodes/{$roomid}_{$inviter}.png";
+        if(!file_exists($save_path)){
+            util::qrcode_path($url,$save_path);
+        }
+//        unlink($save_path);
+    }
 }