Ver código fonte

互客接口对接

sandm 3 anos atrás
pai
commit
d5e3cb78a4

+ 192 - 2
app/Http/Controllers/Api/Third/ScrmController.php

@@ -7,6 +7,9 @@ use Illuminate\Http\Request;
 use GuzzleHttp\Client;
 use Illuminate\Support\Facades\Cache;
 use App\Models\HukeCallback;
+use App\Models\Member;
+use App\Models\MemberShuobo;
+use App\Services\Auth\RegisterService;
 
 class ScrmController extends ApiBaseController
 {
@@ -39,6 +42,31 @@ class ScrmController extends ApiBaseController
             'content'      =>  json_encode($request->all()),
         ];
         HukeCallback::create($log);
+        $data = $request->all();
+        //$fields = $this->get_customer_fields();
+        switch ($data['type']){
+            case '1011':
+                $param = json_decode($data['params']['customerEvent']);
+                $res = $this->get_customer_query(3,[$param['cid']]);//根据返回的cid查询用户信息
+                if($res){//查询成功
+                    $customer = $this->format_user($res[0]);
+                    switch ($customer['label']){
+                        case '硕博人才':
+                            $user = Member::where('mobile',$customer['mobile'])->first();
+                            if(!$user){
+                                //手机号找不到聚才网账户,进行注册并入库
+                                $registerService = new RegisterService();
+                                $user = $registerService->registerPersonScrm($customer);
+                            }
+                            //如果手机号在聚才网已存在账户,将信息入库
+                            $customer['uid'] = $user->id;
+                            MemberShuobo::create($customer);
+                            break;
+                    }
+
+                }
+                break;
+        }
     }
 
     public function get_customer_fields($update = false)
@@ -73,6 +101,14 @@ class ScrmController extends ApiBaseController
 
     }
 
+    /**
+     * 查询客户列表
+     * @param $start
+     * @param $end
+     * @param $page
+     * @param $page_size
+     * @throws \GuzzleHttp\Exception\GuzzleException
+     */
     public function get_customer_list($start,$end,$page,$page_size)
     {
         $params = [
@@ -99,13 +135,167 @@ class ScrmController extends ApiBaseController
         dd($res);
     }
 
+    /**
+     * 格式化互客用户信息
+     * @param array $data
+     */
+    public function format_user(array $data)
+    {
+        $user = [];
+        if(is_array($data['customFields'])){
+            foreach ($data['customFields'] as $k => $v){
+                switch ($v['id']){
+                    case -1:
+                        $user['avatars'] = $v['fieldValue'];
+                        break;
+                    case -2:
+                        $user['realname'] = $v['fieldValue'];
+                        break;
+                    case -3:
+                        $user['mobile'] = $v['fieldValue'];
+                        break;
+                    case -4:
+                        $user['email'] = $v['fieldValue'];
+                        break;
+                    case -5:
+                        $user['weixin'] = $v['fieldValue'];
+                        break;
+                    case -6:
+                        $user['wechat_name'] = $v['fieldValue'];
+                        break;
+                    case -7:
+                        $user['sex'] = $v['fieldValue'];
+                        break;
+                    case -8:
+                        $user['area'] = $v['fieldValue'];
+                        break;
+                    case -9:
+                        $user['tel'] = $v['fieldValue'];
+                        break;
+                    case -10:
+                        $user['tel_ex'] = $v['fieldValue'];
+                        break;
+                    case 10018777:
+                        $user['label'] = $v['fieldValue'];
+                        break;
+                    case 10019746:
+                        $user['address'] = $v['fieldValue'];
+                        break;
+                    case 10019747:
+                        $user['trade'] = $v['fieldValue'];
+                        break;
+                    case 10019748:
+                        $user['company'] = $v['fieldValue'];
+                        break;
+                    case 10020717:
+                        $user['job'] = $v['fieldValue'];
+                        break;
+                    case 10018778:
+                        $user['birthday'] = $v['fieldValue'];
+                        break;
+                    case 10019749:
+                        $user['origin'] = $v['fieldValue'];
+                        break;
+                    case 10018779:
+                        $user['remark'] = $v['fieldValue'];
+                        break;
+                    case 10018780:
+                        $user['attachment'] = $v['fieldValue'];
+                        break;
+                    case 10019750:
+                        $user['cid'] = $v['fieldValue'];
+                        break;
+                    case 10019751:
+                        $user['age_range'] =  $v['fieldValue'];
+                        break;
+                    case 10019765:
+                        $user['age'] = $v['fieldValue'];
+                        break;
+                    case 10031724:
+                        $user['level'] = $v['fieldValue'];
+                        break;
+                    case 10051871:
+                        $user['edu'] = $v['fieldValue'];
+                        break;
+                    case 15293060:
+                        $user['politic_countenance'] = $v['fieldValue'];
+                        break;
+                    case 15353563:
+                        $user['education'] = $v['fieldValue'];
+                        break;
+                    case 15352635:
+                        $user['school'] = $v['fieldValue'];
+                        break;
+                    case 15355464:
+                        $user['pro'] = $v['fieldValue'];
+                        break;
+                    case 15354507:
+                        $user['graduation_time'] = $v['fieldValue'];
+                        break;
+                    case 15352636:
+                        $user['country'] = $v['fieldValue'];
+                        break;
+                    case 15352650:
+                        $user['come_in_time'] = $v['fieldValue'];
+                        break;
+                    case 15353579:
+                        $user['require'] = $v['fieldValue'];
+                        break;
+                    case 15353580:
+                        $user['trade_type'] = $v['fieldValue'];
+                        break;
+                    case 15355480:
+                        $user['speciality'] = $v['fieldValue'];
+                        break;
+                }
+            }
+        }
+        return $user;
+    }
+
+    /**
+     * @param int $type 0-手机,1-微信号, 2-邮箱,3-cid  4-唯一ID,5-姓名,6-公司/客户名称,7-微信unionId
+     * @param array $value 对应查询类型的字段列表,数量不能超过100
+     */
+    public function get_customer_query(int $type,array $value)
+    {
+        if($type < 0 || $type > 7)
+        {
+            return false;
+        }
+        if(count($value) < 1){
+            return false;
+        }
+        $params = [
+            'type' => $type,
+            'targets' => $value
+        ];
+        $params = json_encode($params);
+        $appSecret = substr(openssl_digest(openssl_digest($this->app_secret, 'sha1', true), 'sha1', true), 0, 16);
+        $time = time();
+        $sign = md5($params);
+        $checksum = bin2hex(openssl_encrypt($this->app_key. $sign. $time, 'AES-128-ECB', $appSecret, OPENSSL_RAW_DATA));
+        $headers = [
+            'Content-Type' => 'application/json',
+            'ur-appkey' => $this->app_key,
+            'ur-sign' => $sign,
+            'ur-curtime' => $time,
+            'ur-checksum' => $checksum
+        ];
+
+        $response = $this->httpClient->post('https://huke.163.com/openapi/customer/query', ['body'=>$params,'headers' => $headers]);
+        $res = json_decode($response->getBody()->getContents(),true);
+        return $res['data'];
+    }
+
     public function test()
     {
         $res = $this->get_customer_fields();
+        dd($res);
         $params = [
-            'type' => 0,
+            'type' => 3,
             'targets' => [
-                '15759560669'
+                '110762053'
             ]
         ];
         $params = json_encode($params);

+ 25 - 0
app/Models/MemberShuobo.php

@@ -0,0 +1,25 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\SoftDeletes;
+use Illuminate\Database\Eloquent\Model;
+
+class MemberShuobo extends Model
+{
+    use SoftDeletes;
+    protected $table = 'members_shuobo';
+    protected $guarded = [];
+
+    public function resumes()
+    {
+        return $this->hasMany(Resume::class, 'uid', 'uid');
+    }
+
+    public function members()
+    {
+        return $this->belongsTo(Member::class, 'uid');
+    }
+
+
+}

+ 28 - 0
app/Services/Auth/RegisterService.php

@@ -264,6 +264,34 @@ class RegisterService
         return $member;
     }
 
+    public function registerPersonScrm(array $data){
+        $data             = array_only($data, ['mobile', 'avatars', 'email', 'realname', 'sex','weixin']);
+        $data['reg_type'] = 1;
+        $data['utype'] = 2;
+        $data['reg_source_cn']   = 'SCRM注册';
+        $data['mobile_audit']    = 0;
+        $data['username']        = $this->getRandomName();
+        $data['reg_time']        = time();
+        $data['last_login_time'] = time();
+        $data['reg_ip']          = ip2long(request()->ip());
+        $data['password']        = Hash::make(time());
+        $member = $this->memberRepository->create($data);
+        if (false != $member) {
+            $member_info_data['card_t_cn'] = 306;
+            $member_info_data['uid']   = $member->id;
+            $member_info_data['phone'] = $data['mobile'];
+            $member_info_data['email'] = $data['email'];
+            $member_info_data['realname'] = array_key_exists('realname',$data) ? $data['realname'] : '';
+            if(array_key_exists('sex',$data)){
+                $member_info_data['sex'] = $data['sex'] == '男' ? 1 : 0;
+                $member_info_data['sex_cn'] = $data['sex'];
+            }
+            $member_info_data['weixin'] = array_key_exists('weixin',$data) ? $data['weixin'] : '';
+            $this->memberInfoRepository->createInfo($member_info_data);
+        }
+        return $member;
+    }
+
     /**
      * @param $source_id
      * @return mixed