DESKTOP-70VPDLK\Administrator 7 mesiacov pred
rodič
commit
48205a3c44

+ 9 - 10
app/Http/Controllers/Api/MemberController.php

@@ -26,14 +26,13 @@ class MemberController extends ApiController
             return $this->apiResponseError('缺少必要信息');
         }
         $openInfo = WeixinServer::creatServer()->getAppletsOpenId($code);
-
         if(!isset($openInfo['openid'])){
             return $this->apiResponseError(empty($openInfo['msg'])?'openid获取失败':$openInfo['msg']);
         }
         DB::beginTransaction();
-        try {
+//        try {
             //检查openid是否存在
-            $m_id = MemberOpenServer::creatServer()->getUserId(4,$openInfo['openid']);
+            $m_id = MemberOpenServer::creatServer()->getUserId(4,$openInfo['openid'],$openInfo['unionid']);
             if($m_id){
                 //重置token
                 $token_str = PassServer::creatServer()->getMemberToken($m_id);
@@ -44,12 +43,12 @@ class MemberController extends ApiController
                 $member=MemberServer::creatServer()->register();
                 if (empty($member)){
                     DB::rollBack();
-                    return $this->apiResponseError('注册失败');
+                    return $this->apiResponseError('注册失败1');
                 }
-                $memberOpen=MemberOpenServer::creatServer()->setUserOpenid($member['m_id'],4,$openInfo['openid']);
+                $memberOpen=MemberOpenServer::creatServer()->setUserOpenid($member['m_id'],$member['main_id'],4,$openInfo['openid'],$openInfo['unionid']);
                 if(empty($memberOpen)){
                     DB::rollBack();
-                    return $this->apiResponseError('注册失败');
+                    return $this->apiResponseError('注册失败2');
                 }
             }
 
@@ -57,9 +56,9 @@ class MemberController extends ApiController
             MemberServer::creatServer()->delMemberCache($member['m_id']);
             DB::commit();
             return $this->apiResponseSuccess('成功',$member);
-        }catch (\Exception $e){
-            DB::rollBack();
-            return $this->apiResponseError('注册失败');
-        }
+//        }catch (\Exception $e){
+//            DB::rollBack();
+//            return $this->apiResponseError('注册失败');
+//        }
     }
 }

+ 1 - 1
app/Servers/CommonServer.php

@@ -512,7 +512,7 @@ class CommonServer
      * @param string $data 数据 数组格式
      * @return mixed
      */
-    protected function sendRequest($url, $type = 'get', $data = '')
+     function sendRequest($url, $type = 'get', $data = '')
     {
 
         $ch = curl_init();

+ 26 - 13
app/Servers/MemberOpenServer.php

@@ -58,17 +58,26 @@ class MemberOpenServer
             $mainId=$this->getMainUserId($type,$openid,$unionid);
             // 同步进行注册
             $row=MemberServer::creatServer()->register('','','','',$mainId);
-            MemberOpenServer::creatServer()->setUserOpenid($row['m_id'],4,$openid,$unionid);
+            MemberOpenServer::creatServer()->setUserOpenid($row['m_id'],$row['main_id'],4,$openid,$unionid);
         }
         return empty($row['m_id'])?'':$row['m_id'];
     }
 
     function getMainUserId($type,$openid,$unionid=null){
-        $row = MainMemberOpenId::where('openid',$openid)->where('type',$type)->where('is_del',0)->first();
-        if(empty($row) && !empty($unionid)){
-            $row=MainMemberOpenId::where('unionid',$unionid)->where('type',$type)->where('openid','<>','')->where('is_del',0)->first();
+        $row = MainMemberOpenId::where('openid',$openid)->where('type',$type)->first();
+        if(!empty($unionid)){
+            $row=MainMemberOpenId::where('unopenid',$unionid)->where('openid','<>','')->first();
             if($row){
-                $row->update(['openid' => $openid]);
+                if($row->{'type'}==$type){
+                    $row->update(['openid' => $openid]);
+                }else{
+                    $row= MainMemberOpenId::create([
+                        'openid' => $openid,
+                        'type' => $type,
+                        'unopenid' => $unionid,
+                        'm_id' => $row['m_id'],
+                    ]);
+                }
             }
         }
         return empty($row['m_id'])?'':$row['m_id'];
@@ -78,12 +87,16 @@ class MemberOpenServer
     /**
      * 用户注册openid
      * @param $userId
+     * @param $mainId
      * @param $openid
      * @param $unionid
      * @param $type
      * @return bool
      */
-    function setUserOpenid($userId,$type,$openid,$unionid=null){
+    function setUserOpenid($userId,$mainId,$type,$openid,$unionid=null){
+        if(empty($mainId)){
+           return false;
+        }
         $row = MemberOpenId::where('m_id',$userId)->where('type',$type)->where('is_del',0)->first();
         if($row){
             $row->update(['openid' =>$openid,'unionid' => $unionid ]);
@@ -96,21 +109,21 @@ class MemberOpenServer
                 'type' => $type
             ]);
         }
-
+        $this->setMainUserOpenid($mainId,$type,$openid,$unionid);
         return true;
     }
 
 
-    function setMainUserOpenid($userId,$type,$openid,$unionid=null){
-        $row = MemberOpenId::where('m_id',$userId)->where('type',$type)->where('is_del',0)->first();
+    function setMainUserOpenid($mainId,$type,$openid,$unionid=null){
+        $row = MainMemberOpenId::where('m_id',$mainId)->where('type',$type)->first();
         if($row){
-            $row->update(['openid' =>$openid,'unionid' => $unionid ]);
+            $row->update(['openid' =>$openid,'unopenid' => $unionid ]);
         }else{
-            MemberOpenId::create([
+            MainMemberOpenId::create([
                 'is_del' => 0,
-                'm_id' => $userId,
+                'm_id' => $mainId,
                 'openid' => $openid,
-                'unionid' => $unionid,
+                'unopenid' => $unionid,
                 'type' => $type
             ]);
         }

+ 15 - 4
app/Servers/MemberServer.php

@@ -61,7 +61,7 @@ class MemberServer
             $member_info = $pass_server->creatPassword();
         }
         $member_info['phone'] = $mobile;
-        $member_info['main_id'] = $mainId;
+        $member_info['main_id'] = empty($mainId)?0:$mainId;
         $nickname = $this->emojiFilter($nickname);
         $member_info['nickname'] = empty($nickname) ? '游客'.CommonServer::creatServer()->getRandChar(6) : $nickname;
         $member_info['head_img'] = empty($head_img) ? 'https://jhnewshop.oss-cn-chengdu.aliyuncs.com/storage/attest/20210927/949e48fb7c286836097efdd4ba4d0bd9.jpg' : $head_img;
@@ -74,15 +74,26 @@ class MemberServer
         $token_str = PassServer::creatServer()->getMemberToken($member->{'id'});
         $updateData=['token_str' => $token_str];
         if(empty($mainId)){
-
+            $mainId=$this->mainRegister();
+            if($mainId){
+                $updateData['main_id'] = $mainId;
+            }
         }
         Member::where('id', $member->{'id'})->update($updateData);
-        return ['m_id' => $member->{'id'},  'token' => $token_str];
+        return ['m_id' => $member->{'id'},'main_id'=>$mainId,  'token' => $token_str];
     }
 
     function mainRegister()
     {
-
+        $resJson=CommonServer::creatServer()->sendRequest(env('MAIN_API').'/api/member/food',['invite_code'=>'']);
+        $res=json_decode($resJson,true);
+        if (empty($res)) {
+            return 0;
+        }
+        if($res['code']==1 && isset($res['data']['m_id'])){
+            return $res['data']['m_id'];
+        }
+        return 0;
     }