Ver código fonte

Merge branch 'master' into we7

dyjh 6 anos atrás
pai
commit
c4d055c943

+ 8 - 2
app/Http/Controllers/Admin/Album/ManufacturerController.php

@@ -37,7 +37,7 @@ class ManufacturerController extends Controller
 
 
     function index(Request $request) {
     function index(Request $request) {
         if($request->method() == 'POST') {
         if($request->method() == 'POST') {
-            $iscreate = AlbumManufacturerModel::where('store_id',$this->getStoreId())->count();
+            $iscreate = AlbumManufacturerModel::where('store_id',$this->getStoreId())->first();
             if($iscreate){
             if($iscreate){
                 return $this->_updateSave();
                 return $this->_updateSave();
             }else{
             }else{
@@ -52,7 +52,13 @@ class ManufacturerController extends Controller
         return view('admin.album.manufacturer.edit',compact('data'));
         return view('admin.album.manufacturer.edit',compact('data'));
     }
     }
 
 
-
+    function create(Request $request)
+    {
+        if ($request->method() == 'POST') {
+            return $this->_createSave();
+        }
+        return view('admin.album.manufacturer.edit');
+    }
 
 
     /**
     /**
      * 保存修改
      * 保存修改

+ 3 - 1
app/Http/Controllers/Admin/Base/IndexController.php

@@ -45,13 +45,15 @@ class IndexController extends Controller
             $data = $obj->getRoleMenu($this->_user['admin_role_id']);
             $data = $obj->getRoleMenu($this->_user['admin_role_id']);
             $menus = list_to_tree($data);
             $menus = list_to_tree($data);
         }
         }
-        return view('admin.base.index.index',compact('menus'));
+        $user = $this->_user;
+        return view('admin.base.index.index',compact('menus', 'user'));
     }
     }
     function welcome()
     function welcome()
     {
     {
         $userAuth = Auth::guard('admin')->user();
         $userAuth = Auth::guard('admin')->user();
         if ($userAuth->is_root == 1 && !empty(request('store_id'))) {
         if ($userAuth->is_root == 1 && !empty(request('store_id'))) {
             session()->put('store_id', request('store_id'));
             session()->put('store_id', request('store_id'));
+            return redirect('/admin');
         }
         }
         $time = mktime(24, 60, 60, date('m'), date('d'), date('Y'));
         $time = mktime(24, 60, 60, date('m'), date('d'), date('Y'));
         $day = '[';
         $day = '[';

+ 28 - 3
app/Http/Controllers/Admin/Base/UserController.php

@@ -43,7 +43,12 @@ class UserController extends Controller
         if(isset($request['sort_field']) && $request['sort_field'] && isset($request['sort_field_by'])) {
         if(isset($request['sort_field']) && $request['sort_field'] && isset($request['sort_field_by'])) {
             $orderby[$request['sort_field']] = $request['sort_field_by'];
             $orderby[$request['sort_field']] = $request['sort_field_by'];
         }
         }
-        $list = $this->_service->search($search, $orderby);
+        if ($this->_user->is_root == 1) {
+            $store_id = 0;
+        } else {
+            $store_id = $this->getStoreId();
+        }
+        $list = $this->_service->search($search, $orderby, $store_id);
         //dd($list);
         //dd($list);
         foreach ($list as $item) {
         foreach ($list as $item) {
             $item->store = '暂无';
             $item->store = '暂无';
@@ -149,7 +154,8 @@ class UserController extends Controller
         }else{
         }else{
             $roles = $this->_getCurrentRoles();
             $roles = $this->_getCurrentRoles();
         }
         }
-        return view('admin.base.user.edit', compact('data', 'roles'));
+        $store = AlbumManufacturerModel::where('store_id', $data['store_id'])->first(['store_id', 'name', 'phone'])->toArray();
+        return view('admin.base.user.edit', compact('data', 'roles', 'store'));
     }
     }
     
     
     public function auth() {
     public function auth() {
@@ -201,7 +207,26 @@ class UserController extends Controller
     {
     {
         return $this->_role_service->getLevelNode($this->_user['admin_role_id'])->toArray();
         return $this->_role_service->getLevelNode($this->_user['admin_role_id'])->toArray();
     }
     }
-    
+
+    public function searchStore()
+    {
+        $keyword = Request::post('keywords');
+        $query = AlbumManufacturerModel::where('id','>',0);
+        if(isset($keyword) && $keyword) {
+            $query = $query->where('id','like','%'.$keyword.'%')
+                ->orWhere('phone','like','%'.$keyword.'%')
+                ->orWhere('name','like','%'.$keyword.'%');
+        }
+        $list = $query->get(['name','id','phone'])->toArray();
+        if(empty($list)){
+            $list[0]=[
+                'id'=>0,
+                'name'=>'暂无'
+            ];
+        }
+        return response()->json(['code' => 0, 'message' => '', 'data' => $list]);
+    }
+
     /**
     /**
      * 得到所有角色
      * 得到所有角色
      */
      */

+ 1 - 1
app/Http/Controllers/Api/V1/AlbumController.php

@@ -1916,7 +1916,7 @@ class AlbumController extends Controller
             return $this->error(ErrorCode::CLIENT_WRONG_PARAMS, '传入参数不正确!', $validator->messages());
             return $this->error(ErrorCode::CLIENT_WRONG_PARAMS, '传入参数不正确!', $validator->messages());
         }
         }
         $data = $request->input();
         $data = $request->input();
-        $url = "https://apis.map.qq.com/ws/geocoder/v1/?address=".$data['address']."&key=TD5BZ-GP5RD-PTE4M-PXHFN-6Q5RO-MUBFU";
+        $url = "https://apis.map.qq.com/ws/geocoder/v1/?address=".$data['address']."&key=".env('QQMAP');
         $local = $this->curl_get($url);
         $local = $this->curl_get($url);
         $res = json_decode($local,true);
         $res = json_decode($local,true);
         $agent_check = AlbumAgentModel::where([['store_id',$data['store_id']],['user_id',$userAuth->id]])->first();
         $agent_check = AlbumAgentModel::where([['store_id',$data['store_id']],['user_id',$userAuth->id]])->first();

+ 1 - 0
app/Models/AdminRoleModel.php

@@ -29,6 +29,7 @@ class AdminRoleModel extends BaseModel
      */
      */
     protected $fillable = [
     protected $fillable = [
         'name',
         'name',
+        'is_root',
         'mark',
         'mark',
         'status',
         'status',
         'level',
         'level',

+ 5 - 1
app/Services/Admin/AdminUser.php

@@ -40,7 +40,7 @@ class AdminUser extends BaseProcess
      * @param $search
      * @param $search
      * @param $pagesize
      * @param $pagesize
      */
      */
-    public function search($search, $orderby = array(), $pagesize = PAGE_NUMS)
+    public function search($search, $orderby = array(), $store_id, $pagesize = PAGE_NUMS)
     {
     {
         $currentQuery = $this->objModel;
         $currentQuery = $this->objModel;
         if(isset($search['keyword']) && !empty($search['keyword'])) {
         if(isset($search['keyword']) && !empty($search['keyword'])) {
@@ -51,6 +51,10 @@ class AdminUser extends BaseProcess
                     ->orwhere('mobile', 'like', $keywords);
                     ->orwhere('mobile', 'like', $keywords);
             });
             });
         }
         }
+
+        if ($store_id != 0) {
+            $currentQuery = $currentQuery->where('store_id', $store_id);
+        }
         if(isset($search['resetPwd']) && $search['resetPwd']) {
         if(isset($search['resetPwd']) && $search['resetPwd']) {
 
 
             $currentQuery = $currentQuery->where('reset_password', '<>', '');
             $currentQuery = $currentQuery->where('reset_password', '<>', '');

+ 1 - 0
app/Services/Admin/Role.php

@@ -164,6 +164,7 @@ class Role extends BaseProcess
         $currentQuery = $this->objModel;
         $currentQuery = $this->objModel;
         $currentQuery = $currentQuery->where('level', '>=', $level);
         $currentQuery = $currentQuery->where('level', '>=', $level);
         $currentQuery = $currentQuery->where('status', '=', 1);
         $currentQuery = $currentQuery->where('status', '=', 1);
+        $currentQuery = $currentQuery->where('is_root', '=', 0);
         if($departmentIds){
         if($departmentIds){
             $currentQuery = $currentQuery->whereIn('department_id', $departmentIds);
             $currentQuery = $currentQuery->whereIn('department_id', $departmentIds);
         }
         }

+ 1 - 0
composer.json

@@ -10,6 +10,7 @@
         "doctrine/dbal": "^2.5",
         "doctrine/dbal": "^2.5",
         "dsiddharth2/php-zxing": "^1.0",
         "dsiddharth2/php-zxing": "^1.0",
         "fideloper/proxy": "~3.3",
         "fideloper/proxy": "~3.3",
+        "germey/geetest": "^3.0",
         "intervention/image": "^2.4",
         "intervention/image": "^2.4",
         "johnlui/aliyun-oss": "2.2",
         "johnlui/aliyun-oss": "2.2",
         "kosinix/grafika": "dev-master",
         "kosinix/grafika": "dev-master",

+ 3 - 0
config/app.php

@@ -140,6 +140,7 @@ return [
         /*
         /*
            * Laravel Framework Service Providers...
            * Laravel Framework Service Providers...
            */
            */
+        Germey\Geetest\GeetestServiceProvider::class,
         Illuminate\Auth\AuthServiceProvider::class,
         Illuminate\Auth\AuthServiceProvider::class,
         Illuminate\Broadcasting\BroadcastServiceProvider::class,
         Illuminate\Broadcasting\BroadcastServiceProvider::class,
         Illuminate\Bus\BusServiceProvider::class,
         Illuminate\Bus\BusServiceProvider::class,
@@ -182,6 +183,7 @@ return [
         Maatwebsite\Excel\ExcelServiceProvider::class,
         Maatwebsite\Excel\ExcelServiceProvider::class,
         Dingo\Api\Provider\LaravelServiceProvider::class,
         Dingo\Api\Provider\LaravelServiceProvider::class,
         Overtrue\LaravelWeChat\ServiceProvider::class,
         Overtrue\LaravelWeChat\ServiceProvider::class,
+
     ],
     ],
 
 
     /*
     /*
@@ -233,6 +235,7 @@ return [
         'Image' => Intervention\Image\Facades\Image::class,
         'Image' => Intervention\Image\Facades\Image::class,
         'Excel' => Maatwebsite\Excel\Facades\Excel::class,
         'Excel' => Maatwebsite\Excel\Facades\Excel::class,
         'EasyWeChat' => Overtrue\LaravelWeChat\Facade::class,
         'EasyWeChat' => Overtrue\LaravelWeChat\Facade::class,
+        'Geetest' => Germey\Geetest\Geetest::class,
     ],
     ],
 
 
 ];
 ];

+ 91 - 0
config/geetest.php

@@ -0,0 +1,91 @@
+<?php
+return [
+
+    /*
+    |--------------------------------------------------------------------------
+    | Config Language
+    |--------------------------------------------------------------------------
+    |
+    | Here you can config your yunpian api key from yunpian provided.
+    |
+    | Options: ['zh-cn', 'zh-tw', 'en', 'ja', 'ko']
+    |
+    */
+    'lang' => 'zh-cn',
+
+    /*
+    |--------------------------------------------------------------------------
+    | Config Geetest Id
+    |--------------------------------------------------------------------------
+    |
+    | Here you can config your yunpian api key from yunpian provided.
+    |
+    */
+    'id' => 'b46d1900d0a894591916ea94ea91bd2c',
+
+    /*
+    |--------------------------------------------------------------------------
+    | Config Geetest Key
+    |--------------------------------------------------------------------------
+    |
+    | Here you can config your yunpian api key from yunpian provided.
+    |
+    */
+    'key' => '36fc3fe98530eea08dfc6ce76e3d24c4',
+
+    /*
+    |--------------------------------------------------------------------------
+    | Config Geetest URL
+    |--------------------------------------------------------------------------
+    |
+    | Here you can config your geetest url for ajax validation.
+    |
+    */
+    'url' => '/geetest',
+
+    /*
+    |--------------------------------------------------------------------------
+    | Config Geetest Protocol
+    |--------------------------------------------------------------------------
+    |
+    | Here you can config your geetest url for ajax validation.
+    |
+    | Options: http or https
+    |
+    */
+    'protocol' => 'http',
+
+    /*
+    |--------------------------------------------------------------------------
+    | Config Geetest Product
+    |--------------------------------------------------------------------------
+    |
+    | Here you can config your geetest url for ajax validation.
+    |
+    | Options: float, popup, custom, bind
+    |
+    */
+    'product' => 'float',
+
+    /*
+    |--------------------------------------------------------------------------
+    | Config Client Fail Alert Text
+    |--------------------------------------------------------------------------
+    |
+    | Here you can config the alert text when it failed in client.
+    |
+    */
+    'client_fail_alert' => '请正确完成验证码操作',
+
+    /*
+    |--------------------------------------------------------------------------
+    | Config Server Fail Alert
+    |--------------------------------------------------------------------------
+    |
+    | Here you can config the alert text when it failed in server (two factor validation).
+    |
+    */
+    'server_fail_alert' => '验证码校验失败',
+
+
+];

+ 33 - 0
database/migrations/2019_04_09_163006_add_is_root_to_admin_role.php

@@ -0,0 +1,33 @@
+<?php
+
+use Illuminate\Support\Facades\Schema;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Database\Migrations\Migration;
+
+class AddIsRootToAdminRole extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('admin_roles', function (Blueprint $table) {
+            //
+            $table->unsignedInteger('is_root')->nullable()->default(0);
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('admin_roles', function (Blueprint $table) {
+            //
+        });
+    }
+}

+ 2 - 2
resources/views/admin/album/manufacturer/index.blade.php

@@ -26,12 +26,12 @@
                                     </div>
                                     </div>
                                 </div>
                                 </div>
                             </form>
                             </form>
-                           {{-- @if(role('Album/Manufacturer/create'))
+                            @if(role('Album/Manufacturer/create'))
                                 <div class="col-sm-3 pull-right">
                                 <div class="col-sm-3 pull-right">
                                     <a href="{{ U('Album/Manufacturer/create')}}"
                                     <a href="{{ U('Album/Manufacturer/create')}}"
                                        class="btn btn-sm btn-primary pull-right">添加</a>
                                        class="btn btn-sm btn-primary pull-right">添加</a>
                                 </div>
                                 </div>
-                            @endif--}}
+                            @endif
                         </div>
                         </div>
 
 
                         <table class="table table-striped table-bordered table-hover dataTables-example dataTable">
                         <table class="table table-striped table-bordered table-hover dataTables-example dataTable">

+ 3 - 0
resources/views/admin/auth/login.blade.php

@@ -30,6 +30,9 @@
                 <div class="form-group">
                 <div class="form-group">
                     <input type="password" name="password" class="form-control" placeholder="密码" required="">
                     <input type="password" name="password" class="form-control" placeholder="密码" required="">
                 </div>
                 </div>
+                <div class="form-group">
+                    {!! Geetest::render() !!}
+                </div>
                 <input type="hidden" name="_token" value="<?php echo csrf_token(); ?>"/>
                 <input type="hidden" name="_token" value="<?php echo csrf_token(); ?>"/>
                 <button type="submit" class="btn btn-primary block full-width m-b">登 录</button>
                 <button type="submit" class="btn btn-primary block full-width m-b">登 录</button>
             </form>
             </form>

+ 1 - 1
resources/views/admin/base/index/index.blade.php

@@ -32,7 +32,7 @@
                     <div class="dropdown profile-element">
                     <div class="dropdown profile-element">
                         <a data-toggle="dropdown" class="dropdown-toggle" href="#">
                         <a data-toggle="dropdown" class="dropdown-toggle" href="#">
                                 <span class="clear">
                                 <span class="clear">
-                                <span class="block m-t-xs"><strong class="font-bold">{{$_user->account}}</strong></span>
+                                <span class="block m-t-xs"><strong class="font-bold">{{$user->name}}</strong></span>
                                 <span class="text-muted text-xs block">{{$_user['admin_role_name']}}<b
                                 <span class="text-muted text-xs block">{{$_user['admin_role_name']}}<b
                                             class="caret"></b></span>
                                             class="caret"></b></span>
                                 </span>
                                 </span>

+ 12 - 0
resources/views/admin/base/role/edit.blade.php

@@ -57,6 +57,18 @@
                                         </label>
                                         </label>
                                     </div>
                                     </div>
                                 </div>
                                 </div>
+
+                                <div class="form-group">
+                                    <label class="control-label col-sm-3">非root用户是否可见</label>
+                                    <div class="col-sm-9">
+                                        <label class="radio-inline">
+                                            <input type="radio" name="info[is_root]" value="0" <?php if(isset($data['is_root']) && $data['is_root'] == 0){ echo ' checked="checked"'; } ?>>是
+                                        </label>
+                                        <label class="radio-inline">
+                                            <input type="radio" name="info[is_root]" value="1" <?php if(isset($data['is_root']) && $data['is_root'] == 1){ echo ' checked="checked"'; } ?>>否
+                                        </label>
+                                    </div>
+                                </div>
  
  
                                 <div class="form-group">
                                 <div class="form-group">
                                     <label class="control-label col-sm-3">&nbsp;</label>
                                     <label class="control-label col-sm-3">&nbsp;</label>

+ 122 - 4
resources/views/admin/base/user/edit.blade.php

@@ -1,7 +1,7 @@
 @extends('admin.layout')
 @extends('admin.layout')
 
 
 @section('content')
 @section('content')
-<div class="wrapper wrapper-content animated fadeInRight">
+<div class="wrapper wrapper-content animated fadeInRight" id="app">
 	<div class="row">
 	<div class="row">
 		<div class="col-sm-12">
 		<div class="col-sm-12">
 			<div class="ibox float-e-margins">
 			<div class="ibox float-e-margins">
@@ -52,12 +52,20 @@
 
 
                                 </div>
                                 </div>
 
 
+
                                 <div class="form-group">
                                 <div class="form-group">
-                                    <label class="control-label col-sm-3">商户ID</label>
-                                    <div class="col-sm-9"><input id="txt_store_id" name="info[store_id]" class="form-control" value="{{ $data['store_id'] or ''}}" required="" aria-required="true" @if(!empty($data['mobile'])) readonly @endif placeholder="商户ID"></div>
 
 
-                                </div>
+                                    <label class="control-label col-sm-3">选择商户 </label>
+
+                                    <div class="col-sm-6">
+                                        <input id="data_store" class="form-control" v-model="checkstore.name"   readonly placeholder="">
+                                        <input id="data_store_id" type="hidden" name="info[store_id]" v-model="checkstore.id"  required="" aria-required="true"  placeholder="">
+                                    </div>
 
 
+                                    <div class="col-sm-3">
+                                        <button type="button" class="btn btn-w-m btn-primary" data-toggle="modal" data-target="#myModal5" @if(!empty($data['mobile'])) disabled="disabled" @endif>选择</button>
+                                    </div>
+                                </div>
                                 <div class="form-group">
                                 <div class="form-group">
                                     <label class="control-label col-sm-3">密码</label>
                                     <label class="control-label col-sm-3">密码</label>
                                     <div class="col-sm-9">
                                     <div class="col-sm-9">
@@ -83,6 +91,116 @@
 			</div>
 			</div>
 		</div>
 		</div>
 	</div>
 	</div>
+    <div class="modal inmodal fade" id="myModal5" tabindex="-1" role="dialog"  aria-hidden="true">
+        <div class="modal-dialog modal-lg">
+            <div class="modal-content">
+                <div class="modal-header">
+                    <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
+                    <h4 class="modal-title">选择厂商</h4>
+                    <div class="search-form">
+                        <div class="input-group">
+                            <input type="text" placeholder="厂商名/ID/电话" name="search" class="form-control input-lg">
+                            <div class="input-group-btn">
+                                <button class="btn btn-lg btn-primary" type="submit" onclick="SearchStore()">
+                                    搜索
+                                </button>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+                <div class="modal-body app_v" id="userList" style="max-height: 420px;overflow: auto;">
+                    <table class="table table-striped table-bordered table-hover dataTables-example dataTable">
+                        <thead>
+                        <tr>
+                            <th> ID</th>
+                            <th> 名称</th>
+                            <th> 电话</th>
+                            <th>相关操作</th>
+                        </tr>
+                        </thead>
+                        <tbody style="max-height: 500px;">
+                        <tr v-if="list.num == 0">
+                            <td colspan="4" style="text-align: center">暂无数据</td>
+                        </tr>
+                        <tr v-for="item in list.data" v-if="list.num > 0">
+                            <td>@{{ item.id }}</td>
+                            <td>@{{ item.name }}</td>
+                            <td>@{{ item.phone }}</td>
+                            <td>
+                                <button class="btn btn-sm btn-success"
+                                        v-on:click="checkStore(item)" data-dismiss="modal">
+                                    选择
+                                </button>
+                            </td>
+                        </tr>
+
+                        </tbody>
+                    </table>
+                </div>
+
+
+            </div>
+        </div>
+    </div>
 </div>
 </div>
+<script src="/base/js/vue.js"></script>
+<link href="/base/css/plugins/toastr/toastr.min.css" rel="stylesheet">
+<script src="/base/js/plugins/toastr/toastr.min.js"></script>
+<script>
+    toastr.options.positionClass = 'toast-bottom-center';
+    var store_id = "{{ $store['store_id'] or '0'}}";
+    var store_name = "{{ $store['name'] or ''}}";
+    var set = new Vue({
+        el:"#app",
+        data:{
+            list:{
+                num:0,
+                data:[],
+            },
+            checkstore:{
+                name:'请选择商户',
+                id:0
+            },
+        },
+        methods:{
+            init:function(){
+                if(store_name&&store_id!=0){
+                    Vue.set(this.checkstore,'name',store_name);
+                    Vue.set(this.checkstore,'id',store_id);
+                }
+            },
+            checkStore:function (store) {
+                Vue.set(this.checkuser,'name',store.name);
+                Vue.set(this.checkuser,'id',store.id);
+            },
+            changeData:function (e) {
+                var num = e.length;
+                Vue.set(this.list,'data',e)
+                Vue.set(this.list,'num',num)
+            }
+        }
+    });
+    set.init();
+    function SearchStore(){
+        var keywords = $("input[name='search']").val();
+        /* if(keywords == ''){
+             toastr.error('请输入搜索值!');
+             return false;
+         }*/
+        $.ajax({
+            url: "{{ U('Base/User/searchStore') }}",
+            method: 'POST',
+            data: {
+                'keywords':keywords,
+                '_token':"{{ csrf_token() }}"
+            },
+            dataType:'json',
+
+            success: function(data) {
+                set.changeData(data.data, 'user');
+            }
+        });
+    }
 
 
+</script>
 @endsection
 @endsection

+ 3 - 3
resources/views/admin/base/user/index.blade.php

@@ -33,8 +33,8 @@
 					<table class="table table-striped table-bordered table-hover dataTables-example dataTable">
 					<table class="table table-striped table-bordered table-hover dataTables-example dataTable">
 						<thead>
 						<thead>
 							<tr>
 							<tr>
-								<th class="sorting" data-sort="name">用户名</th>
-								<th class="sorting" data-sort="username">账号</th>
+								<th class="sorting" data-sort="real_name">用户名</th>
+								<th class="sorting" data-sort="name">账号</th>
 								<th>厂家</th>
 								<th>厂家</th>
 								<th class="sorting" data-sort="email">邮箱</th>
 								<th class="sorting" data-sort="email">邮箱</th>
 								<th class="sorting" data-sort="mobile">电话</th>
 								<th class="sorting" data-sort="mobile">电话</th>
@@ -46,8 +46,8 @@
 						@if(isset($list))
 						@if(isset($list))
 							@foreach($list as $item)
 							@foreach($list as $item)
 							<tr>
 							<tr>
+								<td>{{ $item->real_name or '' }}</td>
 								<td>{{ $item->name or '' }}</td>
 								<td>{{ $item->name or '' }}</td>
-								<td>{{ $item->username or '' }}</td>
 								<td>{{ $item->store }}</td>
 								<td>{{ $item->store }}</td>
 								<td>{{ $item->email or '' }}</td>
 								<td>{{ $item->email or '' }}</td>
 								<td>{{ $item->mobile or '' }}</td>
 								<td>{{ $item->mobile or '' }}</td>

+ 50 - 0
resources/views/vendor/geetest/geetest.blade.php

@@ -0,0 +1,50 @@
+<script src="https://cdn.bootcss.com/jquery/2.1.0/jquery.min.js"></script>
+<script src="https://static.geetest.com/static/tools/gt.js"></script>
+<div id="{{ $captchaid }}"></div>
+<p id="wait-{{ $captchaid }}" class="show">正在加载验证码...</p>
+@define use Illuminate\Support\Facades\Config
+<script>
+    var geetest = function(url) {
+        var handlerEmbed = function(captchaObj) {
+            $("#{{ $captchaid }}").closest('form').submit(function(e) {
+                var validate = captchaObj.getValidate();
+                if (!validate) {
+                    alert('{{ Config::get('geetest.client_fail_alert')}}');
+                    e.preventDefault();
+                }
+            });
+            captchaObj.appendTo("#{{ $captchaid }}");
+            captchaObj.onReady(function() {
+                $("#wait-{{ $captchaid }}")[0].className = "hide";
+            });
+            if ('{{ $product }}' == 'popup') {
+                captchaObj.bindOn($('#{{ $captchaid }}').closest('form').find(':submit'));
+                captchaObj.appendTo("#{{ $captchaid }}");
+            }
+        };
+        $.ajax({
+            url: url + "?t=" + (new Date()).getTime(),
+            type: "get",
+            dataType: "json",
+            success: function(data) {
+                initGeetest({
+                    gt: data.gt,
+                    challenge: data.challenge,
+                    product: "{{ $product?$product:Config::get('geetest.product', 'float') }}",
+                    offline: !data.success,
+                    new_captcha: data.new_captcha,
+                    lang: '{{ Config::get('geetest.lang', 'zh-cn') }}',
+                    http: '{{ Config::get('geetest.protocol', 'http') }}' + '://'
+                }, handlerEmbed);
+            }
+        });
+    };
+    (function() {
+        geetest('{{ $url?$url:Config::get('geetest.url', 'geetest') }}');
+    })();
+</script>
+<style>
+    .hide {
+        display: none;
+    }
+</style>