完成统计功能
This commit is contained in:
parent
36398637a9
commit
f59d5b967e
|
|
@ -3,8 +3,27 @@
|
|||
<component name="ChangeListManager">
|
||||
<list default="true" id="003b7c19-25d9-476a-8425-57fc330161a6" name="Default Changelist" comment="">
|
||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/Admin/CdrController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/Admin/CdrController.php" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/Admin/IndexController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/Admin/IndexController.php" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/ApiController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/ApiController.php" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/config/freeswitch.php" beforeDir="false" afterPath="$PROJECT_DIR$/config/freeswitch.php" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/Auth/ConfirmPasswordController.php" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/Auth/ForgotPasswordController.php" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/Auth/LoginController.php" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/Auth/RegisterController.php" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/Auth/ResetPasswordController.php" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/Auth/VerificationController.php" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/Http/Requests/Admin/User/StoreRequest.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Requests/Admin/User/StoreRequest.php" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/Http/Requests/Admin/User/UpdateRequest.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Requests/Admin/User/UpdateRequest.php" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/composer.json" beforeDir="false" afterPath="$PROJECT_DIR$/composer.json" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/config/permission.php" beforeDir="false" afterPath="$PROJECT_DIR$/config/permission.php" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/database/seeds/MenuTableSeeder.php" beforeDir="false" afterPath="$PROJECT_DIR$/database/seeds/MenuTableSeeder.php" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/database/seeds/UserTableSeeder.php" beforeDir="false" afterPath="$PROJECT_DIR$/database/seeds/UserTableSeeder.php" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/resources/views/admin/index/index.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/admin/index/index.blade.php" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/resources/views/admin/layout.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/admin/layout.blade.php" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/routes/admin.php" beforeDir="false" afterPath="$PROJECT_DIR$/routes/admin.php" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/vendor/composer/autoload_classmap.php" beforeDir="false" afterPath="$PROJECT_DIR$/vendor/composer/autoload_classmap.php" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/vendor/composer/autoload_files.php" beforeDir="false" afterPath="$PROJECT_DIR$/vendor/composer/autoload_files.php" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/vendor/composer/autoload_static.php" beforeDir="false" afterPath="$PROJECT_DIR$/vendor/composer/autoload_static.php" afterDir="false" />
|
||||
</list>
|
||||
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
|
|
@ -16,24 +35,24 @@
|
|||
<pharConfigPath>$PROJECT_DIR$/composer.json</pharConfigPath>
|
||||
</component>
|
||||
<component name="FileEditorManager">
|
||||
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
|
||||
<file pinned="false" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/app/Console/Commands/asrListen.php">
|
||||
<leaf>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/app/Console/Commands/callcenterListen.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="449">
|
||||
<caret line="118" column="50" lean-forward="true" selection-start-line="118" selection-start-column="50" selection-end-line="118" selection-end-column="50" />
|
||||
<state relative-caret-position="128">
|
||||
<caret line="4" column="4" lean-forward="true" selection-start-line="4" selection-start-column="4" selection-end-line="4" selection-end-column="4" />
|
||||
<folding>
|
||||
<element signature="e#40#71#0#PHP" expanded="true" />
|
||||
<element signature="e#40#61#0#PHP" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/app/Http/Controllers/ApiController.php">
|
||||
<file pinned="false" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/app/Console/Commands/callcenterRun.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="416">
|
||||
<caret line="148" column="41" selection-start-line="148" selection-start-column="41" selection-end-line="148" selection-end-column="41" />
|
||||
<state relative-caret-position="256">
|
||||
<caret line="8" column="4" selection-start-line="8" selection-start-column="4" selection-end-line="8" selection-end-column="36" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
|
|
@ -64,6 +83,7 @@
|
|||
<find>堆积柱状图</find>
|
||||
<find>直接</find>
|
||||
<find>array_get</find>
|
||||
<find>time</find>
|
||||
</findStrings>
|
||||
<replaceStrings>
|
||||
<replace>department</replace>
|
||||
|
|
@ -83,14 +103,6 @@
|
|||
<component name="IdeDocumentHistory">
|
||||
<option name="CHANGED_PATHS">
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/database/migrations/2019_11_14_193518_project_remark.php" />
|
||||
<option value="$PROJECT_DIR$/database/migrations/2019_11_12_180646_project_design.php" />
|
||||
<option value="$PROJECT_DIR$/app/Models/ProjectDesign.php" />
|
||||
<option value="$PROJECT_DIR$/app/Http/Requests/Admin/Project/ProjectRequest.php" />
|
||||
<option value="$PROJECT_DIR$/app/Http/Requests/Admin/Project/ProjectDesignRequest.php" />
|
||||
<option value="$PROJECT_DIR$/resources/views/admin/project_design/_form.blade.php" />
|
||||
<option value="$PROJECT_DIR$/resources/views/admin/project_design/_js.blade.php" />
|
||||
<option value="$PROJECT_DIR$/resources/views/admin/project/_btn.blade.php" />
|
||||
<option value="$PROJECT_DIR$/resources/views/admin/project/_form.blade.php" />
|
||||
<option value="$PROJECT_DIR$/resources/views/admin/project/create.blade.php" />
|
||||
<option value="$PROJECT_DIR$/resources/views/admin/project/edit.blade.php" />
|
||||
|
|
@ -115,15 +127,9 @@
|
|||
<option value="$PROJECT_DIR$/resources/views/admin/waste/index.blade.php" />
|
||||
<option value="$PROJECT_DIR$/resources/views/admin/project/index.blade.php" />
|
||||
<option value="$PROJECT_DIR$/app/Models/Cdr.php" />
|
||||
<option value="$PROJECT_DIR$/app/Http/Controllers/Admin/CdrController.php" />
|
||||
<option value="$PROJECT_DIR$/database/migrations/2019_11_20_165744_cdr.php" />
|
||||
<option value="$PROJECT_DIR$/resources/views/admin/cdr/index.blade.php" />
|
||||
<option value="$PROJECT_DIR$/database/seeds/MenuTableSeeder.php" />
|
||||
<option value="$PROJECT_DIR$/database/seeds/UserTableSeeder.php" />
|
||||
<option value="$PROJECT_DIR$/../index.php" />
|
||||
<option value="$PROJECT_DIR$/resources/views/admin/index/index.blade.php" />
|
||||
<option value="$PROJECT_DIR$/routes/admin.php" />
|
||||
<option value="$PROJECT_DIR$/app/Http/Controllers/Admin/IndexController.php" />
|
||||
<option value="$PROJECT_DIR$/storage/logs/laravel.log" />
|
||||
<option value="$PROJECT_DIR$/resources/views/admin/remind/index.blade.php" />
|
||||
<option value="$PROJECT_DIR$/database/migrations/2014_10_12_000000_create_users_table.php" />
|
||||
|
|
@ -131,9 +137,23 @@
|
|||
<option value="$PROJECT_DIR$/../ai_robot/app/Console/Commands/callcenterRun.php" />
|
||||
<option value="$PROJECT_DIR$/app/Console/Commands/callcenterRun.php" />
|
||||
<option value="$PROJECT_DIR$/config/freeswitch.php" />
|
||||
<option value="$PROJECT_DIR$/app/Http/Controllers/ApiController.php" />
|
||||
<option value="$PROJECT_DIR$/app/Console/Commands/asrRecord.php" />
|
||||
<option value="$PROJECT_DIR$/app/Console/Commands/asrListen.php" />
|
||||
<option value="$PROJECT_DIR$/config/permission.php" />
|
||||
<option value="$PROJECT_DIR$/app/Http/Requests/Admin/User/StoreRequest.php" />
|
||||
<option value="$PROJECT_DIR$/app/Http/Requests/Admin/User/UpdateRequest.php" />
|
||||
<option value="$PROJECT_DIR$/database/seeds/UserTableSeeder.php" />
|
||||
<option value="$PROJECT_DIR$/database/seeds/MenuTableSeeder.php" />
|
||||
<option value="$PROJECT_DIR$/app/Http/Controllers/Admin/CdrController.php" />
|
||||
<option value="$PROJECT_DIR$/resources/views/admin/cdr/count.blade.php" />
|
||||
<option value="$PROJECT_DIR$/resources/views/admin/index/onlinecall.blade.php" />
|
||||
<option value="$PROJECT_DIR$/app/Http/Controllers/Admin/IndexController.php" />
|
||||
<option value="$PROJECT_DIR$/routes/admin.php" />
|
||||
<option value="$PROJECT_DIR$/resources/views/admin/layout.blade.php" />
|
||||
<option value="$PROJECT_DIR$/app/Http/Controllers/ApiController.php" />
|
||||
<option value="$PROJECT_DIR$/bootstrap/Freeswitchesl.php" />
|
||||
<option value="$PROJECT_DIR$/composer.json" />
|
||||
<option value="$PROJECT_DIR$/resources/views/admin/index/index.blade.php" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
|
|
@ -291,19 +311,6 @@
|
|||
<item name="Console" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="Commands" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="freeswitch-gui-laravel" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="freeswitch-gui-laravel" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="app" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="Http" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="freeswitch-gui-laravel" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="freeswitch-gui-laravel" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="app" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="Http" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="Controllers" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
</expand>
|
||||
<select />
|
||||
</subPane>
|
||||
|
|
@ -317,15 +324,15 @@
|
|||
<property name="nodejs_package_manager_path" value="npm" />
|
||||
</component>
|
||||
<component name="RecentsManager">
|
||||
<key name="MoveFile.RECENT_KEYS">
|
||||
<recent name="D:\wnmp\www\freeswitch-gui-laravel\app\Http\Requests\Admin\Sip" />
|
||||
</key>
|
||||
<key name="CopyFile.RECENT_KEYS">
|
||||
<recent name="D:\wnmp\www\freeswitch-gui-laravel\bootstrap" />
|
||||
<recent name="D:\wnmp\www\freeswitch-gui-laravel\resources\views\admin\index" />
|
||||
<recent name="D:\wnmp\www\freeswitch-gui-laravel\resources\views\admin\cdr" />
|
||||
<recent name="D:\wnmp\www\freeswitch-gui-laravel\app\Console\Commands" />
|
||||
<recent name="D:\wnmp\www\freeswitch-gui-laravel\app\Console" />
|
||||
<recent name="D:\wnmp\www\freeswitch-gui-laravel\resources\views\admin" />
|
||||
<recent name="D:\wnmp\www\freeswitch-gui-laravel\app\Http\Controllers\Admin" />
|
||||
<recent name="D:\wnmp\www\freeswitch-gui-laravel\database\migrations" />
|
||||
</key>
|
||||
<key name="MoveFile.RECENT_KEYS">
|
||||
<recent name="D:\wnmp\www\freeswitch-gui-laravel\app\Http\Requests\Admin\Sip" />
|
||||
</key>
|
||||
</component>
|
||||
<component name="RunDashboard">
|
||||
|
|
@ -378,7 +385,9 @@
|
|||
<workItem from="1588907621373" duration="635000" />
|
||||
<workItem from="1588915745995" duration="6718000" />
|
||||
<workItem from="1588936852248" duration="3654000" />
|
||||
<workItem from="1588986695085" duration="9122000" />
|
||||
<workItem from="1588986695085" duration="9432000" />
|
||||
<workItem from="1589005480980" duration="58000" />
|
||||
<workItem from="1589177390618" duration="11019000" />
|
||||
</task>
|
||||
<task id="LOCAL-00001" summary="完善系统管理">
|
||||
<created>1588737340771</created>
|
||||
|
|
@ -429,17 +438,23 @@
|
|||
<option name="project" value="LOCAL" />
|
||||
<updated>1588994483788</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="8" />
|
||||
<task id="LOCAL-00008" summary="添加事件监听">
|
||||
<created>1588996402230</created>
|
||||
<option name="number" value="00008" />
|
||||
<option name="presentableId" value="LOCAL-00008" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1588996402230</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="9" />
|
||||
<servers />
|
||||
</component>
|
||||
<component name="TimeTrackingManager">
|
||||
<option name="totallyTimeSpent" value="112735000" />
|
||||
<option name="totallyTimeSpent" value="124122000" />
|
||||
</component>
|
||||
<component name="ToolWindowManager">
|
||||
<frame x="-8" y="-8" width="1936" height="1056" extended-state="0" />
|
||||
<editor active="true" />
|
||||
<layout>
|
||||
<window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.21321961" />
|
||||
<window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.21748401" />
|
||||
<window_info id="Structure" order="1" side_tool="true" weight="0.25" />
|
||||
<window_info id="Favorites" order="2" side_tool="true" />
|
||||
<window_info anchor="bottom" id="Message" order="0" />
|
||||
|
|
@ -452,7 +467,7 @@
|
|||
<window_info anchor="bottom" id="Docker" order="7" show_stripe_button="false" />
|
||||
<window_info anchor="bottom" id="Database Changes" order="8" />
|
||||
<window_info anchor="bottom" id="Version Control" order="9" weight="0.32998884" />
|
||||
<window_info anchor="bottom" id="Terminal" order="10" weight="0.38127092" />
|
||||
<window_info active="true" anchor="bottom" id="Terminal" order="10" visible="true" weight="0.45261985" />
|
||||
<window_info anchor="bottom" id="Event Log" order="11" side_tool="true" weight="0.32998884" />
|
||||
<window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
|
||||
<window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
|
||||
|
|
@ -491,192 +506,10 @@
|
|||
<MESSAGE value="添加公海库功能" />
|
||||
<MESSAGE value="完成图表统计功能" />
|
||||
<MESSAGE value="更改用户表备注" />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="更改用户表备注" />
|
||||
<MESSAGE value="添加事件监听" />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="添加事件监听" />
|
||||
</component>
|
||||
<component name="editorHistoryManager">
|
||||
<entry file="file://$PROJECT_DIR$/../freeswitch-gui-laravel - 副本/routes/api.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="386">
|
||||
<caret line="24" selection-start-line="24" selection-end-line="28" selection-end-column="65" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/routes/api.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="576">
|
||||
<caret line="18" column="59" selection-start-line="18" selection-start-column="59" selection-end-line="18" selection-end-column="59" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/resources/views/admin/project_design/edit.blade.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="448">
|
||||
<caret line="14" column="11" selection-start-line="14" selection-start-column="11" selection-end-line="14" selection-end-column="11" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/resources/views/admin/project_design/_js.blade.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="704">
|
||||
<caret line="22" column="11" lean-forward="true" selection-start-line="22" selection-start-column="11" selection-end-line="22" selection-end-column="11" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/resources/views/admin/project_design/_form.blade.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="450">
|
||||
<caret line="61" column="6" lean-forward="true" selection-start-line="61" selection-start-column="6" selection-end-line="61" selection-end-column="6" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/Http/Controllers/Admin/ProjectDesignController.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="538">
|
||||
<caret line="103" column="27" selection-start-line="103" selection-start-column="27" selection-end-line="103" selection-end-column="27" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/Models/ProjectDesign.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="378">
|
||||
<caret line="17" column="15" selection-start-line="17" selection-start-column="15" selection-end-line="17" selection-end-column="15" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/Http/Controllers/Admin/WasteController.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="544">
|
||||
<caret line="65" column="16" selection-start-line="65" selection-start-column="16" selection-end-line="65" selection-end-column="16" />
|
||||
<folding>
|
||||
<element signature="e#46#66#0#PHP" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/resources/views/admin/waste/index.blade.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="160">
|
||||
<caret line="27" column="92" selection-start-line="27" selection-start-column="92" selection-end-line="27" selection-end-column="92" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/resources/views/admin/project/index.blade.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="282">
|
||||
<caret line="169" column="54" selection-start-line="169" selection-start-column="54" selection-end-line="169" selection-end-column="54" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/Http/Controllers/Admin/RemindController.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="378">
|
||||
<caret line="32" column="45" lean-forward="true" selection-start-line="32" selection-start-column="45" selection-end-line="32" selection-end-column="45" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/../freeswitch-gui-laravel - 副本/database/migrations/2019_11_20_165744_cdr.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="384">
|
||||
<caret line="23" column="71" lean-forward="true" selection-start-line="23" selection-start-column="71" selection-end-line="23" selection-end-column="71" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/../freeswitch-gui-laravel - 副本/database/seeds/HomeSeeder.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="-256">
|
||||
<caret line="100" column="47" lean-forward="true" selection-start-line="100" selection-start-column="47" selection-end-line="100" selection-end-column="47" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/Models/Cdr.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="288">
|
||||
<caret line="9" column="32" selection-start-line="9" selection-start-column="32" selection-end-line="9" selection-end-column="32" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/../freeswitch-gui-laravel - 副本/app/Models/Cdr.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="128">
|
||||
<caret line="4" column="14" lean-forward="true" selection-start-line="4" selection-start-column="14" selection-end-line="4" selection-end-column="14" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/Http/Controllers/Admin/CdrController.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="1472">
|
||||
<caret line="46" column="10" selection-start-line="46" selection-start-column="10" selection-end-line="46" selection-end-column="10" />
|
||||
<folding>
|
||||
<element signature="e#47#66#0#PHP" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/Http/Controllers/Admin/ProjectController.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="556">
|
||||
<caret line="65" column="14" lean-forward="true" selection-start-line="56" selection-start-column="12" selection-end-line="65" selection-end-column="14" />
|
||||
<folding>
|
||||
<element signature="e#46#76#0#PHP" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/database/migrations/2019_11_20_165744_cdr.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="352">
|
||||
<caret line="25" column="72" lean-forward="true" selection-start-line="25" selection-start-column="72" selection-end-line="25" selection-end-column="72" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/resources/views/admin/cdr/index.blade.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="610">
|
||||
<caret line="74" column="16" selection-start-line="74" selection-start-column="16" selection-end-line="74" selection-end-column="16" />
|
||||
<folding>
|
||||
<element signature="n#style#0;n#div#0;n#!!top" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/../freeswitch-gui-laravel - 副本/routes/web.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="608">
|
||||
<caret line="190" column="3" lean-forward="true" selection-start-line="166" selection-end-line="190" selection-end-column="3" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/database/seeds/UserTableSeeder.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="324">
|
||||
<caret line="255" column="41" lean-forward="true" selection-start-line="255" selection-start-column="41" selection-end-line="255" selection-end-column="41" />
|
||||
<folding>
|
||||
<element signature="e#1267#3670#1#PHP" />
|
||||
<element signature="e#1396#2117#1#PHP" />
|
||||
<element signature="e#2139#2679#1#PHP" />
|
||||
<element signature="e#2701#3173#1#PHP" />
|
||||
<element signature="e#3195#3637#1#PHP" />
|
||||
<element signature="e#3684#6221#1#PHP" />
|
||||
<element signature="e#3787#6207#1#PHP" />
|
||||
<element signature="e#6235#8387#1#PHP" />
|
||||
<element signature="e#8505#11676#1#PHP" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/database/seeds/MenuTableSeeder.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="480">
|
||||
<caret line="208" column="53" selection-start-line="208" selection-start-column="53" selection-end-line="208" selection-end-column="53" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/public/layuiadmin/lib/index.js">
|
||||
<provider selected="true" editor-type-id="text-editor" />
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/public/layuiadmin/lib/admin.js">
|
||||
<provider selected="true" editor-type-id="text-editor" />
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/public/layuiadmin/lib/view.js">
|
||||
<provider selected="true" editor-type-id="text-editor" />
|
||||
</entry>
|
||||
|
|
@ -701,20 +534,6 @@
|
|||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/../freeswitch-gui-laravel - 副本/app/Http/Controllers/Home/IndexController.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="320">
|
||||
<caret line="11" column="5" lean-forward="true" selection-start-line="11" selection-start-column="5" selection-end-line="11" selection-end-column="5" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/../freeswitch-gui-laravel - 副本/app/Http/Controllers/Admin/IndexController.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="276">
|
||||
<caret line="32" column="54" selection-start-line="32" selection-start-column="54" selection-end-line="32" selection-end-column="54" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/../index.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="352">
|
||||
|
|
@ -722,33 +541,9 @@
|
|||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/routes/admin.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="556">
|
||||
<caret line="28" column="15" selection-start-line="28" selection-start-column="15" selection-end-line="28" selection-end-column="15" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/storage/logs/laravel.log">
|
||||
<provider selected="true" editor-type-id="text-editor" />
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/Http/Controllers/Admin/IndexController.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="482">
|
||||
<caret line="65" column="15" selection-start-line="65" selection-start-column="15" selection-end-line="65" selection-end-column="15" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/resources/views/admin/index/index.blade.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="1556">
|
||||
<caret line="233" column="41" selection-start-line="233" selection-start-column="41" selection-end-line="233" selection-end-column="41" />
|
||||
<folding>
|
||||
<element signature="e#10111#11140#0#HTML" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/resources/views/admin/remind/index.blade.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="250">
|
||||
|
|
@ -805,26 +600,7 @@
|
|||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/Console/Commands/callcenterRun.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="1664">
|
||||
<caret line="73" column="49" selection-start-line="73" selection-start-column="49" selection-end-line="73" selection-end-column="49" />
|
||||
<folding>
|
||||
<element signature="e#40#71#0#PHP" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/Console/Commands/cdrCreate.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="320">
|
||||
<caret line="10" column="7" lean-forward="true" selection-start-line="10" selection-start-column="7" selection-end-line="10" selection-end-column="7" />
|
||||
<folding>
|
||||
<element signature="e#40#58#0#PHP" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/Console/Commands/cdrCreate.php" />
|
||||
<entry file="file://$PROJECT_DIR$/../ai_robot/app/Console/Commands/asrListen.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="320">
|
||||
|
|
@ -832,20 +608,6 @@
|
|||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/Console/Commands/callcenterListen.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="640">
|
||||
<caret line="48" column="9" lean-forward="true" selection-start-line="44" selection-start-column="8" selection-end-line="48" selection-end-column="9" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/Http/Controllers/ApiController.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="416">
|
||||
<caret line="148" column="41" selection-start-line="148" selection-start-column="41" selection-end-line="148" selection-end-column="41" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/Console/Commands/asrRecord.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="672">
|
||||
|
|
@ -856,15 +618,262 @@
|
|||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/../ai_robot/app/Console/Kernel.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="800">
|
||||
<caret line="35" column="115" lean-forward="true" selection-start-line="34" selection-start-column="8" selection-end-line="35" selection-end-column="115" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/Console/Commands/asrListen.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="449">
|
||||
<caret line="118" column="50" lean-forward="true" selection-start-line="118" selection-start-column="50" selection-end-line="118" selection-end-column="50" />
|
||||
<state relative-caret-position="2913">
|
||||
<caret line="129" column="30" lean-forward="true" selection-start-line="129" selection-start-column="30" selection-end-line="129" selection-end-column="30" />
|
||||
<folding>
|
||||
<element signature="e#40#71#0#PHP" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/Models/Permission.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="96">
|
||||
<caret line="3" column="6" selection-start-line="3" selection-start-column="6" selection-end-line="3" selection-end-column="6" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/config/permission.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="448">
|
||||
<caret line="26" column="21" selection-start-line="26" selection-start-column="21" selection-end-line="26" selection-end-column="21" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/Http/Requests/Admin/User/StoreRequest.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="704">
|
||||
<caret line="39" column="5" lean-forward="true" selection-start-line="34" selection-start-column="4" selection-end-line="39" selection-end-column="5" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/Http/Requests/Admin/User/UpdateRequest.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="672">
|
||||
<caret line="38" column="5" selection-start-line="38" selection-start-column="5" selection-end-line="38" selection-end-column="5" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/vendor/nesbot/carbon/src/Carbon/Traits/Date.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="384">
|
||||
<caret line="41" column="46" lean-forward="true" selection-start-line="41" selection-start-column="46" selection-end-line="41" selection-end-column="46" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/vendor/nesbot/carbon/src/Carbon/CarbonInterface.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="286">
|
||||
<caret line="4022" column="20" selection-start-line="4022" selection-start-column="20" selection-end-line="4022" selection-end-column="20" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/../freeswitch-gui-laravel - 副本/app/Http/Controllers/Admin/IndexController.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="436">
|
||||
<caret line="37" column="63" selection-start-line="37" selection-start-column="58" selection-end-line="37" selection-end-column="63" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/.env">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="-96" />
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/database/seeds/UserTableSeeder.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="9">
|
||||
<caret line="254" selection-start-line="254" selection-end-line="254" />
|
||||
<folding>
|
||||
<element signature="e#1267#3670#1#PHP" />
|
||||
<element signature="e#1396#2117#1#PHP" />
|
||||
<element signature="e#2139#2679#1#PHP" />
|
||||
<element signature="e#2701#3173#1#PHP" />
|
||||
<element signature="e#3195#3637#1#PHP" />
|
||||
<element signature="e#3684#6221#1#PHP" />
|
||||
<element signature="e#3787#6207#1#PHP" />
|
||||
<element signature="e#6235#8387#1#PHP" />
|
||||
<element signature="e#8505#11676#1#PHP" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/database/seeds/MenuTableSeeder.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="592">
|
||||
<caret line="219" column="22" lean-forward="true" selection-start-line="219" selection-start-column="22" selection-end-line="219" selection-end-column="22" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/../freeswitch-gui-laravel - 副本/resources/views/admin/index/index.blade.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="575">
|
||||
<caret line="184" column="27" lean-forward="true" selection-start-line="184" selection-start-column="27" selection-end-line="184" selection-end-column="27" />
|
||||
<folding>
|
||||
<element signature="e#10881#10899#0#HTML" expanded="true" />
|
||||
<element signature="e#10989#11009#0#HTML" expanded="true" />
|
||||
<element signature="e#11106#11128#0#HTML" expanded="true" />
|
||||
<element signature="e#11223#11241#0#HTML" expanded="true" />
|
||||
<element signature="e#11330#11350#0#HTML" expanded="true" />
|
||||
<element signature="e#11446#11468#0#HTML" expanded="true" />
|
||||
<element signature="e#11562#11580#0#HTML" expanded="true" />
|
||||
<element signature="e#11670#11690#0#HTML" expanded="true" />
|
||||
<element signature="e#11787#11809#0#HTML" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/Http/Controllers/Admin/IndexController.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="642">
|
||||
<caret line="70" column="5" lean-forward="true" selection-start-line="70" selection-start-column="5" selection-end-line="70" selection-end-column="5" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/../freeswitch-gui-laravel - 副本/app/Http/Controllers/Home/IndexController.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="416">
|
||||
<caret line="17" column="35" selection-start-line="17" selection-start-column="35" selection-end-line="17" selection-end-column="35" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/../freeswitch-gui-laravel - 副本/routes/web.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="640">
|
||||
<caret line="29" column="83" lean-forward="true" selection-start-line="28" selection-start-column="4" selection-end-line="29" selection-end-column="83" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/resources/views/admin/cdr/count.blade.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="-512">
|
||||
<caret line="26" column="89" selection-start-line="26" selection-start-column="89" selection-end-line="26" selection-end-column="89" />
|
||||
<folding>
|
||||
<element signature="e#1485#1505#0#HTML" expanded="true" />
|
||||
<element signature="e#2484#4145#0#HTML" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/Http/Controllers/Admin/CdrController.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="514">
|
||||
<caret line="132" column="108" selection-start-line="132" selection-start-column="108" selection-end-line="132" selection-end-column="108" />
|
||||
<folding>
|
||||
<element signature="e#3474#4160#0#PHP" />
|
||||
<element signature="e#4301#7655#1#PHP" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/Http/Controllers/Admin/SipController.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="-2400" />
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/routes/admin.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="672">
|
||||
<caret line="30" column="94" selection-start-line="30" selection-start-column="84" selection-end-line="30" selection-end-column="94" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/resources/views/admin/layout.blade.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="576">
|
||||
<caret line="96" column="29" lean-forward="true" selection-start-line="96" selection-start-column="29" selection-end-line="96" selection-end-column="29" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/Providers/AppServiceProvider.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="514">
|
||||
<caret line="32" column="30" selection-start-line="32" selection-start-column="25" selection-end-line="32" selection-end-column="30" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/storage/framework/views/bd4232dc25491f93366cf0bdb235ea5a772a0380.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="286">
|
||||
<caret line="37" column="8" selection-start-line="37" selection-start-column="8" selection-end-line="37" selection-end-column="8" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/resources/views/admin/index/onlinecall.blade.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="322">
|
||||
<caret line="171" column="18" selection-start-line="171" selection-start-column="18" selection-end-line="171" selection-end-column="18" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/Http/Controllers/ApiController.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="-192">
|
||||
<caret line="69" column="59" selection-start-line="69" selection-start-column="59" selection-end-line="69" selection-end-column="59" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/bootstrap/Snowflake.php">
|
||||
<provider selected="true" editor-type-id="text-editor" />
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/bootstrap/Freeswitchesl.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="770">
|
||||
<caret line="284" column="5" selection-start-line="284" selection-start-column="5" selection-end-line="284" selection-end-column="5" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/composer.json">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="672">
|
||||
<caret line="48" column="9" selection-start-line="48" selection-start-column="9" selection-end-line="48" selection-end-column="9" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/../freeswitch-gui-laravel - 副本/composer.json">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="549">
|
||||
<caret line="48" column="9" lean-forward="true" selection-start-line="45" selection-start-column="8" selection-end-line="48" selection-end-column="9" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/resources/views/admin/index/index.blade.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="538">
|
||||
<caret line="141" column="63" selection-start-line="141" selection-start-column="63" selection-end-line="141" selection-end-column="63" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/Http/Controllers/Admin/TaskController.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="-4032" />
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/Console/Commands/callcenterListen.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="128">
|
||||
<caret line="4" column="4" lean-forward="true" selection-start-line="4" selection-start-column="4" selection-end-line="4" selection-end-column="4" />
|
||||
<folding>
|
||||
<element signature="e#40#61#0#PHP" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/Console/Commands/callcenterRun.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="256">
|
||||
<caret line="8" column="4" selection-start-line="8" selection-start-column="4" selection-end-line="8" selection-end-column="36" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</component>
|
||||
</project>
|
||||
|
|
@ -25,7 +25,6 @@ class asrListen extends Command
|
|||
|
||||
protected $channel;
|
||||
protected $fs_record = '/usr/local/freeswitch/recordings/';
|
||||
protected $record_table = null;
|
||||
|
||||
/**
|
||||
* Create a new command instance.
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ namespace App\Console\Commands;
|
|||
|
||||
use Illuminate\Console\Command;
|
||||
use GuzzleHttp\Client;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Illuminate\Support\Facades\Redis;
|
||||
use App\Models\Task;
|
||||
|
|
|
|||
|
|
@ -5,9 +5,12 @@ namespace App\Http\Controllers\Admin;
|
|||
use App\Models\Cdr;
|
||||
use App\Models\Sip;
|
||||
use App\Models\User;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Response;
|
||||
use Illuminate\Support\Facades\View;
|
||||
|
||||
class CdrController extends Controller
|
||||
{
|
||||
|
|
@ -89,5 +92,111 @@ class CdrController extends Controller
|
|||
return response()->download($cdr->record_file,$uuid.".wav");
|
||||
}
|
||||
|
||||
/**
|
||||
* 人员统计
|
||||
* @param Request $request
|
||||
* @return \Illuminate\Contracts\View\View|\Illuminate\Http\JsonResponse
|
||||
*/
|
||||
public function count(Request $request)
|
||||
{
|
||||
$users = User::where('id','!=',config('freeswitch.user_root_id'))->get();
|
||||
if ($request->ajax()){
|
||||
$res = $request->all(['user_id','start_stamp_start','start_stamp_end']);
|
||||
$data = $users->keyBy('id')->all();
|
||||
foreach ($data as &$d){
|
||||
$d['todayCalls'] = 0;
|
||||
$d['todaySuccessCalls'] = 0;
|
||||
$d['todayRateCalls'] = '0.00%';
|
||||
$d['todayThirtyCalls'] = 0;
|
||||
$d['todaySixtyCalls'] = 0;
|
||||
$d['weekCalls'] = 0;
|
||||
$d['weekSuccessCalls'] = 0;
|
||||
$d['weekRateCalls'] = '0.00%';
|
||||
$d['weekThirtyCalls'] = 0;
|
||||
$d['weekSixtyCalls'] = 0;
|
||||
$d['monthCalls'] = 0;
|
||||
$d['monthSuccessCalls'] = 0;
|
||||
$d['monthRateCalls'] = '0.00%';
|
||||
$d['monthThirtyCalls'] = 0;
|
||||
$d['monthSixtyCalls'] = 0;
|
||||
}
|
||||
Cdr::when($res['user_id'],function ($q) use($res){
|
||||
return $q->where('user_id',$res['user_id']);
|
||||
})
|
||||
->when($res['start_stamp_start'] && !$res['start_stamp_end'],function ($q) use($res){
|
||||
return $q->where('aleg_start_at','>=',$res['start_stamp_start']);
|
||||
})
|
||||
->when(!$res['start_stamp_start'] && $res['start_stamp_end'],function ($q) use($res){
|
||||
return $q->where('aleg_start_at','<=',$res['start_stamp_end']);
|
||||
})
|
||||
->when($res['start_stamp_start'] && $res['start_stamp_end'],function ($q) use($res){
|
||||
return $q->whereBetween('aleg_start_at',[$res['start_stamp_start'],$res['start_stamp_end']]);
|
||||
})
|
||||
->where('user_id','!=',config('freeswitch.user_root_id'))
|
||||
->orderBy('id','asc')
|
||||
->chunk(1000,function ($cdrs) use(&$data){
|
||||
foreach ($cdrs as $cdr){
|
||||
foreach ($data as $d){
|
||||
if ($cdr->user_id==$d['id']){
|
||||
$time = strtotime($cdr->aleg_start_at);
|
||||
//当天
|
||||
if ($time>=Carbon::today()->timestamp && $time<=Carbon::tomorrow()->timestamp){
|
||||
$d['todayCalls'] += 1;
|
||||
}
|
||||
if ($time>=Carbon::today()->timestamp && $time<=Carbon::tomorrow()->timestamp && $cdr->billsec>0){
|
||||
$d['todaySuccessCalls'] += 1;
|
||||
}
|
||||
if ($time>=Carbon::today()->timestamp && $time<=Carbon::tomorrow()->timestamp && $cdr->billsec>30){
|
||||
$d['todayThirtyCalls'] += 1;
|
||||
}
|
||||
if ($time>=Carbon::today()->timestamp && $time<=Carbon::tomorrow()->timestamp && $cdr->billsec>60){
|
||||
$d['todaySixtyCalls'] += 1;
|
||||
}
|
||||
//本周
|
||||
if ($time>=Carbon::now()->startOfWeek()->timestamp && $time<=Carbon::now()->endOfWeek()->timestamp){
|
||||
$d['weekCalls'] += 1;
|
||||
}
|
||||
if ($time>=Carbon::now()->endOfWeek()->timestamp && $time<=Carbon::now()->endOfWeek()->timestamp && $cdr->billsec>0){
|
||||
$d['weekSuccessCalls'] += 1;
|
||||
}
|
||||
if ($time>=Carbon::now()->endOfWeek()->timestamp && $time<=Carbon::now()->endOfWeek()->timestamp && $cdr->billsec>30){
|
||||
$d['weekThirtyCalls'] += 1;
|
||||
}
|
||||
if ($time>=Carbon::now()->endOfWeek()->timestamp && $time<=Carbon::now()->endOfWeek()->timestamp && $cdr->billsec>60){
|
||||
$d['weekSixtyCalls'] += 1;
|
||||
}
|
||||
//本月
|
||||
if ($time>=Carbon::now()->startOfMonth()->timestamp && $time<=Carbon::now()->endOfMonth()->timestamp){
|
||||
$d['monthCalls'] += 1;
|
||||
}
|
||||
if ($time>=Carbon::now()->startOfMonth()->timestamp && $time<=Carbon::now()->endOfMonth()->timestamp && $cdr->billsec>0){
|
||||
$d['monthSuccessCalls'] += 1;
|
||||
}
|
||||
if ($time>=Carbon::now()->startOfMonth()->timestamp && $time<=Carbon::now()->endOfMonth()->timestamp && $cdr->billsec>30){
|
||||
$d['monthThirtyCalls'] += 1;
|
||||
}
|
||||
if ($time>=Carbon::now()->startOfMonth()->timestamp && $time<=Carbon::now()->endOfMonth()->timestamp && $cdr->billsec>60){
|
||||
$d['monthSixtyCalls'] += 1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
foreach ($data as &$d){
|
||||
$d['todayRateCalls'] = $d['todayCalls']>0?100*round($d['todaySuccessCalls']/$d['todayCalls'],4).'%':'0.00%';
|
||||
$d['weekRateCalls'] = $d['weekCalls']>0?100*round($d['weekSuccessCalls']/$d['weekCalls'],4).'%':'0.00%';
|
||||
$d['monthRateCalls'] = $d['monthCalls']>0?100*round($d['monthSuccessCalls']/$d['monthCalls'],4).'%':'0.00%';
|
||||
}
|
||||
return Response::json([
|
||||
'code' => 0,
|
||||
'msg' => '正在请求中...',
|
||||
'count' => count($data),
|
||||
'data' => $data,
|
||||
]);
|
||||
}
|
||||
|
||||
return View::make('admin.cdr.count',compact('users'));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -66,5 +66,10 @@ class IndexController extends Controller
|
|||
});
|
||||
return Response::json(['code'=>0,'msg'=>'请求成功','data'=>$data]);
|
||||
}
|
||||
|
||||
public function onlinecall()
|
||||
{
|
||||
return View::make('admin.index.onlinecall');
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@ class ApiController extends Controller
|
|||
{
|
||||
$data = $request->all(['exten','phone','user_data']);
|
||||
if ($data['exten'] == null || $data['phone'] == null) {
|
||||
return Response::json(['code'=>1,'msg'=>'参数错误']);
|
||||
return Response::json(['code'=>1,'msg'=>'号码不能为空']);
|
||||
}
|
||||
|
||||
//检测10秒重复请求
|
||||
|
|
|
|||
|
|
@ -1,40 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Providers\RouteServiceProvider;
|
||||
use Illuminate\Foundation\Auth\ConfirmsPasswords;
|
||||
|
||||
class ConfirmPasswordController extends Controller
|
||||
{
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Confirm Password Controller
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This controller is responsible for handling password confirmations and
|
||||
| uses a simple trait to include the behavior. You're free to explore
|
||||
| this trait and override any functions that require customization.
|
||||
|
|
||||
*/
|
||||
|
||||
use ConfirmsPasswords;
|
||||
|
||||
/**
|
||||
* Where to redirect users when the intended url fails.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $redirectTo = RouteServiceProvider::HOME;
|
||||
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->middleware('auth');
|
||||
}
|
||||
}
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Foundation\Auth\SendsPasswordResetEmails;
|
||||
|
||||
class ForgotPasswordController extends Controller
|
||||
{
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Password Reset Controller
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This controller is responsible for handling password reset emails and
|
||||
| includes a trait which assists in sending these notifications from
|
||||
| your application to your users. Feel free to explore this trait.
|
||||
|
|
||||
*/
|
||||
|
||||
use SendsPasswordResetEmails;
|
||||
}
|
||||
|
|
@ -1,40 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Providers\RouteServiceProvider;
|
||||
use Illuminate\Foundation\Auth\AuthenticatesUsers;
|
||||
|
||||
class LoginController extends Controller
|
||||
{
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Login Controller
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This controller handles authenticating users for the application and
|
||||
| redirecting them to your home screen. The controller uses a trait
|
||||
| to conveniently provide its functionality to your applications.
|
||||
|
|
||||
*/
|
||||
|
||||
use AuthenticatesUsers;
|
||||
|
||||
/**
|
||||
* Where to redirect users after login.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $redirectTo = RouteServiceProvider::HOME;
|
||||
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->middleware('guest')->except('logout');
|
||||
}
|
||||
}
|
||||
|
|
@ -1,73 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Providers\RouteServiceProvider;
|
||||
use App\User;
|
||||
use Illuminate\Foundation\Auth\RegistersUsers;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
|
||||
class RegisterController extends Controller
|
||||
{
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Register Controller
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This controller handles the registration of new users as well as their
|
||||
| validation and creation. By default this controller uses a trait to
|
||||
| provide this functionality without requiring any additional code.
|
||||
|
|
||||
*/
|
||||
|
||||
use RegistersUsers;
|
||||
|
||||
/**
|
||||
* Where to redirect users after registration.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $redirectTo = RouteServiceProvider::HOME;
|
||||
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->middleware('guest');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a validator for an incoming registration request.
|
||||
*
|
||||
* @param array $data
|
||||
* @return \Illuminate\Contracts\Validation\Validator
|
||||
*/
|
||||
protected function validator(array $data)
|
||||
{
|
||||
return Validator::make($data, [
|
||||
'name' => ['required', 'string', 'max:255'],
|
||||
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
|
||||
'password' => ['required', 'string', 'min:8', 'confirmed'],
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new user instance after a valid registration.
|
||||
*
|
||||
* @param array $data
|
||||
* @return \App\User
|
||||
*/
|
||||
protected function create(array $data)
|
||||
{
|
||||
return User::create([
|
||||
'name' => $data['name'],
|
||||
'email' => $data['email'],
|
||||
'password' => Hash::make($data['password']),
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Providers\RouteServiceProvider;
|
||||
use Illuminate\Foundation\Auth\ResetsPasswords;
|
||||
|
||||
class ResetPasswordController extends Controller
|
||||
{
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Password Reset Controller
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This controller is responsible for handling password reset requests
|
||||
| and uses a simple trait to include this behavior. You're free to
|
||||
| explore this trait and override any methods you wish to tweak.
|
||||
|
|
||||
*/
|
||||
|
||||
use ResetsPasswords;
|
||||
|
||||
/**
|
||||
* Where to redirect users after resetting their password.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $redirectTo = RouteServiceProvider::HOME;
|
||||
}
|
||||
|
|
@ -1,42 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Providers\RouteServiceProvider;
|
||||
use Illuminate\Foundation\Auth\VerifiesEmails;
|
||||
|
||||
class VerificationController extends Controller
|
||||
{
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Email Verification Controller
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This controller is responsible for handling email verification for any
|
||||
| user that recently registered with the application. Emails may also
|
||||
| be re-sent if the user didn't receive the original email message.
|
||||
|
|
||||
*/
|
||||
|
||||
use VerifiesEmails;
|
||||
|
||||
/**
|
||||
* Where to redirect users after verification.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $redirectTo = RouteServiceProvider::HOME;
|
||||
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->middleware('auth');
|
||||
$this->middleware('signed')->only('verify');
|
||||
$this->middleware('throttle:6,1')->only('verify', 'resend');
|
||||
}
|
||||
}
|
||||
|
|
@ -27,11 +27,18 @@ class StoreRequest extends FormRequest
|
|||
{
|
||||
return [
|
||||
'phone' => 'required|numeric|regex:/^1[3456789][0-9]{9}$/|unique:users',
|
||||
'nickname' => 'required|min:4|max:14|unique:users',
|
||||
'nickname' => 'required|min:2|max:14|unique:users',
|
||||
'password' => 'required|confirmed|min:6|max:14'
|
||||
];
|
||||
}
|
||||
|
||||
public function attributes()
|
||||
{
|
||||
return [
|
||||
'nickname' => '昵称',
|
||||
];
|
||||
}
|
||||
|
||||
protected function failedValidation(Validator $validator)
|
||||
{
|
||||
throw new HttpResponseException(response()->json(['code'=>1,'msg'=>$validator->errors()->first()]));
|
||||
|
|
|
|||
|
|
@ -31,6 +31,13 @@ class UpdateRequest extends FormRequest
|
|||
];
|
||||
}
|
||||
|
||||
public function attributes()
|
||||
{
|
||||
return [
|
||||
'nickname' => '昵称',
|
||||
];
|
||||
}
|
||||
|
||||
protected function failedValidation(Validator $validator)
|
||||
{
|
||||
throw new HttpResponseException(response()->json(['code'=>1,'msg'=>$validator->errors()->first()]));
|
||||
|
|
|
|||
|
|
@ -0,0 +1,288 @@
|
|||
<?php
|
||||
|
||||
|
||||
class Freeswitchesl {
|
||||
|
||||
public function __construct() {
|
||||
$this->socket = "";
|
||||
$this->sorts = "";
|
||||
$this->length = 1024;
|
||||
}
|
||||
|
||||
public function eliminate($parameter)
|
||||
{
|
||||
$array = array(" "," ","\t","\n","\r");
|
||||
return str_replace($array, '', $parameter);
|
||||
}
|
||||
|
||||
public function eliminateLine($parameter)
|
||||
{
|
||||
return str_replace("\n\n", "\n", $parameter);
|
||||
}
|
||||
|
||||
public function typeClear($response)
|
||||
{
|
||||
$commenType = array("Content-Type: text/event-xml\n","Content-Type: text/event-plain\n","Content-Type: text/event-json\n");
|
||||
return str_replace($commenType, '', $response);
|
||||
}
|
||||
|
||||
public function connect($host,$port,$password)
|
||||
{
|
||||
$this->socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
|
||||
$connection = socket_connect($this->socket, $host,$port);
|
||||
$connect = false;
|
||||
$error = "";
|
||||
while ($socket_info = @socket_read($this->socket, 1024, PHP_NORMAL_READ)) {
|
||||
$eliminate_socket_info = $this->eliminate($socket_info);
|
||||
if ($eliminate_socket_info == "Content-Type:auth/request") {
|
||||
socket_write($this->socket, "auth ".$password."\r\n\r\n");
|
||||
}elseif ($eliminate_socket_info == "") {
|
||||
continue;
|
||||
}elseif ($eliminate_socket_info == "Content-Type:command/reply") {
|
||||
continue;
|
||||
}elseif ($eliminate_socket_info == "Reply-Text:+OKaccepted") {
|
||||
$connect = true;
|
||||
break;
|
||||
} else {
|
||||
$error .= $eliminate_socket_info."\r\n";
|
||||
}
|
||||
}
|
||||
if (!$connect) {
|
||||
echo $error;
|
||||
}
|
||||
return $connect;
|
||||
}
|
||||
|
||||
public function api($api,$args="")
|
||||
{
|
||||
if ($this->socket) {
|
||||
socket_write($this->socket, "api ".$api." ".$args."\r\n\r\n");
|
||||
}
|
||||
$response = $this->recvEvent("common");
|
||||
return $response;
|
||||
}
|
||||
|
||||
public function bgapi($api,$args="",$custom_job_uuid="")
|
||||
{
|
||||
if ($this->socket) {
|
||||
socket_write($this->socket, "bgapi ".$api." ".$args." ".$custom_job_uuid."\r\n\r\n");
|
||||
}
|
||||
return "executed";
|
||||
}
|
||||
|
||||
public function execute($app,$args,$uuid)
|
||||
{
|
||||
if ($this->socket) {
|
||||
$str = "sendmsg ".$uuid."\ncall-command: execute\nexecute-app-name: ".$app."\nexecute-app-arg: ".$args."\n\n";
|
||||
socket_write($this->socket, $str);
|
||||
}
|
||||
$response = $this->recvEvent("common");
|
||||
return $response;
|
||||
}
|
||||
|
||||
public function executeAsync($app,$args,$uuid)
|
||||
{
|
||||
if ($this->socket) {
|
||||
$str = "sendmsg ".$uuid."\ncall-command: executeAsync\nexecute-app-name: ".$app."\nexecute-app-arg: ".$args."\n\n";
|
||||
socket_write($this->socket, $str);
|
||||
}
|
||||
return "executed";
|
||||
}
|
||||
|
||||
public function sendmsg($uuid)
|
||||
{
|
||||
if ($this->socket) {
|
||||
socket_write($this->socket, "sendmsg ".$uuid."\r\n\r\n");
|
||||
}
|
||||
return "executed";
|
||||
}
|
||||
|
||||
public function events($sorts,$args)
|
||||
{
|
||||
$this->sorts = $sorts;
|
||||
if ($sorts == "json") {
|
||||
$sorts = "xml";
|
||||
}
|
||||
if ($this->socket) {
|
||||
socket_write($this->socket, "event ".$sorts." ".$args."\r\n\r\n");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public function getHeader($response,$args)
|
||||
{
|
||||
$serialize = $this->serialize($response,"json");
|
||||
$serializearray = json_decode($serialize);
|
||||
try {
|
||||
return $serializearray->$args;
|
||||
} catch (Exception $e) {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
public function recvEvent($type="event")
|
||||
{
|
||||
$response = '';
|
||||
$length = 0;
|
||||
$x = 0;
|
||||
/*while ($socket_info = @socket_read($this->socket, 1024, PHP_NORMAL_READ)){
|
||||
$x++;
|
||||
usleep(100);
|
||||
if ($length > 0) {
|
||||
$response .= $socket_info;
|
||||
}
|
||||
if ($length == 0 && strpos($socket_info, 'Content-Length:') !== false) {
|
||||
$lengtharray = explode("Content-Length:",$socket_info);
|
||||
if ($type == "event") {
|
||||
$length = (int)$lengtharray[1]+30;
|
||||
} else {
|
||||
$length = (int)$lengtharray[1];
|
||||
}
|
||||
}
|
||||
|
||||
if ($length > 0 && strlen($response) >= $length) {
|
||||
break;
|
||||
}
|
||||
|
||||
if ($x > 10000) break;
|
||||
}*/
|
||||
//-------------------------------- 2020.02.26 lilong update -----------------------
|
||||
if($type=='common'){
|
||||
|
||||
while ($socket_info = @socket_read($this->socket, 1024, PHP_BINARY_READ)){
|
||||
$x++;
|
||||
usleep(100);
|
||||
$response .= $socket_info;
|
||||
if (strpos($socket_info, 'Content-Length:') !== false) {
|
||||
$lengtharray = explode("Content-Length:",$socket_info);
|
||||
if ($type == "event") {
|
||||
$length = (int)$lengtharray[1]+30;
|
||||
} else {
|
||||
$length = (int)$lengtharray[1];
|
||||
}
|
||||
}
|
||||
if ($length > 0 && strlen(substr($response, strpos($response, "Content-Length: {$length}"))) == $length+strlen("Content-Length: {$length}\r\n")) {
|
||||
break;
|
||||
}
|
||||
|
||||
if ($x > 10000) break;
|
||||
}
|
||||
|
||||
$replace_arr = ["Content-Type: api/response\n","Content-Length: {$length}"];
|
||||
$response = str_replace($replace_arr, '', $response);
|
||||
|
||||
|
||||
}else{
|
||||
//与原代码做兼容
|
||||
while ($socket_info = @socket_read($this->socket, 1024, PHP_NORMAL_READ)){
|
||||
$x++;
|
||||
usleep(100);
|
||||
if ($length > 0) {
|
||||
$response .= $socket_info;
|
||||
}
|
||||
if ($length == 0 && strpos($socket_info, 'Content-Length:') !== false) {
|
||||
$lengtharray = explode("Content-Length:",$socket_info);
|
||||
if ($type == "event") {
|
||||
$length = (int)$lengtharray[1]+30;
|
||||
} else {
|
||||
$length = (int)$lengtharray[1];
|
||||
}
|
||||
}
|
||||
|
||||
if ($length > 0 && strlen($response) >= $length) {
|
||||
break;
|
||||
}
|
||||
|
||||
if ($x > 10000) break;
|
||||
}
|
||||
}
|
||||
//-------------------------------- 2020.02.26 lilong update -----------------------
|
||||
|
||||
|
||||
if ($this->sorts == "json" && $type == "event") {
|
||||
$response = $this->typeClear($response);
|
||||
$responsedata = simplexml_load_string($response);
|
||||
$response = [];
|
||||
foreach ($responsedata->headers->children() as $key => $value) {
|
||||
$response[(string)$key] = (string)$value;
|
||||
}
|
||||
return json_encode($response);
|
||||
} else {
|
||||
$response = $this->eliminateLine($response);
|
||||
}
|
||||
return $response;
|
||||
}
|
||||
|
||||
public function serialize($response,$type)
|
||||
{
|
||||
$response = $this->typeClear($response);
|
||||
if ($this->sorts == $type) return $response;
|
||||
if ($this->sorts == "json") {
|
||||
$responsedata = json_decode($response);
|
||||
if ($type == "plain") {
|
||||
$response = "";
|
||||
foreach ($responsedata as $key => $value) {
|
||||
$responseline = $key.": ".$value."\r\n";
|
||||
$response .= $responseline;
|
||||
}
|
||||
} else {
|
||||
$response = "<event>\r\n <headers>\r\n";
|
||||
foreach ($responsedata as $key => $value) {
|
||||
$responseline = " <".$key.">".$value."</".$key.">"."\r\n";
|
||||
$response .= $responseline;
|
||||
}
|
||||
$response .= " </headers>\r\n</event>";
|
||||
}
|
||||
return $response;
|
||||
} elseif ($this->sorts == "xml") {
|
||||
$responsedata = simplexml_load_string($response);
|
||||
if ($type == "plain") {
|
||||
$response = "";
|
||||
foreach ($responsedata->headers->children() as $key => $value) {
|
||||
$responseline = (string)$key.": ".(string)$value."\r\n";
|
||||
$response .= $responseline;
|
||||
}
|
||||
return $response;
|
||||
} else {
|
||||
$response = [];
|
||||
foreach ($responsedata->headers->children() as $key => $value) {
|
||||
$response[(string)$key] = (string)$value;
|
||||
}
|
||||
return json_encode($response);
|
||||
}
|
||||
} else {
|
||||
$response = str_replace("\n", '","', $response);
|
||||
$response = str_replace(": ", '":"', $response);
|
||||
$response = substr($response, 0, -2);
|
||||
$response = '{"'.$response.'}';
|
||||
if ($type == "json") return $response;
|
||||
$responsedata = json_decode($response);
|
||||
$response = "<event>\r\n <headers>\r\n";
|
||||
foreach ($responsedata as $key => $value) {
|
||||
$responseline = " <".$key.">".$value."</".$key.">"."\r\n";
|
||||
$response .= $responseline;
|
||||
}
|
||||
$response .= " </headers>\r\n</event>";
|
||||
return $response;
|
||||
}
|
||||
}
|
||||
|
||||
public function disconnect()
|
||||
{
|
||||
//-------------------------------- 2020.02.26 lilong add -----------------------
|
||||
socket_write($this->socket, "exit"."\r\n\r\n");
|
||||
//-------------------------------- 2020.02.26 lilong add -----------------------
|
||||
socket_close($this->socket);
|
||||
}
|
||||
|
||||
//只订阅uuid事件
|
||||
public function filteruuid($uuid)
|
||||
{
|
||||
if ($this->socket) {
|
||||
socket_write($this->socket, "filter Unique-ID ".$uuid."\r\n\r\n");
|
||||
}
|
||||
return "filter";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,77 @@
|
|||
<?php
|
||||
|
||||
//namespace anerg\helper;
|
||||
|
||||
/**
|
||||
* Twitter的Snowflake生成全局唯一ID的PHP实现
|
||||
*
|
||||
* 可实现分布式全局唯一ID的生成
|
||||
*
|
||||
* 因为PHP不是常驻内存运行,所以无法实现原版的队列编号,采用随机数代替
|
||||
* 可以最大程度避免并发请求时生成相同的ID
|
||||
* 理论上,当MAX_RANDOM_BIT为12,也就是随机数最大值为4095时
|
||||
* 每毫秒需生成的id小于1000即可以安全的生成不冲突的id
|
||||
*
|
||||
* @author Coeus <r.anerg@gmail.com>
|
||||
*/
|
||||
class Snowflake
|
||||
{
|
||||
//开始时间戳,固定小于当前时间的毫秒,用于缩减时间位数
|
||||
const EPOCH = 1575388800000;
|
||||
//最大机器标识位数,8->255 10->1023
|
||||
const MAX_MACHINE_BIT = 8;
|
||||
//最大随机数位数,12->4095
|
||||
const MAX_RANDOM_BIT = 12;
|
||||
|
||||
/**
|
||||
* 获取一个10进制唯一ID
|
||||
*
|
||||
* 如果$machineId为0,则会忽略掉机器标识位
|
||||
*
|
||||
* @param integer $machineId
|
||||
* @param array $options 数组形式,只包含epoch,maxMachineBit和maxRandomBit
|
||||
* @return integer
|
||||
*/
|
||||
public static function nextId($machineId = 1, $options = [])
|
||||
{
|
||||
$epoch = isset($options['epoch']) ? $options['epoch'] : self::EPOCH;
|
||||
$maxMachineBit = isset($options['maxMachineBit']) ? $options['maxMachineBit'] : self::MAX_MACHINE_BIT;
|
||||
$maxRandomBit = isset($options['maxRandomBit']) ? $options['maxRandomBit'] : self::MAX_RANDOM_BIT;
|
||||
//机器标识范围判断
|
||||
$maxMachineId = ~(-1 << $maxMachineBit);
|
||||
if ($machineId > $maxMachineId || $machineId < 0) {
|
||||
throw new \Exception("MachineId can't be less than " . $maxMachineId . " or greater than 0");
|
||||
}
|
||||
//毫秒时间戳
|
||||
$time = \floor(\microtime(true) * 1000);
|
||||
$time -= $epoch;
|
||||
|
||||
//生成随机数,因为php不是内存持久化的,在并发时无法做到维护一个唯一的序列,所以用随机数替代
|
||||
$random = \mt_rand(0, ~(-1 << $maxRandomBit));
|
||||
|
||||
//组合数据 {时间戳差值|机器标识|随机数}
|
||||
//机器标识为0则抛弃掉机器标识
|
||||
if ($machineId == 0) {
|
||||
//时间戳要左移的位数
|
||||
$timeLeftShift = $maxRandomBit;
|
||||
$nextId = ($time << $timeLeftShift) | $random;
|
||||
} else {
|
||||
//时间戳要左移的位数
|
||||
$timeLeftShift = $maxRandomBit + $maxMachineBit;
|
||||
$nextId = ($time << $timeLeftShift) | ($machineId << $maxRandomBit) | $random;
|
||||
}
|
||||
|
||||
return $nextId;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取一个36进制的唯一ID
|
||||
*
|
||||
* @param integer $machineId
|
||||
* @return string
|
||||
*/
|
||||
public static function nextHash($machineId = 0, $options = [])
|
||||
{
|
||||
return \strtoupper(\base_convert(self::nextId($machineId, $options), 10, 36));
|
||||
}
|
||||
}
|
||||
|
|
@ -42,6 +42,10 @@
|
|||
"classmap": [
|
||||
"database/seeds",
|
||||
"database/factories"
|
||||
],
|
||||
"files": [
|
||||
"bootstrap/Freeswitchesl.php",
|
||||
"bootstrap/Snowflake.php"
|
||||
]
|
||||
},
|
||||
"autoload-dev": {
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ return [
|
|||
* `Spatie\Permission\Contracts\Permission` contract.
|
||||
*/
|
||||
|
||||
'permission' => Spatie\Permission\Models\Permission::class,
|
||||
'permission' => App\Models\Permission::class,
|
||||
|
||||
/*
|
||||
* When using the "HasRoles" trait from this package, we need to know which
|
||||
|
|
@ -24,7 +24,7 @@ return [
|
|||
* `Spatie\Permission\Contracts\Role` contract.
|
||||
*/
|
||||
|
||||
'role' => Spatie\Permission\Models\Role::class,
|
||||
'role' => App\Models\Role::class,
|
||||
|
||||
],
|
||||
|
||||
|
|
|
|||
|
|
@ -210,7 +210,14 @@ class MenuTableSeeder extends Seeder
|
|||
'type' => 1,
|
||||
'permission_name' => 'data.cdr',
|
||||
],
|
||||
|
||||
[
|
||||
'name' => '呼叫统计',
|
||||
'route' => 'admin.cdr.count',
|
||||
'url' => null,
|
||||
'icon' => 'layui-icon-ios',
|
||||
'type' => 1,
|
||||
'permission_name' => 'data.cdr.count',
|
||||
],
|
||||
]
|
||||
],
|
||||
];
|
||||
|
|
|
|||
|
|
@ -248,7 +248,13 @@ class UserTableSeeder extends Seeder
|
|||
['name' => 'data.cdr.list_department', 'display_name' => '查看部门记录'],
|
||||
]
|
||||
],
|
||||
[
|
||||
'name' => 'data.cdr.count',
|
||||
'display_name' => '呼叫统计',
|
||||
'child' => [
|
||||
|
||||
]
|
||||
],
|
||||
]
|
||||
],
|
||||
];
|
||||
|
|
|
|||
|
|
@ -0,0 +1,248 @@
|
|||
|
||||
/*打电话键盘*/
|
||||
/*.call-warp {*/
|
||||
/*background: #FFFFFF;*/
|
||||
/*position: absolute;*/
|
||||
/*top: 50%;*/
|
||||
/*left: 50%;*/
|
||||
/*-webkit-transform: translateX(-50%) translateY(-50%);*/
|
||||
/*-moz-transform: translateX(-50%) translateY(-50%);*/
|
||||
/*-o-transform: translateX(-50%) translateY(-50%);*/
|
||||
/*-ms-transform: translateX(-50%) translateY(-50%);*/
|
||||
/*transform: translateX(-50%) translateY(-50%);*/
|
||||
/*width: 316px;*/
|
||||
/*margin: 0 auto;*/
|
||||
/*padding: 15px;*/
|
||||
/*border: 1px solid rgba(0, 0, 0, .2);*/
|
||||
/*border-radius: 8px;*/
|
||||
/*outline: 0;*/
|
||||
/*-webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5);*/
|
||||
/*box-shadow: 0 3px 9px rgba(0, 0, 0, .5);*/
|
||||
/*}*/
|
||||
/*.call-input {*/
|
||||
/*position: relative;*/
|
||||
/*}*/
|
||||
/*.call-input input {*/
|
||||
/*width: 100%;*/
|
||||
/*font-size: 18px;*/
|
||||
/*height: 54px;*/
|
||||
/*line-height: 24px;*/
|
||||
/*padding: 15px 60px 15px 10px;*/
|
||||
/*border: 1px solid #D8D8D8;*/
|
||||
/*box-sizing: border-box;*/
|
||||
/*}*/
|
||||
/*.call-input input.error-tips {*/
|
||||
/*border: 1px solid #e78081;*/
|
||||
/*}*/
|
||||
|
||||
/*.number-key {*/
|
||||
/*padding: 5px 0 15px;*/
|
||||
/*overflow: hidden;*/
|
||||
/*}*/
|
||||
/*.number-key>a {*/
|
||||
/*display: block;*/
|
||||
/*float: left;*/
|
||||
/*width: 33.3333%;*/
|
||||
/*box-sizing: border-box;*/
|
||||
/*border: 1px solid #D8D8D8;*/
|
||||
/*border-top: none;*/
|
||||
/*border-right: none;*/
|
||||
/*text-align: center;*/
|
||||
/*line-height: 52px;*/
|
||||
/*color: #333;*/
|
||||
/*font-size: 24px;*/
|
||||
/*font-weight: bold;*/
|
||||
/*}*/
|
||||
/*.number-key>a:hover {*/
|
||||
/*background: #eee;*/
|
||||
/*}*/
|
||||
/*.number-key>a:first-child,*/
|
||||
/*.number-key>a:nth-child(2),*/
|
||||
/*.number-key>a:nth-child(3) {*/
|
||||
/*border-top: 1px solid #D8D8D8;*/
|
||||
/*}*/
|
||||
/*.number-key>a:nth-child(3n) {*/
|
||||
/*border-right: 1px solid #D8D8D8;*/
|
||||
/*}*/
|
||||
/*.inline {*/
|
||||
/*display: inline-block;*/
|
||||
/*vertical-align: middle;*/
|
||||
/*}*/
|
||||
/*.call-btn {*/
|
||||
/*display: block;*/
|
||||
/*font-size: 18px;*/
|
||||
/*text-align: center;*/
|
||||
/*border-radius: 4px;*/
|
||||
/*color: #fff;*/
|
||||
/*line-height: 54px;*/
|
||||
/*background: -moz-linear-gradient(top, #02BB92 0%, #09CBA1 100%);*/
|
||||
/*background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#02BB92), color-stop(100%,#09CBA1));*/
|
||||
/*background: -webkit-linear-gradient(top, #02BB92 0%,#09CBA1 100%);*/
|
||||
/*background: -o-linear-gradient(top, #02BB92 0%,#09CBA1 100%);*/
|
||||
/*background: -ms-linear-gradient(top, #02BB92 0%,#09CBA1 100%);*/
|
||||
/*background: linear-gradient(to bottom, #02BB92 0%,#09CBA1 100%);*/
|
||||
/*}*/
|
||||
/*.call-btn.down{*/
|
||||
/*background: -moz-linear-gradient(top, #E47172 0%, #E68181 100%);*/
|
||||
/*background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#E47172), color-stop(100%,#E68181));*/
|
||||
/*background: -webkit-linear-gradient(top,#E47172 0%,#E68181 100%);*/
|
||||
/*background: -o-linear-gradient(top, #E47172 0%,#E68181 100%);*/
|
||||
/*background: -ms-linear-gradient(top, #E47172 0%,#E68181 100%);*/
|
||||
/*background: linear-gradient(to bottom,#E47172 0%,#E68181 100%);*/
|
||||
/*}*/
|
||||
/*.call-btn.none {*/
|
||||
/*display: none;*/
|
||||
/*}*/
|
||||
/*.del-num:hover,*/
|
||||
/*.del-all:hover,*/
|
||||
/*.call-btn:hover{*/
|
||||
/*color: #fff;*/
|
||||
/*opacity: 0.8;*/
|
||||
/*}*/
|
||||
/*.call-icon {*/
|
||||
/*display: inline-block;*/
|
||||
/*vertical-align: middle;*/
|
||||
/*width: 28px;*/
|
||||
/*height: 28px;*/
|
||||
/*background: url(../../static/images/dianhua.png);*/
|
||||
/*margin-right: 15px;*/
|
||||
/*}*/
|
||||
/*.del-all {*/
|
||||
/*position: absolute;*/
|
||||
/*display: block;*/
|
||||
/*width: 30px;*/
|
||||
/*top: 0;*/
|
||||
/*right: 0;*/
|
||||
/*bottom: 0;*/
|
||||
/*background: url(../../static/images/close.png) no-repeat center center;*/
|
||||
/*}*/
|
||||
/*.del-num {*/
|
||||
/*position: absolute;*/
|
||||
/*display: block;*/
|
||||
/*width: 30px;*/
|
||||
/*top: 0;*/
|
||||
/*right: 30px;*/
|
||||
/*bottom: 0;*/
|
||||
/*background: url(../../static/images/quchu.png) no-repeat center center;*/
|
||||
/*}*/
|
||||
|
||||
|
||||
/*new 弹窗样式*/
|
||||
|
||||
.call-warp {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
-webkit-transform: translateX(-50%) translateY(-50%);
|
||||
-moz-transform: translateX(-50%) translateY(-50%);
|
||||
-o-transform: translateX(-50%) translateY(-50%);
|
||||
-ms-transform: translateX(-50%) translateY(-50%);
|
||||
transform: translateX(-50%) translateY(-50%);
|
||||
width: 240px;
|
||||
margin: 0 auto;
|
||||
padding: 15px;
|
||||
border: 1px solid rgba(0, 0, 0, .2);
|
||||
border-radius: 8px;
|
||||
outline: 0;
|
||||
-webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
|
||||
box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
|
||||
}
|
||||
.call-input {
|
||||
position: relative;
|
||||
}
|
||||
.call-input input {
|
||||
width: 100%;
|
||||
font-size: 16px;
|
||||
height: 30px;
|
||||
padding: 15px 60px 15px 10px;
|
||||
border: 1px solid #D8D8D8;
|
||||
}
|
||||
.call-input input.error-tips {
|
||||
border: 1px solid #e78081;
|
||||
}
|
||||
.number-key {
|
||||
padding: 5px 0 10px;
|
||||
overflow: hidden;
|
||||
}
|
||||
.number-key>a {
|
||||
display: block;
|
||||
float: left;
|
||||
width: 33.3333%;
|
||||
box-sizing: border-box;
|
||||
border: 1px solid #D8D8D8;
|
||||
border-top: none;
|
||||
border-right: none;
|
||||
text-align: center;
|
||||
line-height: 30px;
|
||||
color: #333;
|
||||
font-size: 18px;
|
||||
font-weight: bold;
|
||||
}
|
||||
.number-key>a:hover {
|
||||
background: #eee;
|
||||
}
|
||||
.number-key>a:first-child,
|
||||
.number-key>a:nth-child(2),
|
||||
.number-key>a:nth-child(3) {
|
||||
border-top: 1px solid #D8D8D8;
|
||||
}
|
||||
.number-key>a:nth-child(3n) {
|
||||
border-right: 1px solid #D8D8D8;
|
||||
}
|
||||
.call-btn {
|
||||
display: block;
|
||||
font-size: 14px;
|
||||
text-align: center;
|
||||
border-radius: 4px;
|
||||
color: #fff;
|
||||
line-height: 36px;
|
||||
background: -moz-linear-gradient(top, #02BB92 0%, #09CBA1 100%);
|
||||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#02BB92), color-stop(100%,#09CBA1));
|
||||
background: -webkit-linear-gradient(top, #02BB92 0%,#09CBA1 100%);
|
||||
background: -o-linear-gradient(top, #02BB92 0%,#09CBA1 100%);
|
||||
background: -ms-linear-gradient(top, #02BB92 0%,#09CBA1 100%);
|
||||
background: linear-gradient(to bottom, #02BB92 0%,#09CBA1 100%);
|
||||
}
|
||||
.call-btn.down{
|
||||
background: -moz-linear-gradient(top, #E47172 0%, #E68181 100%);
|
||||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#E47172), color-stop(100%,#E68181));
|
||||
background: -webkit-linear-gradient(top,#E47172 0%,#E68181 100%);
|
||||
background: -o-linear-gradient(top, #E47172 0%,#E68181 100%);
|
||||
background: -ms-linear-gradient(top, #E47172 0%,#E68181 100%);
|
||||
background: linear-gradient(to bottom,#E47172 0%,#E68181 100%);
|
||||
}
|
||||
.call-btn.none {
|
||||
display: none;
|
||||
}
|
||||
.del-num:hover,
|
||||
.del-all:hover,
|
||||
.call-btn:hover{
|
||||
color: #fff;
|
||||
opacity: 0.8;
|
||||
}
|
||||
/*.call-icon {*/
|
||||
/*display: inline-block;*/
|
||||
/*vertical-align: middle;*/
|
||||
/*width: 28px;*/
|
||||
/*height: 28px;*/
|
||||
/*background: url(../../static/images/dianhua.png);*/
|
||||
/*margin-right: 15px;*/
|
||||
/*}*/
|
||||
.del-all {
|
||||
position: absolute;
|
||||
display: block;
|
||||
width: 30px;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background: url(./res/close.png) no-repeat center center;
|
||||
}
|
||||
.del-num {
|
||||
position: absolute;
|
||||
display: block;
|
||||
width: 30px;
|
||||
top: 0;
|
||||
right: 30px;
|
||||
bottom: 0;
|
||||
background: url(./res/quchu.png) no-repeat center center;
|
||||
}
|
||||
|
|
@ -0,0 +1,96 @@
|
|||
@extends('admin.base')
|
||||
|
||||
@section('content')
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-header layuiadmin-card-header-auto">
|
||||
<form class="layui-form">
|
||||
<button class="layui-btn layui-btn-sm" lay-submit lay-filter="*" >搜索</button>
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label for="" class="layui-form-label">用户</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="user_id">
|
||||
<option value=""></option>
|
||||
@foreach($users as $user)
|
||||
<option value="{{$user->id}}">{{$user->nickname}}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label for="" class="layui-form-label">呼叫时间</label>
|
||||
<div class="layui-input-inline" style="width: 160px">
|
||||
<input type="text" name="start_stamp_start" id="start_stamp_start" class="layui-input" placeholder="开始时间">
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux">-</div>
|
||||
<div class="layui-input-inline" style="width: 160px">
|
||||
<input type="text" name="start_stamp_end" id="start_stamp_end" class="layui-input" placeholder="结束时间">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="layui-card-body">
|
||||
<table id="dataTable" lay-filter="dataTable"></table>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('script')
|
||||
<script>
|
||||
layui.use(['layer','table','form','laydate'],function () {
|
||||
var $ = layui.jquery;
|
||||
var layer = layui.layer;
|
||||
var form = layui.form;
|
||||
var table = layui.table;
|
||||
var laydate = layui.laydate;
|
||||
//用户表格初始化
|
||||
var dataTable = table.render({
|
||||
elem: '#dataTable'
|
||||
,height: 500
|
||||
,url: "{{ route('admin.cdr.count') }}" //数据接口
|
||||
,page: false //开启分页
|
||||
,cols: [[
|
||||
{align: 'center', title: '用户', rowspan: 2,field:'nickname'},
|
||||
{align: 'center', title: '当日', colspan: 5},
|
||||
{align: 'center', title: '本周', colspan: 5},
|
||||
{align: 'center', title: '本月', colspan: 5},
|
||||
],[ //表头
|
||||
|
||||
{field: 'todayCalls', title: '呼出', sort: true,align: 'center',style:'color:red'}
|
||||
,{field: 'todaySuccessCalls', title: '接通', sort: true,align: 'center',style:'color:green'}
|
||||
,{field: 'todayRateCalls', title: '接通率', sort: true,align: 'center',style:'color:#0000FF'}
|
||||
,{field: 'todayThirtyCalls', title: '30秒以上', sort: true,align: 'center',}
|
||||
,{field: 'todaySixtyCalls', title: '60秒以上', sort: true,align: 'center',}
|
||||
|
||||
,{field: 'weekCalls', title: '呼出', sort: true,align: 'center',style:'color:red'}
|
||||
,{field: 'weekSuccessCalls', title: '接通', sort: true,align: 'center',style:'color:green'}
|
||||
,{field: 'weekRateCalls', title: '接通率', sort: true,align: 'center',style:'color:#0000FF'}
|
||||
,{field: 'weekThirtyCalls', title: '30秒以上', sort: true,align: 'center',}
|
||||
,{field: 'weekSixtyCalls', title: '60秒以上', sort: true,align: 'center',}
|
||||
|
||||
,{field: 'monthCalls', title: '呼出', sort: true,align: 'center',style:'color:red'}
|
||||
,{field: 'monthSuccessCalls', title: '接通', sort: true,align: 'center',style:'color:green'}
|
||||
,{field: 'monthRateCalls', title: '接通率', sort: true,align: 'center',style:'color:#0000FF'}
|
||||
,{field: 'monthThirtyCalls', title: '30秒以上', sort: true,align: 'center',}
|
||||
,{field: 'monthSixtyCalls', title: '60秒以上', sort: true,align: 'center',}
|
||||
|
||||
]]
|
||||
});
|
||||
|
||||
//时间选择
|
||||
laydate.render({type: 'datetime', elem: '#start_stamp_start'});
|
||||
laydate.render({type: 'datetime', elem: '#start_stamp_end'});
|
||||
|
||||
//监听搜索提交
|
||||
form.on('submit(*)', function(data){
|
||||
dataTable.reload({
|
||||
where: data.field,
|
||||
page: {curr:1}
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
})
|
||||
</script>
|
||||
@endsection
|
||||
|
|
@ -139,7 +139,7 @@
|
|||
</div>
|
||||
<div class="layui-col-md12">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-header">最近15天数据</div>
|
||||
<div class="layui-card-header">图表数据</div>
|
||||
<div class="layui-card-body">
|
||||
<div class="layui-row layui-col-space30">
|
||||
<div class="layui-col-md6">
|
||||
|
|
|
|||
|
|
@ -0,0 +1,182 @@
|
|||
@extends('admin.base')
|
||||
|
||||
@section('content')
|
||||
<link rel="stylesheet" href="/layuiadmin/style/keyboard-call.css">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-header layuiadmin-card-header-auto">
|
||||
<h2>在线拨号</h2>
|
||||
</div>
|
||||
<div class="layui-card-body">
|
||||
<div class="body-main" style="min-height: 720px;">
|
||||
<div class="call-warp">
|
||||
<div class="call-input">
|
||||
<input type="text" id="telNum" autofocus="autofocus" style="box-sizing:border-box"/>
|
||||
<a href="javascript:void(0)" class="del-num"></a>
|
||||
<a href="javascript:void(0)" class="del-all"></a>
|
||||
</div>
|
||||
<div class="number-key" id="number">
|
||||
<a href="javascript:void(0)">1</a>
|
||||
<a href="javascript:void(0)">2</a>
|
||||
<a href="javascript:void(0)">3</a>
|
||||
<a href="javascript:void(0)">4</a>
|
||||
<a href="javascript:void(0)">5</a>
|
||||
<a href="javascript:void(0)">6</a>
|
||||
<a href="javascript:void(0)">7</a>
|
||||
<a href="javascript:void(0)">8</a>
|
||||
<a href="javascript:void(0)">9</a>
|
||||
<a href="javascript:void(0)">*</a>
|
||||
<a href="javascript:void(0)">0</a>
|
||||
<a href="javascript:void(0)">#</a>
|
||||
</div>
|
||||
<a href="javascript:void(0)" class="call-btn">
|
||||
<i class="call-icon"></i>
|
||||
<span class="inline">呼 叫</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('script')
|
||||
<script>
|
||||
layui.use(['form','element','table', 'layer','upload'],function() {
|
||||
var $ = layui.jquery;
|
||||
var form = layui.form;
|
||||
var element = layui.element;
|
||||
var table = layui.table;
|
||||
var layer = layui.layer;
|
||||
var upload = layui.upload;
|
||||
|
||||
$('#number').children().click(function () {
|
||||
var num = $(this).text();
|
||||
var showNum = $('#telNum').val();
|
||||
$('#telNum').val(showNum + num);
|
||||
});
|
||||
$(document).keydown(function (e) {
|
||||
var keyNum = e.keyCode;
|
||||
var showNum = $('#telNum').val();
|
||||
var num = '';
|
||||
if (keyNum == 13) {
|
||||
markCall();
|
||||
}
|
||||
if (e.target.id == 'telNum') {
|
||||
} else {
|
||||
if (!e.shiftKey) {
|
||||
switch (keyNum) {
|
||||
case 96:
|
||||
num = 0;
|
||||
break;
|
||||
case 48:
|
||||
num = 0;
|
||||
break;
|
||||
case 97:
|
||||
num = 1;
|
||||
break;
|
||||
case 49:
|
||||
num = 1;
|
||||
break;
|
||||
case 98:
|
||||
num = 2;
|
||||
break;
|
||||
case 50:
|
||||
num = 2;
|
||||
break;
|
||||
case 99:
|
||||
num = 3;
|
||||
break;
|
||||
case 51:
|
||||
num = 3;
|
||||
break;
|
||||
case 100:
|
||||
num = 4;
|
||||
break;
|
||||
case 52:
|
||||
num = 4;
|
||||
break;
|
||||
case 101:
|
||||
num = 5;
|
||||
break;
|
||||
case 53:
|
||||
num = 5;
|
||||
break;
|
||||
case 102:
|
||||
num = 6;
|
||||
break;
|
||||
case 54:
|
||||
num = 6;
|
||||
break;
|
||||
case 103:
|
||||
num = 7;
|
||||
break;
|
||||
case 55:
|
||||
num = 7;
|
||||
break;
|
||||
case 104:
|
||||
num = 8;
|
||||
break;
|
||||
case 56:
|
||||
num = 8;
|
||||
break;
|
||||
case 105:
|
||||
num = 9;
|
||||
break;
|
||||
case 57:
|
||||
num = 9;
|
||||
break;
|
||||
case 106:
|
||||
num = "*";
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (keyNum) {
|
||||
case 51:
|
||||
num = "#";
|
||||
break;
|
||||
case 56:
|
||||
num = "*";
|
||||
break;
|
||||
}
|
||||
}
|
||||
switch (keyNum) {
|
||||
//回删一个
|
||||
case 8:
|
||||
delStr();
|
||||
num = '';
|
||||
return false;
|
||||
//回删所有
|
||||
case 46:
|
||||
$('#telNum').val('')
|
||||
num = '';
|
||||
return false;
|
||||
}
|
||||
|
||||
$('#telNum').val(showNum + num);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
$('.del-num').click(function () {
|
||||
delStr();
|
||||
});
|
||||
$('.del-all').click(function () {
|
||||
$('#telNum').val('');
|
||||
});
|
||||
$('.call-btn').click(function () {
|
||||
markCall();
|
||||
});
|
||||
|
||||
function markCall() {
|
||||
var phone = $("#telNum").val();
|
||||
$("#telNum").val(phone.replace(/\s/g, ""));
|
||||
call(phone);
|
||||
}
|
||||
function delStr() {
|
||||
var telStr = $('#telNum').val();
|
||||
telStr = telStr.substr(0, telStr.length - 1);
|
||||
$('#telNum').val(telStr);
|
||||
}
|
||||
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
|
|
@ -90,6 +90,11 @@
|
|||
<a lay-href="{{route('admin.index')}}">控制台</a>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="layui-nav-child">
|
||||
<dd data-name="console">
|
||||
<a lay-href="{{route('admin.index.onlinecall')}}">在线拨号</a>
|
||||
</dd>
|
||||
</dl>
|
||||
</li>
|
||||
@foreach(\Illuminate\Support\Facades\Cache::get('menus') as $menu1)
|
||||
<li data-name="{{$menu1['name']}}" class="layui-nav-item">
|
||||
|
|
|
|||
|
|
@ -27,6 +27,8 @@ Route::group(['namespace'=>'Admin','prefix'=>'admin','middleware'=>'auth'],funct
|
|||
Route::get('/index','IndexController@index')->name('admin.index');
|
||||
//后台首页图表统计
|
||||
Route::post('/index/chart','IndexController@chart')->name('admin.index.chart');
|
||||
//在线拨号
|
||||
Route::get('/index/onlinecall','IndexController@onlinecall')->name('admin.index.onlinecall');
|
||||
});
|
||||
|
||||
/*
|
||||
|
|
@ -372,5 +374,5 @@ Route::group(['namespace'=>'Admin','prefix'=>'admin','middleware'=>['auth','perm
|
|||
Route::get('cdr/{uuid}/download','CdrController@download')->name('admin.cdr.download')->middleware('permission:data.cdr.download');
|
||||
|
||||
});
|
||||
|
||||
Route::get('cdr/count','CdrController@count')->name('admin.cdr.count')->middleware('permission:data.cdr.count');
|
||||
});
|
||||
|
|
@ -6,11 +6,17 @@ $vendorDir = dirname(dirname(__FILE__));
|
|||
$baseDir = dirname($vendorDir);
|
||||
|
||||
return array(
|
||||
'App\\Console\\Commands\\asrListen' => $baseDir . '/app/Console/Commands/asrListen.php',
|
||||
'App\\Console\\Commands\\asrRecord' => $baseDir . '/app/Console/Commands/asrRecord.php',
|
||||
'App\\Console\\Commands\\callcenterListen' => $baseDir . '/app/Console/Commands/callcenterListen.php',
|
||||
'App\\Console\\Commands\\callcenterRun' => $baseDir . '/app/Console/Commands/callcenterRun.php',
|
||||
'App\\Console\\Commands\\submeter' => $baseDir . '/app/Console/Commands/submeter.php',
|
||||
'App\\Console\\Kernel' => $baseDir . '/app/Console/Kernel.php',
|
||||
'App\\Exceptions\\Handler' => $baseDir . '/app/Exceptions/Handler.php',
|
||||
'App\\Exports\\ProjectExport' => $baseDir . '/app/Exports/ProjectExport.php',
|
||||
'App\\Http\\Controllers\\Admin\\ActionController' => $baseDir . '/app/Http/Controllers/Admin/ActionController.php',
|
||||
'App\\Http\\Controllers\\Admin\\AgentController' => $baseDir . '/app/Http/Controllers/Admin/AgentController.php',
|
||||
'App\\Http\\Controllers\\Admin\\CdrController' => $baseDir . '/app/Http/Controllers/Admin/CdrController.php',
|
||||
'App\\Http\\Controllers\\Admin\\ConditionController' => $baseDir . '/app/Http/Controllers/Admin/ConditionController.php',
|
||||
'App\\Http\\Controllers\\Admin\\DepartmentController' => $baseDir . '/app/Http/Controllers/Admin/DepartmentController.php',
|
||||
'App\\Http\\Controllers\\Admin\\ExtensionController' => $baseDir . '/app/Http/Controllers/Admin/ExtensionController.php',
|
||||
|
|
@ -23,16 +29,13 @@ return array(
|
|||
'App\\Http\\Controllers\\Admin\\ProjectController' => $baseDir . '/app/Http/Controllers/Admin/ProjectController.php',
|
||||
'App\\Http\\Controllers\\Admin\\ProjectDesignController' => $baseDir . '/app/Http/Controllers/Admin/ProjectDesignController.php',
|
||||
'App\\Http\\Controllers\\Admin\\QueueController' => $baseDir . '/app/Http/Controllers/Admin/QueueController.php',
|
||||
'App\\Http\\Controllers\\Admin\\RemindController' => $baseDir . '/app/Http/Controllers/Admin/RemindController.php',
|
||||
'App\\Http\\Controllers\\Admin\\RoleController' => $baseDir . '/app/Http/Controllers/Admin/RoleController.php',
|
||||
'App\\Http\\Controllers\\Admin\\SipController' => $baseDir . '/app/Http/Controllers/Admin/SipController.php',
|
||||
'App\\Http\\Controllers\\Admin\\TaskController' => $baseDir . '/app/Http/Controllers/Admin/TaskController.php',
|
||||
'App\\Http\\Controllers\\Admin\\UserController' => $baseDir . '/app/Http/Controllers/Admin/UserController.php',
|
||||
'App\\Http\\Controllers\\Auth\\ConfirmPasswordController' => $baseDir . '/app/Http/Controllers/Auth/ConfirmPasswordController.php',
|
||||
'App\\Http\\Controllers\\Auth\\ForgotPasswordController' => $baseDir . '/app/Http/Controllers/Auth/ForgotPasswordController.php',
|
||||
'App\\Http\\Controllers\\Auth\\LoginController' => $baseDir . '/app/Http/Controllers/Auth/LoginController.php',
|
||||
'App\\Http\\Controllers\\Auth\\RegisterController' => $baseDir . '/app/Http/Controllers/Auth/RegisterController.php',
|
||||
'App\\Http\\Controllers\\Auth\\ResetPasswordController' => $baseDir . '/app/Http/Controllers/Auth/ResetPasswordController.php',
|
||||
'App\\Http\\Controllers\\Auth\\VerificationController' => $baseDir . '/app/Http/Controllers/Auth/VerificationController.php',
|
||||
'App\\Http\\Controllers\\Admin\\WasteController' => $baseDir . '/app/Http/Controllers/Admin/WasteController.php',
|
||||
'App\\Http\\Controllers\\ApiController' => $baseDir . '/app/Http/Controllers/ApiController.php',
|
||||
'App\\Http\\Controllers\\Controller' => $baseDir . '/app/Http/Controllers/Controller.php',
|
||||
'App\\Http\\Kernel' => $baseDir . '/app/Http/Kernel.php',
|
||||
'App\\Http\\Middleware\\Authenticate' => $baseDir . '/app/Http/Middleware/Authenticate.php',
|
||||
|
|
@ -67,6 +70,7 @@ return array(
|
|||
'App\\Models\\Action' => $baseDir . '/app/Models/Action.php',
|
||||
'App\\Models\\Agent' => $baseDir . '/app/Models/Agent.php',
|
||||
'App\\Models\\Call' => $baseDir . '/app/Models/Call.php',
|
||||
'App\\Models\\Cdr' => $baseDir . '/app/Models/Cdr.php',
|
||||
'App\\Models\\Condition' => $baseDir . '/app/Models/Condition.php',
|
||||
'App\\Models\\Department' => $baseDir . '/app/Models/Department.php',
|
||||
'App\\Models\\Extension' => $baseDir . '/app/Models/Extension.php',
|
||||
|
|
|
|||
|
|
@ -87,4 +87,6 @@ return array(
|
|||
'ed962a97bd972bc82007176b647d4e36' => $vendorDir . '/facade/ignition/src/helpers.php',
|
||||
'5e8fe2a5ffaded85af682684fe3bbf5a' => $vendorDir . '/mews/captcha/src/helpers.php',
|
||||
'377b22b161c09ed6e5152de788ca020a' => $vendorDir . '/spatie/laravel-permission/src/helpers.php',
|
||||
'a38b85dec9d83a5d3b31723990f6f122' => $baseDir . '/bootstrap/Freeswitchesl.php',
|
||||
'14cd3a4930749f01c4f7f007ebf2139a' => $baseDir . '/bootstrap/Snowflake.php',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -88,6 +88,8 @@ class ComposerStaticInita823d0d9fdfb372460e15358f4fe1e65
|
|||
'ed962a97bd972bc82007176b647d4e36' => __DIR__ . '/..' . '/facade/ignition/src/helpers.php',
|
||||
'5e8fe2a5ffaded85af682684fe3bbf5a' => __DIR__ . '/..' . '/mews/captcha/src/helpers.php',
|
||||
'377b22b161c09ed6e5152de788ca020a' => __DIR__ . '/..' . '/spatie/laravel-permission/src/helpers.php',
|
||||
'a38b85dec9d83a5d3b31723990f6f122' => __DIR__ . '/../..' . '/bootstrap/Freeswitchesl.php',
|
||||
'14cd3a4930749f01c4f7f007ebf2139a' => __DIR__ . '/../..' . '/bootstrap/Snowflake.php',
|
||||
);
|
||||
|
||||
public static $prefixLengthsPsr4 = array (
|
||||
|
|
@ -527,11 +529,17 @@ class ComposerStaticInita823d0d9fdfb372460e15358f4fe1e65
|
|||
);
|
||||
|
||||
public static $classMap = array (
|
||||
'App\\Console\\Commands\\asrListen' => __DIR__ . '/../..' . '/app/Console/Commands/asrListen.php',
|
||||
'App\\Console\\Commands\\asrRecord' => __DIR__ . '/../..' . '/app/Console/Commands/asrRecord.php',
|
||||
'App\\Console\\Commands\\callcenterListen' => __DIR__ . '/../..' . '/app/Console/Commands/callcenterListen.php',
|
||||
'App\\Console\\Commands\\callcenterRun' => __DIR__ . '/../..' . '/app/Console/Commands/callcenterRun.php',
|
||||
'App\\Console\\Commands\\submeter' => __DIR__ . '/../..' . '/app/Console/Commands/submeter.php',
|
||||
'App\\Console\\Kernel' => __DIR__ . '/../..' . '/app/Console/Kernel.php',
|
||||
'App\\Exceptions\\Handler' => __DIR__ . '/../..' . '/app/Exceptions/Handler.php',
|
||||
'App\\Exports\\ProjectExport' => __DIR__ . '/../..' . '/app/Exports/ProjectExport.php',
|
||||
'App\\Http\\Controllers\\Admin\\ActionController' => __DIR__ . '/../..' . '/app/Http/Controllers/Admin/ActionController.php',
|
||||
'App\\Http\\Controllers\\Admin\\AgentController' => __DIR__ . '/../..' . '/app/Http/Controllers/Admin/AgentController.php',
|
||||
'App\\Http\\Controllers\\Admin\\CdrController' => __DIR__ . '/../..' . '/app/Http/Controllers/Admin/CdrController.php',
|
||||
'App\\Http\\Controllers\\Admin\\ConditionController' => __DIR__ . '/../..' . '/app/Http/Controllers/Admin/ConditionController.php',
|
||||
'App\\Http\\Controllers\\Admin\\DepartmentController' => __DIR__ . '/../..' . '/app/Http/Controllers/Admin/DepartmentController.php',
|
||||
'App\\Http\\Controllers\\Admin\\ExtensionController' => __DIR__ . '/../..' . '/app/Http/Controllers/Admin/ExtensionController.php',
|
||||
|
|
@ -544,16 +552,13 @@ class ComposerStaticInita823d0d9fdfb372460e15358f4fe1e65
|
|||
'App\\Http\\Controllers\\Admin\\ProjectController' => __DIR__ . '/../..' . '/app/Http/Controllers/Admin/ProjectController.php',
|
||||
'App\\Http\\Controllers\\Admin\\ProjectDesignController' => __DIR__ . '/../..' . '/app/Http/Controllers/Admin/ProjectDesignController.php',
|
||||
'App\\Http\\Controllers\\Admin\\QueueController' => __DIR__ . '/../..' . '/app/Http/Controllers/Admin/QueueController.php',
|
||||
'App\\Http\\Controllers\\Admin\\RemindController' => __DIR__ . '/../..' . '/app/Http/Controllers/Admin/RemindController.php',
|
||||
'App\\Http\\Controllers\\Admin\\RoleController' => __DIR__ . '/../..' . '/app/Http/Controllers/Admin/RoleController.php',
|
||||
'App\\Http\\Controllers\\Admin\\SipController' => __DIR__ . '/../..' . '/app/Http/Controllers/Admin/SipController.php',
|
||||
'App\\Http\\Controllers\\Admin\\TaskController' => __DIR__ . '/../..' . '/app/Http/Controllers/Admin/TaskController.php',
|
||||
'App\\Http\\Controllers\\Admin\\UserController' => __DIR__ . '/../..' . '/app/Http/Controllers/Admin/UserController.php',
|
||||
'App\\Http\\Controllers\\Auth\\ConfirmPasswordController' => __DIR__ . '/../..' . '/app/Http/Controllers/Auth/ConfirmPasswordController.php',
|
||||
'App\\Http\\Controllers\\Auth\\ForgotPasswordController' => __DIR__ . '/../..' . '/app/Http/Controllers/Auth/ForgotPasswordController.php',
|
||||
'App\\Http\\Controllers\\Auth\\LoginController' => __DIR__ . '/../..' . '/app/Http/Controllers/Auth/LoginController.php',
|
||||
'App\\Http\\Controllers\\Auth\\RegisterController' => __DIR__ . '/../..' . '/app/Http/Controllers/Auth/RegisterController.php',
|
||||
'App\\Http\\Controllers\\Auth\\ResetPasswordController' => __DIR__ . '/../..' . '/app/Http/Controllers/Auth/ResetPasswordController.php',
|
||||
'App\\Http\\Controllers\\Auth\\VerificationController' => __DIR__ . '/../..' . '/app/Http/Controllers/Auth/VerificationController.php',
|
||||
'App\\Http\\Controllers\\Admin\\WasteController' => __DIR__ . '/../..' . '/app/Http/Controllers/Admin/WasteController.php',
|
||||
'App\\Http\\Controllers\\ApiController' => __DIR__ . '/../..' . '/app/Http/Controllers/ApiController.php',
|
||||
'App\\Http\\Controllers\\Controller' => __DIR__ . '/../..' . '/app/Http/Controllers/Controller.php',
|
||||
'App\\Http\\Kernel' => __DIR__ . '/../..' . '/app/Http/Kernel.php',
|
||||
'App\\Http\\Middleware\\Authenticate' => __DIR__ . '/../..' . '/app/Http/Middleware/Authenticate.php',
|
||||
|
|
@ -588,6 +593,7 @@ class ComposerStaticInita823d0d9fdfb372460e15358f4fe1e65
|
|||
'App\\Models\\Action' => __DIR__ . '/../..' . '/app/Models/Action.php',
|
||||
'App\\Models\\Agent' => __DIR__ . '/../..' . '/app/Models/Agent.php',
|
||||
'App\\Models\\Call' => __DIR__ . '/../..' . '/app/Models/Call.php',
|
||||
'App\\Models\\Cdr' => __DIR__ . '/../..' . '/app/Models/Cdr.php',
|
||||
'App\\Models\\Condition' => __DIR__ . '/../..' . '/app/Models/Condition.php',
|
||||
'App\\Models\\Department' => __DIR__ . '/../..' . '/app/Models/Department.php',
|
||||
'App\\Models\\Extension' => __DIR__ . '/../..' . '/app/Models/Extension.php',
|
||||
|
|
|
|||
Loading…
Reference in New Issue