瀏覽代碼

上传硕博人才演示版

sandm 3 年之前
父節點
當前提交
b7987c02e5

+ 31 - 1
app/Http/Controllers/Api/Third/ScrmController.php

@@ -53,12 +53,19 @@ class ScrmController extends ApiBaseController
                 if($res){//查询成功
 
                     $customer = $this->format_user($res[0]);
+                    $customer['cid'] = $param['cid'];
                     switch ($customer['label']){
                         case '硕博人才':
                             $user = Member::where('mobile',$customer['mobile'])->first();
                             if(!$user){
                                 //手机号找不到聚才网账户,进行注册并入库
                                 $user = $this->registerService->registerPersonScrm($customer);
+                            }else{
+                                //如果有账户,查找scrm_id字段并更新
+                                if(empty($user->scrm_id)){
+                                    $user->scrm_id = $param['cid'];
+                                    $user->save();
+                                }
                             }
                             //如果手机号在聚才网已存在账户,将信息入库
                             $shuobo_exist = MemberShuobo::where('uid',$user->id)->first();
@@ -306,8 +313,31 @@ class ScrmController extends ApiBaseController
         return $res['data'];
     }
 
-    public function get_customer_events(int $cid,$start,$end,$page,$pageSize){
+    public function get_customer_events(int $cid,$startTime,$endTime,$page,$pageSize){
+        $params = [
+            'cid' => $cid,
+            'startTime' => $startTime,
+            'endTime' => $endTime,
+            'page'=>$page,
+            'pageSize'=>$pageSize
+        ];
+        $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/getCustomerEvents', ['body'=>$params,'headers' => $headers]);
+        $res = json_decode($response->getBody()->getContents(),true);
 
+        return $res;
     }
 
     public function test()

+ 25 - 0
app/Http/Controllers/Mobile/Talent/TalentController.php

@@ -3,6 +3,9 @@
 namespace App\Http\Controllers\Mobile\Talent;
 
 use App\Http\Controllers\Mobile\MobileBaseController;
+use Illuminate\Support\Facades\App;
+use App\Models\MemberShuobo;
+use Illuminate\Http\Request;
 
 class TalentController extends MobileBaseController
 {
@@ -20,4 +23,26 @@ class TalentController extends MobileBaseController
         return view('mobile.app.talent.shuobo');
     }
 
+    public function lvcheng(Request $request){
+        $user = $this->getLoginUser();
+        if($request->isMethod('post')){
+
+        }else{
+            $params = [
+                'cid' => 108371488,
+                'startTime' => str_pad(strtotime('-29 days'),13,'0',STR_PAD_RIGHT),
+                'endTime' => str_pad(strtotime('+1 day'),13,'0',STR_PAD_RIGHT),
+                'page'=>1,
+                'pageSize'=>50
+            ];
+
+            $scrm = APP::make(\App\Http\Controllers\Api\Third\ScrmController::class);
+            $res = App::call([$scrm, 'get_customer_events'],$params);
+            $view_data = [
+                'data' => json_encode($res['data'])
+            ];
+            return view('mobile.app.talent.lvcheng',$view_data);
+        }
+
+    }
 }

+ 1 - 2
app/Http/Controllers/Web/Talent/JjhcController.php

@@ -19,8 +19,7 @@ class JjhcController extends WebBaseController
 
     public function test()
     {
-        $a = $this->smsService->sendSms('13313826760', 'sms_buyhouse_supply', ['username'=>'林武','phone'=>'06','content'=>'25']);
-        dd($a);
+
         throw new ResponseException("who are you?", [], 404);
 //        $list = DB::table('lt_apppointment')->distinct()->pluck('card')->toArray();
 //        $all = DB::table('lt_apppointment')->pluck('card')->toArray();

+ 3 - 2
app/Services/Auth/RegisterService.php

@@ -265,7 +265,7 @@ class RegisterService
     }
 
     public function registerPersonScrm(array $data){
-        $data             = array_only($data, ['mobile', 'avatars', 'email', 'realname', 'sex','weixin']);
+        $data             = array_only($data, ['mobile', 'avatars', 'email', 'realname', 'sex','weixin','cid']);
         $member_data = [
             'mobile' => $data['mobile'],
             'avatars' => $data['avatars'],
@@ -278,7 +278,8 @@ class RegisterService
             'reg_time' => time(),
             'last_login_time' => time(),
             'reg_ip' => ip2long(request()->ip()),
-            'password' => Hash::make(time())
+            'password' => Hash::make(time()),
+            'scrm_id' => $data['cid']
         ];
         $member = $this->memberRepository->create($member_data);
         if (false != $member) {

二進制
public/themes/default/assets/mobile/images/shuobo_demo.png


+ 216 - 0
public/themes/default/views/mobile/app/talent/lvcheng.blade.php

@@ -0,0 +1,216 @@
+@extends('mobile.module.layouts.content')
+@push('meta')
+
+@endpush
+
+@push('css')
+    <link href="{{ theme_asset('mobile/css/news.css') }}" rel="stylesheet">
+    <style>
+
+
+        .line-container {
+            color: #606c76;
+            font-family: "Helvetica Neue For Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
+            box-sizing: border-box;
+            position: relative;
+            list-style: none;
+            margin: 0.16rem;
+            padding-left: 1.92rem;
+        }
+        .line-container::after {
+            position: absolute;
+            content: "";
+            left: 1.7rem;
+            top: 0;
+            width: 1px;
+            height: 100%;
+            background-color: #e4e1fe;
+        }
+        .line-container .line-item {
+            padding: 0.32rem;
+            position: relative;
+        }
+        .line-container .item-circle {
+            box-sizing: border-box;
+            position: absolute;
+            margin-left: -7px;
+            width: 16px;
+            height: 16px;
+            border-radius: 10px;
+            background: white;
+            border: 2px solid #8b80f9;
+        }
+        .line-container .item-circle.purple {
+            border: 2px solid #8b80f9;
+        }
+        .line-container .item-circle.orange {
+            border: 2px solid #ed9153;
+        }
+        .line-container .item-circle.yellow {
+            border: 2px solid #fbd157;
+        }
+        .line-container .item-star {
+            box-sizing: border-box;
+            position: absolute;
+            margin-left: -11px;
+            width: 24px;
+            height: 24px;
+            margin-top: -4px;
+        }
+        .line-container .item-star path {
+            stroke: #8b80f9;
+            stroke-width: 4px;
+            fill: white;
+        }
+        .line-container .item-star.purple path {
+            stroke: #8b80f9;
+        }
+        .line-container .item-star.orange path {
+            stroke: #ed9153;
+        }
+        .line-container .item-star.yellow path {
+            stroke: #fbd157;
+        }
+        .line-container .item-tag {
+            position: absolute;
+            left: -1.92rem;
+            width: 65px;
+            text-align: center;
+            color: #949fa8;
+            font-size: 11.6666666667px;
+        }
+        .line-container .item-content {
+            white-space: pre-line;
+        }
+        .line-container .item-content.star {
+            font-weight: bold;
+            font-size: 15.4px;
+        }
+        .line-container .item-symbol {
+            box-sizing: border-box;
+            position: absolute;
+            left: -0.24rem;
+            z-index: 1;
+            background: white;
+        }
+    </style>
+@endpush
+
+@push('js')
+    <script src="{{ theme_asset('mobile/js/dropload.min.js') }}"></script>
+@endpush
+
+@section('content')
+    <div id="app">
+        <div class="drop_content">
+            <img src="{{ theme_asset('mobile/images/shuobo_demo.png') }}" />
+{{--            <light-timeline :items='items'></light-timeline>--}}
+        </div>
+
+    </div>
+
+@endsection
+
+@section('script')
+    <script>
+        var data = eval(decodeURI('{{ $data }}'));
+        console.log(data)
+    </script>
+    <script src="https://cdn.jsdelivr.net/npm/vue@2.6.14"></script>
+    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
+    <script type="module">
+        Vue.component('light-timeline', {
+            name: 'light-timeline',
+            props: {
+                items: {
+                    type: Array
+                }
+            },
+            data() {
+                return {
+                    presetReg: /purple|orange|yellow/
+                }
+            },
+            methods: {
+                getColorClass(color) {
+                    return this.presetReg.test(color) ? color : ''
+                },
+                getStyle(item) {
+                    const color = item.color
+                    if (!this.presetReg.test(color)) {
+                        return this.makeCircleColor(color)
+                    }
+                    return {}
+                },
+                makeCircleColor(color) {
+                    return { border: `2px solid ${color}` }
+                }
+            },
+            template:'<ul class="line-container"><li class="line-item"v-for="item in items"><div class="item-tag"><slot name="tag":item="item">@{{item.tag}}</slot></div><div class="item-symbol"><slot name="symbol":item="item"><div class="item-circle":class="getColorClass(item.color)":style="getStyle(item)"></div></slot></div><slot name="content":item="item"><div class="item-content"v-if="!item.htmlMode":class="item.type">@{{item.content}}</div><div class="item-content html-mode"v-else="v-else":class="item.type"v-html="item.content"></div></slot></li></ul>'
+        });
+        new Vue({
+            el: "#app",
+            data () {
+                return {
+                    test:'test',
+                    items: [
+                        {
+                            tag: '2010年1月',
+                            color: 'yellow',
+                            content: '在国际乒联巡回赛总决赛中,许昕2-4不敌马龙,获得男单亚军。'
+                        },
+                        {
+                            tag: '2011年1月',
+                            type: 'circle',
+                            color: 'orange',
+                            htmlMode: true,
+                            content: '<div style="color:#ed9153;">在斯洛文尼亚赛公开赛中,许昕4-2战胜马琳,获得男单冠军</div>'
+                        },
+                        {
+                            tag: '2011年9月',
+                            type: 'circle',
+                            content: '在第24届亚洲杯乒乓球赛男单决赛中,许昕2-4不敌马龙,获得亚军。'
+                        },
+                        {
+                            tag: '2012年5月',
+                            type: 'circle',
+                            content: '在中国公开赛男单比赛中,许昕连胜张继科、马龙夺得冠军。'
+                        },
+                        {
+                            tag: '2013年1月',
+                            type: 'star',
+                            content: '在世界排名上,许昕职业生涯首次登上世界第一的宝座。'
+                        },
+                        {
+                            tag: '2013年10月',
+                            type: 'star',
+                            color: 'orange',
+                            content: `在比利时举行的乒乓球世界杯男单比赛中,许昕依次战胜闫安、奥恰洛夫、萨姆索诺夫,收获个人首个世界三大赛单打冠军\n\n也成为自1953年中国踏足国际乒乓球赛事以来,第一位获得乒乓球男单世界冠军的左手运动员。`
+                        },
+                        {
+                            tag: '2014年1月',
+                            type: 'circle',
+                            content: '在国际乒联巡回赛总决赛男单决赛中,许昕以4-3击败队友马龙,获得冠军。'
+                        }
+                    ]
+                }
+            },
+            methods: {
+                Scrollbottom() {
+                    let scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
+                    let clientHeight = document.documentElement.clientHeight;
+                    let scrollHeight = document.documentElement.scrollHeight;
+                    if (scrollTop + clientHeight >= scrollHeight) {
+                        axios.post('/mobile/talent/lvcheng').then(response => (console.log(response))).catch(
+                            function (error) {
+                                console.log(error);
+                            });
+                    }
+                },
+            },
+            created(){
+                window.addEventListener('scroll', this.Scrollbottom);
+            },
+        });
+    </script>
+@endsection

+ 6 - 3
public/themes/default/views/mobile/app/talent/shuobo.blade.php

@@ -111,9 +111,12 @@
         </div>
         <div class="ops">
             <div>
-                <button>
-                    状态查看
-                </button>
+                <a href="{{ route('mobile.talent.lvcheng') }}">
+                    <button>
+                        状态查看
+                    </button>
+                </a>
+
             </div>
             <div>
                 <button>

+ 10 - 0
routes/mobile.php

@@ -583,4 +583,14 @@ Route::group([
     'prefix' => '/talent',
 ], function (Router $router) {
     $router->get('shuobo','Mobile\Talent\TalentController@shuobo')->name('mobile.talent.shuobo');
+    Route::group([
+        'middleware' => ['auth:web-member']
+    ], function (Router $router) {
+        Route::group([
+            'middleware'=>'MobilePersonAuth'
+        ], function (Router $router) {
+            $router->any('lvcheng','Mobile\Talent\TalentController@lvcheng')->name('mobile.talent.lvcheng');
+
+        });
+    });
 });