USER-20230908AJ\Administrator 7 ヶ月 前
親
コミット
5e57cbc372

+ 0 - 2
app/Http/Controllers/Api/MemberController.php

@@ -46,9 +46,7 @@ class MemberController extends ApiController
                     DB::rollBack();
                     return $this->apiResponseError('注册失败');
                 }
-
                 $memberOpen=MemberOpenServer::creatServer()->setUserOpenid($member['m_id'],4,$openInfo['openid']);
-
                 if(empty($memberOpen)){
                     DB::rollBack();
                     return $this->apiResponseError('注册失败');

+ 53 - 0
app/Models/Main/MainMember.php

@@ -0,0 +1,53 @@
+<?php
+
+namespace App\Models\Main;
+
+use DateTimeInterface;
+use Illuminate\Database\Eloquent\Model;
+
+
+class MainMember extends Model
+{
+    protected $connection = 'mysqlTwo';
+
+    /**
+     * The table associated with the model.
+     *
+     * @var string
+     */
+    protected $table = 'members';
+
+    /**
+     * The primary key associated with the table.
+     *
+     * @var string
+     */
+    protected $primaryKey = 'id';
+
+    /**
+     * Indicates if the model should be timestamped.
+     *
+     * @var bool
+     */
+    public $timestamps = true;
+
+
+    /**
+     * 不能被批量赋值的属性
+     *
+     * @var array
+     */
+    protected $guarded = [ 'id', 'updated_at', 'created_at'];
+
+    /**
+     * 为数组 / JSON 序列化准备日期。
+     *
+     * @param DateTimeInterface $date
+     * @return string
+     */
+    protected function serializeDate(DateTimeInterface $date)
+    {
+        return $date->format($this->dateFormat ?: 'Y-m-d H:i:s');
+    }
+
+}

+ 60 - 0
app/Models/Main/MainMemberOpenId.php

@@ -0,0 +1,60 @@
+<?php
+
+namespace App\Models\Main;
+
+use DateTimeInterface;
+use Illuminate\Database\Eloquent\Model;
+
+
+class MainMemberOpenId extends Model
+{
+    protected $connection = 'mysqlTwo';
+
+    /**
+     * The table associated with the model.
+     *
+     * @var string
+     */
+    protected $table = 'member_open_ids';
+
+    /**
+     * The primary key associated with the table.
+     *
+     * @var string
+     */
+    protected $primaryKey = 'id';
+
+    /**
+     * Indicates if the model should be timestamped.
+     *
+     * @var bool
+     */
+    public $timestamps = true;
+
+
+    /**
+     * 不能被批量赋值的属性
+     *
+     * @var array
+     */
+    protected $guarded = ['id', 'updated_at', 'created_at'];
+
+    private $typeEnum=[
+        1=>'微信H5',
+        2=>'微信小程序',
+        3=>'支付宝',
+        4=>'点餐小程序',
+    ];
+
+    /**
+     * 为数组 / JSON 序列化准备日期。
+     *
+     * @param DateTimeInterface $date
+     * @return string
+     */
+    protected function serializeDate(DateTimeInterface $date)
+    {
+        return $date->format($this->dateFormat ?: 'Y-m-d H:i:s');
+    }
+
+}

+ 30 - 0
app/Servers/CommonServer.php

@@ -504,4 +504,34 @@ class CommonServer
         $truncated = (int)($num * $factor) / $factor;
         return number_format($truncated, $decimals, '.', '');
     }
+
+
+    /**
+     * @param $url
+     * @param string $type 请求方式
+     * @param string $data 数据 数组格式
+     * @return mixed
+     */
+    protected function sendRequest($url, $type = 'get', $data = '')
+    {
+
+        $ch = curl_init();
+        if ($type == 'get' && $data) {
+            $url = $url . '?' . http_build_query($data);
+        }
+        curl_setopt($ch, CURLOPT_URL, $url); //设置访问路径
+        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); //设置可以返回字符串
+        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
+        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
+        $head = array('User-Agent:Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36');
+        curl_setopt($ch, CURLOPT_HTTPHEADER, $head);
+        if ($type == 'post') {
+            curl_setopt($ch, CURLOPT_POST, TRUE);//post请求
+            $data = json_encode($data, JSON_UNESCAPED_UNICODE);
+            curl_setopt($ch, CURLOPT_POSTFIELDS, $data);//设置传递的参数
+        }
+        $request = curl_exec($ch);
+        curl_close($ch);
+        return $request;
+    }
 }

+ 37 - 0
app/Servers/MemberOpenServer.php

@@ -5,6 +5,7 @@ namespace App\Servers;
 
 
 
+use App\Models\Main\MainMemberOpenId;
 use App\Models\MemberOpenId;
 
 /**
@@ -52,6 +53,24 @@ class MemberOpenServer
                 $row->update(['openid' => $openid]);
             }
         }
+        // 查询主系统信息
+        if( empty($row)){
+            $mainId=$this->getMainUserId($type,$openid,$unionid);
+            // 同步进行注册
+            $row=MemberServer::creatServer()->register('','','','',$mainId);
+            MemberOpenServer::creatServer()->setUserOpenid($row['m_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();
+            if($row){
+                $row->update(['openid' => $openid]);
+            }
+        }
         return empty($row['m_id'])?'':$row['m_id'];
     }
 
@@ -77,10 +96,28 @@ class MemberOpenServer
                 'type' => $type
             ]);
         }
+
         return true;
     }
 
 
+    function setMainUserOpenid($userId,$type,$openid,$unionid=null){
+        $row = MemberOpenId::where('m_id',$userId)->where('type',$type)->where('is_del',0)->first();
+        if($row){
+            $row->update(['openid' =>$openid,'unionid' => $unionid ]);
+        }else{
+            MemberOpenId::create([
+                'is_del' => 0,
+                'm_id' => $userId,
+                'openid' => $openid,
+                'unionid' => $unionid,
+                'type' => $type
+            ]);
+        }
+
+        return true;
+    }
+
 
 
 

+ 12 - 2
app/Servers/MemberServer.php

@@ -49,10 +49,11 @@ class MemberServer
      * @param $mobile
      * @param string $nickname
      * @param string $password
+     * @param string $mainId
      * @return array|false
      * @throws \Exception
      */
-    function register($mobile = '', $nickname = '', $password = '',$head_img = '')
+    function register($mobile = '', $nickname = '', $password = '',$head_img = '',$mainId=0)
     {
         $member_info = [];
         if ($password) {
@@ -60,6 +61,7 @@ class MemberServer
             $member_info = $pass_server->creatPassword();
         }
         $member_info['phone'] = $mobile;
+        $member_info['main_id'] = $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;
@@ -70,11 +72,19 @@ class MemberServer
         }
         //用户token
         $token_str = PassServer::creatServer()->getMemberToken($member->{'id'});
-        Member::where('id', $member->{'id'})->update(['token_str' => $token_str]);
+        $updateData=['token_str' => $token_str];
+        if(empty($mainId)){
 
+        }
+        Member::where('id', $member->{'id'})->update($updateData);
         return ['m_id' => $member->{'id'},  'token' => $token_str];
     }
 
+    function mainRegister()
+    {
+
+    }
+
 
     /**
      * 截取掉微信表情