Showing preview only (3,761K chars total). Download the full file or copy to clipboard to get everything.
Repository: zzDylan/faka
Branch: master
Commit: dab9082b1fa6
Files: 399
Total size: 3.4 MB
Directory structure:
gitextract_cj07zfd2/
├── .gitattributes
├── .gitignore
├── app/
│ ├── Admin/
│ │ ├── Controllers/
│ │ │ ├── AuthController.php
│ │ │ ├── CardController.php
│ │ │ ├── CategoryController.php
│ │ │ ├── EmailTemplateController.php
│ │ │ ├── ExampleController.php
│ │ │ ├── GoodsController.php
│ │ │ ├── HomeController.php
│ │ │ └── OrderController.php
│ │ ├── Extensions/
│ │ │ ├── OrdersExporter.php
│ │ │ └── Tools/
│ │ │ └── HandleOrders.php
│ │ ├── bootstrap.php
│ │ └── routes.php
│ ├── Console/
│ │ └── Kernel.php
│ ├── Events/
│ │ └── OrderShipped.php
│ ├── Exceptions/
│ │ └── Handler.php
│ ├── Http/
│ │ ├── Controllers/
│ │ │ ├── BaseController.php
│ │ │ ├── Controller.php
│ │ │ ├── GoodsController.php
│ │ │ ├── IndexController.php
│ │ │ ├── NotifyController.php
│ │ │ ├── OrderController.php
│ │ │ ├── ReceivePushController.php
│ │ │ ├── TestController.php
│ │ │ ├── UploadController.php
│ │ │ └── WechatMenuController.php
│ │ ├── Kernel.php
│ │ └── Middleware/
│ │ ├── EncryptCookies.php
│ │ ├── OAuthAuthenticate.php
│ │ ├── RedirectIfAuthenticated.php
│ │ ├── SiteOpenIf.php
│ │ ├── TrimStrings.php
│ │ ├── TrustProxies.php
│ │ └── VerifyCsrfToken.php
│ ├── Listeners/
│ │ └── SendShipmentNotification.php
│ ├── Mail/
│ │ └── OrderShipped.php
│ ├── Models/
│ │ ├── Card.php
│ │ ├── Category.php
│ │ ├── EmailTemplate.php
│ │ ├── Goods.php
│ │ ├── Order.php
│ │ ├── WechatMaterial.php
│ │ └── WechatUser.php
│ ├── Providers/
│ │ ├── AppServiceProvider.php
│ │ ├── AuthServiceProvider.php
│ │ ├── BroadcastServiceProvider.php
│ │ ├── EventServiceProvider.php
│ │ └── RouteServiceProvider.php
│ └── Services/
│ ├── FileUploadTool.php
│ └── PersonalPay.php
├── artisan
├── bootstrap/
│ ├── app.php
│ ├── cache/
│ │ └── .gitignore
│ └── helpers.php
├── composer.json
├── config/
│ ├── admin.php
│ ├── app.php
│ ├── auth.php
│ ├── broadcasting.php
│ ├── cache.php
│ ├── captcha.php
│ ├── database.php
│ ├── excel.php
│ ├── filesystems.php
│ ├── mail.php
│ ├── payjs.php
│ ├── personal_pay.php
│ ├── queue.php
│ ├── services.php
│ ├── session.php
│ ├── view.php
│ └── wechat.php
├── database/
│ ├── .gitignore
│ ├── factories/
│ │ └── UserFactory.php
│ ├── migrations/
│ │ ├── 2019_08_13_120928_create_admin_menu_table.php
│ │ ├── 2019_08_13_120928_create_admin_operation_log_table.php
│ │ ├── 2019_08_13_120928_create_admin_permissions_table.php
│ │ ├── 2019_08_13_120928_create_admin_role_menu_table.php
│ │ ├── 2019_08_13_120928_create_admin_role_permissions_table.php
│ │ ├── 2019_08_13_120928_create_admin_role_users_table.php
│ │ ├── 2019_08_13_120928_create_admin_roles_table.php
│ │ ├── 2019_08_13_120928_create_admin_user_permissions_table.php
│ │ ├── 2019_08_13_120928_create_admin_users_table.php
│ │ ├── 2019_08_13_120928_create_cards_table.php
│ │ ├── 2019_08_13_120928_create_failed_jobs_table.php
│ │ ├── 2019_08_13_120928_create_goods_categories_table.php
│ │ ├── 2019_08_13_120928_create_goods_table.php
│ │ ├── 2019_08_13_120928_create_jobs_table.php
│ │ ├── 2019_08_13_120928_create_orders_table.php
│ │ └── 2019_08_13_173337_create_email_templates_table.php
│ └── seeds/
│ ├── AdminConfigTableSeeder.php
│ ├── AdminMenuTableSeeder.php
│ ├── AdminPermissionsTableSeeder.php
│ ├── AdminRoleMenuTableSeeder.php
│ ├── AdminRolePermissionsTableSeeder.php
│ ├── AdminRoleUsersTableSeeder.php
│ ├── AdminRolesTableSeeder.php
│ ├── AdminUsersTableSeeder.php
│ ├── DatabaseSeeder.php
│ ├── EmailTemplatesTableSeeder.php
│ ├── GoodsCategoriesTableSeeder.php
│ └── GoodsTableSeeder.php
├── package.json
├── phpunit.xml
├── public/
│ ├── .htaccess
│ ├── .user.ini
│ ├── css/
│ │ ├── app.css
│ │ └── mobile_pay.css
│ ├── index.php
│ ├── js/
│ │ └── app.js
│ ├── layui/
│ │ ├── css/
│ │ │ ├── layui.css
│ │ │ ├── layui.mobile.css
│ │ │ └── modules/
│ │ │ ├── code.css
│ │ │ ├── laydate/
│ │ │ │ └── default/
│ │ │ │ └── laydate.css
│ │ │ └── layer/
│ │ │ └── default/
│ │ │ └── layer.css
│ │ ├── lay/
│ │ │ └── modules/
│ │ │ ├── carousel.js
│ │ │ ├── code.js
│ │ │ ├── colorpicker.js
│ │ │ ├── element.js
│ │ │ ├── flow.js
│ │ │ ├── form.js
│ │ │ ├── jquery.js
│ │ │ ├── laydate.js
│ │ │ ├── layedit.js
│ │ │ ├── layer.js
│ │ │ ├── laypage.js
│ │ │ ├── laytpl.js
│ │ │ ├── mobile.js
│ │ │ ├── rate.js
│ │ │ ├── slider.js
│ │ │ ├── table.js
│ │ │ ├── tree.js
│ │ │ ├── upload.js
│ │ │ └── util.js
│ │ ├── layui.all.js
│ │ └── layui.js
│ ├── layuicms/
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── css/
│ │ │ ├── index.css
│ │ │ └── public.css
│ │ ├── index.html
│ │ ├── js/
│ │ │ ├── address.js
│ │ │ ├── bodyTab.js
│ │ │ ├── cache.js
│ │ │ ├── cacheUserInfo.js
│ │ │ ├── index.js
│ │ │ └── main.js
│ │ ├── json/
│ │ │ ├── address.json
│ │ │ ├── images.json
│ │ │ ├── linkList.json
│ │ │ ├── linkLogo.json
│ │ │ ├── logs.json
│ │ │ ├── navs.json
│ │ │ ├── newsImg.json
│ │ │ ├── newsList.json
│ │ │ ├── systemParameter.json
│ │ │ ├── userGrade.json
│ │ │ ├── userList.json
│ │ │ └── userface.json
│ │ ├── layui/
│ │ │ ├── css/
│ │ │ │ ├── layui.css
│ │ │ │ ├── layui.mobile.css
│ │ │ │ └── modules/
│ │ │ │ ├── code.css
│ │ │ │ ├── laydate/
│ │ │ │ │ └── default/
│ │ │ │ │ └── laydate.css
│ │ │ │ └── layer/
│ │ │ │ └── default/
│ │ │ │ └── layer.css
│ │ │ ├── lay/
│ │ │ │ └── modules/
│ │ │ │ ├── carousel.js
│ │ │ │ ├── code.js
│ │ │ │ ├── element.js
│ │ │ │ ├── flow.js
│ │ │ │ ├── form.js
│ │ │ │ ├── jquery.js
│ │ │ │ ├── laydate.js
│ │ │ │ ├── layedit.js
│ │ │ │ ├── layer.js
│ │ │ │ ├── laypage.js
│ │ │ │ ├── laytpl.js
│ │ │ │ ├── mobile.js
│ │ │ │ ├── table.js
│ │ │ │ ├── tree.js
│ │ │ │ ├── upload.js
│ │ │ │ └── util.js
│ │ │ ├── layui.all.js
│ │ │ └── layui.js
│ │ └── page/
│ │ ├── 404.html
│ │ ├── doc/
│ │ │ ├── addressDoc.html
│ │ │ ├── bodyTabDoc.html
│ │ │ └── navDoc.html
│ │ ├── img/
│ │ │ ├── images.html
│ │ │ └── images.js
│ │ ├── login/
│ │ │ ├── login.html
│ │ │ └── login.js
│ │ ├── main.html
│ │ ├── news/
│ │ │ ├── newsAdd.html
│ │ │ ├── newsAdd.js
│ │ │ ├── newsList.html
│ │ │ └── newsList.js
│ │ ├── systemSetting/
│ │ │ ├── basicParameter.html
│ │ │ ├── basicParameter.js
│ │ │ ├── icons.html
│ │ │ ├── icons.js
│ │ │ ├── linkList.html
│ │ │ ├── linkList.js
│ │ │ ├── linksAdd.html
│ │ │ ├── logs.html
│ │ │ └── logs.js
│ │ └── user/
│ │ ├── changePwd.html
│ │ ├── user.js
│ │ ├── userAdd.html
│ │ ├── userAdd.js
│ │ ├── userGrade.html
│ │ ├── userInfo.html
│ │ ├── userInfo.js
│ │ ├── userList.html
│ │ └── userList.js
│ ├── mix-manifest.json
│ ├── robots.txt
│ ├── vendor/
│ │ ├── laravel-admin/
│ │ │ ├── AdminLTE/
│ │ │ │ └── plugins/
│ │ │ │ ├── bootstrap-slider/
│ │ │ │ │ ├── bootstrap-slider.js
│ │ │ │ │ └── slider.css
│ │ │ │ ├── iCheck/
│ │ │ │ │ ├── all.css
│ │ │ │ │ ├── flat/
│ │ │ │ │ │ ├── _all.css
│ │ │ │ │ │ ├── aero.css
│ │ │ │ │ │ ├── blue.css
│ │ │ │ │ │ ├── flat.css
│ │ │ │ │ │ ├── green.css
│ │ │ │ │ │ ├── grey.css
│ │ │ │ │ │ ├── orange.css
│ │ │ │ │ │ ├── pink.css
│ │ │ │ │ │ ├── purple.css
│ │ │ │ │ │ ├── red.css
│ │ │ │ │ │ └── yellow.css
│ │ │ │ │ ├── futurico/
│ │ │ │ │ │ └── futurico.css
│ │ │ │ │ ├── line/
│ │ │ │ │ │ ├── _all.css
│ │ │ │ │ │ ├── aero.css
│ │ │ │ │ │ ├── blue.css
│ │ │ │ │ │ ├── green.css
│ │ │ │ │ │ ├── grey.css
│ │ │ │ │ │ ├── line.css
│ │ │ │ │ │ ├── orange.css
│ │ │ │ │ │ ├── pink.css
│ │ │ │ │ │ ├── purple.css
│ │ │ │ │ │ ├── red.css
│ │ │ │ │ │ └── yellow.css
│ │ │ │ │ ├── minimal/
│ │ │ │ │ │ ├── _all.css
│ │ │ │ │ │ ├── aero.css
│ │ │ │ │ │ ├── blue.css
│ │ │ │ │ │ ├── green.css
│ │ │ │ │ │ ├── grey.css
│ │ │ │ │ │ ├── minimal.css
│ │ │ │ │ │ ├── orange.css
│ │ │ │ │ │ ├── pink.css
│ │ │ │ │ │ ├── purple.css
│ │ │ │ │ │ ├── red.css
│ │ │ │ │ │ └── yellow.css
│ │ │ │ │ ├── polaris/
│ │ │ │ │ │ └── polaris.css
│ │ │ │ │ └── square/
│ │ │ │ │ ├── _all.css
│ │ │ │ │ ├── aero.css
│ │ │ │ │ ├── blue.css
│ │ │ │ │ ├── green.css
│ │ │ │ │ ├── grey.css
│ │ │ │ │ ├── orange.css
│ │ │ │ │ ├── pink.css
│ │ │ │ │ ├── purple.css
│ │ │ │ │ ├── red.css
│ │ │ │ │ ├── square.css
│ │ │ │ │ └── yellow.css
│ │ │ │ ├── input-mask/
│ │ │ │ │ └── phone-codes/
│ │ │ │ │ ├── phone-be.json
│ │ │ │ │ ├── phone-codes.json
│ │ │ │ │ └── readme.txt
│ │ │ │ ├── ionslider/
│ │ │ │ │ ├── ion.rangeSlider.css
│ │ │ │ │ ├── ion.rangeSlider.skinFlat.css
│ │ │ │ │ └── ion.rangeSlider.skinNice.css
│ │ │ │ └── select2/
│ │ │ │ └── i18n/
│ │ │ │ ├── ar.js
│ │ │ │ ├── az.js
│ │ │ │ ├── bg.js
│ │ │ │ ├── ca.js
│ │ │ │ ├── cs.js
│ │ │ │ ├── da.js
│ │ │ │ ├── de.js
│ │ │ │ ├── el.js
│ │ │ │ ├── en.js
│ │ │ │ ├── es.js
│ │ │ │ ├── et.js
│ │ │ │ ├── eu.js
│ │ │ │ ├── fa.js
│ │ │ │ ├── fi.js
│ │ │ │ ├── fr.js
│ │ │ │ ├── gl.js
│ │ │ │ ├── he.js
│ │ │ │ ├── hi.js
│ │ │ │ ├── hr.js
│ │ │ │ ├── hu.js
│ │ │ │ ├── id.js
│ │ │ │ ├── is.js
│ │ │ │ ├── it.js
│ │ │ │ ├── ja.js
│ │ │ │ ├── km.js
│ │ │ │ ├── ko.js
│ │ │ │ ├── lt.js
│ │ │ │ ├── lv.js
│ │ │ │ ├── mk.js
│ │ │ │ ├── ms.js
│ │ │ │ ├── nb.js
│ │ │ │ ├── nl.js
│ │ │ │ ├── pl.js
│ │ │ │ ├── pt-BR.js
│ │ │ │ ├── pt.js
│ │ │ │ ├── ro.js
│ │ │ │ ├── ru.js
│ │ │ │ ├── sk.js
│ │ │ │ ├── sr-Cyrl.js
│ │ │ │ ├── sr.js
│ │ │ │ ├── sv.js
│ │ │ │ ├── th.js
│ │ │ │ ├── tr.js
│ │ │ │ ├── uk.js
│ │ │ │ ├── vi.js
│ │ │ │ ├── zh-CN.js
│ │ │ │ └── zh-TW.js
│ │ │ ├── bootstrap-fileinput/
│ │ │ │ └── js/
│ │ │ │ └── plugins/
│ │ │ │ ├── canvas-to-blob.js
│ │ │ │ ├── piexif.js
│ │ │ │ ├── purify.js
│ │ │ │ └── sortable.js
│ │ │ ├── bootstrap3-editable/
│ │ │ │ └── css/
│ │ │ │ └── bootstrap-editable.css
│ │ │ ├── font-awesome/
│ │ │ │ └── fonts/
│ │ │ │ └── FontAwesome.otf
│ │ │ ├── google-fonts/
│ │ │ │ └── fonts.css
│ │ │ ├── jquery-pjax/
│ │ │ │ └── jquery.pjax.js
│ │ │ ├── laravel-admin/
│ │ │ │ ├── laravel-admin.css
│ │ │ │ └── laravel-admin.js
│ │ │ ├── nestable/
│ │ │ │ ├── jquery.nestable.js
│ │ │ │ └── nestable.css
│ │ │ ├── nprogress/
│ │ │ │ ├── nprogress.css
│ │ │ │ └── nprogress.js
│ │ │ ├── number-input/
│ │ │ │ └── bootstrap-number-input.js
│ │ │ └── sweetalert2/
│ │ │ └── dist/
│ │ │ └── sweetalert2.css
│ │ └── laravel-admin-ext/
│ │ ├── material-ui/
│ │ │ └── MaterialAdminLTE/
│ │ │ └── dist/
│ │ │ └── css/
│ │ │ └── custom.css
│ │ ├── row-table/
│ │ │ └── table.css
│ │ └── wang-editor/
│ │ └── wangEditor-3.0.10/
│ │ └── release/
│ │ ├── wangEditor.css
│ │ └── wangEditor.js
│ └── web.config
├── readme.md
├── resources/
│ ├── assets/
│ │ ├── js/
│ │ │ ├── app.js
│ │ │ ├── bootstrap.js
│ │ │ └── components/
│ │ │ └── ExampleComponent.vue
│ │ └── sass/
│ │ ├── _variables.scss
│ │ └── app.scss
│ ├── lang/
│ │ ├── ar/
│ │ │ └── admin.php
│ │ ├── az/
│ │ │ └── admin.php
│ │ ├── en/
│ │ │ ├── admin.php
│ │ │ ├── auth.php
│ │ │ ├── pagination.php
│ │ │ ├── passwords.php
│ │ │ └── validation.php
│ │ ├── es/
│ │ │ └── admin.php
│ │ ├── fa/
│ │ │ └── admin.php
│ │ ├── fr/
│ │ │ └── admin.php
│ │ ├── he/
│ │ │ └── admin.php
│ │ ├── id/
│ │ │ └── admin.php
│ │ ├── ja/
│ │ │ └── admin.php
│ │ ├── ko/
│ │ │ └── admin.php
│ │ ├── ms/
│ │ │ └── admin.php
│ │ ├── nl/
│ │ │ └── admin.php
│ │ ├── pl/
│ │ │ └── admin.php
│ │ ├── pt/
│ │ │ └── admin.php
│ │ ├── pt-BR/
│ │ │ └── admin.php
│ │ ├── ru/
│ │ │ └── admin.php
│ │ ├── tr/
│ │ │ └── admin.php
│ │ ├── uk/
│ │ │ └── admin.php
│ │ ├── zh-CN/
│ │ │ ├── admin.php
│ │ │ ├── auth.php
│ │ │ └── validation.php
│ │ └── zh-TW/
│ │ └── admin.php
│ └── views/
│ ├── home/
│ │ ├── index.blade.php
│ │ ├── layout.blade.php
│ │ ├── middle.blade.php
│ │ ├── mobilePayment.blade.php
│ │ ├── payment.blade.php
│ │ ├── payment.blade.php.bak
│ │ ├── queryOrders.blade.php
│ │ ├── selectGoods.blade.php
│ │ └── siteClose.blade.php
│ ├── mail/
│ │ └── user/
│ │ └── orderNotification.blade.php
│ └── welcome.blade.php
├── routes/
│ ├── api.php
│ ├── channels.php
│ ├── console.php
│ └── web.php
├── server.php
├── storage/
│ ├── app/
│ │ └── .gitignore
│ ├── framework/
│ │ ├── .gitignore
│ │ ├── cache/
│ │ │ └── .gitignore
│ │ ├── sessions/
│ │ │ └── .gitignore
│ │ ├── testing/
│ │ │ └── .gitignore
│ │ └── views/
│ │ └── .gitignore
│ └── logs/
│ └── .gitignore
├── tests/
│ ├── CreatesApplication.php
│ ├── Feature/
│ │ └── ExampleTest.php
│ ├── TestCase.php
│ └── Unit/
│ └── ExampleTest.php
└── webpack.mix.js
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitattributes
================================================
* text=auto
*.css linguist-vendored
*.scss linguist-vendored
*.js linguist-vendored
CHANGELOG.md export-ignore
================================================
FILE: .gitignore
================================================
/node_modules
/public/hot
/public/storage
/storage/*.key
/vendor
/.idea
/.vagrant
Homestead.json
Homestead.yaml
npm-debug.log
yarn-error.log
.env
================================================
FILE: app/Admin/Controllers/AuthController.php
================================================
<?php
namespace App\Admin\Controllers;
use Encore\Admin\Controllers\AuthController as BaseAuthController;
use Encore\Admin\Facades\Admin;
use Encore\Admin\Form;
use Encore\Admin\Layout\Content;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Lang;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\Validator;
class AuthController extends BaseAuthController
{
}
================================================
FILE: app/Admin/Controllers/CardController.php
================================================
<?php
namespace App\Admin\Controllers;
use App\Models\Card;
use App\Http\Controllers\Controller;
use App\Models\Category;
use Encore\Admin\Controllers\HasResourceActions;
use Encore\Admin\Form;
use Encore\Admin\Grid;
use Encore\Admin\Layout\Content;
use Encore\Admin\Show;
use Illuminate\Support\Facades\Input;
use Carbon\Carbon;
use Illuminate\Support\MessageBag;
class CardController extends Controller
{
use HasResourceActions;
/**
* Index interface.
*
* @param Content $content
* @return Content
*/
public function index(Content $content)
{
return $content
->header('卡密')
->description('列表')
->body($this->grid());
}
/**
* Show interface.
*
* @param mixed $id
* @param Content $content
* @return Content
*/
public function show($id, Content $content)
{
return $content
->header('卡密')
->description('详情')
->body($this->detail($id));
}
/**
* Edit interface.
*
* @param mixed $id
* @param Content $content
* @return Content
*/
public function edit($id, Content $content)
{
return $content
->header('卡密')
->description('编辑')
->body($this->form()->edit($id));
}
/**
* Create interface.
*
* @param Content $content
* @return Content
*/
public function create(Content $content)
{
return $content
->header('卡密')
->description('创建')
->body($this->form());
}
/**
* Make a grid builder.
*
* @return Grid
*/
protected function grid()
{
$grid = new Grid(new Card);
$grid->actions(function ($actions) {
//$actions->disableDelete();
$actions->disableEdit();
$actions->disableView();
});
$grid->id('ID');
$grid->goods()->name('所属商品');
$grid->content('卡密');
$grid->status('状态')->display(function ($status) {
switch ($status){
case 0:
return '<span class="label label-primary">正常</span>';
case 1:
return '<span class="label label-info">已售出</span>';
}
});;
$grid->created_at('创建时间');
return $grid;
}
/**
* Make a show builder.
*
* @param mixed $id
* @return Show
*/
protected function detail($id)
{
$show = new Show(Card::findOrFail($id));
$show->id('ID');
$show->created_at('Created at');
$show->updated_at('Updated at');
return $show;
}
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
$form = new Form(new Card);
$categoryOptions = [];
$categories = Category::all();
foreach ($categories as $key => $category) {
$categoryOptions[$category->id] = $category->name;
}
$form->select('category_id', '商品分类')
->options($categoryOptions)
->load('goods_id', '/api/card_goods');
$form->select('goods_id', '商品')->rules('required', [
'required' => '请选择商品',
]);
$form->textarea('cards', '卡密列表')->help('格式:卡号----卡密 或者卡号 一行一条')
->rules('required', [
'required' => '请输入卡密',
]);
$form->select('filter', '过滤重复卡密')->options(['不过滤','过滤']);
return $form;
}
public function store()
{
$data = Input::all();
// Handle validation errors.
if ($validationMessages = $this->form()->validationMessages($data)) {
return back()->withInput()->withErrors($validationMessages);
}
$goodsId = $data['goods_id'];
$cards = explode("\r\n", $data['cards']);
$datas = [];
$contentDatas = [];
foreach ($cards as $key => $card) {
if(in_array($card,$contentDatas) && $data['filter']){
continue;
}
$contentDatas[] = $card;
$datas[$key]['content'] = $card;
$datas[$key]['goods_id'] = $goodsId;
$datas[$key]['created_at'] = Carbon::now();
}
if($data['filter']){
$existsCards = Card::whereIn('content',$cards)->get();
if(!$existsCards->isEmpty()){
$existsCardsContent = $existsCards->pluck('content')->toArray();
$existsString = implode(',',$existsCardsContent);
$error = new MessageBag([
'message' => "卡密重复({$existsString})",
]);
return back()->with(compact('error'));
}
}
Card::insert($datas);
admin_toastr(trans('admin.save_succeeded'));
$resourcesPath = $this->form()->resource(-1);
return redirect($resourcesPath.'/cards');
}
}
================================================
FILE: app/Admin/Controllers/CategoryController.php
================================================
<?php
namespace App\Admin\Controllers;
use App\Models\Category;
use App\Http\Controllers\Controller;
use Encore\Admin\Controllers\HasResourceActions;
use Encore\Admin\Form;
use Encore\Admin\Grid;
use Encore\Admin\Layout\Content;
use Encore\Admin\Show;
class CategoryController extends Controller
{
use HasResourceActions;
/**
* Index interface.
*
* @param Content $content
* @return Content
*/
public function index(Content $content)
{
return $content
->header('商品分类')
->description('列表')
->body($this->grid());
}
/**
* Show interface.
*
* @param mixed $id
* @param Content $content
* @return Content
*/
public function show($id, Content $content)
{
return $content
->header('商品分类')
->description('详情')
->body($this->detail($id));
}
/**
* Edit interface.
*
* @param mixed $id
* @param Content $content
* @return Content
*/
public function edit($id, Content $content)
{
return $content
->header('商品分类')
->description('编辑')
->body($this->form()->edit($id));
}
/**
* Create interface.
*
* @param Content $content
* @return Content
*/
public function create(Content $content)
{
return $content
->header('商品分类')
->description('创建')
->body($this->form());
}
/**
* Make a grid builder.
*
* @return Grid
*/
protected function grid()
{
$grid = new Grid(new Category);
$grid->model()->orderBy('sort','asc');
$grid->disableFilter();
$grid->disableExport();
$grid->actions(function ($actions) {
$actions->disableView();
});
$grid->id('ID');
$grid->sort('排序');
$grid->name('名称');
$grid->status('上架状态')->display(function ($status) {
return $status ? '<span class="label label-success">是</span>' : '<span class="label label-danger">否</span>';
});
$grid->created_at('Created at');
$grid->updated_at('Updated at');
return $grid;
}
/**
* Make a show builder.
*
* @param mixed $id
* @return Show
*/
protected function detail($id)
{
$show = new Show(Category::findOrFail($id));
$show->id('ID');
$show->created_at('Created at');
$show->updated_at('Updated at');
return $show;
}
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
$form = new Form(new Category);
$form->text('sort','排序')->default(0)->rules('required|numeric',[
'required' => '请输入排序',
'numeric' => '排序只能为数字',
]);
$form->text('name','分类名称')->rules('required',[
'required' => '请输入分类名称',
]);
$form->select('status', '是否上架')->options(['下架','上架'])->default(1);
$form->display('Created at');
$form->display('Updated at');
return $form;
}
}
================================================
FILE: app/Admin/Controllers/EmailTemplateController.php
================================================
<?php
namespace App\Admin\Controllers;
use App\Models\EmailTemplate;
use Encore\Admin\Controllers\AdminController;
use Encore\Admin\Form;
use Encore\Admin\Grid;
use Encore\Admin\Show;
class EmailTemplateController extends AdminController
{
/**
* Title for current resource.
*
* @var string
*/
protected $title = '邮件模板';
/**
* Make a grid builder.
*
* @return Grid
*/
protected function grid()
{
$grid = new Grid(new EmailTemplate);
$grid->column('id', 'ID')->sortable();
$grid->column('name','模板名称');
return $grid;
}
/**
* Make a show builder.
*
* @param mixed $id
* @return Show
*/
protected function detail($id)
{
$show = new Show(EmailTemplate::findOrFail($id));
return $show;
}
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
$form = new Form(new EmailTemplate);
$form->text('name', '模板名称');
$form->editor('content_blade','内容');
return $form;
}
}
================================================
FILE: app/Admin/Controllers/ExampleController.php
================================================
<?php
namespace App\Admin\Controllers;
use App\Http\Controllers\Controller;
use Encore\Admin\Controllers\HasResourceActions;
use Encore\Admin\Form;
use Encore\Admin\Grid;
use Encore\Admin\Layout\Content;
use Encore\Admin\Show;
class ExampleController extends Controller
{
use HasResourceActions;
/**
* Index interface.
*
* @param Content $content
* @return Content
*/
public function index(Content $content)
{
return $content
->header('Index')
->description('description')
->body($this->grid());
}
/**
* Show interface.
*
* @param mixed $id
* @param Content $content
* @return Content
*/
public function show($id, Content $content)
{
return $content
->header('Detail')
->description('description')
->body($this->detail($id));
}
/**
* Edit interface.
*
* @param mixed $id
* @param Content $content
* @return Content
*/
public function edit($id, Content $content)
{
return $content
->header('Edit')
->description('description')
->body($this->form()->edit($id));
}
/**
* Create interface.
*
* @param Content $content
* @return Content
*/
public function create(Content $content)
{
return $content
->header('Create')
->description('description')
->body($this->form());
}
/**
* Make a grid builder.
*
* @return Grid
*/
protected function grid()
{
$grid = new Grid(new YourModel);
$grid->id('ID')->sortable();
$grid->created_at('Created at');
$grid->updated_at('Updated at');
return $grid;
}
/**
* Make a show builder.
*
* @param mixed $id
* @return Show
*/
protected function detail($id)
{
$show = new Show(YourModel::findOrFail($id));
$show->id('ID');
$show->created_at('Created at');
$show->updated_at('Updated at');
return $show;
}
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
$form = new Form(new YourModel);
$form->display('id', 'ID');
$form->display('created_at', 'Created At');
$form->display('updated_at', 'Updated At');
return $form;
}
}
================================================
FILE: app/Admin/Controllers/GoodsController.php
================================================
<?php
namespace App\Admin\Controllers;
use App\Models\Category;
use App\Models\EmailTemplate;
use App\Models\Goods;
use App\Http\Controllers\Controller;
use Encore\Admin\Controllers\HasResourceActions;
use Encore\Admin\Form;
use Encore\Admin\Grid;
use Encore\Admin\Layout\Content;
use Encore\Admin\Show;
class GoodsController extends Controller
{
use HasResourceActions;
/**
* Index interface.
*
* @param Content $content
* @return Content
*/
public function index(Content $content)
{
return $content
->header('商品')
->description('列表')
->body($this->grid());
}
/**
* Show interface.
*
* @param mixed $id
* @param Content $content
* @return Content
*/
public function show($id, Content $content)
{
return $content
->header('商品')
->description('详情')
->body($this->detail($id));
}
/**
* Edit interface.
*
* @param mixed $id
* @param Content $content
* @return Content
*/
public function edit($id, Content $content)
{
return $content
->header('商品')
->description('编辑')
->body($this->form()->edit($id));
}
/**
* Create interface.
*
* @param Content $content
* @return Content
*/
public function create(Content $content)
{
return $content
->header('商品')
->description('创建')
->body($this->form());
}
/**
* Make a grid builder.
*
* @return Grid
*/
protected function grid()
{
$grid = new Grid(new Goods);
$grid->model()->orderBy('sort','asc');
$grid->id('ID');
$grid->sort('排序');
$grid->category()->name('分类名称');
$grid->name('商品名称');
$grid->price('商品价格');
$grid->type('商品类型')->display(function ($type) {
switch ($this->type){
case 1:
return '<span class="label label-primary">手动发卡</span>';
case 2:
return '<span class="label label-success">自动发卡</span>';
}
});
$grid->sold_count('商品销量');
$grid->column('goods_stock','商品库存')->display(function ($goodsStock) {
return $this->goodsStock();
});
$grid->status('上架状态')->display(function ($status) {
return $status ? '<span class="label label-success">是</span>' : '<span class="label label-danger">否</span>';
});
$grid->created_at('Created at');
$grid->updated_at('Updated at');
return $grid;
}
/**
* Make a show builder.
*
* @param mixed $id
* @return Show
*/
protected function detail($id)
{
$show = new Show(Goods::findOrFail($id));
$show->id('ID');
$show->created_at('Created at');
$show->updated_at('Updated at');
return $show;
}
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
$form = new Form(new Goods);
$categories = Category::all();
$categoryOptions = [];
foreach($categories as $key=>$category){
$categoryOptions[$category->id] = $category->name;
}
$form->text('sort','排序')->default(0)->rules('required|numeric',[
'required' => '请输入排序',
'numeric' => '排序只能为数字',
]);
$form->select('category_id', '所属分类')->options($categoryOptions)->rules('required',[
'required' => '请选择分类',
]);
$form->text('name','商品名称')->rules('required',[
'required' => '请输入商品名称',
]);
$form->currency('price','商品价格')->symbol('¥')->options(['digits' => 2]);
$form->editor('introduce','商品介绍');
$form->text('first_input','第一个输入框标题')->help('如商品是自动发卡请勿填写!');
$form->text('more_input','更多输入框')->help('例如 密码,大区 以英文逗号分割;如商品是自动发卡请勿填写!');
$form->number('stock','商品库存')->default(0)->help('如商品是自动发卡请勿填写,导入卡密时会自动识别');
$form->select('type','商品类型')->options([1=>'手工商品',2=>'自动发卡'])->default(1);
$form->select('status', '是否上架')->options(['下架','上架'])->default(1);
$emailTemplateOptions = [];
$emailTemplates = EmailTemplate::all();
foreach($emailTemplates as $emailTemplate){
$emailTemplateOptions[$emailTemplate->id] = $emailTemplate['name'];
}
$form->select('email_template_id', '邮件模板')->options($emailTemplateOptions)->default(1);
$form->display('Created at');
$form->display('Updated at');
return $form;
}
}
================================================
FILE: app/Admin/Controllers/HomeController.php
================================================
<?php
namespace App\Admin\Controllers;
use App\Http\Controllers\Controller;
use Encore\Admin\Controllers\Dashboard;
use Encore\Admin\Layout\Column;
use Encore\Admin\Layout\Content;
use Encore\Admin\Layout\Row;
class HomeController extends Controller
{
public function index(Content $content)
{
return $content
->header('主页')
->description('环境')
// ->row(Dashboard::title())
->row(function (Row $row) {
$row->column(12, function (Column $column) {
$column->append(Dashboard::environment());
});
// $row->column(4, function (Column $column) {
//// $column->append(Dashboard::extensions());
//// });
////
//// $row->column(4, function (Column $column) {
//// $column->append(Dashboard::dependencies());
//// });
});
}
}
================================================
FILE: app/Admin/Controllers/OrderController.php
================================================
<?php
namespace App\Admin\Controllers;
use App\Events\OrderShipped;
use App\Models\Order;
use App\Http\Controllers\Controller;
use Encore\Admin\Controllers\HasResourceActions;
use Encore\Admin\Form;
use Encore\Admin\Grid;
use Encore\Admin\Layout\Content;
use Encore\Admin\Show;
use App\Admin\Extensions\Tools\HandleOrders;
use Illuminate\Http\Request;
use App\Admin\Extensions\OrdersExporter;
class OrderController extends Controller
{
use HasResourceActions;
/**
* Index interface.
*
* @param Content $content
* @return Content
*/
public function index(Content $content)
{
return $content
->header('订单')
->description('列表')
->body($this->grid());
}
/**
* Show interface.
*
* @param mixed $id
* @param Content $content
* @return Content
*/
public function show($id, Content $content)
{
return $content
->header('Detail')
->description('description')
->body($this->detail($id));
}
/**
* Edit interface.
*
* @param mixed $id
* @param Content $content
* @return Content
*/
public function edit($id, Content $content)
{
return $content
->header('Edit')
->description('description')
->body($this->form()->edit($id));
}
/**
* Create interface.
*
* @param Content $content
* @return Content
*/
public function create(Content $content)
{
return $content
->header('Create')
->description('description')
->body($this->form());
}
/**
* Make a grid builder.
*
* @return Grid
*/
protected function grid()
{
$grid = new Grid(new Order);
$grid->exporter(new OrdersExporter());
$grid->tools(function ($tools) {
$tools->batch(function ($batch) {
$batch->add('处理成功', new HandleOrders(Order::SUCCESS));
$batch->add('处理失败', new HandleOrders(Order::ERROR));
});
});
$grid->actions(function ($actions) {
$actions->disableDelete();
$actions->disableEdit();
//$actions->disableView();
});
$grid->model()->orderBy('id', 'desc');
$grid->id('订单id');
$grid->trade_no('订单号');
$grid->name('订单名称');
$grid->goods_name('商品名称');
$grid->unit_price('商品单价');
$grid->count('购买数量');
$grid->total_price('订单总价');
$grid->pay_account('充值账号');
$grid->email('邮件');
$grid->type('订单类型')->display(function ($type) {
switch ($type) {
case 1:
return '<span class="label label-primary">手动发卡</span>';
case 2:
return '<span class="label label-success">自动发卡</span>';
}
});
$grid->out_trade_no('第三方支付号');
$grid->pay_type('支付方式')->display(function ($payType) {
switch ($payType) {
case 1:
return '<span class="label label-success">微信支付</span>';
case 2:
return '<span class="label label-info">支付宝支付</span>';
default:
return '';
}
});
$grid->password('查询密码')->display(function ($password) {
return $this->password;
});
$grid->status('订单状态')->display(function ($status) {
switch ($status) {
case 0:
return '<span class="label label-default">未支付</span>';
case 1:
return '<span class="label label-primary">已支付</span>';
case 2:
return '<span class="label label-warning">过期</span>';
case 3:
return '<span class="label label-success">处理成功</span>';
case 4:
return '<span class="label label-danger">处理失败</span>';
}
});
$grid->ip('ip');
$grid->created_at('创建时间');
$grid->pay_time('支付时间');
return $grid;
}
/**
* Make a show builder.
*
* @param mixed $id
* @return Show
*/
protected function detail($id)
{
$show = new Show(Order::findOrFail($id));
$show->id('ID');
$show->trade_no('订单号');
$show->name('订单名称');
$show->total_price('订单总价');
$show->more_input_value('表单')->unescape()->as(function ($more_input_value) {
$string = '';
$input_arr = json_decode($more_input_value, true);
foreach ($input_arr as $key => $v) {
$string = $string . $v['name'] . ':' . $v['value'];
if ($key == count($input_arr) - 1) {
//$string = $string . '。';
} else {
$string = $string . "<br>";
}
}
return "{$string}";
});
$show->email('邮件');
$show->type('订单类型')->as(function($type){
if($type == 1){
return '手动发卡';
}else if($type == 2){
return '自动发卡';
}
});
$show->pay_type('支付方式')->as(function($pay_type){
if($pay_type == Order::WECHAT){
return '微信支付';
}else if($pay_type == Order::ALIPAY){
return '支付宝支付';
}
});
$show->status('订单状态')->as(function($status){
if($status == Order::NO_PAY){
return '未支付';
}else if($status == Order::PAYED){
return '已支付';
}else if($status == Order::EXPIRE){
return '已过期';
}else if($status == Order::SUCCESS){
return '处理成功';
}else if($status == Order::ERROR){
return '处理失败';
}
});
$show->payed_time('支付时间');
$show->ip('ip');
$show->created_at('创建时间');
return $show;
}
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
$form = new Form(new Order);
$form->display('ID');
$form->display('Created at');
$form->display('Updated at');
return $form;
}
public function status(Request $request)
{
$ids = $request->ids;
$action = $request->action;
Order::whereIn('id', $ids)->update(['status' => $action]);
foreach ($ids as $id) {
$order = Order::find($id);
if ($action == Order::SUCCESS && $order->type == 1) {
event(new OrderShipped($order));
}
}
return ['code' => 0];
}
}
================================================
FILE: app/Admin/Extensions/OrdersExporter.php
================================================
<?php
namespace App\Admin\Extensions;
use Encore\Admin\Grid\Exporters\ExcelExporter;
class OrdersExporter extends ExcelExporter
{
protected $fileName = '订单列表.xlsx';
protected $columns = [
'id' => 'ID',
'trade_no' => '订单号',
'name' => '订单名称',
'goods_name' => '商品名称',
'total_price' => '订单总价',
'email' => '邮箱',
];
}
================================================
FILE: app/Admin/Extensions/Tools/HandleOrders.php
================================================
<?php
namespace App\Admin\Extensions\Tools;
use Encore\Admin\Grid\Tools\BatchAction;
class HandleOrders extends BatchAction
{
protected $action;
public function __construct($action = 3)//3处理成功 4处理失败
{
$this->action = $action;
}
public function script()
{
return <<<EOT
$('{$this->getElementClass()}').on('click', function() {
$.ajax({
method: 'post',
url: '{$this->resource}/status',
data: {
_token:LA.token,
ids: $.admin.grid.selected(),
action: {$this->action}
},
success: function () {
$.pjax.reload('#pjax-container');
toastr.success('操作成功');
}
});
});
EOT;
}
}
================================================
FILE: app/Admin/bootstrap.php
================================================
<?php
/**
* Laravel-admin - admin builder based on Laravel.
* @author z-song <https://github.com/z-song>
*
* Bootstraper for Admin.
*
* Here you can remove builtin form field:
* Encore\Admin\Form::forget(['map', 'editor']);
*
* Or extend custom form field:
* Encore\Admin\Form::extend('php', PHPEditor::class);
*
* Or require js and css assets:
* Admin::css('/packages/prettydocs/css/styles.css');
* Admin::js('/packages/prettydocs/js/main.js');
*
*/
use Encore\Admin\Form;
Form::forget(['map']);
app('view')->prependNamespace('admin', resource_path('views/admin'));
================================================
FILE: app/Admin/routes.php
================================================
<?php
use Illuminate\Routing\Router;
Admin::registerAuthRoutes();
Route::group([
'prefix' => config('admin.route.prefix'),
'namespace' => config('admin.route.namespace'),
'middleware' => config('admin.route.middleware'),
], function (Router $router) {
$router->get('/', 'HomeController@index');
$router->resource('goods/categories', 'CategoryController');
$router->resource('goods', 'GoodsController');
$router->resource('cards', 'CardController');
$router->post('orders/status','OrderController@status');
$router->resource('orders', 'OrderController');
$router->resource('email-templates', EmailTemplateController::class);
});
================================================
FILE: app/Console/Kernel.php
================================================
<?php
namespace App\Console;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel
{
/**
* The Artisan commands provided by your application.
*
* @var array
*/
protected $commands = [
//
];
/**
* Define the application's command schedule.
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
{
// $schedule->command('inspire')
// ->hourly();
}
/**
* Register the commands for the application.
*
* @return void
*/
protected function commands()
{
$this->load(__DIR__.'/Commands');
require base_path('routes/console.php');
}
}
================================================
FILE: app/Events/OrderShipped.php
================================================
<?php
namespace App\Events;
use App\Models\Order;
use Illuminate\Queue\SerializesModels;
class OrderShipped
{
use SerializesModels;
public $order;
/**
* 创建一个事件实例。
*
* @param Order $order
* @return void
*/
public function __construct(Order $order)
{
$this->order = $order;
}
}
================================================
FILE: app/Exceptions/Handler.php
================================================
<?php
namespace App\Exceptions;
use Exception;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
class Handler extends ExceptionHandler
{
/**
* A list of the exception types that are not reported.
*
* @var array
*/
protected $dontReport = [
//
];
/**
* A list of the inputs that are never flashed for validation exceptions.
*
* @var array
*/
protected $dontFlash = [
'password',
'password_confirmation',
];
/**
* Report or log an exception.
*
* This is a great spot to send exceptions to Sentry, Bugsnag, etc.
*
* @param \Exception $exception
* @return void
*/
public function report(Exception $exception)
{
parent::report($exception);
}
/**
* Render an exception into an HTTP response.
*
* @param \Illuminate\Http\Request $request
* @param \Exception $exception
* @return \Illuminate\Http\Response
*/
public function render($request, Exception $exception)
{
return parent::render($request, $exception);
}
}
================================================
FILE: app/Http/Controllers/BaseController.php
================================================
<?php
namespace App\Http\Controllers;
class BaseController extends Controller
{
public function success($message='',$data=[]){
return [
'data' => $data,
'message' => $message,
'code' => 1
];
}
public function error($message=''){
return [
'message' => $message,
'code' => 0
];
}
}
================================================
FILE: app/Http/Controllers/Controller.php
================================================
<?php
namespace App\Http\Controllers;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
class Controller extends BaseController
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
}
================================================
FILE: app/Http/Controllers/GoodsController.php
================================================
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Goods;
class GoodsController extends BaseController
{
public function index(Request $request){
$categoryId = $request->get('q');
return Goods::select('id','name as text')
->where('category_id', $categoryId)
->orderBy('sort','asc')
->get();
}
public function getByCardType(Request $request){
$categoryId = $request->get('q');
return Goods::select('id','name as text')
->where('category_id', $categoryId)
->where('type',2)
->orderBy('sort','asc')
->get();
}
public function show(Goods $goods){
$goods->goods_stock = $goods->goodsStock();
$goods->more_input = str_replace(',',',',$goods->more_input);
$goods->more_input = $goods->more_input ? explode(',',$goods->more_input) : [];
return $goods;
}
}
================================================
FILE: app/Http/Controllers/IndexController.php
================================================
<?php
namespace App\Http\Controllers;
use App\Models\Goods;
use Illuminate\Http\Request;
use App\Models\Category;
class IndexController extends BaseController
{
public function index(Request $request)
{
$param = http_build_query($request->all());
return view('home.index',['param'=>$param]);
}
public function selectGoods(Request $request)
{
$data = [];
$categories = Category::where('status',1)->orderBy('sort','asc')->get();
if($request->goods_id && $currentGoods = Goods::find($request->goods_id)){
$data['currentGoods'] = $currentGoods;
}
$data['categories'] = $categories;
return view('home.selectGoods', $data);
}
public function queryOrders(){
return view('home.queryOrders');
}
}
================================================
FILE: app/Http/Controllers/NotifyController.php
================================================
<?php
namespace App\Http\Controllers;
use App\Events\OrderShipped;
use App\Models\Goods;
use App\Models\Order;
use Illuminate\Http\Request;
use Xhat\Payjs\Facades\Payjs;
class NotifyController extends BaseController
{
public function payjs(Request $request)
{
// 接收异步通知,无需关注验签动作,已自动处理
$data = Payjs::notify();
\Log::info($data);
//try {
if ($data['return_code'] == 1) {
$order = Order::where('trade_no', $data['out_trade_no'])->first();
if (!$order) {
abort(400, '订单不存在');
}
if ($order && $order->status == Order::NO_PAY) {
$payTime = date('Y-m-d H:i:s', strtotime($data['time_end']));
$order->status = Order::PAYED;
$order->real_total_price = bcdiv($data['total_fee'], 100);
$order->pay_time = $payTime;
$order->save();
\DB::transaction(function () use ($order) {
if ($order->type == 2 && $order->consumeCards() < $order->count) { //自动发卡类型订单
abort(400, '卡密库存不足');
}
if($order->type == 2){
event(new OrderShipped($order));
$order->status = Order::SUCCESS;
}else if($order->type == 1){
$order->status = Order::PAYED;
}
$order->save();
});
//商品增加销量
Goods::whereId($order->goods_id)
->increment('sold_count', $order->count);
return $this->paySuccess();
}
}
//} catch (\Exception $e) {
// \Log::info($e->getMessage());
return $this->paySuccess();
//}
}
public function paySuccess()
{
return 'success';
}
}
================================================
FILE: app/Http/Controllers/OrderController.php
================================================
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Order;
use App\Models\Goods;
use Carbon\Carbon;
use SimpleSoftwareIO\QrCode\Facades\QrCode;
use App\Services\PersonalPay;
use Xhat\Payjs\Facades\Payjs;
class OrderController extends BaseController
{
public function store(Request $request)
{
$goods = Goods::find($request->goods_id);
if (!$goods) {
return $this->error('该商品不存在或者已被删除');
}
if ($goods->status === 0) {
return $this->error('该商品已下架');
}
if ($goods->goodsStock() === 0) {
return $this->error('该商品库存不足');
}
$count = $request->count;
if ($count > 0 && $count > $goods->goodsStock()) {
return $this->error('该商品库存不足');
}
$order = \DB::transaction(function () use ($goods, $request) {
$order = new Order();
$order->trade_no = buildTradeNo();
$order->name = $goods->name . 'x' . $request->count;
$order->goods_id = $goods->id;
$order->goods_name = $goods->name;
$order->unit_price = $goods->price;
$order->count = $request->count;
$order->total_price = $goods->price * $request->count;
$order->type = $goods->type;
$order->pay_type = $request->pay_type;
$order->password = $request->password;
$order->email = $request->email;
$order->pay_account = $request->pay_account;
// $order->goods->first_input;//第一个输入框
// $order->goods->more_input;//更多输入框,逗号隔开
$firstInput = (array)$order->goods->first_input;
$moreInput = explode(',',$order->goods->more_input);
$inputKeys = array_merge($firstInput,$moreInput);
$inputValues = array_merge((array($order->pay_account)),(array)$request->more_input_value);
$inputJsonArray = [];
foreach($inputKeys as $key=>$inputKey){
$inputJsonArray[$key]['name'] = $inputKeys[$key];
$inputJsonArray[$key]['value'] = $inputValues[$key];
}
$order->more_input_value = json_encode($inputJsonArray,JSON_UNESCAPED_UNICODE);
$order->ip = $request->ip();
$order->save();
if ($goods->type == 1 && $goods->decreaseStock($order->count) <= 0) {
throw new InvalidRequestException('该商品库存不足');
}
return $order;
});
return $this->success('创建订单成功', ['order_id' => $order->id]);
}
public function pay($id)
{
$order = Order::find($id);
if (!$order) {
abort(404);
}
// 构造订单基础信息
$data = [
'body' => $order->name,
'total_fee' => bcmul($order->total_price,100),
'out_trade_no' => $order->trade_no,
'attach' => '', // 订单附加信息(可选参数)
'notify_url' => url('api/notify'), // 异步通知地址(可选参数)
];
if($order->pay_type == Order::ALIPAY){
$data['type'] = 'alipay';
}
if(is_weixin()){
$wechatInfo = session('payjs_wechat_info');
$data['openid'] = $wechatInfo['openid'];
$payjsData = Payjs::jsapi($data);
if($payjsData['return_code'] != 1){
return $this->error($payjsData['return_msg']);
}
return view('home.mobilePayment',['order'=>$order,'pay_data'=>$payjsData['jsapi']]);
}
try{
$payjsData = Payjs::native($data);
if($payjsData['return_code'] != 1){
abort(400,$payjsData['return_msg']);
}
$detect = new \Mobile_Detect;
if($detect->isMobile() && $order->pay_type == Order::ALIPAY){
return view('home.mobilePayment',['order'=>$order,'code_url'=>$payjsData['code_url']]);
//return view('home.mobilePayment',['order'=>$order,'code_url'=>url('orders/'.$id)]);
}
if($detect->isMobile()){
$codeUrl = url('orders/'.$id);
}else{
$codeUrl = $payjsData['code_url'];
}
$imageBase64 = base64_encode(QrCode::format('png')->size(200)->generate($codeUrl));
}catch (\Exception $e){
return "<script>alert(\"{$e->getMessage()}\");location.href='/'</script>";
}
$payQrcode = 'data:image/png;base64,'.$imageBase64;
return view('home.payment', compact('order', 'payQrcode'));
}
public function show(Order $order)
{
return $order;
}
public function data(Order $order, Request $request)
{
if ($order->type == 2) {
if ($order->password != $request->password) {
return ['code' => 1, 'message' => '密码错误'];
}
$cards = $order->cards->pluck('content')->toArray();
$data = implode("\r\n", $cards);
return ['code' => 0, 'data' => $data];
}
return ['code' => 0, 'data' => $order->pay_account];
}
public function index(Request $request)
{
$type = (int)$request->input('type', '');
$search = $request->search;
$password = $request->password;
switch ($type) {
case 1:
$orders = Order::where('type', $type)
->where('pay_account', $search)
->paginate($request->limit);
break;
case 2:
$orders = Order::where('type', $type)
->where('email', $search)
->paginate($request->limit);
break;
default:
$orders = Order::where('id', '<', 0)->paginate($request->limit);
}
return $orders;
}
}
================================================
FILE: app/Http/Controllers/ReceivePushController.php
================================================
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Order;
use App\Events\OrderShipped;
use App\Models\Goods;
use Carbon\Carbon;
class ReceivePushController extends BaseController
{
public function index(Request $request)
{
//处理付款成功推送
\Log::info('支付成功回调',$request->all());
$params = $request->all();
$sign = $params['sign'];
unset($params['sign']);
//验证签名
if ($sign != md5(md5(implode('',$params)) . config('personal_pay.secret'))) {
return $this->error("签名不正确");
}
$order = Order::where('trade_no',$params['out_trade_no'])->first();
if(!$order){
return $this->error('订单不存在');
}
if ($order && $order->status == 0) {
$payTime = Carbon::parse($params['pay_time']);
$payType = $params['type'];
$order->status = 1;
$order->real_total_price = $params['real_price'];
$order->pay_time = $payTime;
switch ($payType){
case 'wechat'://微信支付
$order->pay_type = 1;
break;
case 'alipay'://支付宝支付
$order->pay_type = 2;
break;
}
$order->save();
if($order->type == 2) {//自动发卡类型订单
\DB::transaction(function () use ($order) {
if ($order->consumeCards() < $order->count) {
\Log::info('卡密库存不足');
return $this->error('卡密库存不足');
}
event(new OrderShipped($order));
$order->status = 3;
$order->save();
});
}
//商品增加销量
Goods::whereId($order->goods_id)
->increment('sold_count', $order->count);
return $this->paySuccess();
}
}
public function paySuccess(){
return 'success';
}
}
================================================
FILE: app/Http/Controllers/TestController.php
================================================
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use GuzzleHttp\Client;
class TestController extends BaseController
{
public function index()
{
return view('home.index');
}
public function pay(){
$params = [
'price' => 100,
'out_order_id' => buildTradeNo(),
'type' => 'wechat',
'product_id' => '',
'notifyurl' => '',
'returnurl' => 'http://www.baidu.com',
'extend' => '',
];
$params = array_filter($params);
$params['sign'] = md5(md5(implode('', $params)) . '123456');
$params['format'] = 'json';
$client = new Client([
'base_uri' => 'https://fastadmin.51godream.com/addons/pay/api/'
]);
$response = $client->request('GET', 'create', [
'query' => $params
]);
return $response->getBody();
}
}
================================================
FILE: app/Http/Controllers/UploadController.php
================================================
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Services\FileUploadTool;
class UploadController extends BaseController
{
public function store(Request $request, FileUploadTool $fileUploadTool)
{
{
$requestFiles = $request->file('files');
$pathArray = $fileUploadTool->uploadMulti($requestFiles);
$paths = array_map(function ($value) {
return \Storage::url($value);
}, $pathArray);
return ['errno' => 0, 'data' => $paths];
}
}
}
================================================
FILE: app/Http/Controllers/WechatMenuController.php
================================================
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class WechatMenuController extends BaseController
{
public function index(Request $request){
$app = app('wechat.official_account');
$list = $app->menu->list();
if(isset($list['errcode'])){
return $list;
}
return ['errcode'=>0,'data'=>$list];
}
public function store(Request $request){
$buttons = $request->input('menu');
$buttons = json_decode($buttons,true);
$buttons = $buttons['button'];
$app = app('wechat.official_account');
$result = $app->menu->create($buttons);
return $result;
}
public function destroy(){
$app = app('wechat.official_account');
$result = $app->menu->delete(); // 删除全部
return $result;
}
}
================================================
FILE: app/Http/Kernel.php
================================================
<?php
namespace App\Http;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
class Kernel extends HttpKernel
{
/**
* The application's global HTTP middleware stack.
*
* These middleware are run during every request to your application.
*
* @var array
*/
protected $middleware = [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
\App\Http\Middleware\TrustProxies::class,
];
/**
* The application's route middleware groups.
*
* @var array
*/
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
// \Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
'api' => [
'throttle:60,1',
'bindings',
],
];
/**
* The application's route middleware.
*
* These middleware may be assigned to groups or used individually.
*
* @var array
*/
protected $routeMiddleware = [
'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'site_open_if' => \App\Http\Middleware\SiteOpenIf::class,
'wechat.oauth' => \App\Http\Middleware\OAuthAuthenticate::class,
];
}
================================================
FILE: app/Http/Middleware/EncryptCookies.php
================================================
<?php
namespace App\Http\Middleware;
use Illuminate\Cookie\Middleware\EncryptCookies as Middleware;
class EncryptCookies extends Middleware
{
/**
* The names of the cookies that should not be encrypted.
*
* @var array
*/
protected $except = [
//
];
}
================================================
FILE: app/Http/Middleware/OAuthAuthenticate.php
================================================
<?php
/*
* This file is part of the overtrue/laravel-wechat.
*
* (c) overtrue <i@overtrue.me>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace App\Http\Middleware;
use Closure;
use http\Env\Request;
use Illuminate\Support\Arr;
use Illuminate\Support\Str;
/**
* Class OAuthAuthenticate.
*/
class OAuthAuthenticate
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string|null $scopes
*
* @return mixed
*/
public function handle($request, Closure $next, $account = 'default', $scopes = null)
{
if(!is_weixin()){
return $next($request);
}
$payjsSessionKey = 'payjs_wechat_info';
if(!$request->input('openid')){
$redirectUrl = $request->fullUrl();
$mchid = config('payjs.mchid');
$payjsUrl = "https://payjs.cn/api/openid?mchid={$mchid}&callback_url={$redirectUrl}";
return redirect($payjsUrl);
}
$data = ['openid'=>$request->input('openid')];
session([$payjsSessionKey=>$data]);
return $next($request);
}
}
================================================
FILE: app/Http/Middleware/RedirectIfAuthenticated.php
================================================
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Auth;
class RedirectIfAuthenticated
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string|null $guard
* @return mixed
*/
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->check()) {
return redirect('/home');
}
return $next($request);
}
}
================================================
FILE: app/Http/Middleware/SiteOpenIf.php
================================================
<?php
namespace App\Http\Middleware;
use Closure;
class SiteOpenIf
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if(!config('base.site_open')){
return response()->view('home.siteClose');
}
return $next($request);
}
}
================================================
FILE: app/Http/Middleware/TrimStrings.php
================================================
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\TrimStrings as Middleware;
class TrimStrings extends Middleware
{
/**
* The names of the attributes that should not be trimmed.
*
* @var array
*/
protected $except = [
'password',
'password_confirmation',
];
}
================================================
FILE: app/Http/Middleware/TrustProxies.php
================================================
<?php
namespace App\Http\Middleware;
use Illuminate\Http\Request;
use Fideloper\Proxy\TrustProxies as Middleware;
class TrustProxies extends Middleware
{
/**
* The trusted proxies for this application.
*
* @var array
*/
protected $proxies;
/**
* The current proxy header mappings.
*
* @var array
*/
protected $headers = [
Request::HEADER_FORWARDED => 'FORWARDED',
Request::HEADER_X_FORWARDED_FOR => 'X_FORWARDED_FOR',
Request::HEADER_X_FORWARDED_HOST => 'X_FORWARDED_HOST',
Request::HEADER_X_FORWARDED_PORT => 'X_FORWARDED_PORT',
Request::HEADER_X_FORWARDED_PROTO => 'X_FORWARDED_PROTO',
];
}
================================================
FILE: app/Http/Middleware/VerifyCsrfToken.php
================================================
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;
class VerifyCsrfToken extends Middleware
{
/**
* The URIs that should be excluded from CSRF verification.
*
* @var array
*/
protected $except = [
//
];
}
================================================
FILE: app/Listeners/SendShipmentNotification.php
================================================
<?php
namespace App\Listeners;
use App\Events\OrderShipped;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Support\Facades\Mail;
class SendShipmentNotification
{
/**
* 创建事件监听器。
*
* @return void
*/
public function __construct()
{
//
}
/**
* 处理事件
*
* @param OrderShipped $event
* @return void
*/
public function handle(OrderShipped $event)
{
// 使用 $event->order 来访问 order ...
// Mail::to($event->order->email)
// ->send(new \App\Mail\OrderShipped($event->order));
$order = $event->order;
if(!$order->goods->emailTemplate){
\Log::info('没有邮件模板');
return;
}
$blade = $order->goods->emailTemplate->content_blade;
$content = blade2str(htmlspecialchars_decode($blade),['order'=>$order]);
try{
Mail::raw($content, function ($message) use ($order) {
$to = $order->email;
$message ->to($to)->subject('邮件通知');
$message->setContentType('text/html');
});
}catch(\Exception $e){
\Log::info('发送邮件异常:'.$e->getMessage());
}
}
}
================================================
FILE: app/Mail/OrderShipped.php
================================================
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
class OrderShipped extends Mailable implements ShouldQueue
{
use Queueable, SerializesModels;
public $order;
public $subject = '商品已发货';
/**
* Create a new message instance.
*
* @return void
*/
public function __construct($order)
{
$this->order = $order;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
// if($this->order->emailTemplate){
// $blade = $this->order->emailTemplate->content_blade;
// return blade2str(htmlspecialchars_decode($blade->content_blade),['order'=>$this->order]);
// }else{
// return '';
// }
return $this->view('mail.user.orderNotification');
}
}
================================================
FILE: app/Models/Card.php
================================================
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Card extends Model
{
public function goods(){
return $this->belongsTo(Goods::class,'goods_id');
}
public function order(){
return $this->belongsTo(Order::class,'order_id');
}
}
================================================
FILE: app/Models/Category.php
================================================
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Category extends Model
{
protected $table = 'goods_categories';
public function goods(){
return $this->hasMany(Goods::class,'category_id');
}
}
================================================
FILE: app/Models/EmailTemplate.php
================================================
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class EmailTemplate extends Model
{
//
}
================================================
FILE: app/Models/Goods.php
================================================
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Goods extends Model
{
public function category(){
return $this->belongsTo(Category::class,'category_id');
}
public function cards(){
return $this->hasMany(Card::class,'goods_id');
}
public function emailTemplate(){
return $this->belongsTo(EmailTemplate::class,'email_template_id');
}
public function goodsStock(){
switch ($this->type){
case 1:
return $this->stock;
case 2:
return $this->cards()->where('status',0)->count();
}
}
public function decreaseStock($amount)
{
if ($amount < 0) {
throw new InternalException('减库存不可小于0');
}
return $this->newQuery()->where('id', $this->id)->where('stock', '>=', $amount)->decrement('stock', $amount);
}
public function addStock($amount)
{
if ($amount < 0) {
throw new InternalException('加库存不可小于0');
}
$this->increment('stock', $amount);
}
public function addSold($amount){
$this->increment('sold_count', $amount);
}
}
================================================
FILE: app/Models/Order.php
================================================
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Order extends Model
{
const WECHAT = 1;
const ALIPAY = 2;
const NO_PAY = 0;
const PAYED = 1;
const EXPIRE = 2;
const SUCCESS = 3;
const ERROR = 4;
// protected $casts = [
// 'more_input_value' => 'array',
// ];
protected $hidden = ['password'];
public function cards(){
return $this->hasMany(Card::class,'order_id');
}
public function consumeCards(){
return (new Card())->newQuery()
->where('status', 0)
->where('goods_id',$this->goods_id)
->limit($this->count)
->update(['status'=>1,'order_id'=>$this->id]);
}
public function goods(){
return $this->belongsTo(Goods::class,'goods_id');
}
}
================================================
FILE: app/Models/WechatMaterial.php
================================================
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Support\Facades\Request;
class WechatMaterial extends Model
{
public function get()
{
$app = app('wechat.official_account');
return $material;
}
}
================================================
FILE: app/Models/WechatUser.php
================================================
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Support\Facades\Request;
class WechatUser extends Model
{
public function get()
{
$app = app('wechat.official_account');
$wechatUsers = $app->user->list();
$openids =$wechatUsers['data']['openid'];
$usersInfo = $app->user->select($openids);
$users = static::hydrate($usersInfo['user_info_list']);
return $users;
}
}
================================================
FILE: app/Providers/AppServiceProvider.php
================================================
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Encore\Admin\Config\Config;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\View;
use Illuminate\Support\Facades\Schema;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
$existConfigTable = Schema::hasTable('admin_config');
if (class_exists(Config::class) && $existConfigTable) {
Config::load();
}
}
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
}
================================================
FILE: app/Providers/AuthServiceProvider.php
================================================
<?php
namespace App\Providers;
use Illuminate\Support\Facades\Gate;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
class AuthServiceProvider extends ServiceProvider
{
/**
* The policy mappings for the application.
*
* @var array
*/
protected $policies = [
'App\Model' => 'App\Policies\ModelPolicy',
];
/**
* Register any authentication / authorization services.
*
* @return void
*/
public function boot()
{
$this->registerPolicies();
//
}
}
================================================
FILE: app/Providers/BroadcastServiceProvider.php
================================================
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Broadcast;
class BroadcastServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Broadcast::routes();
require base_path('routes/channels.php');
}
}
================================================
FILE: app/Providers/EventServiceProvider.php
================================================
<?php
namespace App\Providers;
use Illuminate\Support\Facades\Event;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
class EventServiceProvider extends ServiceProvider
{
/**
* The event listener mappings for the application.
*
* @var array
*/
protected $listen = [
'App\Events\OrderShipped' => [
'App\Listeners\SendShipmentNotification',
],
];
/**
* Register any events for your application.
*
* @return void
*/
public function boot()
{
parent::boot();
//
}
}
================================================
FILE: app/Providers/RouteServiceProvider.php
================================================
<?php
namespace App\Providers;
use Illuminate\Support\Facades\Route;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
class RouteServiceProvider extends ServiceProvider
{
/**
* This namespace is applied to your controller routes.
*
* In addition, it is set as the URL generator's root namespace.
*
* @var string
*/
protected $namespace = 'App\Http\Controllers';
/**
* Define your route model bindings, pattern filters, etc.
*
* @return void
*/
public function boot()
{
//
parent::boot();
}
/**
* Define the routes for the application.
*
* @return void
*/
public function map()
{
$this->mapApiRoutes();
$this->mapWebRoutes();
//
}
/**
* Define the "web" routes for the application.
*
* These routes all receive session state, CSRF protection, etc.
*
* @return void
*/
protected function mapWebRoutes()
{
Route::middleware('web')
->namespace($this->namespace)
->group(base_path('routes/web.php'));
}
/**
* Define the "api" routes for the application.
*
* These routes are typically stateless.
*
* @return void
*/
protected function mapApiRoutes()
{
Route::prefix('api')
->middleware('api')
->namespace($this->namespace)
->group(base_path('routes/api.php'));
}
}
================================================
FILE: app/Services/FileUploadTool.php
================================================
<?php
namespace App\Services;
use Illuminate\Http\UploadedFile;
class FileUploadTool
{
/**
* 多文件上传
* @param array $files
* @return array
*/
public function uploadMulti(array $files){
$paths = [];
foreach($files as $file){
$paths[] = $this->uploadOne($file);
}
return $paths;
}
/**
* 单文件上传
* @param UploadedFile $file
* @param 目录 $directory
* @param 文件名 $fileName
* @return 路径 $path
*/
public function uploadOne(UploadedFile $file,$directory='',$fileName=''){
if($directory){
$directory = $directory.'/'.date('Y-m-d');
}else{
$directory = date('Y-m-d');
}
if(!$fileName){
$fileName = md5_file($file).'.'.$file->getClientOriginalExtension();
}
$relativePath = $directory.'/'.$fileName;
$file->storeAs($directory,$fileName);
return $relativePath;
}
}
================================================
FILE: app/Services/PersonalPay.php
================================================
<?php
namespace App\Services;
use App\Models\Order;
use GuzzleHttp\Client;
class PersonalPay
{
protected $baseUrl = 'http://118.89.190.171:3030/api/';
public function create(Order $order){
$payType = '';
switch ($order->pay_type){
case 1:
$payType = 'wechat';
break;
case 2:
$payType = 'alipay';
break;
}
$params = [
'price' => $order->total_price,
'out_trade_no' => $order->trade_no,
'type' => $payType,
'notify_url' => config('personal_pay.notify_url'),
'extend' => '',
];
$params = array_filter($params);
$params['sign'] = md5(md5(implode('', $params)) . config('personal_pay.secret'));
$params['format'] = 'json';
$client = new Client([
'base_uri' => $this->baseUrl
]);
$response = $client->request('POST', 'orders', [
'form_params' => $params
]);
$res = json_decode($response->getBody(),true);
\Log::info('创建订单',$res);
if($res['code'] == 0){
throw new \Exception($res['msg']);
}
return $res['data'];
}
}
================================================
FILE: artisan
================================================
#!/usr/bin/env php
<?php
define('LARAVEL_START', microtime(true));
/*
|--------------------------------------------------------------------------
| Register The Auto Loader
|--------------------------------------------------------------------------
|
| Composer provides a convenient, automatically generated class loader
| for our application. We just need to utilize it! We'll require it
| into the script here so that we do not have to worry about the
| loading of any our classes "manually". Feels great to relax.
|
*/
require __DIR__.'/vendor/autoload.php';
$app = require_once __DIR__.'/bootstrap/app.php';
/*
|--------------------------------------------------------------------------
| Run The Artisan Application
|--------------------------------------------------------------------------
|
| When we run the console application, the current CLI command will be
| executed in this console and the response sent back to a terminal
| or another output device for the developers. Here goes nothing!
|
*/
$kernel = $app->make(Illuminate\Contracts\Console\Kernel::class);
$status = $kernel->handle(
$input = new Symfony\Component\Console\Input\ArgvInput,
new Symfony\Component\Console\Output\ConsoleOutput
);
/*
|--------------------------------------------------------------------------
| Shutdown The Application
|--------------------------------------------------------------------------
|
| Once Artisan has finished running, we will fire off the shutdown events
| so that any final work may be done by the application before we shut
| down the process. This is the last thing to happen to the request.
|
*/
$kernel->terminate($input, $status);
exit($status);
================================================
FILE: bootstrap/app.php
================================================
<?php
/*
|--------------------------------------------------------------------------
| Create The Application
|--------------------------------------------------------------------------
|
| The first thing we will do is create a new Laravel application instance
| which serves as the "glue" for all the components of Laravel, and is
| the IoC container for the system binding all of the various parts.
|
*/
require_once __DIR__.'/helpers.php';
$app = new Illuminate\Foundation\Application(
realpath(__DIR__.'/../')
);
/*
|--------------------------------------------------------------------------
| Bind Important Interfaces
|--------------------------------------------------------------------------
|
| Next, we need to bind some important interfaces into the container so
| we will be able to resolve them when needed. The kernels serve the
| incoming requests to this application from both the web and CLI.
|
*/
$app->singleton(
Illuminate\Contracts\Http\Kernel::class,
App\Http\Kernel::class
);
$app->singleton(
Illuminate\Contracts\Console\Kernel::class,
App\Console\Kernel::class
);
$app->singleton(
Illuminate\Contracts\Debug\ExceptionHandler::class,
App\Exceptions\Handler::class
);
/*
|--------------------------------------------------------------------------
| Return The Application
|--------------------------------------------------------------------------
|
| This script returns the application instance. The instance is given to
| the calling script so we can separate the building of the instances
| from the actual running of the application and sending responses.
|
*/
return $app;
================================================
FILE: bootstrap/cache/.gitignore
================================================
*
!.gitignore
================================================
FILE: bootstrap/helpers.php
================================================
<?php
/**
* 获取当前毫秒数
* @return type
*/
function getMillisecond() {
list($t1, $t2) = explode(' ', microtime());
return (float) sprintf('%.0f', (floatval($t1) + floatval($t2)) * 1000);
}
/**
* 生成订单号
* @return type
*/
function buildTradeNo() {
return getMillisecond() . str_pad(mt_rand(1, 99999), 5, '0', STR_PAD_LEFT);
}
function blade2str($blade,$data = array())
{
$data['__env'] = app(Illuminate\Contracts\View\Factory::class);
$str = Blade::compileString($blade);
ob_start() and extract($data, EXTR_SKIP);
try {
eval('?>' . $str);
}
catch (\Exception $e) {
ob_end_clean();
throw $e;
}
$str = ob_get_contents();
ob_end_clean();
return $str;
}
function is_weixin(){
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false ) {
return true;
}
return false;
}
================================================
FILE: composer.json
================================================
{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"type": "project",
"require": {
"php": ">=7.0.0",
"encore/laravel-admin": "^1.7",
"fideloper/proxy": "~3.3",
"guzzlehttp/guzzle": "~6.0",
"ichynul/configx": "^1.2",
"ichynul/row-table": "^1.1",
"james.xue/login-captcha": "^1.8",
"jxlwqq/material-ui": "^1.0",
"laravel-admin-ext/config": "^1.0",
"laravel-admin-ext/wang-editor": "^1.0",
"laravel/framework": "5.5.*",
"laravel/tinker": "~1.0",
"maatwebsite/excel": "^3.1",
"mews/captcha": "~2.0",
"mobiledetect/mobiledetectlib": "^2.8",
"orangehill/iseed": "^2.6",
"predis/predis": "^1.1",
"simplesoftwareio/simple-qrcode": "~2",
"xhat/payjs-laravel": "^1.4"
},
"require-dev": {
"filp/whoops": "~2.0",
"fzaninotto/faker": "~1.4",
"mockery/mockery": "~1.0",
"phpunit/phpunit": "~6.0",
"symfony/thanks": "^1.0",
"xethron/migrations-generator": "^2.0"
},
"autoload": {
"classmap": [
"database/seeds",
"database/factories"
],
"psr-4": {
"App\\": "app/"
}
},
"autoload-dev": {
"psr-4": {
"Tests\\": "tests/"
}
},
"extra": {
"laravel": {
"dont-discover": [
]
}
},
"scripts": {
"post-root-package-install": [
"@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
],
"post-create-project-cmd": [
"@php artisan key:generate"
],
"post-autoload-dump": [
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
"@php artisan package:discover"
]
},
"config": {
"preferred-install": "dist",
"sort-packages": true,
"optimize-autoloader": true
},
"minimum-stability": "dev",
"prefer-stable": true
}
================================================
FILE: config/admin.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Laravel-admin name
|--------------------------------------------------------------------------
|
| This value is the name of laravel-admin, This setting is displayed on the
| login page.
|
*/
'name' => 'faka',
/*
|--------------------------------------------------------------------------
| Laravel-admin logo
|--------------------------------------------------------------------------
|
| The logo of all admin pages. You can also set it as an image by using a
| `img` tag, eg '<img src="http://logo-url" alt="Admin logo">'.
|
*/
'logo' => '发卡系统',
/*
|--------------------------------------------------------------------------
| Laravel-admin mini logo
|--------------------------------------------------------------------------
|
| The logo of all admin pages when the sidebar menu is collapsed. You can
| also set it as an image by using a `img` tag, eg
| '<img src="http://logo-url" alt="Admin logo">'.
|
*/
'logo-mini' => '<b>ka</b>',
/*
|--------------------------------------------------------------------------
| Laravel-admin route settings
|--------------------------------------------------------------------------
|
| The routing configuration of the admin page, including the path prefix,
| the controller namespace, and the default middleware. If you want to
| access through the root path, just set the prefix to empty string.
|
*/
'route' => [
'prefix' => 'admin',
'namespace' => 'App\\Admin\\Controllers',
'middleware' => ['web', 'admin'],
],
/*
|--------------------------------------------------------------------------
| Laravel-admin install directory
|--------------------------------------------------------------------------
|
| The installation directory of the controller and routing configuration
| files of the administration page. The default is `app/Admin`, which must
| be set before running `artisan admin::install` to take effect.
|
*/
'directory' => app_path('Admin'),
/*
|--------------------------------------------------------------------------
| Laravel-admin html title
|--------------------------------------------------------------------------
|
| Html title for all pages.
|
*/
'title' => 'Admin',
/*
|--------------------------------------------------------------------------
| Access via `https`
|--------------------------------------------------------------------------
|
| If your page is going to be accessed via https, set it to `true`.
|
*/
'https' => env('ADMIN_HTTPS', false),
/*
|--------------------------------------------------------------------------
| Laravel-admin auth setting
|--------------------------------------------------------------------------
|
| Authentication settings for all admin pages. Include an authentication
| guard and a user provider setting of authentication driver.
|
| You can specify a controller for `login` `logout` and other auth routes.
|
*/
'auth' => [
'controller' => App\Admin\Controllers\AuthController::class,
'guards' => [
'admin' => [
'driver' => 'session',
'provider' => 'admin',
],
],
'providers' => [
'admin' => [
'driver' => 'eloquent',
'model' => Encore\Admin\Auth\Database\Administrator::class,
],
],
],
/*
|--------------------------------------------------------------------------
| Laravel-admin upload setting
|--------------------------------------------------------------------------
|
| File system configuration for form upload files and images, including
| disk and upload path.
|
*/
'upload' => [
// Disk in `config/filesystem.php`.
'disk' => 'admin',
// Image and file upload path under the disk above.
'directory' => [
'image' => 'images',
'file' => 'files',
],
],
/*
|--------------------------------------------------------------------------
| Laravel-admin database settings
|--------------------------------------------------------------------------
|
| Here are database settings for laravel-admin builtin model & tables.
|
*/
'database' => [
// Database connection for following tables.
'connection' => '',
// User tables and model.
'users_table' => 'admin_users',
'users_model' => Encore\Admin\Auth\Database\Administrator::class,
// Role table and model.
'roles_table' => 'admin_roles',
'roles_model' => Encore\Admin\Auth\Database\Role::class,
// Permission table and model.
'permissions_table' => 'admin_permissions',
'permissions_model' => Encore\Admin\Auth\Database\Permission::class,
// Menu table and model.
'menu_table' => 'admin_menu',
'menu_model' => Encore\Admin\Auth\Database\Menu::class,
// Pivot table for table above.
'operation_log_table' => 'admin_operation_log',
'user_permissions_table' => 'admin_user_permissions',
'role_users_table' => 'admin_role_users',
'role_permissions_table' => 'admin_role_permissions',
'role_menu_table' => 'admin_role_menu',
],
/*
|--------------------------------------------------------------------------
| User operation log setting
|--------------------------------------------------------------------------
|
| By setting this option to open or close operation log in laravel-admin.
|
*/
'operation_log' => [
'enable' => true,
/*
* Only logging allowed methods in the list
*/
'allowed_methods' => ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'CONNECT', 'OPTIONS', 'TRACE', 'PATCH'],
/*
* Routes that will not log to database.
*
* All method to path like: admin/auth/logs
* or specific method to path like: get:admin/auth/logs.
*/
'except' => [
'admin/auth/logs*',
],
],
/*
|--------------------------------------------------------------------------
| Admin map field provider
|--------------------------------------------------------------------------
|
| Supported: "tencent", "google", "yandex".
|
*/
'map_provider' => 'google',
/*
|--------------------------------------------------------------------------
| Application Skin
|--------------------------------------------------------------------------
|
| This value is the skin of admin pages.
| @see https://adminlte.io/docs/2.4/layout
|
| Supported:
| "skin-blue", "skin-blue-light", "skin-yellow", "skin-yellow-light",
| "skin-green", "skin-green-light", "skin-purple", "skin-purple-light",
| "skin-red", "skin-red-light", "skin-black", "skin-black-light".
|
*/
'skin' => 'skin-blue-light',
/*
|--------------------------------------------------------------------------
| Application layout
|--------------------------------------------------------------------------
|
| This value is the layout of admin pages.
| @see https://adminlte.io/docs/2.4/layout
|
| Supported: "fixed", "layout-boxed", "layout-top-nav", "sidebar-collapse",
| "sidebar-mini".
|
*/
'layout' => ['sidebar-mini'],
/*
|--------------------------------------------------------------------------
| Login page background image
|--------------------------------------------------------------------------
|
| This value is used to set the background image of login page.
|
*/
'login_background_image' => '/images/login-bg.jpg',
/*
|--------------------------------------------------------------------------
| Show version at footer
|--------------------------------------------------------------------------
|
| Whether to display the version number of laravel-admim at the footer of
| each page
|
*/
'show_version' => true,
/*
|--------------------------------------------------------------------------
| Show environment at footer
|--------------------------------------------------------------------------
|
| Whether to display the environment at the footer of each page
|
*/
'show_environment' => true,
/*
|--------------------------------------------------------------------------
| Menu bind to permission
|--------------------------------------------------------------------------
|
| whether enable menu bind to a permission
*/
'menu_bind_permission' => true,
/*
|--------------------------------------------------------------------------
| Enable default breadcrumb
|--------------------------------------------------------------------------
|
| Whether enable default breadcrumb for every page content.
*/
'enable_default_breadcrumb' => true,
/*
|--------------------------------------------------------------------------
| Extension Directory
|--------------------------------------------------------------------------
|
| When you use command `php artisan admin:extend` to generate extensions,
| the extension files will be generated in this directory.
*/
'extension_dir' => app_path('Admin/Extensions'),
/*
|--------------------------------------------------------------------------
| Settings for extensions.
|--------------------------------------------------------------------------
|
| You can find all available extensions here
| https://github.com/laravel-admin-extensions.
|
*/
'extensions' => [
'material-ui' => [
'enable' => false
],
'wang-editor' => [
'enable' => true,
// 编辑器的配置
'config' => [
'zIndex' => 0,
'uploadImgServer' => '/api/upload',
'uploadFileName' => 'files[]',
'uploadImgTimeout' => 30000,
],
],
'configx' => [
'enable' => true,
'tabs' => [
'base' => '基本设置',
'mail' => '邮件设置',
'notice' => '公告设置',
'payjs' => '支付设置',
]
],
'login-captcha' => [
'enable' => true,
],
]
];
================================================
FILE: config/app.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Application Name
|--------------------------------------------------------------------------
|
| This value is the name of your application. This value is used when the
| framework needs to place the application's name in a notification or
| any other location as required by the application or its packages.
|
*/
'name' => env('APP_NAME', 'Laravel'),
/*
|--------------------------------------------------------------------------
| Application Environment
|--------------------------------------------------------------------------
|
| This value determines the "environment" your application is currently
| running in. This may determine how you prefer to configure various
| services your application utilizes. Set this in your ".env" file.
|
*/
'env' => env('APP_ENV', 'production'),
/*
|--------------------------------------------------------------------------
| Application Debug Mode
|--------------------------------------------------------------------------
|
| When your application is in debug mode, detailed error messages with
| stack traces will be shown on every error that occurs within your
| application. If disabled, a simple generic error page is shown.
|
*/
'debug' => env('APP_DEBUG', false),
/*
|--------------------------------------------------------------------------
| Application URL
|--------------------------------------------------------------------------
|
| This URL is used by the console to properly generate URLs when using
| the Artisan command line tool. You should set this to the root of
| your application so that it is used when running Artisan tasks.
|
*/
'url' => env('APP_URL', 'http://localhost'),
/*
|--------------------------------------------------------------------------
| Application Timezone
|--------------------------------------------------------------------------
|
| Here you may specify the default timezone for your application, which
| will be used by the PHP date and date-time functions. We have gone
| ahead and set this to a sensible default for you out of the box.
|
*/
'timezone' => 'PRC',
/*
|--------------------------------------------------------------------------
| Application Locale Configuration
|--------------------------------------------------------------------------
|
| The application locale determines the default locale that will be used
| by the translation service provider. You are free to set this value
| to any of the locales which will be supported by the application.
|
*/
'locale' => 'zh-CN',
/*
|--------------------------------------------------------------------------
| Application Fallback Locale
|--------------------------------------------------------------------------
|
| The fallback locale determines the locale to use when the current one
| is not available. You may change the value to correspond to any of
| the language folders that are provided through your application.
|
*/
'fallback_locale' => 'en',
/*
|--------------------------------------------------------------------------
| Encryption Key
|--------------------------------------------------------------------------
|
| This key is used by the Illuminate encrypter service and should be set
| to a random, 32 character string, otherwise these encrypted strings
| will not be safe. Please do this before deploying an application!
|
*/
'key' => env('APP_KEY'),
'cipher' => 'AES-256-CBC',
/*
|--------------------------------------------------------------------------
| Logging Configuration
|--------------------------------------------------------------------------
|
| Here you may configure the log settings for your application. Out of
| the box, Laravel uses the Monolog PHP logging library. This gives
| you a variety of powerful log handlers / formatters to utilize.
|
| Available Settings: "single", "daily", "syslog", "errorlog"
|
*/
'log' => env('APP_LOG', 'single'),
'log_level' => env('APP_LOG_LEVEL', 'debug'),
/*
|--------------------------------------------------------------------------
| Autoloaded Service Providers
|--------------------------------------------------------------------------
|
| The service providers listed here will be automatically loaded on the
| request to your application. Feel free to add your own services to
| this array to grant expanded functionality to your applications.
|
*/
'providers' => [
/*
* Laravel Framework Service Providers...
*/
Illuminate\Auth\AuthServiceProvider::class,
Illuminate\Broadcasting\BroadcastServiceProvider::class,
Illuminate\Bus\BusServiceProvider::class,
Illuminate\Cache\CacheServiceProvider::class,
Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class,
Illuminate\Cookie\CookieServiceProvider::class,
Illuminate\Database\DatabaseServiceProvider::class,
Illuminate\Encryption\EncryptionServiceProvider::class,
Illuminate\Filesystem\FilesystemServiceProvider::class,
Illuminate\Foundation\Providers\FoundationServiceProvider::class,
Illuminate\Hashing\HashServiceProvider::class,
Illuminate\Mail\MailServiceProvider::class,
Illuminate\Notifications\NotificationServiceProvider::class,
Illuminate\Pagination\PaginationServiceProvider::class,
Illuminate\Pipeline\PipelineServiceProvider::class,
Illuminate\Queue\QueueServiceProvider::class,
Illuminate\Redis\RedisServiceProvider::class,
Illuminate\Auth\Passwords\PasswordResetServiceProvider::class,
Illuminate\Session\SessionServiceProvider::class,
Illuminate\Translation\TranslationServiceProvider::class,
Illuminate\Validation\ValidationServiceProvider::class,
Illuminate\View\ViewServiceProvider::class,
/*
* Package Service Providers...
*/
/*
* Application Service Providers...
*/
App\Providers\AppServiceProvider::class,
App\Providers\AuthServiceProvider::class,
// App\Providers\BroadcastServiceProvider::class,
App\Providers\EventServiceProvider::class,
App\Providers\RouteServiceProvider::class,
],
/*
|--------------------------------------------------------------------------
| Class Aliases
|--------------------------------------------------------------------------
|
| This array of class aliases will be registered when this application
| is started. However, feel free to register as many as you wish as
| the aliases are "lazy" loaded so they don't hinder performance.
|
*/
'aliases' => [
'App' => Illuminate\Support\Facades\App::class,
'Artisan' => Illuminate\Support\Facades\Artisan::class,
'Auth' => Illuminate\Support\Facades\Auth::class,
'Blade' => Illuminate\Support\Facades\Blade::class,
'Broadcast' => Illuminate\Support\Facades\Broadcast::class,
'Bus' => Illuminate\Support\Facades\Bus::class,
'Cache' => Illuminate\Support\Facades\Cache::class,
'Config' => Illuminate\Support\Facades\Config::class,
'Cookie' => Illuminate\Support\Facades\Cookie::class,
'Crypt' => Illuminate\Support\Facades\Crypt::class,
'DB' => Illuminate\Support\Facades\DB::class,
'Eloquent' => Illuminate\Database\Eloquent\Model::class,
'Event' => Illuminate\Support\Facades\Event::class,
'File' => Illuminate\Support\Facades\File::class,
'Gate' => Illuminate\Support\Facades\Gate::class,
'Hash' => Illuminate\Support\Facades\Hash::class,
'Lang' => Illuminate\Support\Facades\Lang::class,
'Log' => Illuminate\Support\Facades\Log::class,
'Mail' => Illuminate\Support\Facades\Mail::class,
'Notification' => Illuminate\Support\Facades\Notification::class,
'Password' => Illuminate\Support\Facades\Password::class,
'Queue' => Illuminate\Support\Facades\Queue::class,
'Redirect' => Illuminate\Support\Facades\Redirect::class,
'Redis' => Illuminate\Support\Facades\Redis::class,
'Request' => Illuminate\Support\Facades\Request::class,
'Response' => Illuminate\Support\Facades\Response::class,
'Route' => Illuminate\Support\Facades\Route::class,
'Schema' => Illuminate\Support\Facades\Schema::class,
'Session' => Illuminate\Support\Facades\Session::class,
'Storage' => Illuminate\Support\Facades\Storage::class,
'URL' => Illuminate\Support\Facades\URL::class,
'Validator' => Illuminate\Support\Facades\Validator::class,
'View' => Illuminate\Support\Facades\View::class,
],
];
================================================
FILE: config/auth.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Authentication Defaults
|--------------------------------------------------------------------------
|
| This option controls the default authentication "guard" and password
| reset options for your application. You may change these defaults
| as required, but they're a perfect start for most applications.
|
*/
'defaults' => [
'guard' => 'web',
'passwords' => 'users',
],
/*
|--------------------------------------------------------------------------
| Authentication Guards
|--------------------------------------------------------------------------
|
| Next, you may define every authentication guard for your application.
| Of course, a great default configuration has been defined for you
| here which uses session storage and the Eloquent user provider.
|
| All authentication drivers have a user provider. This defines how the
| users are actually retrieved out of your database or other storage
| mechanisms used by this application to persist your user's data.
|
| Supported: "session", "token"
|
*/
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
],
],
/*
|--------------------------------------------------------------------------
| User Providers
|--------------------------------------------------------------------------
|
| All authentication drivers have a user provider. This defines how the
| users are actually retrieved out of your database or other storage
| mechanisms used by this application to persist your user's data.
|
| If you have multiple user tables or models you may configure multiple
| sources which represent each model / table. These sources may then
| be assigned to any extra authentication guards you have defined.
|
| Supported: "database", "eloquent"
|
*/
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
// 'users' => [
// 'driver' => 'database',
// 'table' => 'users',
// ],
],
/*
|--------------------------------------------------------------------------
| Resetting Passwords
|--------------------------------------------------------------------------
|
| You may specify multiple password reset configurations if you have more
| than one user table or model in the application and you want to have
| separate password reset settings based on the specific user types.
|
| The expire time is the number of minutes that the reset token should be
| considered valid. This security feature keeps tokens short-lived so
| they have less time to be guessed. You may change this as needed.
|
*/
'passwords' => [
'users' => [
'provider' => 'users',
'table' => 'password_resets',
'expire' => 60,
],
],
];
================================================
FILE: config/broadcasting.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Broadcaster
|--------------------------------------------------------------------------
|
| This option controls the default broadcaster that will be used by the
| framework when an event needs to be broadcast. You may set this to
| any of the connections defined in the "connections" array below.
|
| Supported: "pusher", "redis", "log", "null"
|
*/
'default' => env('BROADCAST_DRIVER', 'null'),
/*
|--------------------------------------------------------------------------
| Broadcast Connections
|--------------------------------------------------------------------------
|
| Here you may define all of the broadcast connections that will be used
| to broadcast events to other systems or over websockets. Samples of
| each available type of connection are provided inside this array.
|
*/
'connections' => [
'pusher' => [
'driver' => 'pusher',
'key' => env('PUSHER_APP_KEY'),
'secret' => env('PUSHER_APP_SECRET'),
'app_id' => env('PUSHER_APP_ID'),
'options' => [
'cluster' => env('PUSHER_APP_CLUSTER'),
'encrypted' => true,
],
],
'redis' => [
'driver' => 'redis',
'connection' => 'default',
],
'log' => [
'driver' => 'log',
],
'null' => [
'driver' => 'null',
],
],
];
================================================
FILE: config/cache.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Cache Store
|--------------------------------------------------------------------------
|
| This option controls the default cache connection that gets used while
| using this caching library. This connection is used when another is
| not explicitly specified when executing a given caching function.
|
| Supported: "apc", "array", "database", "file", "memcached", "redis"
|
*/
'default' => env('CACHE_DRIVER', 'file'),
/*
|--------------------------------------------------------------------------
| Cache Stores
|--------------------------------------------------------------------------
|
| Here you may define all of the cache "stores" for your application as
| well as their drivers. You may even define multiple stores for the
| same cache driver to group types of items stored in your caches.
|
*/
'stores' => [
'apc' => [
'driver' => 'apc',
],
'array' => [
'driver' => 'array',
],
'database' => [
'driver' => 'database',
'table' => 'cache',
'connection' => null,
],
'file' => [
'driver' => 'file',
'path' => storage_path('framework/cache/data'),
],
'memcached' => [
'driver' => 'memcached',
'persistent_id' => env('MEMCACHED_PERSISTENT_ID'),
'sasl' => [
env('MEMCACHED_USERNAME'),
env('MEMCACHED_PASSWORD'),
],
'options' => [
// Memcached::OPT_CONNECT_TIMEOUT => 2000,
],
'servers' => [
[
'host' => env('MEMCACHED_HOST', '127.0.0.1'),
'port' => env('MEMCACHED_PORT', 11211),
'weight' => 100,
],
],
],
'redis' => [
'driver' => 'redis',
'connection' => 'default',
],
],
/*
|--------------------------------------------------------------------------
| Cache Key Prefix
|--------------------------------------------------------------------------
|
| When utilizing a RAM based store such as APC or Memcached, there might
| be other applications utilizing the same cache. So, we'll specify a
| value to get prefixed to all our keys so we can avoid collisions.
|
*/
'prefix' => env(
'CACHE_PREFIX',
str_slug(env('APP_NAME', 'laravel'), '_').'_cache'
),
];
================================================
FILE: config/captcha.php
================================================
<?php
return [
'characters' => '2346789abcdefghjmnpqrtuxyzABCDEFGHJMNPQRTUXYZ',
'default' => [
'length' => 5,
'width' => 120,
'height' => 36,
'quality' => 90,
],
'flat' => [
'length' => 6,
'width' => 160,
'height' => 46,
'quality' => 90,
'lines' => 6,
'bgImage' => false,
'bgColor' => '#ecf2f4',
'fontColors'=> ['#2c3e50', '#c0392b', '#16a085', '#c0392b', '#8e44ad', '#303f9f', '#f57c00', '#795548'],
'contrast' => -5,
],
'mini' => [
'length' => 3,
'width' => 60,
'height' => 32,
],
'inverse' => [
'length' => 5,
'width' => 120,
'height' => 36,
'quality' => 90,
'sensitive' => true,
'angle' => 12,
'sharpen' => 10,
'blur' => 2,
'invert' => true,
'contrast' => -5,
]
];
================================================
FILE: config/database.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Database Connection Name
|--------------------------------------------------------------------------
|
| Here you may specify which of the database connections below you wish
| to use as your default connection for all database work. Of course
| you may use many connections at once using the Database library.
|
*/
'default' => env('DB_CONNECTION', 'mysql'),
/*
|--------------------------------------------------------------------------
| Database Connections
|--------------------------------------------------------------------------
|
| Here are each of the database connections setup for your application.
| Of course, examples of configuring each database platform that is
| supported by Laravel is shown below to make development simple.
|
|
| All database work in Laravel is done through the PHP PDO facilities
| so make sure you have the driver for your particular database of
| choice installed on your machine before you begin development.
|
*/
'connections' => [
'sqlite' => [
'driver' => 'sqlite',
'database' => env('DB_DATABASE', database_path('database.sqlite')),
'prefix' => '',
],
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
'pgsql' => [
'driver' => 'pgsql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '5432'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
'schema' => 'public',
'sslmode' => 'prefer',
],
'sqlsrv' => [
'driver' => 'sqlsrv',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '1433'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
],
'tenancy' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => 'tenancy',
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
],
/*
|--------------------------------------------------------------------------
| Migration Repository Table
|--------------------------------------------------------------------------
|
| This table keeps track of all the migrations that have already run for
| your application. Using this information, we can determine which of
| the migrations on disk haven't actually been run in the database.
|
*/
'migrations' => 'migrations',
/*
|--------------------------------------------------------------------------
| Redis Databases
|--------------------------------------------------------------------------
|
| Redis is an open source, fast, and advanced key-value store that also
| provides a richer set of commands than a typical key-value systems
| such as APC or Memcached. Laravel makes it easy to dig right in.
|
*/
'redis' => [
'client' => 'predis',
'default' => [
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => 0,
],
],
];
================================================
FILE: config/excel.php
================================================
<?php
use Maatwebsite\Excel\Excel;
return [
'exports' => [
/*
|--------------------------------------------------------------------------
| Chunk size
|--------------------------------------------------------------------------
|
| When using FromQuery, the query is automatically chunked.
| Here you can specify how big the chunk should be.
|
*/
'chunk_size' => 1000,
/*
|--------------------------------------------------------------------------
| Pre-calculate formulas during export
|--------------------------------------------------------------------------
*/
'pre_calculate_formulas' => false,
/*
|--------------------------------------------------------------------------
| CSV Settings
|--------------------------------------------------------------------------
|
| Configure e.g. delimiter, enclosure and line ending for CSV exports.
|
*/
'csv' => [
'delimiter' => ',',
'enclosure' => '"',
'line_ending' => PHP_EOL,
'use_bom' => false,
'include_separator_line' => false,
'excel_compatibility' => false,
],
],
'imports' => [
'read_only' => true,
'heading_row' => [
/*
|--------------------------------------------------------------------------
| Heading Row Formatter
|--------------------------------------------------------------------------
|
| Configure the heading row formatter.
| Available options: none|slug|custom
|
*/
'formatter' => 'slug',
],
/*
|--------------------------------------------------------------------------
| CSV Settings
|--------------------------------------------------------------------------
|
| Configure e.g. delimiter, enclosure and line ending for CSV imports.
|
*/
'csv' => [
'delimiter' => ',',
'enclosure' => '"',
'escape_character' => '\\',
'contiguous' => false,
'input_encoding' => 'UTF-8',
],
],
/*
|--------------------------------------------------------------------------
| Extension detector
|--------------------------------------------------------------------------
|
| Configure here which writer type should be used when
| the package needs to guess the correct type
| based on the extension alone.
|
*/
'extension_detector' => [
'xlsx' => Excel::XLSX,
'xlsm' => Excel::XLSX,
'xltx' => Excel::XLSX,
'xltm' => Excel::XLSX,
'xls' => Excel::XLS,
'xlt' => Excel::XLS,
'ods' => Excel::ODS,
'ots' => Excel::ODS,
'slk' => Excel::SLK,
'xml' => Excel::XML,
'gnumeric' => Excel::GNUMERIC,
'htm' => Excel::HTML,
'html' => Excel::HTML,
'csv' => Excel::CSV,
'tsv' => Excel::TSV,
/*
|--------------------------------------------------------------------------
| PDF Extension
|--------------------------------------------------------------------------
|
| Configure here which Pdf driver should be used by default.
| Available options: Excel::MPDF | Excel::TCPDF | Excel::DOMPDF
|
*/
'pdf' => Excel::DOMPDF,
],
'value_binder' => [
/*
|--------------------------------------------------------------------------
| Default Value Binder
|--------------------------------------------------------------------------
|
| PhpSpreadsheet offers a way to hook into the process of a value being
| written to a cell. In there some assumptions are made on how the
| value should be formatted. If you want to change those defaults,
| you can implement your own default value binder.
|
*/
'default' => Maatwebsite\Excel\DefaultValueBinder::class,
],
'transactions' => [
/*
|--------------------------------------------------------------------------
| Transaction Handler
|--------------------------------------------------------------------------
|
| By default the import is wrapped in a transaction. This is useful
| for when an import may fail and you want to retry it. With the
| transactions, the previous import gets rolled-back.
|
| You can disable the transaction handler by setting this to null.
| Or you can choose a custom made transaction handler here.
|
| Supported handlers: null|db
|
*/
'handler' => 'db',
],
'temporary_files' => [
/*
|--------------------------------------------------------------------------
| Local Temporary Path
|--------------------------------------------------------------------------
|
| When exporting and importing files, we use a temporary file, before
| storing reading or downloading. Here you can customize that path.
|
*/
'local_path' => sys_get_temp_dir(),
/*
|--------------------------------------------------------------------------
| Remote Temporary Disk
|--------------------------------------------------------------------------
|
| When dealing with a multi server setup with queues in which you
| cannot rely on having a shared local temporary path, you might
| want to store the temporary file on a shared disk. During the
| queue executing, we'll retrieve the temporary file from that
| location instead. When left to null, it will always use
| the local path. This setting only has effect when using
| in conjunction with queued imports and exports.
|
*/
'remote_disk' => null,
],
];
================================================
FILE: config/filesystems.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Filesystem Disk
|--------------------------------------------------------------------------
|
| Here you may specify the default filesystem disk that should be used
| by the framework. The "local" disk, as well as a variety of cloud
| based disks are available to your application. Just store away!
|
*/
'default' => env('FILESYSTEM_DRIVER', 'public'),
/*
|--------------------------------------------------------------------------
| Default Cloud Filesystem Disk
|--------------------------------------------------------------------------
|
| Many applications store files both locally and in the cloud. For this
| reason, you may specify a default "cloud" driver here. This driver
| will be bound as the Cloud disk implementation in the container.
|
*/
'cloud' => env('FILESYSTEM_CLOUD', 's3'),
/*
|--------------------------------------------------------------------------
| Filesystem Disks
|--------------------------------------------------------------------------
|
| Here you may configure as many filesystem "disks" as you wish, and you
| may even configure multiple disks of the same driver. Defaults have
| been setup for each driver as an example of the required options.
|
| Supported Drivers: "local", "ftp", "s3", "rackspace"
|
*/
'disks' => [
'local' => [
'driver' => 'local',
'root' => storage_path('app'),
],
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
's3' => [
'driver' => 's3',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION'),
'bucket' => env('AWS_BUCKET'),
],
'admin' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
],
];
================================================
FILE: config/mail.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Mail Driver
|--------------------------------------------------------------------------
|
| Laravel supports both SMTP and PHP's "mail" function as drivers for the
| sending of e-mail. You may specify which one you're using throughout
| your application here. By default, Laravel is setup for SMTP mail.
|
| Supported: "smtp", "sendmail", "mailgun", "mandrill", "ses",
| "sparkpost", "log", "array"
|
*/
'driver' => env('MAIL_DRIVER', 'smtp'),
/*
|--------------------------------------------------------------------------
| SMTP Host Address
|--------------------------------------------------------------------------
|
| Here you may provide the host address of the SMTP server used by your
| applications. A default option is provided that is compatible with
| the Mailgun mail service which will provide reliable deliveries.
|
*/
'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
/*
|--------------------------------------------------------------------------
| SMTP Host Port
|--------------------------------------------------------------------------
|
| This is the SMTP port used by your application to deliver e-mails to
| users of the application. Like the host we have set this value to
| stay compatible with the Mailgun e-mail application by default.
|
*/
'port' => env('MAIL_PORT', 587),
/*
|--------------------------------------------------------------------------
| Global "From" Address
|--------------------------------------------------------------------------
|
| You may wish for all e-mails sent by your application to be sent from
| the same address. Here, you may specify a name and address that is
| used globally for all e-mails that are sent by your application.
|
*/
'from' => [
'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'),
'name' => env('MAIL_FROM_NAME', 'Example'),
],
/*
|--------------------------------------------------------------------------
| E-Mail Encryption Protocol
|--------------------------------------------------------------------------
|
| Here you may specify the encryption protocol that should be used when
| the application send e-mail messages. A sensible default using the
| transport layer security protocol should provide great security.
|
*/
'encryption' => env('MAIL_ENCRYPTION', 'ssl'),
/*
|--------------------------------------------------------------------------
| SMTP Server Username
|--------------------------------------------------------------------------
|
| If your SMTP server requires a username for authentication, you should
| set it here. This will get used to authenticate with your server on
| connection. You may also set the "password" value below this one.
|
*/
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
/*
|--------------------------------------------------------------------------
| Sendmail System Path
|--------------------------------------------------------------------------
|
| When using the "sendmail" driver to send e-mails, we will need to know
| the path to where Sendmail lives on this server. A default path has
| been provided here, which will work well on most of your systems.
|
*/
'sendmail' => '/usr/sbin/sendmail -bs',
/*
|--------------------------------------------------------------------------
| Markdown Mail Settings
|--------------------------------------------------------------------------
|
| If you are using Markdown based email rendering, you may configure your
| theme and component paths here, allowing you to customize the design
| of the emails. Or, you may simply stick with the Laravel defaults!
|
*/
'markdown' => [
'theme' => 'default',
'paths' => [
resource_path('views/vendor/mail'),
],
],
];
================================================
FILE: config/payjs.php
================================================
<?php
return [
'mchid' => '',
'key' => '',
// 此地址一般无需更改
'api_url' => 'https://payjs.cn/api/',
];
================================================
FILE: config/personal_pay.php
================================================
<?php
return [
'secret' => env('PERSON_PAY_SECRET','123456'),
'notify_url' => env('PERSON_PAY_NOTIFY_URL',''),
];
================================================
FILE: config/queue.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Queue Driver
|--------------------------------------------------------------------------
|
| Laravel's queue API supports an assortment of back-ends via a single
| API, giving you convenient access to each back-end using the same
| syntax for each one. Here you may set the default queue driver.
|
| Supported: "sync", "database", "beanstalkd", "sqs", "redis", "null"
|
*/
'default' => env('QUEUE_DRIVER', 'sync'),
/*
|--------------------------------------------------------------------------
| Queue Connections
|--------------------------------------------------------------------------
|
| Here you may configure the connection information for each server that
| is used by your application. A default configuration has been added
| for each back-end shipped with Laravel. You are free to add more.
|
*/
'connections' => [
'sync' => [
'driver' => 'sync',
],
'database' => [
'driver' => 'database',
'table' => 'jobs',
'queue' => 'default',
'retry_after' => 90,
],
'beanstalkd' => [
'driver' => 'beanstalkd',
'host' => 'localhost',
'queue' => 'default',
'retry_after' => 90,
],
'sqs' => [
'driver' => 'sqs',
'key' => env('SQS_KEY', 'your-public-key'),
'secret' => env('SQS_SECRET', 'your-secret-key'),
'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'),
'queue' => env('SQS_QUEUE', 'your-queue-name'),
'region' => env('SQS_REGION', 'us-east-1'),
],
'redis' => [
'driver' => 'redis',
'connection' => 'default',
'queue' => 'default',
'retry_after' => 90,
],
],
/*
|--------------------------------------------------------------------------
| Failed Queue Jobs
|--------------------------------------------------------------------------
|
| These options configure the behavior of failed queue job logging so you
| can control which database and table are used to store the jobs that
| have failed. You may change them to any database / table you wish.
|
*/
'failed' => [
'database' => env('DB_CONNECTION', 'mysql'),
'table' => 'failed_jobs',
],
];
================================================
FILE: config/services.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Third Party Services
|--------------------------------------------------------------------------
|
| This file is for storing the credentials for third party services such
| as Stripe, Mailgun, SparkPost and others. This file provides a sane
| default location for this type of information, allowing packages
| to have a conventional place to find your various credentials.
|
*/
'mailgun' => [
'domain' => env('MAILGUN_DOMAIN'),
'secret' => env('MAILGUN_SECRET'),
],
'ses' => [
'key' => env('SES_KEY'),
'secret' => env('SES_SECRET'),
'region' => 'us-east-1',
],
'sparkpost' => [
'secret' => env('SPARKPOST_SECRET'),
],
'stripe' => [
'model' => App\User::class,
'key' => env('STRIPE_KEY'),
'secret' => env('STRIPE_SECRET'),
],
];
================================================
FILE: config/session.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Session Driver
|--------------------------------------------------------------------------
|
| This option controls the default session "driver" that will be used on
| requests. By default, we will use the lightweight native driver but
| you may specify any of the other wonderful drivers provided here.
|
| Supported: "file", "cookie", "database", "apc",
| "memcached", "redis", "array"
|
*/
'driver' => env('SESSION_DRIVER', 'file'),
/*
|--------------------------------------------------------------------------
| Session Lifetime
|--------------------------------------------------------------------------
|
| Here you may specify the number of minutes that you wish the session
| to be allowed to remain idle before it expires. If you want them
| to immediately expire on the browser closing, set that option.
|
*/
'lifetime' => env('SESSION_LIFETIME', 120),
'expire_on_close' => false,
/*
|--------------------------------------------------------------------------
| Session Encryption
|--------------------------------------------------------------------------
|
| This option allows you to easily specify that all of your session data
| should be encrypted before it is stored. All encryption will be run
| automatically by Laravel and you can use the Session like normal.
|
*/
'encrypt' => false,
/*
|--------------------------------------------------------------------------
| Session File Location
|--------------------------------------------------------------------------
|
| When using the native session driver, we need a location where session
| files may be stored. A default has been set for you but a different
| location may be specified. This is only needed for file sessions.
|
*/
'files' => storage_path('framework/sessions'),
/*
|--------------------------------------------------------------------------
| Session Database Connection
|--------------------------------------------------------------------------
|
| When using the "database" or "redis" session drivers, you may specify a
| connection that should be used to manage these sessions. This should
| correspond to a connection in your database configuration options.
|
*/
'connection' => null,
/*
|--------------------------------------------------------------------------
| Session Database Table
|--------------------------------------------------------------------------
|
| When using the "database" session driver, you may specify the table we
| should use to manage the sessions. Of course, a sensible default is
| provided for you; however, you are free to change this as needed.
|
*/
'table' => 'sessions',
/*
|--------------------------------------------------------------------------
| Session Cache Store
|--------------------------------------------------------------------------
|
| When using the "apc" or "memcached" session drivers, you may specify a
| cache store that should be used for these sessions. This value must
| correspond with one of the application's configured cache stores.
|
*/
'store' => null,
/*
|--------------------------------------------------------------------------
| Session Sweeping Lottery
|--------------------------------------------------------------------------
|
| Some session drivers must manually sweep their storage location to get
| rid of old sessions from storage. Here are the chances that it will
| happen on a given request. By default, the odds are 2 out of 100.
|
*/
'lottery' => [2, 100],
/*
|--------------------------------------------------------------------------
| Session Cookie Name
|--------------------------------------------------------------------------
|
| Here you may change the name of the cookie used to identify a session
| instance by ID. The name specified here will get used every time a
| new session cookie is created by the framework for every driver.
|
*/
'cookie' => env(
'SESSION_COOKIE',
str_slug(env('APP_NAME', 'laravel'), '_').'_session'
),
/*
|--------------------------------------------------------------------------
| Session Cookie Path
|--------------------------------------------------------------------------
|
| The session cookie path determines the path for which the cookie will
| be regarded as available. Typically, this will be the root path of
| your application but you are free to change this when necessary.
|
*/
'path' => '/',
/*
|--------------------------------------------------------------------------
| Session Cookie Domain
|--------------------------------------------------------------------------
|
| Here you may change the domain of the cookie used to identify a session
| in your application. This will determine which domains the cookie is
| available to in your application. A sensible default has been set.
|
*/
'domain' => env('SESSION_DOMAIN', null),
/*
|--------------------------------------------------------------------------
| HTTPS Only Cookies
|--------------------------------------------------------------------------
|
| By setting this option to true, session cookies will only be sent back
| to the server if the browser has a HTTPS connection. This will keep
| the cookie from being sent to you if it can not be done securely.
|
*/
'secure' => env('SESSION_SECURE_COOKIE', false),
/*
|--------------------------------------------------------------------------
| HTTP Access Only
|--------------------------------------------------------------------------
|
| Setting this value to true will prevent JavaScript from accessing the
| value of the cookie and the cookie will only be accessible through
| the HTTP protocol. You are free to modify this option if needed.
|
*/
'http_only' => true,
/*
|--------------------------------------------------------------------------
| Same-Site Cookies
|--------------------------------------------------------------------------
|
| This option determines how your cookies behave when cross-site requests
| take place, and can be used to mitigate CSRF attacks. By default, we
| do not enable this as other CSRF protection services are in place.
|
| Supported: "lax", "strict"
|
*/
'same_site' => null,
];
================================================
FILE: config/view.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| View Storage Paths
|--------------------------------------------------------------------------
|
| Most templating systems load templates from disk. Here you may specify
| an array of paths that should be checked for your views. Of course
| the usual Laravel view path has already been registered for you.
|
*/
'paths' => [
resource_path('views'),
],
/*
|--------------------------------------------------------------------------
| Compiled View Path
|--------------------------------------------------------------------------
|
| This option determines where all the compiled Blade templates will be
| stored for your application. Typically, this is within the storage
| directory. However, as usual, you are free to change this value.
|
*/
'compiled' => realpath(storage_path('framework/views')),
];
================================================
FILE: config/wechat.php
================================================
<?php
/*
* This file is part of the overtrue/laravel-wechat.
*
* (c) overtrue <i@overtrue.me>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
return [
/*
* 默认配置,将会合并到各模块中
*/
'defaults' => [
/*
* 指定 API 调用返回结果的类型:array(default)/collection/object/raw/自定义类名
*/
'response_type' => 'array',
/*
* 使用 Laravel 的缓存系统
*/
'use_laravel_cache' => true,
/*
* 日志配置
*
* level: 日志级别,可选为:
* debug/info/notice/warning/error/critical/alert/emergency
* file:日志文件位置(绝对路径!!!),要求可写权限
*/
'log' => [
'level' => env('WECHAT_LOG_LEVEL', 'debug'),
'file' => env('WECHAT_LOG_FILE', storage_path('logs/wechat.log')),
],
],
/*
* 路由配置
*/
'route' => [
/*
* 开放平台第三方平台路由配置
*/
// 'open_platform' => [
// 'uri' => 'serve',
// 'action' => Overtrue\LaravelWeChat\Controllers\OpenPlatformController::class,
// 'attributes' => [
// 'prefix' => 'open-platform',
// 'middleware' => null,
// ],
// ],
],
/*
* 公众号
*/
'official_account' => [
'default' => [
'app_id' => env('WECHAT_OFFICIAL_ACCOUNT_APPID', 'your-app-id'), // AppID
'secret' => env('WECHAT_OFFICIAL_ACCOUNT_SECRET', 'your-app-secret'), // AppSecret
'token' => env('WECHAT_OFFICIAL_ACCOUNT_TOKEN', 'your-token'), // Token
'aes_key' => env('WECHAT_OFFICIAL_ACCOUNT_AES_KEY', ''), // EncodingAESKey
/*
* OAuth 配置
*
* scopes:公众平台(snsapi_userinfo / snsapi_base),开放平台:snsapi_login
* callback:OAuth授权完成后的回调页地址(如果使用中间件,则随便填写。。。)
*/
// 'oauth' => [
// 'scopes' => array_map('trim', explode(',', env('WECHAT_OFFICIAL_ACCOUNT_OAUTH_SCOPES', 'snsapi_userinfo'))),
// 'callback' => env('WECHAT_OFFICIAL_ACCOUNT_OAUTH_CALLBACK', '/examples/oauth_callback.php'),
// ],
],
],
/*
* 开放平台第三方平台
*/
// 'open_platform' => [
// 'default' => [
// 'app_id' => env('WECHAT_OPEN_PLATFORM_APPID', ''),
// 'secret' => env('WECHAT_OPEN_PLATFORM_SECRET', ''),
// 'token' => env('WECHAT_OPEN_PLATFORM_TOKEN', ''),
// 'aes_key' => env('WECHAT_OPEN_PLATFORM_AES_KEY', ''),
// ],
// ],
/*
* 小程序
*/
// 'mini_program' => [
// 'default' => [
// 'app_id' => env('WECHAT_MINI_PROGRAM_APPID', ''),
// 'secret' => env('WECHAT_MINI_PROGRAM_SECRET', ''),
// 'token' => env('WECHAT_MINI_PROGRAM_TOKEN', ''),
// 'aes_key' => env('WECHAT_MINI_PROGRAM_AES_KEY', ''),
// ],
// ],
/*
* 微信支付
*/
// 'payment' => [
// 'default' => [
// 'sandbox' => env('WECHAT_PAYMENT_SANDBOX', false),
// 'app_id' => env('WECHAT_PAYMENT_APPID', ''),
// 'mch_id' => env('WECHAT_PAYMENT_MCH_ID', 'your-mch-id'),
// 'key' => env('WECHAT_PAYMENT_KEY', 'key-for-signature'),
// 'cert_path' => env('WECHAT_PAYMENT_CERT_PATH', 'path/to/cert/apiclient_cert.pem'), // XXX: 绝对路径!!!!
// 'key_path' => env('WECHAT_PAYMENT_KEY_PATH', 'path/to/cert/apiclient_key.pem'), // XXX: 绝对路径!!!!
// 'notify_url' => 'http://example.com/payments/wechat-notify', // 默认支付结果通知地址
// ],
// // ...
// ],
/*
* 企业微信
*/
// 'work' => [
// 'default' => [
// 'corp_id' => 'xxxxxxxxxxxxxxxxx',
/// 'agent_id' => 100020,
// 'secret' => env('WECHAT_WORK_AGENT_CONTACTS_SECRET', ''),
// //...
// ],
// ],
];
================================================
FILE: database/.gitignore
================================================
*.sqlite
================================================
FILE: database/factories/UserFactory.php
================================================
<?php
use Faker\Generator as Faker;
/*
|--------------------------------------------------------------------------
| Model Factories
|--------------------------------------------------------------------------
|
| This directory should contain each of the model factory definitions for
| your application. Factories provide a convenient way to generate new
| model instances for testing / seeding your application's database.
|
*/
$factory->define(App\User::class, function (Faker $faker) {
return [
'name' => $faker->name,
'email' => $faker->unique()->safeEmail,
'password' => '$2y$10$TKh8H1.PfQx37YgCzwiKb.KjNyWgaHb9cbcoQgdIVFlYg7B77UdFm', // secret
'remember_token' => str_random(10),
];
});
================================================
FILE: database/migrations/2019_08_13_120928_create_admin_menu_table.php
================================================
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
class CreateAdminMenuTable extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('admin_menu', function(Blueprint $table)
{
$table->increments('id');
$table->integer('parent_id')->default(0);
$table->integer('order')->default(0);
$table->string('title', 50);
$table->string('icon', 50);
$table->string('uri', 50)->nullable();
$table->string('permission')->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('admin_menu');
}
}
================================================
FILE: database/migrations/2019_08_13_120928_create_admin_operation_log_table.php
================================================
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
class CreateAdminOperationLogTable extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('admin_operation_log', function(Blueprint $table)
{
$table->increments('id');
$table->integer('user_id')->index();
$table->string('path');
$table->string('method', 10);
$table->string('ip');
$table->text('input', 65535);
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('admin_operation_log');
}
}
================================================
FILE: database/migrations/2019_08_13_120928_create_admin_permissions_table.php
================================================
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
class CreateAdminPermissionsTable extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('admin_permissions', function(Blueprint $table)
{
$table->increments('id');
$table->string('name', 50)->unique();
$table->string('slug', 50);
$table->string('http_method')->nullable();
$table->text('http_path', 65535)->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('admin_permissions');
}
}
================================================
FILE: database/migrations/2019_08_13_120928_create_admin_role_menu_table.php
================================================
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
class CreateAdminRoleMenuTable extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('admin_role_menu', function(Blueprint $table)
{
$table->integer('role_id');
$table->integer('menu_id');
$table->timestamps();
$table->index(['role_id','menu_id']);
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('admin_role_menu');
}
}
================================================
FILE: database/migrations/2019_08_13_120928_create_admin_role_permissions_table.php
================================================
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
class CreateAdminRolePermissionsTable extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('admin_role_permissions', function(Blueprint $table)
{
$table->integer('role_id');
$table->integer('permission_id');
$table->timestamps();
$table->index(['role_id','permission_id']);
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('admin_role_permissions');
}
}
================================================
FILE: database/migrations/2019_08_13_120928_create_admin_role_users_table.php
================================================
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
class CreateAdminRoleUsersTable extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('admin_role_users', function(Blueprint $table)
{
$table->integer('role_id');
$table->integer('user_id');
$table->timestamps();
$table->index(['role_id','user_id']);
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('admin_role_users');
}
}
================================================
FILE: database/migrations/2019_08_13_120928_create_admin_roles_table.php
================================================
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
class CreateAdminRolesTable extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('admin_roles', function(Blueprint $table)
{
$table->increments('id');
$table->string('name', 50)->unique();
$table->string('slug', 50);
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('admin_roles');
}
}
================================================
FILE: database/migrations/2019_08_13_120928_create_admin_user_permissions_table.php
================================================
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
class CreateAdminUserPermissionsTable extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('admin_user_permissions', function(Blueprint $table)
{
$table->integer('user_id');
$table->integer('permission_id');
$table->timestamps();
$table->index(['user_id','permission_id']);
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('admin_user_permissions');
}
}
================================================
FILE: database/migrations/2019_08_13_120928_create_admin_users_table.php
================================================
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
class CreateAdminUsersTable extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('admin_users', function(Blueprint $table)
{
$table->increments('id');
$table->string('username', 190)->unique();
$table->string('password', 60);
$table->string('name');
$table->string('avatar')->nullable();
$table->string('remember_token', 100)->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('admin_users');
}
}
================================================
FILE: database/migrations/2019_08_13_120928_create_cards_table.php
================================================
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
class CreateCardsTable extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('cards', function(Blueprint $table)
{
$table->increments('id');
$table->integer('goods_id')->comment('所属商品id');
$table->string('content')->comment('内容');
$table->boolean('status')->default(0)->comment('0正常 1已售出');
$table->integer('order_id')->nullable()->comment('所属订单id');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('cards');
}
}
================================================
FILE: database/migrations/2019_08_13_120928_create_failed_jobs_table.php
================================================
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
class CreateFailedJobsTable extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('failed_jobs', function(Blueprint $table)
{
$table->bigInteger('id', true)->unsigned();
$table->text('connection', 65535);
$table->text('queue', 65535);
$table->text('payload');
$table->text('exception');
$table->timestamp('failed_at')->default(DB::raw('CURRENT_TIMESTAMP'));
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('failed_jobs');
}
}
================================================
FILE: database/migrations/2019_08_13_120928_create_goods_categories_table.php
================================================
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
class CreateGoodsCategoriesTable extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('goods_categories', function(Blueprint $table)
{
$table->increments('id');
$table->string('name')->comment('商品分类名称');
$table->integer('sort')->comment('商品分类排序');
$table->boolean('status')->default(1)->comment('状态');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('goods_categories');
}
}
================================================
FILE: database/migrations/2019_08_13_120928_create_goods_table.php
================================================
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
class CreateGoodsTable extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('goods', function(Blueprint $table)
{
$table->increments('id');
$table->integer('category_id')->comment('商品分类id');
$table->string('name')->comment('商品名称');
$table->text('introduce')->nullable()->comment('商品介绍');
$table->decimal('price')->comment('商品价格');
$table->boolean('type')->comment('商品类型 1手工商品 2自动发卡');
$table->integer('sold_count')->unsigned()->default(0)->comment('销量');
$table->integer('stock')->unsigned()->default(0)->comment('库存');
$table->boolean('status')->default(1)->comment('商品上架状态 0下架 1上架');
$table->integer('sort')->comment('商品排序');
$table->string('first_input')->nullable()->comment('第一个输入框标题');
$table->string('more_input')->nullable()->comment('更多输入框 逗号隔开');
$table->integer('email_template_id')->nullable()->comment('发送邮件的模板id');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('goods');
}
}
================================================
FILE: database/migrations/2019_08_13_120928_create_jobs_table.php
================================================
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
class CreateJobsTable extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('jobs', function(Blueprint $table)
{
$table->bigInteger('id', true)->unsigned();
$table->string('queue')->index();
$table->text('payload');
$table->boolean('attempts');
$table->integer('reserved_at')->unsigned()->nullable();
$table->integer('available_at')->unsigned();
$table->integer('created_at')->unsigned();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('jobs');
}
}
================================================
FILE: database/migrations/2019_08_13_120928_create_orders_table.php
================================================
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
class CreateOrdersTable extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('orders', function(Blueprint $table)
{
$table->increments('id');
$table->string('trade_no')->comment('订单号');
$table->string('name')->comment('订单名称');
$table->integer('goods_id')->comment('商品id');
$table->string('goods_name')->comment('商品名称');
$table->decimal('unit_price')->comment('商品单价');
$table->integer('count')->comment('购买数量');
$table->decimal('total_price')->comment('订单总价');
$table->decimal('real_total_price')->nullable()->comment('订单真实总价');
$table->string('pay_account')->nullable()->comment('充值账号');
$table->string('email')->nullable()->comment('邮箱');
$table->boolean('type')->comment('订单类型 1手工订单 2自动发卡');
$table->string('out_trade_no')->nullable()->comment('外部订单号');
$table->boolean('pay_type')->nullable()->comment('支付方式');
$table->string('password')->nullable()->comment('查询密码');
$table->string('more_input_value')->nullable()->comment('更多表单值');
$table->boolean('status')->default(0)->comment('0未支付 1已支付,正在处理中 2已过期 3处理成功 4处理失败');
$table->dateTime('pay_time')->nullable()->comment('支付时间');
$table->string('ip')->nullable()->comment('客户端ip');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('orders');
}
}
================================================
FILE: database/migrations/2019_08_13_173337_create_email_templates_table.php
================================================
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateEmailTemplatesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('email_templates', function (Blueprint $table) {
$table->increments('id');
$table->string('name')->comment('模板名称');
$table->longText('content_blade')->comment('邮件模板blade');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('email_templates');
}
}
================================================
FILE: database/seeds/AdminConfigTableSeeder.php
================================================
<?php
use Illuminate\Database\Seeder;
class AdminConfigTableSeeder extends Seeder
{
/**
* Auto generated seed file
*
* @return void
*/
public function run()
{
\DB::table('admin_config')->delete();
\DB::table('admin_config')->insert(array (
0 =>
array (
'id' => 1,
'name' => '__configx__',
'value' => 'do not delete',
'description' => '{"base.site_open":{"options":[],"element":"yes_or_no","help":"\\u7f51\\u7ad9\\u662f\\u5426\\u5f00\\u542f","name":"\\u7f51\\u7ad9\\u5f00\\u542f","order":5},"base.site_name":{"options":[],"element":"normal","help":"\\u7f51\\u7ad9\\u540d\\u79f0","name":"\\u7f51\\u7ad9\\u540d\\u79f0","order":10},"base.site_logo":{"options":[],"element":"image","help":"\\u7f51\\u7ad9logo","name":"\\u7f51\\u7ad9logo","order":15},"mail.driver":{"options":{"smtp":"smtp"},"element":"normal","help":"\\u90ae\\u4ef6\\u9a71\\u52a8","name":"\\u90ae\\u4ef6\\u9a71\\u52a8","order":5},"mail.host":{"options":[],"element":"normal","help":"\\u90ae\\u4ef6\\u4e3b\\u673a,\\u5982smtp.163.com","name":"\\u90ae\\u4ef6\\u4e3b\\u673a","order":10},"mail.port":{"options":[],"element":"normal","help":"\\u90ae\\u4ef6\\u7aef\\u53e3","name":"\\u90ae\\u4ef6\\u7aef\\u53e3","order":15},"mail.from.address":{"options":[],"element":"normal","help":"\\u90ae\\u4ef6\\u53d1\\u4ef6\\u4eba\\u5730\\u5740","name":"\\u90ae\\u4ef6\\u53d1\\u4ef6\\u4eba\\u5730\\u5740","order":20},"mail.from.name":{"options":[],"element":"normal","help":"\\u90ae\\u4ef6\\u53d1\\u4ef6\\u4eba\\u59d3\\u540d","name":"\\u90ae\\u4ef6\\u53d1\\u4ef6\\u4eba\\u59d3\\u540d","order":25},"mail.username":{"options":[],"element":"normal","help":"\\u90ae\\u4ef6\\u7528\\u6237\\u540d","name":"\\u90ae\\u4ef6\\u7528\\u6237\\u540d","order":30},"mail.password":{"options":[],"element":"normal","help":"\\u90ae\\u4ef6\\u5bc6\\u7801","name":"\\u90ae\\u4ef6\\u5bc6\\u7801","order":35},"notice.open":{"options":[],"element":"yes_or_no","help":"\\u662f\\u5426\\u5f00\\u542f\\u516c\\u544a","name":"\\u662f\\u5426\\u5f00\\u542f\\u516c\\u544a","order":5},"notice.content":{"options":[],"element":"editor","help":"\\u516c\\u544a\\u5185\\u5bb9","name":"\\u516c\\u544a\\u5185\\u5bb9","order":10},"notice.button_title":{"options":[],"element":"normal","help":"\\u516c\\u544a\\u6309\\u94ae\\u6807\\u9898","name":"\\u516c\\u544a\\u6309\\u94ae\\u6807\\u9898","order":15},"notice.button_url":{"options":[],"element":"normal","help":"\\u516c\\u544a\\u94fe\\u63a5","name":"\\u516c\\u544a\\u94fe\\u63a5","order":20},"payjs.mchid":{"options":[],"element":"normal","help":"payjs\\u5546\\u6237\\u53f7","name":"payjs\\u5546\\u6237\\u53f7","order":5},"payjs.key":{"options":[],"element":"normal","help":"payjs\\u901a\\u4fe1\\u5bc6\\u94a5","name":"payjs\\u901a\\u4fe1\\u5bc6\\u94a5","order":10},"payjs.wechat":{"options":[],"element":"yes_or_no","help":"\\u662f\\u5426\\u5f00\\u542f\\u5fae\\u4fe1\\u652f\\u4ed8","name":"\\u662f\\u5426\\u5f00\\u542f\\u5fae\\u4fe1\\u652f\\u4ed8","order":15},"payjs.alipay":{"options":[],"element":"yes_or_no","help":"\\u662f\\u5426\\u5f00\\u542f\\u652f\\u4ed8\\u5b9d\\u652f\\u4ed8","name":"\\u662f\\u5426\\u5f00\\u542f\\u652f\\u4ed8\\u5b9d\\u652f\\u4ed8","order":20}}',
'created_at' => '2019-08-13 11:29:31',
'updated_at' => '2019-08-15 01:13:48',
),
1 =>
array (
'id' => 2,
'name' => 'base.site_open',
'value' => '1',
'description' => '网站名称',
'created_at' => '2019-08-13 11:31:06',
'updated_at' => '2019-08-13 11:36:27',
),
2 =>
array (
'id' => 3,
'name' => 'base.site_name',
'value' => 'dylan发卡系统',
'description' => '网站名称',
'created_at' => '2019-08-13 11:36:48',
'updated_at' => '2019-08-13 11:52:14',
),
3 =>
array (
'id' => 4,
'name' => 'base.site_logo',
'value' => 'images/130635c367a2eb6bbc8c2398e234832f.png',
'description' => '网站logo',
'created_at' => '2019-08-13 11:37:08',
'updated_at' => '2019-08-14 23:30:59',
),
4 =>
array (
'id' => 5,
'name' => 'mail.driver',
'value' => 'smtp',
'description' => '邮件驱动',
'created_at' => '2019-08-13 11:38:59',
'updated_at' => '2019-08-13 11:38:59',
),
5 =>
array (
'id' => 6,
'name' => 'mail.host',
'value' => 'smtp.163.com',
'description' => '邮件主机',
'created_at' => '2019-08-13 11:39:51',
'updated_at' => '2019-08-13 11:53:41',
),
6 =>
array (
'id' => 7,
'name' => 'mail.port',
'value' => '465',
'description' => '邮件端口',
'created_at' => '2019-08-13 11:40:24',
'updated_at' => '2019-08-13 11:53:41',
),
7 =>
array (
'id' => 8,
'name' => 'mail.from.address',
'value' => '13075534552@163.com',
'description' => '邮件发件人地址',
'created_at' => '2019-08-13 11:40:49',
'updated_at' => '2019-08-13 11:53:41',
),
8 =>
array (
'id' => 9,
'name' => 'mail.from.name',
'value' => '发卡系统',
'description' => '邮件发件人姓名',
'created_at' => '2019-08-13 11:41:04',
'updated_at' => '2019-08-13 11:53:41',
),
9 =>
array (
'id' => 10,
'name' => 'mail.username',
'value' => '13075534552@163.com',
'description' => '邮件用户名',
'created_at' => '2019-08-13 11:41:25',
'updated_at' => '2019-08-13 11:53:41',
),
10 =>
array (
'id' => 11,
'name' => 'mail.password',
'value' => 'zz123456',
'description' => '邮件密码',
'created_at' => '2019-08-13 11:41:38',
'updated_at' => '2019-08-13 11:53:41',
),
11 =>
array (
'id' => 12,
'name' => 'notice.open',
'value' => '1',
'description' => '是否开启公告',
'created_at' => '2019-08-13 11:42:17',
'updated_at' => '2019-08-14 23:29:43',
),
12 =>
array (
'id' => 13,
'name' => 'notice.content',
'value' => '<p style="text-align: center;">去github上给个star呗,小弟感激不尽</p>',
'description' => '公告内容',
'created_at' => '2019-08-13 11:42:40',
'updated_at' => '2019-08-14 23:29:43',
),
13 =>
array (
'id' => 14,
'name' => 'notice.button_title',
'value' => '火速围观',
'description' => '公告按钮标题',
'created_at' => '2019-08-13 11:43:06',
'updated_at' => '2019-08-14 23:29:43',
),
14 =>
array (
'id' => 15,
'name' => 'notice.button_url',
'value' => 'https://github.com/zzDylan/faka',
'description' => '公告链接',
'created_at' => '2019-08-13 11:43:28',
'updated_at' => '2019-08-14 23:29:43',
),
15 =>
array (
'id' => 16,
'name' => 'payjs.mchid',
'value' => '1550362101',
'description' => 'payjs商户号',
'created_at' => '2019-08-13 18:40:10',
'updated_at' => '2019-08-13 18:41:20',
),
16 =>
array (
'id' => 17,
'name' => 'payjs.key',
'value' => 'JirS4Oo6uX0hsIij',
'description' => 'payjs通信密钥',
'created_at' => '2019-08-13 18:40:29',
'updated_at' => '2019-08-13 18:41:20',
),
17 =>
array (
'id' => 18,
'name' => 'payjs.wechat',
'value' => '1',
'description' => '是否开启微信支付',
'created_at' => '2019-08-15 01:12:16',
'updated_at' => '2019-08-15 01:18:20',
),
18 =>
array (
'id' => 19,
'name' => 'payjs.alipay',
'value' => '1',
'description' => '是否开启支付宝支付',
'created_at' => '2019-08-15 01:12:32',
'updated_at' => '2019-08-15 01:18:05',
),
));
}
}
================================================
FILE: database/seeds/AdminMenuTableSeeder.php
================================================
<?php
use Illuminate\Database\Seeder;
class AdminMenuTableSeeder extends Seeder
{
/**
* Auto generated seed file
*
* @return void
*/
public function run()
{
\DB::table('admin_menu')->delete();
\DB::table('admin_menu')->insert(array (
0 =>
array (
'id' => 1,
'parent_id' => 0,
'order' => 1,
'title' => '主页',
'icon' => 'fa-bar-chart',
'uri' => '/',
'permission' => NULL,
'created_at' => NULL,
'updated_at' => NULL,
),
1 =>
array (
'id' => 2,
'parent_id' => 0,
'order' => 2,
'title' => '后台管理',
'icon' => 'fa-tasks',
'uri' => '',
'permission' => NULL,
'created_at' => NULL,
'updated_at' => NULL,
),
2 =>
array (
'id' => 3,
'parent_id' => 2,
'order' => 3,
'title' => '管理员',
'icon' => 'fa-users',
'uri' => 'auth/users',
'permission' => NULL,
'created_at' => NULL,
'updated_at' => '2019-08-13 11:54:16',
),
3 =>
array (
'id' => 4,
'parent_id' => 2,
'order' => 4,
'title' => '角色',
'icon' => 'fa-user',
'uri' => 'auth/roles',
'permission' => NULL,
'created_at' => NULL,
'updated_at' => NULL,
),
4 =>
array (
'id' => 5,
'parent_id' => 2,
'order' => 5,
'title' => '权限',
'icon' => 'fa-ban',
'uri' => 'auth/permissions',
'permission' => NULL,
'created_at' => NULL,
'updated_at' => NULL,
),
5 =>
array (
'id' => 6,
'parent_id' => 2,
'order' => 6,
'title' => '菜单',
'icon' => 'fa-bars',
'uri' => 'auth/menu',
'permission' => NULL,
'created_at' => NULL,
'updated_at' => NULL,
),
6 =>
array (
'id' => 7,
'parent_id' => 2,
'order' => 7,
'title' => '日志',
'icon' => 'fa-history',
'uri' => 'auth/logs',
'permission' => NULL,
'created_at' => NULL,
'updated_at' => NULL,
),
7 =>
array (
'id' => 8,
'parent_id' => 0,
'order' => 9,
'title' => '商品分类',
'icon' => 'fa-bars',
'uri' => 'goods/categories',
'permission' => NULL,
'created_at' => '2018-12-30 22:45:12',
'updated_at' => '2019-01-10 17:22:45',
),
8 =>
array (
'id' => 9,
'parent_id' => 0,
'order' => 10,
'title' => '商品',
'icon' => 'fa-bars',
'uri' => 'goods',
'permission' => NULL,
'created_at' => '2018-12-30 23:35:35',
'updated_at' => '2019-01-10 17:22:45',
),
9 =>
array (
'id' => 10,
'parent_id' => 0,
'order' => 11,
'title' => '卡密',
'icon' => 'fa-bars',
'uri' => 'cards',
'permission' => NULL,
'created_at' => '2018-12-31 10:26:38',
'updated_at' => '2019-01-10 17:22:45',
),
10 =>
array (
'id' => 11,
'parent_id' => 0,
'order' => 12,
'title' => '订单',
'icon' => 'fa-bars',
'uri' => 'orders',
'permission' => NULL,
'created_at' => '2019-01-01 22:31:33',
'updated_at' => '2019-01-10 17:22:45',
),
11 =>
array (
'id' => 22,
'parent_id' => 0,
'order' => 13,
'title' => '配置',
'icon' => 'fa-toggle-on',
'uri' => 'configx/edit',
'permission' => NULL,
'created_at' => '2019-08-13 11:22:10',
'updated_at' => '2019-08-13 11:54:32',
),
12 =>
array (
'id' => 23,
'parent_id' => 0,
'order' => 0,
'title' => '邮件模板',
'icon' => 'fa-commenting-o',
'uri' => 'email-templates',
'permission' => NULL,
'created_at' => '2019-08-13 18:29:17',
'updated_at' => '2019-08-13 18:29:17',
),
));
}
}
================================================
FILE: database/seeds/AdminPermissionsTableSeeder.php
================================================
<?php
use Illuminate\Database\Seeder;
class AdminPermissionsTableSeeder extends Seeder
{
/**
* Auto generated seed file
*
* @return void
*/
public function run()
{
\DB::table('admin_permissions')->delete();
\DB::table('admin_permissions')->insert(array (
0 =>
array (
'id' => 1,
'name' => 'All permission',
'slug' => '*',
'http_method' => '',
'http_path' => '*',
'created_at' => NULL,
'updated_at' => NULL,
),
1 =>
array (
'id' => 2,
'name' => 'Dashboard',
'slug' => 'dashboard',
'http_method' => 'GET',
'http_path' => '/',
'created_at' => NULL,
'updated_at' => NULL,
),
2 =>
array (
'id' => 3,
'name' => 'Login',
'slug' => 'auth.login',
'http_method' => '',
'http_path' => '/auth/login
/auth/logout',
'created_at' => NULL,
'updated_at' => NULL,
),
3 =>
array (
'id' => 4,
'name' => 'User setting',
'slug' => 'auth.setting',
'http_method' => 'GET,PUT',
'http_path' => '/auth/setting',
'created_at' => NULL,
'updated_at' => NULL,
),
4 =>
array (
'id' => 5,
'name' => 'Auth management',
'slug' => 'auth.management',
'http_method' => '',
'http_path' => '/auth/roles
/auth/permissions
/auth/menu
/auth/logs',
'created_at' => NULL,
'updated_at' => NULL,
),
5 =>
array (
'id' => 6,
'name' => 'Admin helpers',
'slug' => 'ext.helpers',
'http_method' => NULL,
'http_path' => '/helpers/*',
'created_at' => '2018-12-21 22:37:26',
'updated_at' => '2018-12-21 22:37:26',
),
6 =>
array (
'id' => 7,
'name' => 'Admin Config',
'slug' => 'ext.config',
'http_method' => NULL,
'http_path' => '/config*',
'created_at' => '2019-01-10 15:33:42',
'updated_at' => '2019-01-10 15:33:42',
),
7 =>
array (
'id' => 10,
'name' => 'Admin Configx',
'slug' => 'ext.configx',
'http_method' => NULL,
'http_path' => '/configx/*',
'created_at' => '2019-08-13 11:22:10',
'updated_at' => '2019-08-13 11:22:10',
),
));
}
}
================================================
FILE: database/seeds/AdminRoleMenuTableSeeder.php
================================================
<?php
use Illuminate\Database\Seeder;
class AdminRoleMenuTableSeeder extends Seeder
{
/**
* Auto generated seed file
*
* @return void
*/
public function run()
{
\DB::table('admin_role_menu')->delete();
\DB::table('admin_role_menu')->insert(array (
0 =>
array (
'role_id' => 1,
'menu_id' => 1,
'created_at' => NULL,
'updated_at' => NULL,
),
1 =>
array (
'role_id' => 1,
'menu_id' => 2,
'created_at' => NULL,
'updated_at' => NULL,
),
2 =>
array (
'role_id' => 1,
'menu_id' => 3,
'created_at' => NULL,
'updated_at' => NULL,
),
3 =>
array (
'role_id' => 1,
'menu_id' => 4,
'created_at' => NULL,
'updated_at' => NULL,
),
4 =>
array (
'role_id' => 1,
'menu_id' => 5,
'created_at' => NULL,
'updated_at' => NULL,
),
5 =>
array (
'role_id' => 1,
'menu_id' => 6,
'created_at' => NULL,
'updated_at' => NULL,
),
6 =>
array (
'role_id' => 1,
'menu_id' => 7,
'created_at' => NULL,
'updated_at' => NULL,
),
7 =>
array (
'role_id' => 1,
'menu_id' => 8,
'created_at' => NULL,
'updated_at' => NULL,
),
8 =>
array (
'role_id' => 1,
'menu_id' => 9,
'created_at' => NULL,
'updated_at' => NULL,
),
9 =>
array (
'role_id' => 1,
'menu_id' => 10,
'created_at' => NULL,
'updated_at' => NULL,
),
10 =>
array (
'role_id' => 1,
'menu_id' => 11,
'created_at' => NULL,
'updated_at' => NULL,
),
));
}
}
================================================
FILE: database/seeds/AdminRolePermissionsTableSeeder.php
================================================
<?php
use Illuminate\Database\Seeder;
class AdminRolePermissionsTableSeeder extends Seeder
{
/**
* Auto generated seed file
*
* @return void
*/
public function run()
{
\DB::table('admin_role_permissions')->delete();
\DB::table('admin_role_permissions')->insert(array (
0 =>
array (
'role_id' => 1,
'permission_id' => 1,
'created_at' => NULL,
'updated_at' => NULL,
),
));
}
}
================================================
FILE: database/seeds/AdminRoleUsersTableSeeder.php
================================================
<?php
use Illuminate\Database\Seeder;
class AdminRoleUsersTableSeeder extends Seeder
{
/**
* Auto generated seed file
*
* @return void
*/
public function run()
{
\DB::table('admin_role_users')->delete();
\DB::table('admin_role_users')->insert(array (
0 =>
array (
'role_id' => 1,
'user_id' => 1,
'created_at' => NULL,
'updated_at' => NULL,
),
));
}
}
================================================
FILE: database/seeds/AdminRolesTableSeeder.php
================================================
<?php
use Illuminate\Database\Seeder;
class AdminRolesTableSeeder extends Seeder
{
/**
* Auto generated seed file
*
* @return void
*/
public function run()
{
\DB::table('admin_roles')->delete();
\DB::table('admin_roles')->insert(array (
0 =>
array (
'id' => 1,
'name' => 'Administrator',
'slug' => 'administrator',
'created_at' => '2018-12-21 04:34:05',
'updated_at' => '2018-12-21 04:34:05',
),
));
}
}
================================================
FILE: database/seeds/AdminUsersTableSeeder.php
================================================
<?php
use Illuminate\Database\Seeder;
class AdminUsersTableSeeder extends Seeder
{
/**
* Auto generated seed file
*
* @return void
*/
public function run()
{
\DB::table('admin_users')->delete();
\DB::table('admin_users')->insert(array (
0 =>
array (
'id' => 1,
'username' => 'admin',
'password' => '$2y$10$47vOYpgysvKcYNf1EY/GYeOKfbsU6N33zPWWfHHOFGh6/WuYCvEL6',
'name' => 'admin',
'avatar' => NULL,
'remember_token' => NULL,
'created_at' => '2019-01-03 20:25:14',
'updated_at' => '2019-01-03 20:25:14',
),
));
}
}
================================================
FILE: database/seeds/DatabaseSeeder.php
================================================
<?php
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$this->call(AdminConfigTableSeeder::class);
$this->call(AdminMenuTableSeeder::class);
$this->call(AdminPermissionsTableSeeder::class);
$this->call(AdminRolesTableSeeder::class);
$this->call(AdminRoleMenuTableSeeder::class);
$this->call(AdminRolePermissionsTableSeeder::class);
$this->call(AdminRoleUsersTableSeeder::class);
$this->call(AdminUsersTableSeeder::class);
$this->call(GoodsCategoriesTableSeeder::class);
$this->call(GoodsTableSeeder::class);
$this->call(EmailTemplatesTableSeeder::class);
}
}
================================================
FILE: database/seeds/EmailTemplatesTableSeeder.php
================================================
<?php
use Illuminate\Database\Seeder;
class EmailTemplatesTableSeeder extends Seeder
{
/**
* Auto generated seed file
*
* @return void
*/
public function run()
{
\DB::table('email_templates')->delete();
\DB::table('email_templates')->insert(array (
0 =>
array (
'id' => 1,
'name' => '测试模板',
'content_blade' => '<p></p><p></p><h1>{{$order->trade_no}}</h1><p><b></b><br></p>',
'created_at' => '2019-08-13 18:29:40',
'updated_at' => '2019-08-13 19:50:32',
),
));
}
}
================================================
FILE: database/seeds/GoodsCategoriesTableSeeder.php
================================================
<?php
use Illuminate\Database\Seeder;
class GoodsCategoriesTableSeeder extends Seeder
{
/**
* Auto generated seed file
*
* @return void
*/
public function run()
{
\DB::table('goods_categories')->delete();
\DB::table('goods_categories')->insert(array (
0 =>
array (
'id' => 1,
'name' => '测试分类',
'sort' => 0,
'status' => 1,
'created_at' => '2019-08-13 12:02:07',
'updated_at' => '2019-08-13 12:02:07',
),
));
}
}
================================================
FILE: database/seeds/GoodsTableSeeder.php
================================================
<?php
use Illuminate\Database\Seeder;
class GoodsTableSeeder extends Seeder
{
/**
* Auto generated seed file
*
* @return void
*/
public function run()
{
\DB::table('goods')->delete();
\DB::table('goods')->insert(array (
0 =>
array (
'id' => 1,
'category_id' => 1,
'name' => '测试商品',
'introduce' => '<p></p><p>商品介绍</p>',
'price' => '0.01',
'type' => 1,
'sold_count' => 0,
'stock' => 999,
'status' => 1,
'sort' => 0,
'first_input' => '学号',
'more_input' => '密码',
'created_at' => '2019-08-13 12:04:08',
'updated_at' => '2019-08-13 12:04:21',
),
));
}
}
================================================
FILE: package.json
================================================
{
"private": true,
"scripts": {
"dev": "npm run development",
"development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
"watch": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
"watch-poll": "npm run watch -- --watch-poll",
"hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
"prod": "npm run production",
"production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
},
"devDependencies": {
"axios": "^0.17",
"bootstrap-sass": "^3.3.7",
"cross-env": "^5.1",
"jquery": "^3.2",
"laravel-mix": "^1.0",
"lodash": "^4.17.4",
"vue": "^2.5.7"
}
}
================================================
FILE: phpunit.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
backupStaticAttributes="false"
bootstrap="vendor/autoload.php"
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="false"
stopOnFailure="false">
<testsuites>
<testsuite name="Feature">
<directory suffix="Test.php">./tests/Feature</directory>
</testsuite>
<testsuite name="Unit">
<directory suffix="Test.php">./tests/Unit</directory>
</testsuite>
</testsuites>
<filter>
<whitelist processUncoveredFilesFromWhitelist="true">
<directory suffix=".php">./app</directory>
</whitelist>
</filter>
<php>
<env name="APP_ENV" value="testing"/>
<env name="CACHE_DRIVER" value="array"/>
<env name="SESSION_DRIVER" value="array"/>
<env name="QUEUE_DRIVER" value="sync"/>
</php>
</phpunit>
================================================
FILE: public/.htaccess
================================================
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
================================================
FILE: public/.user.ini
================================================
open_basedir=/www/wwwroot/payjs-faka/:/tmp/:/proc/
================================================
FILE: public/css/app.css
================================================
@import url(https://fonts.googleapis.com/css?family=Raleway:300,400,600);@charset "UTF-8";
/*!
* Bootstrap v3.4.0 (https://getbootstrap.com/)
* Copyright 2011-2018 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
html {
font-family: sans-serif;
-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%;
}
body {
margin: 0;
}
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
menu,
nav,
section,
summary {
display: block;
}
audio,
canvas,
progress,
video {
display: inline-block;
vertical-align: baseline;
}
audio:not([controls]) {
display: none;
height: 0;
}
[hidden],
template {
display: none;
}
a {
background-color: transparent;
}
a:active,
a:hover {
outline: 0;
}
abbr[title] {
border-bottom: none;
text-decoration: underline;
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted;
}
b,
strong {
font-weight: bold;
}
dfn {
font-style: italic;
}
h1 {
font-size: 2em;
margin: 0.67em 0;
}
mark {
background: #ff0;
color: #000;
}
small {
font-size: 80%;
}
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sup {
top: -0.5em;
}
sub {
bottom: -0.25em;
}
img {
border: 0;
}
svg:not(:root) {
overflow: hidden;
}
figure {
margin: 1em 40px;
}
hr {
-webkit-box-sizing: content-box;
box-sizing: content-box;
height: 0;
}
pre {
overflow: auto;
}
code,
kbd,
pre,
samp {
font-family: monospace, monospace;
font-size: 1em;
}
button,
input,
optgroup,
select,
textarea {
color: inherit;
font: inherit;
margin: 0;
}
button {
overflow: visible;
}
button,
select {
text-transform: none;
}
button,
html input[type="button"],
input[type="reset"],
input[type="submit"] {
-webkit-appearance: button;
cursor: pointer;
}
button[disabled],
html input[disabled] {
cursor: default;
}
button::-moz-focus-inner,
input::-moz-focus-inner {
border: 0;
padding: 0;
}
input {
line-height: normal;
}
input[type="checkbox"],
input[type="radio"] {
-webkit-box-sizing: border-box;
box-sizing: border-box;
padding: 0;
}
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
height: auto;
}
input[type="search"] {
-webkit-appearance: textfield;
-webkit-box-sizing: content-box;
box-sizing: content-box;
}
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
fieldset {
border: 1px solid #c0c0c0;
margin: 0 2px;
padding: 0.35em 0.625em 0.75em;
}
legend {
border: 0;
padding: 0;
}
textarea {
overflow: auto;
}
optgroup {
font-weight: bold;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
td,
th {
padding: 0;
}
/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
@media print {
*,
*:before,
*:after {
color: #000 !important;
text-shadow: none !important;
background: transparent !important;
-webkit-box-shadow: none !important;
box-shadow: none !important;
}
a,
a:visited {
text-decoration: underline;
}
a[href]:after {
content: " (" attr(href) ")";
}
abbr[title]:after {
content: " (" attr(title) ")";
}
a[href^="#"]:after,
a[href^="javascript:"]:after {
content: "";
}
pre,
blockquote {
border: 1px solid #999;
page-break-inside: avoid;
}
thead {
display: table-header-group;
}
tr,
img {
page-break-inside: avoid;
}
img {
max-width: 100% !important;
}
p,
h2,
h3 {
orphans: 3;
widows: 3;
}
h2,
h3 {
page-break-after: avoid;
}
.navbar {
display: none;
}
.btn > .caret,
.dropup > .btn > .caret {
border-top-color: #000 !important;
}
.label {
border: 1px solid #000;
}
.table {
border-collapse: collapse !important;
}
.table td,
.table th {
background-color: #fff !important;
}
.table-bordered th,
.table-bordered td {
border: 1px solid #ddd !important;
}
}
@font-face {
font-family: "Glyphicons Halflings";
src: url(/fonts/vendor/bootstrap-sass/bootstrap/glyphicons-halflings-regular.eot?f4769f9bdb7466be65088239c12046d1);
src: url(/fonts/vendor/bootstrap-sass/bootstrap/glyphicons-halflings-regular.eot?f4769f9bdb7466be65088239c12046d1?#iefix) format("embedded-opentype"), url(/fonts/vendor/bootstrap-sass/bootstrap/glyphicons-halflings-regular.woff2?448c34a56d699c29117adc64c43affeb) format("woff2"), url(/fonts/vendor/bootstrap-sass/bootstrap/glyphicons-halflings-regular.woff?fa2772327f55d8198301fdb8bcfc8158) format("woff"), url(/fonts/vendor/bootstrap-sass/bootstrap/glyphicons-halflings-regular.ttf?e18bbf611f2a2e43afc071aa2f4e1512) format("truetype"), url(/fonts/vendor/bootstrap-sass/bootstrap/glyphicons-halflings-regular.svg?89889688147bd7575d6327160d64e760#glyphicons_halflingsregular) format("svg");
}
.glyphicon {
position: relative;
top: 1px;
display: inline-block;
font-family: "Glyphicons Halflings";
font-style: normal;
font-weight: 400;
line-height: 1;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.glyphicon-asterisk:before {
content: "*";
}
.glyphicon-plus:before {
content: "+";
}
.glyphicon-euro:before,
.glyphicon-eur:before {
content: "\20AC";
}
.glyphicon-minus:before {
content: "\2212";
}
.glyphicon-cloud:before {
content: "\2601";
}
.glyphicon-envelope:before {
content: "\2709";
}
.glyphicon-pencil:before {
content: "\270F";
}
.glyphicon-glass:before {
content: "\E001";
}
.glyphicon-music:before {
content: "\E002";
}
.glyphicon-search:before {
content: "\E003";
}
.glyphicon-heart:before {
content: "\E005";
}
.glyphicon-star:before {
content: "\E006";
}
.glyphicon-star-empty:before {
content: "\E007";
}
.glyphicon-user:before {
content: "\E008";
}
.glyphicon-film:before {
content: "\E009";
}
.glyphicon-th-large:before {
content: "\E010";
}
.glyphicon-th:before {
content: "\E011";
}
.glyphicon-th-list:before {
content: "\E012";
}
.glyphicon-ok:before {
content: "\E013";
}
.glyphicon-remove:before {
content: "\E014";
}
.glyphicon-zoom-in:before {
content: "\E015";
}
.glyphicon-zoom-out:before {
content: "\E016";
}
.glyphicon-off:before {
content: "\E017";
}
.glyphicon-signal:before {
content: "\E018";
}
.glyphicon-cog:before {
content: "\E019";
}
.glyphicon-trash:before {
content: "\E020";
}
.glyphicon-home:before {
content: "\E021";
}
.glyphicon-file:before {
content: "\E022";
}
.glyphicon-time:before {
content: "\E023";
}
.glyphicon-road:before {
content: "\E024";
}
.glyphicon-download-alt:before {
content: "\E025";
}
.glyphicon-download:before {
content: "\E026";
}
.glyphicon-upload:before {
content: "\E027";
}
.glyphicon-inbox:before {
content: "\E028";
}
.glyphicon-play-circle:before {
content: "\E029";
}
.glyphicon-repeat:before {
content: "\E030";
}
.glyphicon-refresh:before {
content: "\E031";
}
.glyphicon-list-alt:before {
content: "\E032";
}
.glyphicon-lock:before {
content: "\E033";
}
.glyphicon-flag:before {
content: "\E034";
}
.glyphicon-headphones:before {
content: "\E035";
}
.glyphicon-volume-off:before {
content: "\E036";
}
.glyphicon-volume-down:before {
content: "\E037";
}
.glyphicon-volume-up:before {
content: "\E038";
}
.glyphicon-qrcode:before {
content: "\E039";
}
.glyphicon-barcode:before {
content: "\E040";
}
.glyphicon-tag:before {
content: "\E041";
}
.glyphicon-tags:before {
content: "\E042";
}
.glyphicon-book:before {
content: "\E043";
}
.glyphicon-bookmark:before {
content: "\E044";
}
.glyphicon-print:before {
content: "\E045";
}
.glyphicon-camera:before {
content: "\E046";
}
.glyphicon-font:before {
content: "\E047";
}
.glyphicon-bold:before {
content: "\E048";
}
.glyphicon-italic:before {
content: "\E049";
}
.glyphicon-text-height:before {
content: "\E050";
}
.glyphicon-text-width:before {
content: "\E051";
}
.glyphicon-align-left:before {
content: "\E052";
}
.glyphicon-align-center:before {
content: "\E053";
}
.glyphicon-align-right:before {
content: "\E054";
}
.glyphicon-align-justify:before {
content: "\E055";
}
.glyphicon-list:before {
content: "\E056";
}
.glyphicon-indent-left:before {
content: "\E057";
}
.glyphicon-indent-right:before {
content: "\E058";
}
.glyphicon-facetime-video:before {
content: "\E059";
}
.glyphicon-picture:before {
content: "\E060";
}
.glyphicon-map-marker:before {
content: "\E062";
}
.glyphicon-adjust:before {
content: "\E063";
}
.glyphicon-tint:before {
content: "\E064";
}
.glyphicon-edit:before {
content: "\E065";
}
.glyphicon-share:before {
content: "\E066";
}
.glyphicon-check:before {
content: "\E067";
}
.glyphicon-move:before {
content: "\E068";
}
.glyphicon-step-backward:before {
content: "\E069";
}
.glyphicon-fast-backward:before {
content: "\E070";
}
.glyphicon-backward:before {
content: "\E071";
}
.glyphicon-play:before {
content: "\E072";
}
.glyphicon-pause:before {
content: "\E073";
}
.glyphicon-stop:before {
content: "\E074";
}
.glyphicon-forward:before {
content: "\E075";
}
.glyphicon-fast-forward:before {
content: "\E076";
}
.glyphicon-step-forward:before {
content: "\E077";
}
.glyphicon-eject:before {
content: "\E078";
}
.glyphicon-chevron-left:before {
content: "\E079";
}
.glyphicon-chevron-right:before {
content: "\E080";
}
.glyphicon-plus-sign:before {
content: "\E081";
}
.glyphicon-minus-sign:before {
content: "\E082";
}
.glyphicon-remove-sign:before {
content: "\E083";
}
.glyphicon-ok-sign:before {
content: "\E084";
}
.glyphicon-question-sign:before {
content: "\E085";
}
.glyphicon-info-sign:before {
content: "\E086";
}
.glyphicon-screenshot:before {
content: "\E087";
}
.glyphicon-remove-circle:before {
content: "\E088";
}
.glyphicon-ok-circle:before {
content: "\E089";
}
.glyphicon-ban-circle:before {
content: "\E090";
}
.glyphicon-arrow-left:before {
content: "\E091";
}
.glyphicon-arrow-right:before {
content: "\E092";
}
.glyphicon-arrow-up:before {
content: "\E093";
}
.glyphicon-arrow-down:before {
content: "\E094";
}
.glyphicon-share-alt:before {
content: "\E095";
}
.glyphicon-resize-full:before {
content: "\E096";
}
.glyphicon-resize-small:before {
content: "\E097";
}
.glyphicon-exclamation-sign:before {
content: "\E101";
}
.glyphicon-gift:before {
content: "\E102";
}
.glyphicon-leaf:before {
content: "\E103";
}
.glyphicon-fire:before {
content: "\E104";
}
.glyphicon-eye-open:before {
content: "\E105";
}
.glyphicon-eye-close:before {
content: "\E106";
}
.glyphicon-warning-sign:before {
content: "\E107";
}
.glyphicon-plane:before {
content: "\E108";
}
.glyphicon-calendar:before {
content: "\E109";
}
.glyphicon-random:before {
content: "\E110";
}
.glyphicon-comment:before {
content: "\E111";
}
.glyphicon-magnet:before {
content: "\E112";
}
.glyphicon-chevron-up:before {
content: "\E113";
}
.glyphicon-chevron-down:before {
content: "\E114";
}
.glyphicon-retweet:before {
content: "\E115";
}
.glyphicon-shopping-cart:before {
content: "\E116";
}
.glyphicon-folder-close:before {
content: "\E117";
}
.glyphicon-folder-open:before {
content: "\E118";
}
.glyphicon-resize-vertical:before {
content: "\E119";
}
.glyphicon-resize-horizontal:before {
content: "\E120";
}
.glyphicon-hdd:before {
content: "\E121";
}
.glyphicon-bullhorn:before {
content: "\E122";
}
.glyphicon-bell:before {
content: "\E123";
}
.glyphicon-certificate:before {
content: "\E124";
}
.glyphicon-thumbs-up:before {
content: "\E125";
}
.glyphicon-thumbs-down:before {
content: "\E126";
}
.glyphicon-hand-right:before {
content: "\E127";
}
.glyphicon-hand-left:before {
content: "\E128";
}
.glyphicon-hand-up:before {
content: "\E129";
}
.glyphicon-hand-down:before {
content: "\E130";
}
.glyphicon-circle-arrow-right:before {
content: "\E131";
}
.glyphicon-circle-arrow-left:before {
content: "\E132";
}
.glyphicon-circle-arrow-up:before {
content: "\E133";
}
.glyphicon-circle-arrow-down:before {
content: "\E134";
}
.glyphicon-globe:before {
content: "\E135";
}
.glyphicon-wrench:before {
content: "\E136";
}
.glyphicon-tasks:before {
content: "\E137";
}
.glyphicon-filter:before {
content: "\E138";
}
.glyphicon-briefcase:before {
content: "\E139";
}
.glyphicon-fullscreen:before {
content: "\E140";
}
.glyphicon-dashboard:before {
content: "\E141";
}
.glyphicon-paperclip:before {
content: "\E142";
}
.glyphicon-heart-empty:before {
content: "\E143";
}
.glyphicon-link:before {
content: "\E144";
}
.glyphicon-phone:before {
content: "\E145";
}
.glyphicon-pushpin:before {
content: "\E146";
}
.glyphicon-usd:before {
content: "\E148";
}
.glyphicon-gbp:before {
content: "\E149";
}
.glyphicon-sort:before {
content: "\E150";
}
.glyphicon-sort-by-alphabet:before {
content: "\E151";
}
.glyphicon-sort-by-alphabet-alt:before {
content: "\E152";
}
.glyphicon-sort-by-order:before {
content: "\E153";
}
.glyphicon-sort-by-order-alt:before {
content: "\E154";
}
.glyphicon-sort-by-attributes:before {
content: "\E155";
}
.glyphicon-sort-by-attributes-alt:before {
content: "\E156";
}
.glyphicon-unchecked:before {
content: "\E157";
}
.glyphicon-expand:before {
content: "\E158";
}
.glyphicon-collapse-down:before {
content: "\E159";
}
.glyphicon-collapse-up:before {
gitextract_cj07zfd2/ ├── .gitattributes ├── .gitignore ├── app/ │ ├── Admin/ │ │ ├── Controllers/ │ │ │ ├── AuthController.php │ │ │ ├── CardController.php │ │ │ ├── CategoryController.php │ │ │ ├── EmailTemplateController.php │ │ │ ├── ExampleController.php │ │ │ ├── GoodsController.php │ │ │ ├── HomeController.php │ │ │ └── OrderController.php │ │ ├── Extensions/ │ │ │ ├── OrdersExporter.php │ │ │ └── Tools/ │ │ │ └── HandleOrders.php │ │ ├── bootstrap.php │ │ └── routes.php │ ├── Console/ │ │ └── Kernel.php │ ├── Events/ │ │ └── OrderShipped.php │ ├── Exceptions/ │ │ └── Handler.php │ ├── Http/ │ │ ├── Controllers/ │ │ │ ├── BaseController.php │ │ │ ├── Controller.php │ │ │ ├── GoodsController.php │ │ │ ├── IndexController.php │ │ │ ├── NotifyController.php │ │ │ ├── OrderController.php │ │ │ ├── ReceivePushController.php │ │ │ ├── TestController.php │ │ │ ├── UploadController.php │ │ │ └── WechatMenuController.php │ │ ├── Kernel.php │ │ └── Middleware/ │ │ ├── EncryptCookies.php │ │ ├── OAuthAuthenticate.php │ │ ├── RedirectIfAuthenticated.php │ │ ├── SiteOpenIf.php │ │ ├── TrimStrings.php │ │ ├── TrustProxies.php │ │ └── VerifyCsrfToken.php │ ├── Listeners/ │ │ └── SendShipmentNotification.php │ ├── Mail/ │ │ └── OrderShipped.php │ ├── Models/ │ │ ├── Card.php │ │ ├── Category.php │ │ ├── EmailTemplate.php │ │ ├── Goods.php │ │ ├── Order.php │ │ ├── WechatMaterial.php │ │ └── WechatUser.php │ ├── Providers/ │ │ ├── AppServiceProvider.php │ │ ├── AuthServiceProvider.php │ │ ├── BroadcastServiceProvider.php │ │ ├── EventServiceProvider.php │ │ └── RouteServiceProvider.php │ └── Services/ │ ├── FileUploadTool.php │ └── PersonalPay.php ├── artisan ├── bootstrap/ │ ├── app.php │ ├── cache/ │ │ └── .gitignore │ └── helpers.php ├── composer.json ├── config/ │ ├── admin.php │ ├── app.php │ ├── auth.php │ ├── broadcasting.php │ ├── cache.php │ ├── captcha.php │ ├── database.php │ ├── excel.php │ ├── filesystems.php │ ├── mail.php │ ├── payjs.php │ ├── personal_pay.php │ ├── queue.php │ ├── services.php │ ├── session.php │ ├── view.php │ └── wechat.php ├── database/ │ ├── .gitignore │ ├── factories/ │ │ └── UserFactory.php │ ├── migrations/ │ │ ├── 2019_08_13_120928_create_admin_menu_table.php │ │ ├── 2019_08_13_120928_create_admin_operation_log_table.php │ │ ├── 2019_08_13_120928_create_admin_permissions_table.php │ │ ├── 2019_08_13_120928_create_admin_role_menu_table.php │ │ ├── 2019_08_13_120928_create_admin_role_permissions_table.php │ │ ├── 2019_08_13_120928_create_admin_role_users_table.php │ │ ├── 2019_08_13_120928_create_admin_roles_table.php │ │ ├── 2019_08_13_120928_create_admin_user_permissions_table.php │ │ ├── 2019_08_13_120928_create_admin_users_table.php │ │ ├── 2019_08_13_120928_create_cards_table.php │ │ ├── 2019_08_13_120928_create_failed_jobs_table.php │ │ ├── 2019_08_13_120928_create_goods_categories_table.php │ │ ├── 2019_08_13_120928_create_goods_table.php │ │ ├── 2019_08_13_120928_create_jobs_table.php │ │ ├── 2019_08_13_120928_create_orders_table.php │ │ └── 2019_08_13_173337_create_email_templates_table.php │ └── seeds/ │ ├── AdminConfigTableSeeder.php │ ├── AdminMenuTableSeeder.php │ ├── AdminPermissionsTableSeeder.php │ ├── AdminRoleMenuTableSeeder.php │ ├── AdminRolePermissionsTableSeeder.php │ ├── AdminRoleUsersTableSeeder.php │ ├── AdminRolesTableSeeder.php │ ├── AdminUsersTableSeeder.php │ ├── DatabaseSeeder.php │ ├── EmailTemplatesTableSeeder.php │ ├── GoodsCategoriesTableSeeder.php │ └── GoodsTableSeeder.php ├── package.json ├── phpunit.xml ├── public/ │ ├── .htaccess │ ├── .user.ini │ ├── css/ │ │ ├── app.css │ │ └── mobile_pay.css │ ├── index.php │ ├── js/ │ │ └── app.js │ ├── layui/ │ │ ├── css/ │ │ │ ├── layui.css │ │ │ ├── layui.mobile.css │ │ │ └── modules/ │ │ │ ├── code.css │ │ │ ├── laydate/ │ │ │ │ └── default/ │ │ │ │ └── laydate.css │ │ │ └── layer/ │ │ │ └── default/ │ │ │ └── layer.css │ │ ├── lay/ │ │ │ └── modules/ │ │ │ ├── carousel.js │ │ │ ├── code.js │ │ │ ├── colorpicker.js │ │ │ ├── element.js │ │ │ ├── flow.js │ │ │ ├── form.js │ │ │ ├── jquery.js │ │ │ ├── laydate.js │ │ │ ├── layedit.js │ │ │ ├── layer.js │ │ │ ├── laypage.js │ │ │ ├── laytpl.js │ │ │ ├── mobile.js │ │ │ ├── rate.js │ │ │ ├── slider.js │ │ │ ├── table.js │ │ │ ├── tree.js │ │ │ ├── upload.js │ │ │ └── util.js │ │ ├── layui.all.js │ │ └── layui.js │ ├── layuicms/ │ │ ├── LICENSE │ │ ├── README.md │ │ ├── css/ │ │ │ ├── index.css │ │ │ └── public.css │ │ ├── index.html │ │ ├── js/ │ │ │ ├── address.js │ │ │ ├── bodyTab.js │ │ │ ├── cache.js │ │ │ ├── cacheUserInfo.js │ │ │ ├── index.js │ │ │ └── main.js │ │ ├── json/ │ │ │ ├── address.json │ │ │ ├── images.json │ │ │ ├── linkList.json │ │ │ ├── linkLogo.json │ │ │ ├── logs.json │ │ │ ├── navs.json │ │ │ ├── newsImg.json │ │ │ ├── newsList.json │ │ │ ├── systemParameter.json │ │ │ ├── userGrade.json │ │ │ ├── userList.json │ │ │ └── userface.json │ │ ├── layui/ │ │ │ ├── css/ │ │ │ │ ├── layui.css │ │ │ │ ├── layui.mobile.css │ │ │ │ └── modules/ │ │ │ │ ├── code.css │ │ │ │ ├── laydate/ │ │ │ │ │ └── default/ │ │ │ │ │ └── laydate.css │ │ │ │ └── layer/ │ │ │ │ └── default/ │ │ │ │ └── layer.css │ │ │ ├── lay/ │ │ │ │ └── modules/ │ │ │ │ ├── carousel.js │ │ │ │ ├── code.js │ │ │ │ ├── element.js │ │ │ │ ├── flow.js │ │ │ │ ├── form.js │ │ │ │ ├── jquery.js │ │ │ │ ├── laydate.js │ │ │ │ ├── layedit.js │ │ │ │ ├── layer.js │ │ │ │ ├── laypage.js │ │ │ │ ├── laytpl.js │ │ │ │ ├── mobile.js │ │ │ │ ├── table.js │ │ │ │ ├── tree.js │ │ │ │ ├── upload.js │ │ │ │ └── util.js │ │ │ ├── layui.all.js │ │ │ └── layui.js │ │ └── page/ │ │ ├── 404.html │ │ ├── doc/ │ │ │ ├── addressDoc.html │ │ │ ├── bodyTabDoc.html │ │ │ └── navDoc.html │ │ ├── img/ │ │ │ ├── images.html │ │ │ └── images.js │ │ ├── login/ │ │ │ ├── login.html │ │ │ └── login.js │ │ ├── main.html │ │ ├── news/ │ │ │ ├── newsAdd.html │ │ │ ├── newsAdd.js │ │ │ ├── newsList.html │ │ │ └── newsList.js │ │ ├── systemSetting/ │ │ │ ├── basicParameter.html │ │ │ ├── basicParameter.js │ │ │ ├── icons.html │ │ │ ├── icons.js │ │ │ ├── linkList.html │ │ │ ├── linkList.js │ │ │ ├── linksAdd.html │ │ │ ├── logs.html │ │ │ └── logs.js │ │ └── user/ │ │ ├── changePwd.html │ │ ├── user.js │ │ ├── userAdd.html │ │ ├── userAdd.js │ │ ├── userGrade.html │ │ ├── userInfo.html │ │ ├── userInfo.js │ │ ├── userList.html │ │ └── userList.js │ ├── mix-manifest.json │ ├── robots.txt │ ├── vendor/ │ │ ├── laravel-admin/ │ │ │ ├── AdminLTE/ │ │ │ │ └── plugins/ │ │ │ │ ├── bootstrap-slider/ │ │ │ │ │ ├── bootstrap-slider.js │ │ │ │ │ └── slider.css │ │ │ │ ├── iCheck/ │ │ │ │ │ ├── all.css │ │ │ │ │ ├── flat/ │ │ │ │ │ │ ├── _all.css │ │ │ │ │ │ ├── aero.css │ │ │ │ │ │ ├── blue.css │ │ │ │ │ │ ├── flat.css │ │ │ │ │ │ ├── green.css │ │ │ │ │ │ ├── grey.css │ │ │ │ │ │ ├── orange.css │ │ │ │ │ │ ├── pink.css │ │ │ │ │ │ ├── purple.css │ │ │ │ │ │ ├── red.css │ │ │ │ │ │ └── yellow.css │ │ │ │ │ ├── futurico/ │ │ │ │ │ │ └── futurico.css │ │ │ │ │ ├── line/ │ │ │ │ │ │ ├── _all.css │ │ │ │ │ │ ├── aero.css │ │ │ │ │ │ ├── blue.css │ │ │ │ │ │ ├── green.css │ │ │ │ │ │ ├── grey.css │ │ │ │ │ │ ├── line.css │ │ │ │ │ │ ├── orange.css │ │ │ │ │ │ ├── pink.css │ │ │ │ │ │ ├── purple.css │ │ │ │ │ │ ├── red.css │ │ │ │ │ │ └── yellow.css │ │ │ │ │ ├── minimal/ │ │ │ │ │ │ ├── _all.css │ │ │ │ │ │ ├── aero.css │ │ │ │ │ │ ├── blue.css │ │ │ │ │ │ ├── green.css │ │ │ │ │ │ ├── grey.css │ │ │ │ │ │ ├── minimal.css │ │ │ │ │ │ ├── orange.css │ │ │ │ │ │ ├── pink.css │ │ │ │ │ │ ├── purple.css │ │ │ │ │ │ ├── red.css │ │ │ │ │ │ └── yellow.css │ │ │ │ │ ├── polaris/ │ │ │ │ │ │ └── polaris.css │ │ │ │ │ └── square/ │ │ │ │ │ ├── _all.css │ │ │ │ │ ├── aero.css │ │ │ │ │ ├── blue.css │ │ │ │ │ ├── green.css │ │ │ │ │ ├── grey.css │ │ │ │ │ ├── orange.css │ │ │ │ │ ├── pink.css │ │ │ │ │ ├── purple.css │ │ │ │ │ ├── red.css │ │ │ │ │ ├── square.css │ │ │ │ │ └── yellow.css │ │ │ │ ├── input-mask/ │ │ │ │ │ └── phone-codes/ │ │ │ │ │ ├── phone-be.json │ │ │ │ │ ├── phone-codes.json │ │ │ │ │ └── readme.txt │ │ │ │ ├── ionslider/ │ │ │ │ │ ├── ion.rangeSlider.css │ │ │ │ │ ├── ion.rangeSlider.skinFlat.css │ │ │ │ │ └── ion.rangeSlider.skinNice.css │ │ │ │ └── select2/ │ │ │ │ └── i18n/ │ │ │ │ ├── ar.js │ │ │ │ ├── az.js │ │ │ │ ├── bg.js │ │ │ │ ├── ca.js │ │ │ │ ├── cs.js │ │ │ │ ├── da.js │ │ │ │ ├── de.js │ │ │ │ ├── el.js │ │ │ │ ├── en.js │ │ │ │ ├── es.js │ │ │ │ ├── et.js │ │ │ │ ├── eu.js │ │ │ │ ├── fa.js │ │ │ │ ├── fi.js │ │ │ │ ├── fr.js │ │ │ │ ├── gl.js │ │ │ │ ├── he.js │ │ │ │ ├── hi.js │ │ │ │ ├── hr.js │ │ │ │ ├── hu.js │ │ │ │ ├── id.js │ │ │ │ ├── is.js │ │ │ │ ├── it.js │ │ │ │ ├── ja.js │ │ │ │ ├── km.js │ │ │ │ ├── ko.js │ │ │ │ ├── lt.js │ │ │ │ ├── lv.js │ │ │ │ ├── mk.js │ │ │ │ ├── ms.js │ │ │ │ ├── nb.js │ │ │ │ ├── nl.js │ │ │ │ ├── pl.js │ │ │ │ ├── pt-BR.js │ │ │ │ ├── pt.js │ │ │ │ ├── ro.js │ │ │ │ ├── ru.js │ │ │ │ ├── sk.js │ │ │ │ ├── sr-Cyrl.js │ │ │ │ ├── sr.js │ │ │ │ ├── sv.js │ │ │ │ ├── th.js │ │ │ │ ├── tr.js │ │ │ │ ├── uk.js │ │ │ │ ├── vi.js │ │ │ │ ├── zh-CN.js │ │ │ │ └── zh-TW.js │ │ │ ├── bootstrap-fileinput/ │ │ │ │ └── js/ │ │ │ │ └── plugins/ │ │ │ │ ├── canvas-to-blob.js │ │ │ │ ├── piexif.js │ │ │ │ ├── purify.js │ │ │ │ └── sortable.js │ │ │ ├── bootstrap3-editable/ │ │ │ │ └── css/ │ │ │ │ └── bootstrap-editable.css │ │ │ ├── font-awesome/ │ │ │ │ └── fonts/ │ │ │ │ └── FontAwesome.otf │ │ │ ├── google-fonts/ │ │ │ │ └── fonts.css │ │ │ ├── jquery-pjax/ │ │ │ │ └── jquery.pjax.js │ │ │ ├── laravel-admin/ │ │ │ │ ├── laravel-admin.css │ │ │ │ └── laravel-admin.js │ │ │ ├── nestable/ │ │ │ │ ├── jquery.nestable.js │ │ │ │ └── nestable.css │ │ │ ├── nprogress/ │ │ │ │ ├── nprogress.css │ │ │ │ └── nprogress.js │ │ │ ├── number-input/ │ │ │ │ └── bootstrap-number-input.js │ │ │ └── sweetalert2/ │ │ │ └── dist/ │ │ │ └── sweetalert2.css │ │ └── laravel-admin-ext/ │ │ ├── material-ui/ │ │ │ └── MaterialAdminLTE/ │ │ │ └── dist/ │ │ │ └── css/ │ │ │ └── custom.css │ │ ├── row-table/ │ │ │ └── table.css │ │ └── wang-editor/ │ │ └── wangEditor-3.0.10/ │ │ └── release/ │ │ ├── wangEditor.css │ │ └── wangEditor.js │ └── web.config ├── readme.md ├── resources/ │ ├── assets/ │ │ ├── js/ │ │ │ ├── app.js │ │ │ ├── bootstrap.js │ │ │ └── components/ │ │ │ └── ExampleComponent.vue │ │ └── sass/ │ │ ├── _variables.scss │ │ └── app.scss │ ├── lang/ │ │ ├── ar/ │ │ │ └── admin.php │ │ ├── az/ │ │ │ └── admin.php │ │ ├── en/ │ │ │ ├── admin.php │ │ │ ├── auth.php │ │ │ ├── pagination.php │ │ │ ├── passwords.php │ │ │ └── validation.php │ │ ├── es/ │ │ │ └── admin.php │ │ ├── fa/ │ │ │ └── admin.php │ │ ├── fr/ │ │ │ └── admin.php │ │ ├── he/ │ │ │ └── admin.php │ │ ├── id/ │ │ │ └── admin.php │ │ ├── ja/ │ │ │ └── admin.php │ │ ├── ko/ │ │ │ └── admin.php │ │ ├── ms/ │ │ │ └── admin.php │ │ ├── nl/ │ │ │ └── admin.php │ │ ├── pl/ │ │ │ └── admin.php │ │ ├── pt/ │ │ │ └── admin.php │ │ ├── pt-BR/ │ │ │ └── admin.php │ │ ├── ru/ │ │ │ └── admin.php │ │ ├── tr/ │ │ │ └── admin.php │ │ ├── uk/ │ │ │ └── admin.php │ │ ├── zh-CN/ │ │ │ ├── admin.php │ │ │ ├── auth.php │ │ │ └── validation.php │ │ └── zh-TW/ │ │ └── admin.php │ └── views/ │ ├── home/ │ │ ├── index.blade.php │ │ ├── layout.blade.php │ │ ├── middle.blade.php │ │ ├── mobilePayment.blade.php │ │ ├── payment.blade.php │ │ ├── payment.blade.php.bak │ │ ├── queryOrders.blade.php │ │ ├── selectGoods.blade.php │ │ └── siteClose.blade.php │ ├── mail/ │ │ └── user/ │ │ └── orderNotification.blade.php │ └── welcome.blade.php ├── routes/ │ ├── api.php │ ├── channels.php │ ├── console.php │ └── web.php ├── server.php ├── storage/ │ ├── app/ │ │ └── .gitignore │ ├── framework/ │ │ ├── .gitignore │ │ ├── cache/ │ │ │ └── .gitignore │ │ ├── sessions/ │ │ │ └── .gitignore │ │ ├── testing/ │ │ │ └── .gitignore │ │ └── views/ │ │ └── .gitignore │ └── logs/ │ └── .gitignore ├── tests/ │ ├── CreatesApplication.php │ ├── Feature/ │ │ └── ExampleTest.php │ ├── TestCase.php │ └── Unit/ │ └── ExampleTest.php └── webpack.mix.js
SYMBOL INDEX (1663 symbols across 119 files)
FILE: app/Admin/Controllers/AuthController.php
class AuthController (line 16) | class AuthController extends BaseAuthController
FILE: app/Admin/Controllers/CardController.php
class CardController (line 17) | class CardController extends Controller
method index (line 27) | public function index(Content $content)
method show (line 42) | public function show($id, Content $content)
method edit (line 57) | public function edit($id, Content $content)
method create (line 71) | public function create(Content $content)
method grid (line 84) | protected function grid()
method detail (line 114) | protected function detail($id)
method form (line 130) | protected function form()
method store (line 152) | public function store()
FILE: app/Admin/Controllers/CategoryController.php
class CategoryController (line 13) | class CategoryController extends Controller
method index (line 23) | public function index(Content $content)
method show (line 38) | public function show($id, Content $content)
method edit (line 53) | public function edit($id, Content $content)
method create (line 67) | public function create(Content $content)
method grid (line 80) | protected function grid()
method detail (line 107) | protected function detail($id)
method form (line 123) | protected function form()
FILE: app/Admin/Controllers/EmailTemplateController.php
class EmailTemplateController (line 11) | class EmailTemplateController extends AdminController
method grid (line 25) | protected function grid()
method detail (line 40) | protected function detail($id)
method form (line 54) | protected function form()
FILE: app/Admin/Controllers/ExampleController.php
class ExampleController (line 12) | class ExampleController extends Controller
method index (line 22) | public function index(Content $content)
method show (line 37) | public function show($id, Content $content)
method edit (line 52) | public function edit($id, Content $content)
method create (line 66) | public function create(Content $content)
method grid (line 79) | protected function grid()
method detail (line 96) | protected function detail($id)
method form (line 112) | protected function form()
FILE: app/Admin/Controllers/GoodsController.php
class GoodsController (line 15) | class GoodsController extends Controller
method index (line 25) | public function index(Content $content)
method show (line 40) | public function show($id, Content $content)
method edit (line 55) | public function edit($id, Content $content)
method create (line 69) | public function create(Content $content)
method grid (line 82) | protected function grid()
method detail (line 118) | protected function detail($id)
method form (line 134) | protected function form()
FILE: app/Admin/Controllers/HomeController.php
class HomeController (line 11) | class HomeController extends Controller
method index (line 13) | public function index(Content $content)
FILE: app/Admin/Controllers/OrderController.php
class OrderController (line 17) | class OrderController extends Controller
method index (line 27) | public function index(Content $content)
method show (line 42) | public function show($id, Content $content)
method edit (line 57) | public function edit($id, Content $content)
method create (line 71) | public function create(Content $content)
method grid (line 84) | protected function grid()
method detail (line 158) | protected function detail($id)
method form (line 220) | protected function form()
method status (line 231) | public function status(Request $request)
FILE: app/Admin/Extensions/OrdersExporter.php
class OrdersExporter (line 6) | class OrdersExporter extends ExcelExporter
FILE: app/Admin/Extensions/Tools/HandleOrders.php
class HandleOrders (line 7) | class HandleOrders extends BatchAction
method __construct (line 11) | public function __construct($action = 3)//3处理成功 4处理失败
method script (line 16) | public function script()
FILE: app/Console/Kernel.php
class Kernel (line 8) | class Kernel extends ConsoleKernel
method schedule (line 25) | protected function schedule(Schedule $schedule)
method commands (line 36) | protected function commands()
FILE: app/Events/OrderShipped.php
class OrderShipped (line 8) | class OrderShipped
method __construct (line 20) | public function __construct(Order $order)
FILE: app/Exceptions/Handler.php
class Handler (line 8) | class Handler extends ExceptionHandler
method report (line 37) | public function report(Exception $exception)
method render (line 49) | public function render($request, Exception $exception)
FILE: app/Http/Controllers/BaseController.php
class BaseController (line 5) | class BaseController extends Controller
method success (line 8) | public function success($message='',$data=[]){
method error (line 16) | public function error($message=''){
FILE: app/Http/Controllers/Controller.php
class Controller (line 10) | class Controller extends BaseController
FILE: app/Http/Controllers/GoodsController.php
class GoodsController (line 8) | class GoodsController extends BaseController
method index (line 10) | public function index(Request $request){
method getByCardType (line 18) | public function getByCardType(Request $request){
method show (line 27) | public function show(Goods $goods){
FILE: app/Http/Controllers/IndexController.php
class IndexController (line 9) | class IndexController extends BaseController
method index (line 12) | public function index(Request $request)
method selectGoods (line 18) | public function selectGoods(Request $request)
method queryOrders (line 29) | public function queryOrders(){
FILE: app/Http/Controllers/NotifyController.php
class NotifyController (line 11) | class NotifyController extends BaseController
method payjs (line 13) | public function payjs(Request $request)
method paySuccess (line 56) | public function paySuccess()
FILE: app/Http/Controllers/OrderController.php
class OrderController (line 13) | class OrderController extends BaseController
method store (line 16) | public function store(Request $request)
method pay (line 68) | public function pay($id)
method show (line 118) | public function show(Order $order)
method data (line 123) | public function data(Order $order, Request $request)
method index (line 136) | public function index(Request $request)
FILE: app/Http/Controllers/ReceivePushController.php
class ReceivePushController (line 11) | class ReceivePushController extends BaseController
method index (line 14) | public function index(Request $request)
method paySuccess (line 62) | public function paySuccess(){
FILE: app/Http/Controllers/TestController.php
class TestController (line 8) | class TestController extends BaseController
method index (line 11) | public function index()
method pay (line 16) | public function pay(){
FILE: app/Http/Controllers/UploadController.php
class UploadController (line 8) | class UploadController extends BaseController
method store (line 11) | public function store(Request $request, FileUploadTool $fileUploadTool)
FILE: app/Http/Controllers/WechatMenuController.php
class WechatMenuController (line 7) | class WechatMenuController extends BaseController
method index (line 9) | public function index(Request $request){
method store (line 18) | public function store(Request $request){
method destroy (line 27) | public function destroy(){
FILE: app/Http/Kernel.php
class Kernel (line 7) | class Kernel extends HttpKernel
FILE: app/Http/Middleware/EncryptCookies.php
class EncryptCookies (line 7) | class EncryptCookies extends Middleware
FILE: app/Http/Middleware/OAuthAuthenticate.php
class OAuthAuthenticate (line 22) | class OAuthAuthenticate
method handle (line 33) | public function handle($request, Closure $next, $account = 'default', ...
FILE: app/Http/Middleware/RedirectIfAuthenticated.php
class RedirectIfAuthenticated (line 8) | class RedirectIfAuthenticated
method handle (line 18) | public function handle($request, Closure $next, $guard = null)
FILE: app/Http/Middleware/SiteOpenIf.php
class SiteOpenIf (line 7) | class SiteOpenIf
method handle (line 16) | public function handle($request, Closure $next)
FILE: app/Http/Middleware/TrimStrings.php
class TrimStrings (line 7) | class TrimStrings extends Middleware
FILE: app/Http/Middleware/TrustProxies.php
class TrustProxies (line 8) | class TrustProxies extends Middleware
FILE: app/Http/Middleware/VerifyCsrfToken.php
class VerifyCsrfToken (line 7) | class VerifyCsrfToken extends Middleware
FILE: app/Listeners/SendShipmentNotification.php
class SendShipmentNotification (line 9) | class SendShipmentNotification
method __construct (line 16) | public function __construct()
method handle (line 27) | public function handle(OrderShipped $event)
FILE: app/Mail/OrderShipped.php
class OrderShipped (line 10) | class OrderShipped extends Mailable implements ShouldQueue
method __construct (line 22) | public function __construct($order)
method build (line 32) | public function build()
FILE: app/Models/Card.php
class Card (line 7) | class Card extends Model
method goods (line 9) | public function goods(){
method order (line 13) | public function order(){
FILE: app/Models/Category.php
class Category (line 7) | class Category extends Model
method goods (line 11) | public function goods(){
FILE: app/Models/EmailTemplate.php
class EmailTemplate (line 7) | class EmailTemplate extends Model
FILE: app/Models/Goods.php
class Goods (line 7) | class Goods extends Model
method category (line 10) | public function category(){
method cards (line 14) | public function cards(){
method emailTemplate (line 18) | public function emailTemplate(){
method goodsStock (line 22) | public function goodsStock(){
method decreaseStock (line 31) | public function decreaseStock($amount)
method addStock (line 40) | public function addStock($amount)
method addSold (line 48) | public function addSold($amount){
FILE: app/Models/Order.php
class Order (line 7) | class Order extends Model
method cards (line 21) | public function cards(){
method consumeCards (line 25) | public function consumeCards(){
method goods (line 33) | public function goods(){
FILE: app/Models/WechatMaterial.php
class WechatMaterial (line 9) | class WechatMaterial extends Model
method get (line 11) | public function get()
FILE: app/Models/WechatUser.php
class WechatUser (line 9) | class WechatUser extends Model
method get (line 11) | public function get()
FILE: app/Providers/AppServiceProvider.php
class AppServiceProvider (line 11) | class AppServiceProvider extends ServiceProvider
method boot (line 18) | public function boot()
method register (line 31) | public function register()
FILE: app/Providers/AuthServiceProvider.php
class AuthServiceProvider (line 8) | class AuthServiceProvider extends ServiceProvider
method boot (line 24) | public function boot()
FILE: app/Providers/BroadcastServiceProvider.php
class BroadcastServiceProvider (line 8) | class BroadcastServiceProvider extends ServiceProvider
method boot (line 15) | public function boot()
FILE: app/Providers/EventServiceProvider.php
class EventServiceProvider (line 8) | class EventServiceProvider extends ServiceProvider
method boot (line 26) | public function boot()
FILE: app/Providers/RouteServiceProvider.php
class RouteServiceProvider (line 8) | class RouteServiceProvider extends ServiceProvider
method boot (line 24) | public function boot()
method map (line 36) | public function map()
method mapWebRoutes (line 52) | protected function mapWebRoutes()
method mapApiRoutes (line 66) | protected function mapApiRoutes()
FILE: app/Services/FileUploadTool.php
class FileUploadTool (line 7) | class FileUploadTool
method uploadMulti (line 14) | public function uploadMulti(array $files){
method uploadOne (line 29) | public function uploadOne(UploadedFile $file,$directory='',$fileName=''){
FILE: app/Services/PersonalPay.php
class PersonalPay (line 8) | class PersonalPay
method create (line 13) | public function create(Order $order){
FILE: bootstrap/helpers.php
function getMillisecond (line 7) | function getMillisecond() {
function buildTradeNo (line 16) | function buildTradeNo() {
function blade2str (line 20) | function blade2str($blade,$data = array())
function is_weixin (line 38) | function is_weixin(){
FILE: database/migrations/2019_08_13_120928_create_admin_menu_table.php
class CreateAdminMenuTable (line 6) | class CreateAdminMenuTable extends Migration {
method up (line 13) | public function up()
method down (line 34) | public function down()
FILE: database/migrations/2019_08_13_120928_create_admin_operation_log_table.php
class CreateAdminOperationLogTable (line 6) | class CreateAdminOperationLogTable extends Migration {
method up (line 13) | public function up()
method down (line 33) | public function down()
FILE: database/migrations/2019_08_13_120928_create_admin_permissions_table.php
class CreateAdminPermissionsTable (line 6) | class CreateAdminPermissionsTable extends Migration {
method up (line 13) | public function up()
method down (line 32) | public function down()
FILE: database/migrations/2019_08_13_120928_create_admin_role_menu_table.php
class CreateAdminRoleMenuTable (line 6) | class CreateAdminRoleMenuTable extends Migration {
method up (line 13) | public function up()
method down (line 30) | public function down()
FILE: database/migrations/2019_08_13_120928_create_admin_role_permissions_table.php
class CreateAdminRolePermissionsTable (line 6) | class CreateAdminRolePermissionsTable extends Migration {
method up (line 13) | public function up()
method down (line 30) | public function down()
FILE: database/migrations/2019_08_13_120928_create_admin_role_users_table.php
class CreateAdminRoleUsersTable (line 6) | class CreateAdminRoleUsersTable extends Migration {
method up (line 13) | public function up()
method down (line 30) | public function down()
FILE: database/migrations/2019_08_13_120928_create_admin_roles_table.php
class CreateAdminRolesTable (line 6) | class CreateAdminRolesTable extends Migration {
method up (line 13) | public function up()
method down (line 30) | public function down()
FILE: database/migrations/2019_08_13_120928_create_admin_user_permissions_table.php
class CreateAdminUserPermissionsTable (line 6) | class CreateAdminUserPermissionsTable extends Migration {
method up (line 13) | public function up()
method down (line 30) | public function down()
FILE: database/migrations/2019_08_13_120928_create_admin_users_table.php
class CreateAdminUsersTable (line 6) | class CreateAdminUsersTable extends Migration {
method up (line 13) | public function up()
method down (line 33) | public function down()
FILE: database/migrations/2019_08_13_120928_create_cards_table.php
class CreateCardsTable (line 6) | class CreateCardsTable extends Migration {
method up (line 13) | public function up()
method down (line 32) | public function down()
FILE: database/migrations/2019_08_13_120928_create_failed_jobs_table.php
class CreateFailedJobsTable (line 6) | class CreateFailedJobsTable extends Migration {
method up (line 13) | public function up()
method down (line 32) | public function down()
FILE: database/migrations/2019_08_13_120928_create_goods_categories_table.php
class CreateGoodsCategoriesTable (line 6) | class CreateGoodsCategoriesTable extends Migration {
method up (line 13) | public function up()
method down (line 31) | public function down()
FILE: database/migrations/2019_08_13_120928_create_goods_table.php
class CreateGoodsTable (line 6) | class CreateGoodsTable extends Migration {
method up (line 13) | public function up()
method down (line 40) | public function down()
FILE: database/migrations/2019_08_13_120928_create_jobs_table.php
class CreateJobsTable (line 6) | class CreateJobsTable extends Migration {
method up (line 13) | public function up()
method down (line 33) | public function down()
FILE: database/migrations/2019_08_13_120928_create_orders_table.php
class CreateOrdersTable (line 6) | class CreateOrdersTable extends Migration {
method up (line 13) | public function up()
method down (line 46) | public function down()
FILE: database/migrations/2019_08_13_173337_create_email_templates_table.php
class CreateEmailTemplatesTable (line 7) | class CreateEmailTemplatesTable extends Migration
method up (line 14) | public function up()
method down (line 29) | public function down()
FILE: database/seeds/AdminConfigTableSeeder.php
class AdminConfigTableSeeder (line 5) | class AdminConfigTableSeeder extends Seeder
method run (line 13) | public function run()
FILE: database/seeds/AdminMenuTableSeeder.php
class AdminMenuTableSeeder (line 5) | class AdminMenuTableSeeder extends Seeder
method run (line 13) | public function run()
FILE: database/seeds/AdminPermissionsTableSeeder.php
class AdminPermissionsTableSeeder (line 5) | class AdminPermissionsTableSeeder extends Seeder
method run (line 13) | public function run()
FILE: database/seeds/AdminRoleMenuTableSeeder.php
class AdminRoleMenuTableSeeder (line 5) | class AdminRoleMenuTableSeeder extends Seeder
method run (line 13) | public function run()
FILE: database/seeds/AdminRolePermissionsTableSeeder.php
class AdminRolePermissionsTableSeeder (line 5) | class AdminRolePermissionsTableSeeder extends Seeder
method run (line 13) | public function run()
FILE: database/seeds/AdminRoleUsersTableSeeder.php
class AdminRoleUsersTableSeeder (line 5) | class AdminRoleUsersTableSeeder extends Seeder
method run (line 13) | public function run()
FILE: database/seeds/AdminRolesTableSeeder.php
class AdminRolesTableSeeder (line 5) | class AdminRolesTableSeeder extends Seeder
method run (line 13) | public function run()
FILE: database/seeds/AdminUsersTableSeeder.php
class AdminUsersTableSeeder (line 5) | class AdminUsersTableSeeder extends Seeder
method run (line 13) | public function run()
FILE: database/seeds/DatabaseSeeder.php
class DatabaseSeeder (line 5) | class DatabaseSeeder extends Seeder
method run (line 12) | public function run()
FILE: database/seeds/EmailTemplatesTableSeeder.php
class EmailTemplatesTableSeeder (line 5) | class EmailTemplatesTableSeeder extends Seeder
method run (line 13) | public function run()
FILE: database/seeds/GoodsCategoriesTableSeeder.php
class GoodsCategoriesTableSeeder (line 5) | class GoodsCategoriesTableSeeder extends Seeder
method run (line 13) | public function run()
FILE: database/seeds/GoodsTableSeeder.php
class GoodsTableSeeder (line 5) | class GoodsTableSeeder extends Seeder
method run (line 13) | public function run()
FILE: public/js/app.js
function __webpack_require__ (line 6) | function __webpack_require__(moduleId) {
function apply (line 662) | function apply(func, thisArg, args) {
function arrayAggregator (line 682) | function arrayAggregator(array, setter, iteratee, accumulator) {
function arrayEach (line 702) | function arrayEach(array, iteratee) {
function arrayEachRight (line 723) | function arrayEachRight(array, iteratee) {
function arrayEvery (line 744) | function arrayEvery(array, predicate) {
function arrayFilter (line 765) | function arrayFilter(array, predicate) {
function arrayIncludes (line 789) | function arrayIncludes(array, value) {
function arrayIncludesWith (line 803) | function arrayIncludesWith(array, value, comparator) {
function arrayMap (line 824) | function arrayMap(array, iteratee) {
function arrayPush (line 843) | function arrayPush(array, values) {
function arrayReduce (line 866) | function arrayReduce(array, iteratee, accumulator, initAccum) {
function arrayReduceRight (line 891) | function arrayReduceRight(array, iteratee, accumulator, initAccum) {
function arraySome (line 912) | function arraySome(array, predicate) {
function asciiToArray (line 940) | function asciiToArray(string) {
function asciiWords (line 951) | function asciiWords(string) {
function baseFindKey (line 966) | function baseFindKey(collection, predicate, eachFunc) {
function baseFindIndex (line 988) | function baseFindIndex(array, predicate, fromIndex, fromRight) {
function baseIndexOf (line 1009) | function baseIndexOf(array, value, fromIndex) {
function baseIndexOfWith (line 1025) | function baseIndexOfWith(array, value, fromIndex, comparator) {
function baseIsNaN (line 1044) | function baseIsNaN(value) {
function baseMean (line 1057) | function baseMean(array, iteratee) {
function baseProperty (line 1069) | function baseProperty(key) {
function basePropertyOf (line 1082) | function basePropertyOf(object) {
function baseReduce (line 1101) | function baseReduce(collection, iteratee, accumulator, initAccum, eachFu...
function baseSortBy (line 1120) | function baseSortBy(array, comparer) {
function baseSum (line 1139) | function baseSum(array, iteratee) {
function baseTimes (line 1162) | function baseTimes(n, iteratee) {
function baseToPairs (line 1181) | function baseToPairs(object, props) {
function baseUnary (line 1194) | function baseUnary(func) {
function baseValues (line 1210) | function baseValues(object, props) {
function cacheHas (line 1224) | function cacheHas(cache, key) {
function charsStartIndex (line 1237) | function charsStartIndex(strSymbols, chrSymbols) {
function charsEndIndex (line 1254) | function charsEndIndex(strSymbols, chrSymbols) {
function countHolders (line 1269) | function countHolders(array, placeholder) {
function escapeStringChar (line 1307) | function escapeStringChar(chr) {
function getValue (line 1319) | function getValue(object, key) {
function hasUnicode (line 1330) | function hasUnicode(string) {
function hasUnicodeWord (line 1341) | function hasUnicodeWord(string) {
function iteratorToArray (line 1352) | function iteratorToArray(iterator) {
function mapToArray (line 1369) | function mapToArray(map) {
function overArg (line 1387) | function overArg(func, transform) {
function replaceHolders (line 1402) | function replaceHolders(array, placeholder) {
function setToArray (line 1425) | function setToArray(set) {
function setToPairs (line 1442) | function setToPairs(set) {
function strictIndexOf (line 1462) | function strictIndexOf(array, value, fromIndex) {
function strictLastIndexOf (line 1484) | function strictLastIndexOf(array, value, fromIndex) {
function stringSize (line 1501) | function stringSize(string) {
function stringToArray (line 1514) | function stringToArray(string) {
function unicodeSize (line 1536) | function unicodeSize(string) {
function unicodeToArray (line 1551) | function unicodeToArray(string) {
function unicodeWords (line 1562) | function unicodeWords(string) {
function lodash (line 1839) | function lodash(value) {
function object (line 1860) | function object() {}
function baseLodash (line 1880) | function baseLodash() {
function LodashWrapper (line 1891) | function LodashWrapper(value, chainAll) {
function LazyWrapper (line 1976) | function LazyWrapper(value) {
function lazyClone (line 1994) | function lazyClone() {
function lazyReverse (line 2013) | function lazyReverse() {
function lazyValue (line 2033) | function lazyValue() {
function Hash (line 2095) | function Hash(entries) {
function hashClear (line 2113) | function hashClear() {
function hashDelete (line 2128) | function hashDelete(key) {
function hashGet (line 2143) | function hashGet(key) {
function hashHas (line 2161) | function hashHas(key) {
function hashSet (line 2176) | function hashSet(key, value) {
function ListCache (line 2199) | function ListCache(entries) {
function listCacheClear (line 2217) | function listCacheClear() {
function listCacheDelete (line 2231) | function listCacheDelete(key) {
function listCacheGet (line 2257) | function listCacheGet(key) {
function listCacheHas (line 2273) | function listCacheHas(key) {
function listCacheSet (line 2287) | function listCacheSet(key, value) {
function MapCache (line 2316) | function MapCache(entries) {
function mapCacheClear (line 2334) | function mapCacheClear() {
function mapCacheDelete (line 2352) | function mapCacheDelete(key) {
function mapCacheGet (line 2367) | function mapCacheGet(key) {
function mapCacheHas (line 2380) | function mapCacheHas(key) {
function mapCacheSet (line 2394) | function mapCacheSet(key, value) {
function SetCache (line 2420) | function SetCache(values) {
function setCacheAdd (line 2440) | function setCacheAdd(value) {
function setCacheHas (line 2454) | function setCacheHas(value) {
function Stack (line 2471) | function Stack(entries) {
function stackClear (line 2483) | function stackClear() {
function stackDelete (line 2497) | function stackDelete(key) {
function stackGet (line 2514) | function stackGet(key) {
function stackHas (line 2527) | function stackHas(key) {
function stackSet (line 2541) | function stackSet(key, value) {
function arrayLikeKeys (line 2574) | function arrayLikeKeys(value, inherited) {
function arraySample (line 2608) | function arraySample(array) {
function arraySampleSize (line 2621) | function arraySampleSize(array, n) {
function arrayShuffle (line 2632) | function arrayShuffle(array) {
function assignMergeValue (line 2645) | function assignMergeValue(object, key, value) {
function assignValue (line 2662) | function assignValue(object, key, value) {
function assocIndexOf (line 2678) | function assocIndexOf(array, key) {
function baseAggregator (line 2699) | function baseAggregator(collection, setter, iteratee, accumulator) {
function baseAssign (line 2715) | function baseAssign(object, source) {
function baseAssignIn (line 2728) | function baseAssignIn(object, source) {
function baseAssignValue (line 2741) | function baseAssignValue(object, key, value) {
function baseAt (line 2762) | function baseAt(object, paths) {
function baseClamp (line 2783) | function baseClamp(number, lower, upper) {
function baseClone (line 2811) | function baseClone(value, bitmask, customizer, key, object, stack) {
function baseConforms (line 2900) | function baseConforms(source) {
function baseConformsTo (line 2915) | function baseConformsTo(object, source, props) {
function baseDelay (line 2943) | function baseDelay(func, wait, args) {
function baseDifference (line 2961) | function baseDifference(array, values, iteratee, comparator) {
function baseEvery (line 3035) | function baseEvery(collection, predicate) {
function baseExtremum (line 3054) | function baseExtremum(array, iteratee, comparator) {
function baseFill (line 3083) | function baseFill(array, value, start, end) {
function baseFilter (line 3109) | function baseFilter(collection, predicate) {
function baseFlatten (line 3130) | function baseFlatten(array, depth, predicate, isStrict, result) {
function baseForOwn (line 3186) | function baseForOwn(object, iteratee) {
function baseForOwnRight (line 3198) | function baseForOwnRight(object, iteratee) {
function baseFunctions (line 3211) | function baseFunctions(object, props) {
function baseGet (line 3225) | function baseGet(object, path) {
function baseGetAllKeys (line 3248) | function baseGetAllKeys(object, keysFunc, symbolsFunc) {
function baseGetTag (line 3260) | function baseGetTag(value) {
function baseGt (line 3278) | function baseGt(value, other) {
function baseHas (line 3290) | function baseHas(object, key) {
function baseHasIn (line 3302) | function baseHasIn(object, key) {
function baseInRange (line 3315) | function baseInRange(number, start, end) {
function baseIntersection (line 3329) | function baseIntersection(arrays, iteratee, comparator) {
function baseInverter (line 3393) | function baseInverter(object, setter, iteratee, accumulator) {
function baseInvoke (line 3410) | function baseInvoke(object, path, args) {
function baseIsArguments (line 3424) | function baseIsArguments(value) {
function baseIsArrayBuffer (line 3435) | function baseIsArrayBuffer(value) {
function baseIsDate (line 3446) | function baseIsDate(value) {
function baseIsEqual (line 3464) | function baseIsEqual(value, other, bitmask, customizer, stack) {
function baseIsEqualDeep (line 3488) | function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, ...
function baseIsMap (line 3540) | function baseIsMap(value) {
function baseIsMatch (line 3554) | function baseIsMatch(object, source, matchData, customizer) {
function baseIsNative (line 3606) | function baseIsNative(value) {
function baseIsRegExp (line 3621) | function baseIsRegExp(value) {
function baseIsSet (line 3632) | function baseIsSet(value) {
function baseIsTypedArray (line 3643) | function baseIsTypedArray(value) {
function baseIteratee (line 3655) | function baseIteratee(value) {
function baseKeys (line 3679) | function baseKeys(object) {
function baseKeysIn (line 3699) | function baseKeysIn(object) {
function baseLt (line 3723) | function baseLt(value, other) {
function baseMap (line 3735) | function baseMap(collection, iteratee) {
function baseMatches (line 3752) | function baseMatches(source) {
function baseMatchesProperty (line 3770) | function baseMatchesProperty(path, srcValue) {
function baseMerge (line 3793) | function baseMerge(object, source, srcIndex, customizer, stack) {
function baseMergeDeep (line 3830) | function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customi...
function baseNth (line 3900) | function baseNth(array, n) {
function baseOrderBy (line 3918) | function baseOrderBy(collection, iteratees, orders) {
function basePick (line 3943) | function basePick(object, paths) {
function basePickBy (line 3958) | function basePickBy(object, paths, predicate) {
function basePropertyDeep (line 3981) | function basePropertyDeep(path) {
function basePullAll (line 3998) | function basePullAll(array, values, iteratee, comparator) {
function basePullAt (line 4034) | function basePullAt(array, indexes) {
function baseRandom (line 4061) | function baseRandom(lower, upper) {
function baseRange (line 4076) | function baseRange(start, end, step, fromRight) {
function baseRepeat (line 4096) | function baseRepeat(string, n) {
function baseRest (line 4124) | function baseRest(func, start) {
function baseSample (line 4135) | function baseSample(collection) {
function baseSampleSize (line 4147) | function baseSampleSize(collection, n) {
function baseSet (line 4162) | function baseSet(object, path, value, customizer) {
function baseShuffle (line 4229) | function baseShuffle(collection) {
function baseSlice (line 4242) | function baseSlice(array, start, end) {
function baseSome (line 4272) | function baseSome(collection, predicate) {
function baseSortedIndex (line 4294) | function baseSortedIndex(array, value, retHighest) {
function baseSortedIndexBy (line 4328) | function baseSortedIndexBy(array, value, iteratee, retHighest) {
function baseSortedUniq (line 4377) | function baseSortedUniq(array, iteratee) {
function baseToNumber (line 4403) | function baseToNumber(value) {
function baseToString (line 4421) | function baseToString(value) {
function baseUniq (line 4446) | function baseUniq(array, iteratee, comparator) {
function baseUnset (line 4506) | function baseUnset(object, path) {
function baseUpdate (line 4522) | function baseUpdate(object, path, updater, customizer) {
function baseWhile (line 4537) | function baseWhile(array, predicate, isDrop, fromRight) {
function baseWrapperValue (line 4559) | function baseWrapperValue(value, actions) {
function baseXor (line 4579) | function baseXor(arrays, iteratee, comparator) {
function baseZipObject (line 4609) | function baseZipObject(props, values, assignFunc) {
function castArrayLikeObject (line 4629) | function castArrayLikeObject(value) {
function castFunction (line 4640) | function castFunction(value) {
function castPath (line 4652) | function castPath(value, object) {
function castSlice (line 4679) | function castSlice(array, start, end) {
function cloneBuffer (line 4703) | function cloneBuffer(buffer, isDeep) {
function cloneArrayBuffer (line 4721) | function cloneArrayBuffer(arrayBuffer) {
function cloneDataView (line 4735) | function cloneDataView(dataView, isDeep) {
function cloneRegExp (line 4747) | function cloneRegExp(regexp) {
function cloneSymbol (line 4760) | function cloneSymbol(symbol) {
function cloneTypedArray (line 4772) | function cloneTypedArray(typedArray, isDeep) {
function compareAscending (line 4785) | function compareAscending(value, other) {
function compareMultiple (line 4829) | function compareMultiple(object, other, orders) {
function composeArgs (line 4867) | function composeArgs(args, partials, holders, isCurried) {
function composeArgsRight (line 4902) | function composeArgsRight(args, partials, holders, isCurried) {
function copyArray (line 4936) | function copyArray(source, array) {
function copyObject (line 4957) | function copyObject(source, props, object, customizer) {
function copySymbols (line 4991) | function copySymbols(source, object) {
function copySymbolsIn (line 5003) | function copySymbolsIn(source, object) {
function createAggregator (line 5015) | function createAggregator(setter, initializer) {
function createAssigner (line 5031) | function createAssigner(assigner) {
function createBaseEach (line 5065) | function createBaseEach(eachFunc, fromRight) {
function createBaseFor (line 5093) | function createBaseFor(fromRight) {
function createBind (line 5120) | function createBind(func, bitmask, thisArg) {
function createCaseFirst (line 5138) | function createCaseFirst(methodName) {
function createCompounder (line 5165) | function createCompounder(callback) {
function createCtor (line 5179) | function createCtor(Ctor) {
function createCurry (line 5213) | function createCurry(func, bitmask, arity) {
function createFind (line 5248) | function createFind(findIndexFunc) {
function createFlow (line 5268) | function createFlow(fromRight) {
function createHybrid (line 5341) | function createHybrid(func, bitmask, thisArg, partials, holders, partial...
function createInverter (line 5403) | function createInverter(setter, toIteratee) {
function createMathOperation (line 5417) | function createMathOperation(operator, defaultValue) {
function createOver (line 5450) | function createOver(arrayFunc) {
function createPadding (line 5471) | function createPadding(length, chars) {
function createPartial (line 5496) | function createPartial(func, bitmask, thisArg, partials) {
function createRange (line 5526) | function createRange(fromRight) {
function createRelationalOperation (line 5551) | function createRelationalOperation(operator) {
function createRecurry (line 5578) | function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, pa...
function createRound (line 5611) | function createRound(methodName) {
function createToPairs (line 5647) | function createToPairs(keysFunc) {
function createWrap (line 5685) | function createWrap(func, bitmask, thisArg, partials, holders, argPos, a...
function customDefaultsAssignIn (line 5752) | function customDefaultsAssignIn(objValue, srcValue, key, object) {
function customDefaultsMerge (line 5774) | function customDefaultsMerge(objValue, srcValue, key, object, source, st...
function customOmitClone (line 5793) | function customOmitClone(value) {
function equalArrays (line 5810) | function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
function equalByTag (line 5888) | function equalByTag(object, other, tag, bitmask, customizer, equalFunc, ...
function equalObjects (line 5966) | function equalObjects(object, other, bitmask, customizer, equalFunc, sta...
function flatRest (line 6037) | function flatRest(func) {
function getAllKeys (line 6048) | function getAllKeys(object) {
function getAllKeysIn (line 6060) | function getAllKeysIn(object) {
function getFuncName (line 6082) | function getFuncName(func) {
function getHolder (line 6104) | function getHolder(func) {
function getIteratee (line 6120) | function getIteratee() {
function getMapData (line 6134) | function getMapData(map, key) {
function getMatchData (line 6148) | function getMatchData(object) {
function getNative (line 6169) | function getNative(object, key) {
function getRawTag (line 6181) | function getRawTag(value) {
function getView (line 6277) | function getView(start, end, transforms) {
function getWrapDetails (line 6302) | function getWrapDetails(source) {
function hasPath (line 6316) | function hasPath(object, path, hasFunc) {
function initCloneArray (line 6345) | function initCloneArray(array) {
function initCloneObject (line 6364) | function initCloneObject(object) {
function initCloneByTag (line 6382) | function initCloneByTag(object, tag, isDeep) {
function insertWrapDetails (line 6426) | function insertWrapDetails(source, details) {
function isFlattenable (line 6444) | function isFlattenable(value) {
function isIndex (line 6457) | function isIndex(value, length) {
function isIterateeCall (line 6477) | function isIterateeCall(value, index, object) {
function isKey (line 6499) | function isKey(value, object) {
function isKeyable (line 6519) | function isKeyable(value) {
function isLaziable (line 6534) | function isLaziable(func) {
function isMasked (line 6555) | function isMasked(func) {
function isPrototype (line 6575) | function isPrototype(value) {
function isStrictComparable (line 6590) | function isStrictComparable(value) {
function matchesStrictComparable (line 6603) | function matchesStrictComparable(key, srcValue) {
function memoizeCapped (line 6621) | function memoizeCapped(func) {
function mergeData (line 6649) | function mergeData(data, source) {
function nativeKeysIn (line 6713) | function nativeKeysIn(object) {
function objectToString (line 6730) | function objectToString(value) {
function overRest (line 6743) | function overRest(func, start, transform) {
function parent (line 6772) | function parent(object, path) {
function reorder (line 6786) | function reorder(array, indexes) {
function safeGet (line 6806) | function safeGet(object, key) {
function setWrapToString (line 6862) | function setWrapToString(wrapper, reference, bitmask) {
function shortOut (line 6876) | function shortOut(func) {
function shuffleSelf (line 6904) | function shuffleSelf(array, size) {
function toKey (line 6946) | function toKey(value) {
function toSource (line 6961) | function toSource(func) {
function updateWrapDetails (line 6981) | function updateWrapDetails(details, bitmask) {
function wrapperClone (line 6998) | function wrapperClone(wrapper) {
function chunk (line 7032) | function chunk(array, size, guard) {
function compact (line 7067) | function compact(array) {
function concat (line 7104) | function concat() {
function drop (line 7240) | function drop(array, n, guard) {
function dropRight (line 7274) | function dropRight(array, n, guard) {
function dropRightWhile (line 7319) | function dropRightWhile(array, predicate) {
function dropWhile (line 7360) | function dropWhile(array, predicate) {
function fill (line 7395) | function fill(array, value, start, end) {
function findIndex (line 7442) | function findIndex(array, predicate, fromIndex) {
function findLastIndex (line 7489) | function findLastIndex(array, predicate, fromIndex) {
function flatten (line 7518) | function flatten(array) {
function flattenDeep (line 7537) | function flattenDeep(array) {
function flattenDepth (line 7562) | function flattenDepth(array, depth) {
function fromPairs (line 7586) | function fromPairs(pairs) {
function head (line 7616) | function head(array) {
function indexOf (line 7643) | function indexOf(array, value, fromIndex) {
function initial (line 7669) | function initial(array) {
function join (line 7784) | function join(array, separator) {
function last (line 7802) | function last(array) {
function lastIndexOf (line 7828) | function lastIndexOf(array, value, fromIndex) {
function nth (line 7864) | function nth(array, n) {
function pullAll (line 7913) | function pullAll(array, values) {
function pullAllBy (line 7942) | function pullAllBy(array, values, iteratee) {
function pullAllWith (line 7971) | function pullAllWith(array, values, comparator) {
function remove (line 8040) | function remove(array, predicate) {
function reverse (line 8084) | function reverse(array) {
function slice (line 8104) | function slice(array, start, end) {
function sortedIndex (line 8137) | function sortedIndex(array, value) {
function sortedIndexBy (line 8166) | function sortedIndexBy(array, value, iteratee) {
function sortedIndexOf (line 8186) | function sortedIndexOf(array, value) {
function sortedLastIndex (line 8215) | function sortedLastIndex(array, value) {
function sortedLastIndexBy (line 8244) | function sortedLastIndexBy(array, value, iteratee) {
function sortedLastIndexOf (line 8264) | function sortedLastIndexOf(array, value) {
function sortedUniq (line 8290) | function sortedUniq(array) {
function sortedUniqBy (line 8312) | function sortedUniqBy(array, iteratee) {
function tail (line 8332) | function tail(array) {
function take (line 8362) | function take(array, n, guard) {
function takeRight (line 8395) | function takeRight(array, n, guard) {
function takeRightWhile (line 8440) | function takeRightWhile(array, predicate) {
function takeWhile (line 8481) | function takeWhile(array, predicate) {
function uniq (line 8583) | function uniq(array) {
function uniqBy (line 8610) | function uniqBy(array, iteratee) {
function uniqWith (line 8634) | function uniqWith(array, comparator) {
function unzip (line 8658) | function unzip(array) {
function unzipWith (line 8695) | function unzipWith(array, iteratee) {
function zipObject (line 8848) | function zipObject(props, values) {
function zipObjectDeep (line 8867) | function zipObjectDeep(props, values) {
function chain (line 8930) | function chain(value) {
function tap (line 8959) | function tap(value, interceptor) {
function thru (line 8987) | function thru(value, interceptor) {
function wrapperChain (line 9058) | function wrapperChain() {
function wrapperCommit (line 9088) | function wrapperCommit() {
function wrapperNext (line 9114) | function wrapperNext() {
function wrapperToIterator (line 9142) | function wrapperToIterator() {
function wrapperPlant (line 9170) | function wrapperPlant(value) {
function wrapperReverse (line 9210) | function wrapperReverse() {
function wrapperValue (line 9242) | function wrapperValue() {
function every (line 9319) | function every(collection, predicate, guard) {
function filter (line 9364) | function filter(collection, predicate) {
function flatMap (line 9449) | function flatMap(collection, iteratee) {
function flatMapDeep (line 9473) | function flatMapDeep(collection, iteratee) {
function flatMapDepth (line 9498) | function flatMapDepth(collection, iteratee, depth) {
function forEach (line 9533) | function forEach(collection, iteratee) {
function forEachRight (line 9558) | function forEachRight(collection, iteratee) {
function includes (line 9624) | function includes(collection, value, fromIndex, guard) {
function map (line 9745) | function map(collection, iteratee) {
function orderBy (line 9779) | function orderBy(collection, iteratees, orders, guard) {
function reduce (line 9870) | function reduce(collection, iteratee, accumulator) {
function reduceRight (line 9899) | function reduceRight(collection, iteratee, accumulator) {
function reject (line 9940) | function reject(collection, predicate) {
function sample (line 9959) | function sample(collection) {
function sampleSize (line 9984) | function sampleSize(collection, n, guard) {
function shuffle (line 10009) | function shuffle(collection) {
function size (line 10035) | function size(collection) {
function some (line 10085) | function some(collection, predicate, guard) {
function after (line 10183) | function after(n, func) {
function ary (line 10212) | function ary(func, n, guard) {
function before (line 10235) | function before(n, func) {
function curry (line 10391) | function curry(func, arity, guard) {
function curryRight (line 10436) | function curryRight(func, arity, guard) {
function debounce (line 10497) | function debounce(func, wait, options) {
function flip (line 10684) | function flip(func) {
function memoize (line 10732) | function memoize(func, resolver) {
function negate (line 10775) | function negate(predicate) {
function once (line 10809) | function once(func) {
function rest (line 10987) | function rest(func, start) {
function spread (line 11029) | function spread(func, start) {
function throttle (line 11089) | function throttle(func, wait, options) {
function unary (line 11122) | function unary(func) {
function wrap (line 11148) | function wrap(value, wrapper) {
function castArray (line 11187) | function castArray() {
function clone (line 11221) | function clone(value) {
function cloneWith (line 11256) | function cloneWith(value, customizer) {
function cloneDeep (line 11279) | function cloneDeep(value) {
function cloneDeepWith (line 11311) | function cloneDeepWith(value, customizer) {
function conformsTo (line 11340) | function conformsTo(object, source) {
function eq (line 11376) | function eq(value, other) {
function isArrayLike (line 11524) | function isArrayLike(value) {
function isArrayLikeObject (line 11553) | function isArrayLikeObject(value) {
function isBoolean (line 11574) | function isBoolean(value) {
function isElement (line 11634) | function isElement(value) {
function isEmpty (line 11671) | function isEmpty(value) {
function isEqual (line 11723) | function isEqual(value, other) {
function isEqualWith (line 11759) | function isEqualWith(value, other, customizer) {
function isError (line 11783) | function isError(value) {
function isFinite (line 11818) | function isFinite(value) {
function isFunction (line 11839) | function isFunction(value) {
function isInteger (line 11875) | function isInteger(value) {
function isLength (line 11905) | function isLength(value) {
function isObject (line 11935) | function isObject(value) {
function isObjectLike (line 11964) | function isObjectLike(value) {
function isMatch (line 12015) | function isMatch(object, source) {
function isMatchWith (line 12051) | function isMatchWith(object, source, customizer) {
function isNaN (line 12084) | function isNaN(value) {
function isNative (line 12117) | function isNative(value) {
function isNull (line 12141) | function isNull(value) {
function isNil (line 12165) | function isNil(value) {
function isNumber (line 12195) | function isNumber(value) {
function isPlainObject (line 12228) | function isPlainObject(value) {
function isSafeInteger (line 12287) | function isSafeInteger(value) {
function isString (line 12327) | function isString(value) {
function isSymbol (line 12349) | function isSymbol(value) {
function isUndefined (line 12390) | function isUndefined(value) {
function isWeakMap (line 12411) | function isWeakMap(value) {
function isWeakSet (line 12432) | function isWeakSet(value) {
function toArray (line 12511) | function toArray(value) {
function toFinite (line 12550) | function toFinite(value) {
function toInteger (line 12588) | function toInteger(value) {
function toLength (line 12622) | function toLength(value) {
function toNumber (line 12649) | function toNumber(value) {
function toPlainObject (line 12694) | function toPlainObject(value) {
function toSafeInteger (line 12722) | function toSafeInteger(value) {
function toString (line 12749) | function toString(value) {
function create (line 12952) | function create(prototype, properties) {
function findKey (line 13068) | function findKey(object, predicate) {
function findLastKey (line 13107) | function findLastKey(object, predicate) {
function forIn (line 13139) | function forIn(object, iteratee) {
function forInRight (line 13171) | function forInRight(object, iteratee) {
function forOwn (line 13205) | function forOwn(object, iteratee) {
function forOwnRight (line 13235) | function forOwnRight(object, iteratee) {
function functions (line 13262) | function functions(object) {
function functionsIn (line 13289) | function functionsIn(object) {
function get (line 13318) | function get(object, path, defaultValue) {
function has (line 13350) | function has(object, path) {
function hasIn (line 13380) | function hasIn(object, path) {
function keys (line 13498) | function keys(object) {
function keysIn (line 13525) | function keysIn(object) {
function mapKeys (line 13550) | function mapKeys(object, iteratee) {
function mapValues (line 13588) | function mapValues(object, iteratee) {
function omitBy (line 13730) | function omitBy(object, predicate) {
function pickBy (line 13773) | function pickBy(object, predicate) {
function result (line 13815) | function result(object, path, defaultValue) {
function set (line 13865) | function set(object, path, value) {
function setWith (line 13893) | function setWith(object, path, value, customizer) {
function transform (line 13980) | function transform(object, iteratee, accumulator) {
function unset (line 14030) | function unset(object, path) {
function update (line 14061) | function update(object, path, updater) {
function updateWith (line 14089) | function updateWith(object, path, updater, customizer) {
function values (line 14120) | function values(object) {
function valuesIn (line 14148) | function valuesIn(object) {
function clamp (line 14173) | function clamp(number, lower, upper) {
function inRange (line 14227) | function inRange(number, start, end) {
function random (line 14270) | function random(lower, upper, floating) {
function capitalize (line 14351) | function capitalize(string) {
function deburr (line 14373) | function deburr(string) {
function endsWith (line 14401) | function endsWith(string, target, position) {
function escape (line 14443) | function escape(string) {
function escapeRegExp (line 14465) | function escapeRegExp(string) {
function pad (line 14563) | function pad(string, length, chars) {
function padEnd (line 14602) | function padEnd(string, length, chars) {
function padStart (line 14635) | function padStart(string, length, chars) {
function parseInt (line 14669) | function parseInt(string, radix, guard) {
function repeat (line 14700) | function repeat(string, n, guard) {
function replace (line 14728) | function replace() {
function split (line 14779) | function split(string, separator, limit) {
function startsWith (line 14848) | function startsWith(string, target, position) {
function template (line 14962) | function template(string, options, guard) {
function toLower (line 15091) | function toLower(value) {
function toUpper (line 15116) | function toUpper(value) {
function trim (line 15142) | function trim(string, chars, guard) {
function trimEnd (line 15177) | function trimEnd(string, chars, guard) {
function trimStart (line 15210) | function trimStart(string, chars, guard) {
function truncate (line 15261) | function truncate(string, options) {
function unescape (line 15336) | function unescape(string) {
function words (line 15405) | function words(string, pattern, guard) {
function cond (line 15510) | function cond(pairs) {
function conforms (line 15556) | function conforms(source) {
function constant (line 15579) | function constant(value) {
function defaultTo (line 15605) | function defaultTo(value, defaultValue) {
function identity (line 15672) | function identity(value) {
function iteratee (line 15718) | function iteratee(func) {
function matches (line 15750) | function matches(source) {
function matchesProperty (line 15780) | function matchesProperty(path, srcValue) {
function mixin (line 15879) | function mixin(object, source, options) {
function noConflict (line 15928) | function noConflict() {
function noop (line 15947) | function noop() {
function nthArg (line 15971) | function nthArg(n) {
function property (line 16072) | function property(path) {
function propertyOf (line 16097) | function propertyOf(object) {
function stubArray (line 16202) | function stubArray() {
function stubFalse (line 16219) | function stubFalse() {
function stubObject (line 16241) | function stubObject() {
function stubString (line 16258) | function stubString() {
function stubTrue (line 16275) | function stubTrue() {
function times (line 16298) | function times(n, iteratee) {
function toPath (line 16333) | function toPath(value) {
function uniqueId (line 16357) | function uniqueId(prefix) {
function max (line 16466) | function max(array) {
function maxBy (line 16495) | function maxBy(array, iteratee) {
function mean (line 16515) | function mean(array) {
function meanBy (line 16542) | function meanBy(array, iteratee) {
function min (line 16564) | function min(array) {
function minBy (line 16593) | function minBy(array, iteratee) {
function sum (line 16674) | function sum(array) {
function sumBy (line 16703) | function sumBy(array, iteratee) {
function isUndef (line 17349) | function isUndef (v) {
function isDef (line 17353) | function isDef (v) {
function isTrue (line 17357) | function isTrue (v) {
function isFalse (line 17361) | function isFalse (v) {
function isPrimitive (line 17368) | function isPrimitive (value) {
function isObject (line 17383) | function isObject (obj) {
function toRawType (line 17392) | function toRawType (value) {
function isPlainObject (line 17400) | function isPlainObject (obj) {
function isRegExp (line 17404) | function isRegExp (v) {
function isValidArrayIndex (line 17411) | function isValidArrayIndex (val) {
function toString (line 17419) | function toString (val) {
function toNumber (line 17431) | function toNumber (val) {
function makeMap (line 17440) | function makeMap (
function remove (line 17467) | function remove (arr, item) {
function hasOwn (line 17480) | function hasOwn (obj, key) {
function cached (line 17487) | function cached (fn) {
function polyfillBind (line 17527) | function polyfillBind (fn, ctx) {
function nativeBind (line 17541) | function nativeBind (fn, ctx) {
function toArray (line 17552) | function toArray (list, start) {
function extend (line 17565) | function extend (to, _from) {
function toObject (line 17575) | function toObject (arr) {
function noop (line 17592) | function noop (a, b, c) {}
function genStaticKeys (line 17609) | function genStaticKeys (modules) {
function looseEqual (line 17619) | function looseEqual (a, b) {
function looseIndexOf (line 17659) | function looseIndexOf (arr, val) {
function once (line 17669) | function once (fn) {
function isReserved (line 17804) | function isReserved (str) {
function def (line 17812) | function def (obj, key, val, enumerable) {
function parsePath (line 17825) | function parsePath (path) {
function isNative (line 17894) | function isNative (Ctor) {
function Set (line 17910) | function Set () {
function pushTarget (line 18068) | function pushTarget (target) {
function popTarget (line 18073) | function popTarget () {
function createTextVNode (line 18134) | function createTextVNode (val) {
function cloneVNode (line 18142) | function cloneVNode (vnode) {
function toggleObserving (line 18225) | function toggleObserving (value) {
function protoAugment (line 18279) | function protoAugment (target, src) {
function copyAugment (line 18290) | function copyAugment (target, src, keys) {
function observe (line 18302) | function observe (value, asRootData) {
function defineReactive$$1 (line 18327) | function defineReactive$$1 (
function set (line 18393) | function set (target, key, val) {
function del (line 18428) | function del (target, key) {
function dependArray (line 18460) | function dependArray (value) {
function mergeData (line 18497) | function mergeData (to, from) {
function mergeDataOrFn (line 18521) | function mergeDataOrFn (
function mergeHook (line 18588) | function mergeHook (
function mergeAssets (line 18612) | function mergeAssets (
function checkComponents (line 18702) | function checkComponents (options) {
function validateComponentName (line 18708) | function validateComponentName (name) {
function normalizeProps (line 18728) | function normalizeProps (options, vm) {
function normalizeInject (line 18765) | function normalizeInject (options, vm) {
function normalizeDirectives (line 18792) | function normalizeDirectives (options) {
function assertObjectType (line 18804) | function assertObjectType (name, value, vm) {
function mergeOptions (line 18818) | function mergeOptions (
function resolveAsset (line 18872) | function resolveAsset (
function validateProp (line 18904) | function validateProp (
function getPropDefaultValue (line 18948) | function getPropDefaultValue (vm, prop, key) {
function assertProp (line 18981) | function assertProp (
function assertType (line 19032) | function assertType (value, type) {
function getType (line 19060) | function getType (fn) {
function isSameType (line 19065) | function isSameType (a, b) {
function getTypeIndex (line 19069) | function getTypeIndex (type, expectedTypes) {
function getInvalidTypeMessage (line 19081) | function getInvalidTypeMessage (name, value, expectedTypes) {
function styleValue (line 19102) | function styleValue (value, type) {
function isExplicable (line 19112) | function isExplicable (value) {
function isBoolean (line 19117) | function isBoolean () {
function handleError (line 19126) | function handleError (err, vm, info) {
function globalHandleError (line 19146) | function globalHandleError (err, vm, info) {
function logError (line 19157) | function logError (err, vm, info) {
function flushCallbacks (line 19174) | function flushCallbacks () {
function withMacroTask (line 19244) | function withMacroTask (fn) {
function nextTick (line 19255) | function nextTick (cb, ctx) {
function traverse (line 19406) | function traverse (val) {
function _traverse (line 19411) | function _traverse (val, seen) {
function createFnInvoker (line 19451) | function createFnInvoker (fns) {
function updateListeners (line 19470) | function updateListeners (
function mergeVNodeHook (line 19511) | function mergeVNodeHook (def, hookKey, hook) {
function extractPropsFromVNodeData (line 19546) | function extractPropsFromVNodeData (
function checkProp (line 19587) | function checkProp (
function simpleNormalizeChildren (line 19626) | function simpleNormalizeChildren (children) {
function normalizeChildren (line 19639) | function normalizeChildren (children) {
function isTextNode (line 19647) | function isTextNode (node) {
function normalizeArrayChildren (line 19651) | function normalizeArrayChildren (children, nestedIndex) {
function ensureCtor (line 19701) | function ensureCtor (comp, base) {
function createAsyncPlaceholder (line 19713) | function createAsyncPlaceholder (
function resolveAsyncComponent (line 19726) | function resolveAsyncComponent (
function isAsyncPlaceholder (line 19834) | function isAsyncPlaceholder (node) {
function getFirstComponentChild (line 19840) | function getFirstComponentChild (children) {
function initEvents (line 19855) | function initEvents (vm) {
function add (line 19867) | function add (event, fn) {
function remove$1 (line 19871) | function remove$1 (event, fn) {
function createOnceHandler (line 19875) | function createOnceHandler (event, fn) {
function updateComponentListeners (line 19885) | function updateComponentListeners (
function eventsMixin (line 19895) | function eventsMixin (Vue) {
function resolveSlots (line 20000) | function resolveSlots (
function isWhitespace (line 20040) | function isWhitespace (node) {
function resolveScopedSlots (line 20044) | function resolveScopedSlots (
function setActiveInstance (line 20064) | function setActiveInstance(vm) {
function initLifecycle (line 20072) | function initLifecycle (vm) {
function lifecycleMixin (line 20098) | function lifecycleMixin (Vue) {
function mountComponent (line 20181) | function mountComponent (
function updateChildComponent (line 20255) | function updateChildComponent (
function isInInactiveTree (line 20321) | function isInInactiveTree (vm) {
function activateChildComponent (line 20328) | function activateChildComponent (vm, direct) {
function deactivateChildComponent (line 20346) | function deactivateChildComponent (vm, direct) {
function callHook (line 20362) | function callHook (vm, hook) {
function resetSchedulerState (line 20396) | function resetSchedulerState () {
function flushSchedulerQueue (line 20408) | function flushSchedulerQueue () {
function callUpdatedHooks (line 20466) | function callUpdatedHooks (queue) {
function queueActivatedComponent (line 20481) | function queueActivatedComponent (vm) {
function callActivatedHooks (line 20488) | function callActivatedHooks (queue) {
function queueWatcher (line 20500) | function queueWatcher (watcher) {
function proxy (line 20747) | function proxy (target, sourceKey, key) {
function initState (line 20757) | function initState (vm) {
function initProps (line 20773) | function initProps (vm, propsOptions) {
function initData (line 20823) | function initData (vm) {
function getData (line 20865) | function getData (data, vm) {
function initComputed (line 20880) | function initComputed (vm, computed) {
function defineComputed (line 20921) | function defineComputed (
function createComputedGetter (line 20952) | function createComputedGetter (key) {
function createGetterInvoker (line 20967) | function createGetterInvoker(fn) {
function initMethods (line 20973) | function initMethods (vm, methods) {
function initWatch (line 21001) | function initWatch (vm, watch) {
function createWatcher (line 21014) | function createWatcher (
function stateMixin (line 21030) | function stateMixin (Vue) {
function initProvide (line 21083) | function initProvide (vm) {
function initInjections (line 21092) | function initInjections (vm) {
function resolveInject (line 21115) | function resolveInject (inject, vm) {
function renderList (line 21157) | function renderList (
function renderSlot (line 21192) | function renderSlot (
function resolveFilter (line 21229) | function resolveFilter (id) {
function isKeyNotMatch (line 21235) | function isKeyNotMatch (expect, actual) {
function checkKeyCodes (line 21248) | function checkKeyCodes (
function bindObjectProps (line 21270) | function bindObjectProps (
function renderStatic (line 21325) | function renderStatic (
function markOnce (line 21350) | function markOnce (
function markStatic (line 21359) | function markStatic (
function markStaticNode (line 21375) | function markStaticNode (node, key, isOnce) {
function bindObjectListeners (line 21383) | function bindObjectListeners (data, value) {
function installRenderHelpers (line 21404) | function installRenderHelpers (target) {
function FunctionalRenderContext (line 21424) | function FunctionalRenderContext (
function createFunctionalComponent (line 21483) | function createFunctionalComponent (
function cloneAndMarkFunctionalResult (line 21524) | function cloneAndMarkFunctionalResult (vnode, data, contextVm, options, ...
function mergeProps (line 21540) | function mergeProps (to, from) {
function createComponent (line 21621) | function createComponent (
function createComponentInstanceForVnode (line 21720) | function createComponentInstanceForVnode (
function installComponentHooks (line 21738) | function installComponentHooks (data) {
function mergeHook$1 (line 21750) | function mergeHook$1 (f1, f2) {
function transformModel (line 21762) | function transformModel (options, data) {
function createElement (line 21789) | function createElement (
function _createElement (line 21808) | function _createElement (
function applyNS (line 21893) | function applyNS (vnode, ns, force) {
function registerDeepBindings (line 21914) | function registerDeepBindings (data) {
function initRender (line 21925) | function initRender (vm) {
function renderMixin (line 21960) | function renderMixin (Vue) {
function initMixin (line 22022) | function initMixin (Vue) {
function initInternalComponent (line 22081) | function initInternalComponent (vm, options) {
function resolveConstructorOptions (line 22100) | function resolveConstructorOptions (Ctor) {
function resolveModifiedOptions (line 22124) | function resolveModifiedOptions (Ctor) {
function dedupe (line 22138) | function dedupe (latest, extended, sealed) {
function Vue (line 22157) | function Vue (options) {
function initUse (line 22174) | function initUse (Vue) {
function initMixin$1 (line 22196) | function initMixin$1 (Vue) {
function initExtend (line 22205) | function initExtend (Vue) {
function initProps$1 (line 22281) | function initProps$1 (Comp) {
function initComputed$1 (line 22288) | function initComputed$1 (Comp) {
function initAssetRegisters (line 22297) | function initAssetRegisters (Vue) {
function getComponentName (line 22331) | function getComponentName (opts) {
function matches (line 22335) | function matches (pattern, name) {
function pruneCache (line 22347) | function pruneCache (keepAliveInstance, filter) {
function pruneCacheEntry (line 22362) | function pruneCacheEntry (
function initGlobalAPI (line 22463) | function initGlobalAPI (Vue) {
function genClassForVnode (line 22571) | function genClassForVnode (vnode) {
function mergeClassData (line 22589) | function mergeClassData (child, parent) {
function renderClass (line 22598) | function renderClass (
function concat (line 22609) | function concat (a, b) {
function stringifyClass (line 22613) | function stringifyClass (value) {
function stringifyArray (line 22627) | function stringifyArray (value) {
function stringifyObject (line 22639) | function stringifyObject (value) {
function getTagNamespace (line 22686) | function getTagNamespace (tag) {
function isUnknownElement (line 22698) | function isUnknownElement (tag) {
function query (line 22730) | function query (el) {
function createElement$1 (line 22747) | function createElement$1 (tagName, vnode) {
function createElementNS (line 22759) | function createElementNS (namespace, tagName) {
function createTextNode (line 22763) | function createTextNode (text) {
function createComment (line 22767) | function createComment (text) {
function insertBefore (line 22771) | function insertBefore (parentNode, newNode, referenceNode) {
function removeChild (line 22775) | function removeChild (node, child) {
function appendChild (line 22779) | function appendChild (node, child) {
function parentNode (line 22783) | function parentNode (node) {
function nextSibling (line 22787) | function nextSibling (node) {
function tagName (line 22791) | function tagName (node) {
function setTextContent (line 22795) | function setTextContent (node, text) {
function setStyleScope (line 22799) | function setStyleScope (node, scopeId) {
function registerRef (line 22835) | function registerRef (vnode, isRemoval) {
function sameVnode (line 22878) | function sameVnode (a, b) {
function sameInputType (line 22895) | function sameInputType (a, b) {
function createKeyToOldIdx (line 22903) | function createKeyToOldIdx (children, beginIdx, endIdx) {
function createPatchFunction (line 22913) | function createPatchFunction (backend) {
function updateDirectives (line 23643) | function updateDirectives (oldVnode, vnode) {
function _update (line 23649) | function _update (oldVnode, vnode) {
function normalizeDirectives$1 (line 23711) | function normalizeDirectives$1 (
function getRawDirName (line 23734) | function getRawDirName (dir) {
function callHook$1 (line 23738) | function callHook$1 (dir, hook, vnode, oldVnode, isDestroy) {
function updateAttrs (line 23756) | function updateAttrs (oldVnode, vnode) {
function setAttr (line 23797) | function setAttr (el, key, value) {
function baseSetAttr (line 23826) | function baseSetAttr (el, key, value) {
function updateClass (line 23858) | function updateClass (oldVnode, vnode) {
function parseFilters (line 23898) | function parseFilters (exp) {
function wrapFilter (line 23980) | function wrapFilter (exp, filter) {
function baseWarn (line 23994) | function baseWarn (msg) {
function pluckModuleFunction (line 23998) | function pluckModuleFunction (
function addProp (line 24007) | function addProp (el, name, value) {
function addAttr (line 24012) | function addAttr (el, name, value) {
function addRawAttr (line 24018) | function addRawAttr (el, name, value) {
function addDirective (line 24023) | function addDirective (
function addHandler (line 24035) | function addHandler (
function getBindingAttr (line 24111) | function getBindingAttr (
function getAndRemoveAttr (line 24133) | function getAndRemoveAttr (
function genComponentModel (line 24159) | function genComponentModel (
function genAssignmentCode (line 24191) | function genAssignmentCode (
function parseModel (line 24222) | function parseModel (val) {
function next (line 24262) | function next () {
function eof (line 24266) | function eof () {
function isStringStart (line 24270) | function isStringStart (chr) {
function parseBracket (line 24274) | function parseBracket (chr) {
function parseString (line 24292) | function parseString (chr) {
function model (line 24311) | function model (
function genCheckboxModel (line 24362) | function genCheckboxModel (
function genRadioModel (line 24393) | function genRadioModel (
function genSelect (line 24405) | function genSelect (
function genDefaultModel (line 24422) | function genDefaultModel (
function normalizeEvents (line 24480) | function normalizeEvents (on) {
function createOnceHandler$1 (line 24499) | function createOnceHandler$1 (event, handler, capture) {
function add$1 (line 24509) | function add$1 (
function remove$2 (line 24525) | function remove$2 (
function updateDOMListeners (line 24538) | function updateDOMListeners (oldVnode, vnode) {
function updateDOMProps (line 24557) | function updateDOMProps (oldVnode, vnode) {
function shouldUpdateValue (line 24608) | function shouldUpdateValue (elm, checkVal) {
function isNotInFocusAndDirty (line 24616) | function isNotInFocusAndDirty (elm, checkVal) {
function isDirtyWithModifiers (line 24626) | function isDirtyWithModifiers (elm, newVal) {
function normalizeStyleData (line 24665) | function normalizeStyleData (data) {
function normalizeStyleBinding (line 24675) | function normalizeStyleBinding (bindingStyle) {
function getStyle (line 24689) | function getStyle (vnode, checkChild) {
function updateStyle (line 24762) | function updateStyle (oldVnode, vnode) {
function addClass (line 24818) | function addClass (el, cls) {
function removeClass (line 24843) | function removeClass (el, cls) {
function resolveTransition (line 24876) | function resolveTransition (def$$1) {
function nextFrame (line 24936) | function nextFrame (fn) {
function addTransitionClass (line 24942) | function addTransitionClass (el, cls) {
function removeTransitionClass (line 24950) | function removeTransitionClass (el, cls) {
function whenTransitionEnds (line 24957) | function whenTransitionEnds (
function getTransitionInfo (line 24990) | function getTransitionInfo (el, expectedType) {
function getTimeout (line 25040) | function getTimeout (delays, durations) {
function toMs (line 25055) | function toMs (s) {
function enter (line 25061) | function enter (vnode, toggleDisplay) {
function leave (line 25212) | function leave (vnode, rm) {
function checkDuration (line 25317) | function checkDuration (val, name, vnode) {
function isValidDuration (line 25333) | function isValidDuration (val) {
function getHookArgumentsLength (line 25343) | function getHookArgumentsLength (fn) {
function _enter (line 25360) | function _enter (_, vnode) {
function setSelected (line 25465) | function setSelected (el, binding, vm) {
function actuallySetSelected (line 25475) | function actuallySetSelected (el, binding, vm) {
function hasNoMatchingOption (line 25508) | function hasNoMatchingOption (value, options) {
function getValue (line 25512) | function getValue (option) {
function onCompositionStart (line 25518) | function onCompositionStart (e) {
function onCompositionEnd (line 25522) | function onCompositionEnd (e) {
function trigger (line 25529) | function trigger (el, type) {
function locateNode (line 25538) | function locateNode (vnode) {
function getRealChild (line 25626) | function getRealChild (vnode) {
function extractTransitionData (line 25635) | function extractTransitionData (comp) {
function placeholder (line 25651) | function placeholder (h, rawChild) {
function hasParentTransition (line 25659) | function hasParentTransition (vnode) {
function isSameChild (line 25667) | function isSameChild (child, oldChild) {
function callPendingCbs (line 25935) | function callPendingCbs (c) {
function recordPosition (line 25946) | function recordPosition (c) {
function applyTranslation (line 25950) | function applyTranslation (c) {
function parseText (line 26038) | function parseText (
function transformNode (line 26075) | function transformNode (el, options) {
function genData (line 26098) | function genData (el) {
function transformNode$1 (line 26117) | function transformNode$1 (el, options) {
function genData$1 (line 26142) | function genData$1 (el) {
function decodeAttr (line 26231) | function decodeAttr (value, shouldDecodeNewlines) {
function parseHTML (line 26236) | function parseHTML (html, options) {
function createASTElement (line 26507) | function createASTElement (
function parse (line 26525) | function parse (
function processPre (line 26754) | function processPre (el) {
function processRawAttrs (line 26760) | function processRawAttrs (el) {
function processElement (line 26776) | function processElement (element, options) {
function processKey (line 26792) | function processKey (el) {
function processRef (line 26814) | function processRef (el) {
function processFor (line 26822) | function processFor (el) {
function parseFor (line 26838) | function parseFor (exp) {
function processIf (line 26857) | function processIf (el) {
function processIfConditions (line 26876) | function processIfConditions (el, parent) {
function findPrevElement (line 26891) | function findPrevElement (children) {
function addIfCondition (line 26908) | function addIfCondition (el, condition) {
function processOnce (line 26915) | function processOnce (el) {
function processSlot (line 26922) | function processSlot (el) {
function processComponent (line 26971) | function processComponent (el) {
function processAttrs (line 26981) | function processAttrs (el) {
function checkInFor (line 27072) | function checkInFor (el) {
function parseModifiers (line 27083) | function parseModifiers (name) {
function makeAttrsMap (line 27092) | function makeAttrsMap (attrs) {
function isTextTag (line 27107) | function isTextTag (el) {
function isForbiddenTag (line 27111) | function isForbiddenTag (el) {
function guardIESVGBug (line 27125) | function guardIESVGBug (attrs) {
function checkForAliasModel (line 27137) | function checkForAliasModel (el, value) {
function preTransformNode (line 27155) | function preTransformNode (el, options) {
function cloneASTElement (line 27217) | function cloneASTElement (el) {
function text (line 27233) | function text (el, dir) {
function html (line 27241) | function html (el, dir) {
function optimize (line 27286) | function optimize (root, options) {
function genStaticKeys$1 (line 27296) | function genStaticKeys$1 (keys) {
function markStatic$1 (line 27303) | function markStatic$1 (node) {
function markStaticRoots (line 27335) | function markStaticRoots (node, isInFor) {
function isStatic (line 27365) | function isStatic (node) {
function isDirectChildOfTemplateFor (line 27382) | function isDirectChildOfTemplateFor (node) {
function genHandlers (line 27448) | function genHandlers (
function genHandler (line 27459) | function genHandler (
function genKeyFilter (line 27518) | function genKeyFilter (keys) {
function genFilterCode (line 27522) | function genFilterCode (key) {
function on (line 27541) | function on (el, dir) {
function bind$1 (line 27550) | function bind$1 (el, dir) {
function generate (line 27585) | function generate (
function genElement (line 27597) | function genElement (el, state) {
function genStatic (line 27637) | function genStatic (el, state) {
function genOnce (line 27652) | function genOnce (el, state) {
function genIf (line 27678) | function genIf (
function genIfConditions (line 27688) | function genIfConditions (
function genFor (line 27715) | function genFor (
function genData$2 (line 27747) | function genData$2 (el, state) {
function genDirectives (line 27825) | function genDirectives (el, state) {
function genInlineTemplate (line 27850) | function genInlineTemplate (el, state) {
function genScopedSlots (line 27863) | function genScopedSlots (
function genScopedSlot (line 27872) | function genScopedSlot (
function genForScopedSlot (line 27889) | function genForScopedSlot (
function genChildren (line 27905) | function genChildren (
function getNormalizationType (line 27938) | function getNormalizationType (
function needsNormalization (line 27961) | function needsNormalization (el) {
function genNode (line 27965) | function genNode (node, state) {
function genText (line 27975) | function genText (text) {
function genComment (line 27981) | function genComment (comment) {
function genSlot (line 27985) | function genSlot (el, state) {
function genComponent (line 28004) | function genComponent (
function genProps (line 28013) | function genProps (props) {
function transformSpecialNewlines (line 28026) | function transformSpecialNewlines (text) {
function detectErrors (line 28051) | function detectErrors (ast) {
function checkNode (line 28059) | function checkNode (node, errors) {
function checkEvent (line 28085) | function checkEvent (exp, text, errors) {
function checkFor (line 28097) | function checkFor (node, text, errors) {
function checkIdentifier (line 28104) | function checkIdentifier (
function checkExpression (line 28119) | function checkExpression (exp, text, errors) {
function createFunction (line 28143) | function createFunction (code, errors) {
function createCompileToFunctionFn (line 28152) | function createCompileToFunctionFn (compile) {
function createCompilerCreator (line 28240) | function createCompilerCreator (baseCompile) {
function getShouldDecode (line 28321) | function getShouldDecode (href) {
function getOuterHTML (line 28412) | function getOuterHTML (el) {
function Timeout (line 28452) | function Timeout(id, clearFn) {
function setImmediate (line 28515) | function setImmediate(callback) {
function clearImmediate (line 28532) | function clearImmediate(handle) {
function run (line 28536) | function run(task) {
function runIfPresent (line 28558) | function runIfPresent(handle) {
function installNextTickImplementation (line 28579) | function installNextTickImplementation() {
function canUsePostMessage (line 28585) | function canUsePostMessage() {
function installPostMessageImplementation (line 28600) | function installPostMessageImplementation() {
function installMessageChannelImplementation (line 28625) | function installMessageChannelImplementation() {
function installReadyStateChangeImplementation (line 28637) | function installReadyStateChangeImplementation() {
function installSetTimeoutImplementation (line 28653) | function installSetTimeoutImplementation() {
function defaultSetTimout (line 28706) | function defaultSetTimout() {
function defaultClearTimeout (line 28709) | function defaultClearTimeout () {
function runTimeout (line 28732) | function runTimeout(fun) {
function runClearTimeout (line 28757) | function runClearTimeout(marker) {
function cleanUpNextTick (line 28789) | function cleanUpNextTick() {
function drainQueue (line 28804) | function drainQueue() {
function Item (line 28842) | function Item(fun, array) {
function noop (line 28856) | function noop() {}
FILE: public/layui/lay/modules/jquery.js
function n (line 2) | function n(e){var t=!!e&&"length"in e&&e.length,n=pe.type(e);return"func...
function r (line 2) | function r(e,t,n){if(pe.isFunction(t))return pe.grep(e,function(e,r){ret...
function i (line 2) | function i(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}
function o (line 2) | function o(e){var t={};return pe.each(e.match(De)||[],function(e,n){t[n]...
function a (line 2) | function a(){re.addEventListener?(re.removeEventListener("DOMContentLoad...
function s (line 2) | function s(){(re.addEventListener||"load"===e.event.type||"complete"===r...
function u (line 2) | function u(e,t,n){if(void 0===n&&1===e.nodeType){var r="data-"+t.replace...
function l (line 2) | function l(e){var t;for(t in e)if(("data"!==t||!pe.isEmptyObject(e[t]))&...
function c (line 2) | function c(e,t,n,r){if(He(e)){var i,o,a=pe.expando,s=e.nodeType,u=s?pe.c...
function f (line 2) | function f(e,t,n){if(He(e)){var r,i,o=e.nodeType,a=o?pe.cache:e,s=o?e[pe...
function d (line 2) | function d(e,t,n,r){var i,o=1,a=20,s=r?function(){return r.cur()}:functi...
function p (line 2) | function p(e){var t=ze.split("|"),n=e.createDocumentFragment();if(n.crea...
function h (line 2) | function h(e,t){var n,r,i=0,o="undefined"!=typeof e.getElementsByTagName...
function g (line 2) | function g(e,t){for(var n,r=0;null!=(n=e[r]);r++)pe._data(n,"globalEval"...
function m (line 2) | function m(e){Be.test(e.type)&&(e.defaultChecked=e.checked)}
function y (line 2) | function y(e,t,n,r,i){for(var o,a,s,u,l,c,f,d=e.length,y=p(t),v=[],x=0;x...
function v (line 2) | function v(){return!0}
function x (line 2) | function x(){return!1}
function b (line 2) | function b(){try{return re.activeElement}catch(e){}}
function w (line 2) | function w(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof ...
function T (line 2) | function T(e,t){return pe.nodeName(e,"table")&&pe.nodeName(11!==t.nodeTy...
function C (line 2) | function C(e){return e.type=(null!==pe.find.attr(e,"type"))+"/"+e.type,e}
function E (line 2) | function E(e){var t=it.exec(e.type);return t?e.type=t[1]:e.removeAttribu...
function N (line 2) | function N(e,t){if(1===t.nodeType&&pe.hasData(e)){var n,r,i,o=pe._data(e...
function k (line 2) | function k(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase...
function S (line 2) | function S(e,t,n,r){t=oe.apply([],t);var i,o,a,s,u,l,c=0,f=e.length,d=f-...
function A (line 2) | function A(e,t,n){for(var r,i=t?pe.filter(t,e):e,o=0;null!=(r=i[o]);o++)...
function D (line 2) | function D(e,t){var n=pe(t.createElement(e)).appendTo(t.body),r=pe.css(n...
function j (line 2) | function j(e){var t=re,n=lt[e];return n||(n=D(e,t),"none"!==n&&n||(ut=(u...
function L (line 2) | function L(e,t){return{get:function(){return e()?void delete this.get:(t...
function H (line 2) | function H(e){if(e in Et)return e;for(var t=e.charAt(0).toUpperCase()+e....
function q (line 2) | function q(e,t){for(var n,r,i,o=[],a=0,s=e.length;a<s;a++)r=e[a],r.style...
function _ (line 2) | function _(e,t,n){var r=bt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2...
function F (line 2) | function F(e,t,n,r,i){for(var o=n===(r?"border":"content")?4:"width"===t...
function M (line 2) | function M(t,n,r){var i=!0,o="width"===n?t.offsetWidth:t.offsetHeight,a=...
function O (line 2) | function O(e,t,n,r,i){return new O.prototype.init(e,t,n,r,i)}
function R (line 2) | function R(){return e.setTimeout(function(){Nt=void 0}),Nt=pe.now()}
function P (line 2) | function P(e,t){var n,r={height:e},i=0;for(t=t?1:0;i<4;i+=2-t)n=Oe[i],r[...
function B (line 2) | function B(e,t,n){for(var r,i=($.tweeners[t]||[]).concat($.tweeners["*"]...
function W (line 2) | function W(e,t,n){var r,i,o,a,s,u,l,c,f=this,d={},p=e.style,h=e.nodeType...
function I (line 2) | function I(e,t){var n,r,i,o,a;for(n in e)if(r=pe.camelCase(n),i=t[r],o=e...
function $ (line 2) | function $(e,t,n){var r,i,o=0,a=$.prefilters.length,s=pe.Deferred().alwa...
function z (line 2) | function z(e){return pe.attr(e,"class")||""}
function X (line 2) | function X(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r...
function U (line 2) | function U(e,t,n,r){function i(s){var u;return o[s]=!0,pe.each(e[s]||[],...
function V (line 2) | function V(e,t){var n,r,i=pe.ajaxSettings.flatOptions||{};for(r in t)voi...
function Y (line 2) | function Y(e,t,n){for(var r,i,o,a,s=e.contents,u=e.dataTypes;"*"===u[0];...
function J (line 2) | function J(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for...
function G (line 2) | function G(e){return e.style&&e.style.display||pe.css(e,"display")}
function K (line 2) | function K(e){for(;e&&1===e.nodeType;){if("none"===G(e)||"hidden"===e.ty...
function Q (line 2) | function Q(e,t,n,r){var i;if(pe.isArray(t))pe.each(t,function(t,i){n||rn...
function Z (line 2) | function Z(){try{return new e.XMLHttpRequest}catch(t){}}
function ee (line 2) | function ee(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(...
function te (line 2) | function te(e){return pe.isWindow(e)?e:9===e.nodeType&&(e.defaultView||e...
function t (line 2) | function t(e,t,n,r){var i,o,a,s,u,l,f,p,h=t&&t.ownerDocument,g=t?t.nodeT...
function n (line 2) | function n(){function e(n,r){return t.push(n+" ")>T.cacheLength&&delete ...
function r (line 2) | function r(e){return e[P]=!0,e}
function i (line 2) | function i(e){var t=H.createElement("div");try{return!!e(t)}catch(n){ret...
function o (line 2) | function o(e,t){for(var n=e.split("|"),r=n.length;r--;)T.attrHandle[n[r]...
function a (line 2) | function a(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sour...
function s (line 2) | function s(e){return function(t){var n=t.nodeName.toLowerCase();return"i...
function u (line 2) | function u(e){return function(t){var n=t.nodeName.toLowerCase();return("...
function l (line 2) | function l(e){return r(function(t){return t=+t,r(function(n,r){for(var i...
function c (line 2) | function c(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}
function f (line 2) | function f(){}
function d (line 2) | function d(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}
function p (line 2) | function p(e,t,n){var r=t.dir,i=n&&"parentNode"===r,o=I++;return t.first...
function h (line 2) | function h(e){return e.length>1?function(t,n,r){for(var i=e.length;i--;)...
function g (line 2) | function g(e,n,r){for(var i=0,o=n.length;i<o;i++)t(e,n[i],r);return r}
function m (line 2) | function m(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o...
function y (line 2) | function y(e,t,n,i,o,a){return i&&!i[P]&&(i=y(i)),o&&!o[P]&&(o=y(o,a)),r...
function v (line 2) | function v(e){for(var t,n,r,i=e.length,o=T.relative[e[0].type],a=o||T.re...
function x (line 2) | function x(e,n){var i=n.length>0,o=e.length>0,a=function(r,a,s,u,l){var ...
function t (line 4) | function t(){var t,c,f=re.documentElement;f.appendChild(u),l.style.cssTe...
function r (line 4) | function r(t,n,r,i){var o,f,v,x,w,C=n;2!==b&&(b=2,u&&e.clearTimeout(u),c...
FILE: public/layui/lay/modules/layer.js
function e (line 2) | function e(){var e=a.cancel&&a.cancel(t.index,n);e===!1||r.close(t.index)}
function o (line 2) | function o(e,t,i){var n=new Image;return n.src=e,n.complete?t(n):(n.onlo...
FILE: public/layui/lay/modules/mobile.js
function t (line 2) | function t(t){return null==t?String(t):J[W.call(t)]||"object"}
function e (line 2) | function e(e){return"function"==t(e)}
function n (line 2) | function n(t){return null!=t&&t==t.window}
function r (line 2) | function r(t){return null!=t&&t.nodeType==t.DOCUMENT_NODE}
function i (line 2) | function i(e){return"object"==t(e)}
function o (line 2) | function o(t){return i(t)&&!n(t)&&Object.getPrototypeOf(t)==Object.proto...
function a (line 2) | function a(t){var e=!!t&&"length"in t&&t.length,r=T.type(t);return"funct...
function s (line 2) | function s(t){return A.call(t,function(t){return null!=t})}
function u (line 2) | function u(t){return t.length>0?T.fn.concat.apply([],t):t}
function c (line 2) | function c(t){return t.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/...
function l (line 2) | function l(t){return t in F?F[t]:F[t]=new RegExp("(^|\\s)"+t+"(\\s|$)")}
function f (line 2) | function f(t,e){return"number"!=typeof e||k[c(t)]?e:e+"px"}
function h (line 2) | function h(t){var e,n;return $[t]||(e=L.createElement(t),L.body.appendCh...
function p (line 2) | function p(t){return"children"in t?D.call(t.children):T.map(t.childNodes...
function d (line 2) | function d(t,e){var n,r=t?t.length:0;for(n=0;n<r;n++)this[n]=t[n];this.l...
function m (line 2) | function m(t,e,n){for(j in e)n&&(o(e[j])||Q(e[j]))?(o(e[j])&&!o(t[j])&&(...
function v (line 2) | function v(t,e){return null==e?T(t):T(t).filter(e)}
function g (line 2) | function g(t,n,r,i){return e(n)?n.call(t,r,i):n}
function y (line 2) | function y(t,e,n){null==n?t.removeAttribute(e):t.setAttribute(e,n)}
function x (line 2) | function x(t,e){var n=t.className||"",r=n&&n.baseVal!==E;return e===E?r?...
function b (line 2) | function b(t){try{return t?"true"==t||"false"!=t&&("null"==t?null:+t+""=...
function w (line 2) | function w(t,e){e(t);for(var n=0,r=t.childNodes.length;n<r;n++)w(t.child...
function e (line 2) | function e(t){return t._zid||(t._zid=h++)}
function n (line 2) | function n(t,n,o,a){if(n=r(n),n.ns)var s=i(n.ns);return(v[e(t)]||[]).fil...
function r (line 2) | function r(t){var e=(""+t).split(".");return{e:e[0],ns:e.slice(1).sort()...
function i (line 2) | function i(t){return new RegExp("(?:^| )"+t.replace(" "," .* ?")+"(?: |$...
function o (line 2) | function o(t,e){return t.del&&!y&&t.e in x||!!e}
function a (line 2) | function a(t){return b[t]||y&&x[t]||t}
function s (line 2) | function s(n,i,s,u,l,h,p){var d=e(n),m=v[d]||(v[d]=[]);i.split(/\s/).for...
function u (line 2) | function u(t,r,i,s,u){var c=e(t);(r||"").split(/\s/).forEach(function(e)...
function c (line 2) | function c(e,n){return!n&&e.isDefaultPrevented||(n||(n=e),t.each(T,funct...
function l (line 2) | function l(t){var e,n={originalEvent:t};for(e in t)j.test(e)||t[e]===f||...
function e (line 2) | function e(e,n,r){var i=t.Event(n);return t(e).trigger(i,r),!i.isDefault...
function n (line 2) | function n(t,n,r,i){if(t.global)return e(n||x,r,i)}
function r (line 2) | function r(e){e.global&&0===t.active++&&n(e,null,"ajaxStart")}
function i (line 2) | function i(e){e.global&&!--t.active&&n(e,null,"ajaxStop")}
function o (line 2) | function o(t,e){var r=e.context;return e.beforeSend.call(r,t,e)!==!1&&n(...
function a (line 2) | function a(t,e,r,i){var o=r.context,a="success";r.success.call(o,t,a,e),...
function s (line 2) | function s(t,e,r,i,o){var a=i.context;i.error.call(a,r,e,t),o&&o.rejectW...
function u (line 2) | function u(t,e,r){var o=r.context;r.complete.call(o,e,t),n(r,o,"ajaxComp...
function c (line 2) | function c(t,e,n){if(n.dataFilter==l)return t;var r=n.context;return n.d...
function l (line 2) | function l(){}
function f (line 2) | function f(t){return t&&(t=t.split(";",2)[0]),t&&(t==T?"html":t==j?"json...
function h (line 2) | function h(t,e){return""==e?t:(t+"&"+e).replace(/[&?]{1,2}/,"?")}
function p (line 2) | function p(e){e.processData&&e.data&&"string"!=t.type(e.data)&&(e.data=t...
function d (line 2) | function d(e,n,r,i){return t.isFunction(n)&&(i=r,r=n,n=void 0),t.isFunct...
function m (line 2) | function m(e,n,r,i){var o,a=t.isArray(n),s=t.isPlainObject(n);t.each(n,f...
FILE: public/layui/lay/modules/util.js
function a (line 2) | function a(){n=e[l](function(){r.each(function(){var e=t(this),i=e.width...
function a (line 2) | function a(e,a,r){var o=t(this),l=t.data(this,g)||{};l.w=a!==i?a:o.width...
FILE: public/layui/layui.all.js
function s (line 2) | function s(e,t){var n="PLaySTATION 3"===navigator.platform?/^complete$/:...
function c (line 2) | function c(){l.push(layui[f]),e.length>1?y.use(e.slice(1),n,l):"function...
function n (line 2) | function n(e){var t=!!e&&"length"in e&&e.length,n=pe.type(e);return"func...
function r (line 2) | function r(e,t,n){if(pe.isFunction(t))return pe.grep(e,function(e,r){ret...
function i (line 2) | function i(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}
function o (line 2) | function o(e){var t={};return pe.each(e.match(De)||[],function(e,n){t[n]...
function a (line 2) | function a(){re.addEventListener?(re.removeEventListener("DOMContentLoad...
function s (line 2) | function s(){(re.addEventListener||"load"===e.event.type||"complete"===r...
function u (line 2) | function u(e,t,n){if(void 0===n&&1===e.nodeType){var r="data-"+t.replace...
function l (line 2) | function l(e){var t;for(t in e)if(("data"!==t||!pe.isEmptyObject(e[t]))&...
function c (line 2) | function c(e,t,n,r){if(He(e)){var i,o,a=pe.expando,s=e.nodeType,u=s?pe.c...
function f (line 2) | function f(e,t,n){if(He(e)){var r,i,o=e.nodeType,a=o?pe.cache:e,s=o?e[pe...
function d (line 2) | function d(e,t,n,r){var i,o=1,a=20,s=r?function(){return r.cur()}:functi...
function p (line 2) | function p(e){var t=ze.split("|"),n=e.createDocumentFragment();if(n.crea...
function h (line 2) | function h(e,t){var n,r,i=0,o="undefined"!=typeof e.getElementsByTagName...
function g (line 2) | function g(e,t){for(var n,r=0;null!=(n=e[r]);r++)pe._data(n,"globalEval"...
function m (line 2) | function m(e){Be.test(e.type)&&(e.defaultChecked=e.checked)}
function y (line 2) | function y(e,t,n,r,i){for(var o,a,s,u,l,c,f,d=e.length,y=p(t),v=[],x=0;x...
function v (line 2) | function v(){return!0}
function x (line 2) | function x(){return!1}
function b (line 2) | function b(){try{return re.activeElement}catch(e){}}
function w (line 2) | function w(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof ...
function T (line 2) | function T(e,t){return pe.nodeName(e,"table")&&pe.nodeName(11!==t.nodeTy...
function C (line 2) | function C(e){return e.type=(null!==pe.find.attr(e,"type"))+"/"+e.type,e}
function E (line 2) | function E(e){var t=it.exec(e.type);return t?e.type=t[1]:e.removeAttribu...
function N (line 2) | function N(e,t){if(1===t.nodeType&&pe.hasData(e)){var n,r,i,o=pe._data(e...
function k (line 2) | function k(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase...
function S (line 2) | function S(e,t,n,r){t=oe.apply([],t);var i,o,a,s,u,l,c=0,f=e.length,d=f-...
function A (line 2) | function A(e,t,n){for(var r,i=t?pe.filter(t,e):e,o=0;null!=(r=i[o]);o++)...
function D (line 2) | function D(e,t){var n=pe(t.createElement(e)).appendTo(t.body),r=pe.css(n...
function j (line 2) | function j(e){var t=re,n=lt[e];return n||(n=D(e,t),"none"!==n&&n||(ut=(u...
function L (line 2) | function L(e,t){return{get:function(){return e()?void delete this.get:(t...
function H (line 2) | function H(e){if(e in Et)return e;for(var t=e.charAt(0).toUpperCase()+e....
function q (line 2) | function q(e,t){for(var n,r,i,o=[],a=0,s=e.length;a<s;a++)r=e[a],r.style...
function _ (line 2) | function _(e,t,n){var r=bt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2...
function F (line 2) | function F(e,t,n,r,i){for(var o=n===(r?"border":"content")?4:"width"===t...
function M (line 2) | function M(t,n,r){var i=!0,o="width"===n?t.offsetWidth:t.offsetHeight,a=...
function O (line 2) | function O(e,t,n,r,i){return new O.prototype.init(e,t,n,r,i)}
function R (line 2) | function R(){return e.setTimeout(function(){Nt=void 0}),Nt=pe.now()}
function P (line 2) | function P(e,t){var n,r={height:e},i=0;for(t=t?1:0;i<4;i+=2-t)n=Oe[i],r[...
function B (line 2) | function B(e,t,n){for(var r,i=($.tweeners[t]||[]).concat($.tweeners["*"]...
function W (line 2) | function W(e,t,n){var r,i,o,a,s,u,l,c,f=this,d={},p=e.style,h=e.nodeType...
function I (line 2) | function I(e,t){var n,r,i,o,a;for(n in e)if(r=pe.camelCase(n),i=t[r],o=e...
function $ (line 2) | function $(e,t,n){var r,i,o=0,a=$.prefilters.length,s=pe.Deferred().alwa...
function z (line 2) | function z(e){return pe.attr(e,"class")||""}
function X (line 2) | function X(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r...
function U (line 2) | function U(e,t,n,r){function i(s){var u;return o[s]=!0,pe.each(e[s]||[],...
function V (line 2) | function V(e,t){var n,r,i=pe.ajaxSettings.flatOptions||{};for(r in t)voi...
function Y (line 2) | function Y(e,t,n){for(var r,i,o,a,s=e.contents,u=e.dataTypes;"*"===u[0];...
function J (line 2) | function J(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for...
function G (line 2) | function G(e){return e.style&&e.style.display||pe.css(e,"display")}
function K (line 2) | function K(e){for(;e&&1===e.nodeType;){if("none"===G(e)||"hidden"===e.ty...
function Q (line 2) | function Q(e,t,n,r){var i;if(pe.isArray(t))pe.each(t,function(t,i){n||rn...
function Z (line 2) | function Z(){try{return new e.XMLHttpRequest}catch(t){}}
function ee (line 2) | function ee(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(...
function te (line 2) | function te(e){return pe.isWindow(e)?e:9===e.nodeType&&(e.defaultView||e...
function t (line 2) | function t(e,t,n,r){var i,o,a,s,u,l,f,p,h=t&&t.ownerDocument,g=t?t.nodeT...
function n (line 2) | function n(){function e(n,r){return t.push(n+" ")>T.cacheLength&&delete ...
function r (line 2) | function r(e){return e[P]=!0,e}
function i (line 2) | function i(e){var t=H.createElement("div");try{return!!e(t)}catch(n){ret...
function o (line 2) | function o(e,t){for(var n=e.split("|"),r=n.length;r--;)T.attrHandle[n[r]...
function a (line 2) | function a(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sour...
function s (line 2) | function s(e){return function(t){var n=t.nodeName.toLowerCase();return"i...
function u (line 2) | function u(e){return function(t){var n=t.nodeName.toLowerCase();return("...
function l (line 2) | function l(e){return r(function(t){return t=+t,r(function(n,r){for(var i...
function c (line 2) | function c(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}
function f (line 2) | function f(){}
function d (line 2) | function d(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}
function p (line 2) | function p(e,t,n){var r=t.dir,i=n&&"parentNode"===r,o=I++;return t.first...
function h (line 2) | function h(e){return e.length>1?function(t,n,r){for(var i=e.length;i--;)...
function g (line 2) | function g(e,n,r){for(var i=0,o=n.length;i<o;i++)t(e,n[i],r);return r}
function m (line 2) | function m(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o...
function y (line 2) | function y(e,t,n,i,o,a){return i&&!i[P]&&(i=y(i)),o&&!o[P]&&(o=y(o,a)),r...
function v (line 2) | function v(e){for(var t,n,r,i=e.length,o=T.relative[e[0].type],a=o||T.re...
function x (line 2) | function x(e,n){var i=n.length>0,o=e.length>0,a=function(r,a,s,u,l){var ...
function t (line 4) | function t(){var t,c,f=re.documentElement;f.appendChild(u),l.style.cssTe...
function r (line 4) | function r(t,n,r,i){var o,f,v,x,w,C=n;2!==b&&(b=2,u&&e.clearTimeout(u),c...
function e (line 5) | function e(){var e=a.cancel&&a.cancel(t.index,n);e===!1||r.close(t.index)}
function o (line 5) | function o(e,t,i){var n=new Image;return n.src=e,n.complete?t(n):(n.onlo...
function a (line 5) | function a(){n=e[l](function(){r.each(function(){var e=t(this),i=e.width...
function a (line 5) | function a(e,a,r){var o=t(this),l=t.data(this,g)||{};l.w=a!==i?a:o.width...
FILE: public/layui/layui.js
function s (line 2) | function s(e,t){var n="PLaySTATION 3"===navigator.platform?/^complete$/:...
function c (line 2) | function c(){l.push(layui[f]),e.length>1?y.use(e.slice(1),n,l):"function...
FILE: public/layuicms/js/bodyTab.js
function down (line 214) | function down(event){
function move (line 225) | function move(event){
function end (line 254) | function end(){
FILE: public/layuicms/js/cache.js
function showNotice (line 31) | function showNotice(){
function showNotice (line 55) | function showNotice(noticeData){
function tipsShow (line 79) | function tipsShow(){
function lockPage (line 93) | function lockPage(){
function skins (line 225) | function skins(){
FILE: public/layuicms/js/index.js
function getData (line 18) | function getData(json){
function addTab (line 140) | function addTab(_this){
function donation (line 145) | function donation(){
function showImg (line 159) | function showImg(){
FILE: public/layuicms/js/main.js
function dateFilter (line 5) | function dateFilter(date){
function getLangDate (line 9) | function getLangDate(){
function fillParameter (line 57) | function fillParameter(data){
FILE: public/layuicms/layui/lay/modules/jquery.js
function n (line 2) | function n(e){var t=!!e&&"length"in e&&e.length,n=pe.type(e);return"func...
function r (line 2) | function r(e,t,n){if(pe.isFunction(t))return pe.grep(e,function(e,r){ret...
function i (line 2) | function i(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}
function o (line 2) | function o(e){var t={};return pe.each(e.match(De)||[],function(e,n){t[n]...
function a (line 2) | function a(){re.addEventListener?(re.removeEventListener("DOMContentLoad...
function s (line 2) | function s(){(re.addEventListener||"load"===e.event.type||"complete"===r...
function u (line 2) | function u(e,t,n){if(void 0===n&&1===e.nodeType){var r="data-"+t.replace...
function l (line 2) | function l(e){var t;for(t in e)if(("data"!==t||!pe.isEmptyObject(e[t]))&...
function c (line 2) | function c(e,t,n,r){if(He(e)){var i,o,a=pe.expando,s=e.nodeType,u=s?pe.c...
function f (line 2) | function f(e,t,n){if(He(e)){var r,i,o=e.nodeType,a=o?pe.cache:e,s=o?e[pe...
function d (line 2) | function d(e,t,n,r){var i,o=1,a=20,s=r?function(){return r.cur()}:functi...
function p (line 2) | function p(e){var t=ze.split("|"),n=e.createDocumentFragment();if(n.crea...
function h (line 2) | function h(e,t){var n,r,i=0,o="undefined"!=typeof e.getElementsByTagName...
function g (line 2) | function g(e,t){for(var n,r=0;null!=(n=e[r]);r++)pe._data(n,"globalEval"...
function m (line 2) | function m(e){Be.test(e.type)&&(e.defaultChecked=e.checked)}
function y (line 2) | function y(e,t,n,r,i){for(var o,a,s,u,l,c,f,d=e.length,y=p(t),v=[],x=0;x...
function v (line 2) | function v(){return!0}
function x (line 2) | function x(){return!1}
function b (line 2) | function b(){try{return re.activeElement}catch(e){}}
function w (line 2) | function w(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof ...
function T (line 2) | function T(e,t){return pe.nodeName(e,"table")&&pe.nodeName(11!==t.nodeTy...
function C (line 2) | function C(e){return e.type=(null!==pe.find.attr(e,"type"))+"/"+e.type,e}
function E (line 2) | function E(e){var t=it.exec(e.type);return t?e.type=t[1]:e.removeAttribu...
function N (line 2) | function N(e,t){if(1===t.nodeType&&pe.hasData(e)){var n,r,i,o=pe._data(e...
function k (line 2) | function k(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase...
function S (line 2) | function S(e,t,n,r){t=oe.apply([],t);var i,o,a,s,u,l,c=0,f=e.length,d=f-...
function A (line 2) | function A(e,t,n){for(var r,i=t?pe.filter(t,e):e,o=0;null!=(r=i[o]);o++)...
function D (line 2) | function D(e,t){var n=pe(t.createElement(e)).appendTo(t.body),r=pe.css(n...
function j (line 2) | function j(e){var t=re,n=lt[e];return n||(n=D(e,t),"none"!==n&&n||(ut=(u...
function L (line 2) | function L(e,t){return{get:function(){return e()?void delete this.get:(t...
function H (line 2) | function H(e){if(e in Et)return e;for(var t=e.charAt(0).toUpperCase()+e....
function q (line 2) | function q(e,t){for(var n,r,i,o=[],a=0,s=e.length;a<s;a++)r=e[a],r.style...
function _ (line 2) | function _(e,t,n){var r=bt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2...
function F (line 2) | function F(e,t,n,r,i){for(var o=n===(r?"border":"content")?4:"width"===t...
function M (line 2) | function M(t,n,r){var i=!0,o="width"===n?t.offsetWidth:t.offsetHeight,a=...
function O (line 2) | function O(e,t,n,r,i){return new O.prototype.init(e,t,n,r,i)}
function R (line 2) | function R(){return e.setTimeout(function(){Nt=void 0}),Nt=pe.now()}
function P (line 2) | function P(e,t){var n,r={height:e},i=0;for(t=t?1:0;i<4;i+=2-t)n=Oe[i],r[...
function B (line 2) | function B(e,t,n){for(var r,i=($.tweeners[t]||[]).concat($.tweeners["*"]...
function W (line 2) | function W(e,t,n){var r,i,o,a,s,u,l,c,f=this,d={},p=e.style,h=e.nodeType...
function I (line 2) | function I(e,t){var n,r,i,o,a;for(n in e)if(r=pe.camelCase(n),i=t[r],o=e...
function $ (line 2) | function $(e,t,n){var r,i,o=0,a=$.prefilters.length,s=pe.Deferred().alwa...
function z (line 2) | function z(e){return pe.attr(e,"class")||""}
function X (line 2) | function X(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r...
function U (line 2) | function U(e,t,n,r){function i(s){var u;return o[s]=!0,pe.each(e[s]||[],...
function V (line 2) | function V(e,t){var n,r,i=pe.ajaxSettings.flatOptions||{};for(r in t)voi...
function Y (line 2) | function Y(e,t,n){for(var r,i,o,a,s=e.contents,u=e.dataTypes;"*"===u[0];...
function J (line 2) | function J(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for...
function G (line 2) | function G(e){return e.style&&e.style.display||pe.css(e,"display")}
function K (line 2) | function K(e){for(;e&&1===e.nodeType;){if("none"===G(e)||"hidden"===e.ty...
function Q (line 2) | function Q(e,t,n,r){var i;if(pe.isArray(t))pe.each(t,function(t,i){n||rn...
function Z (line 2) | function Z(){try{return new e.XMLHttpRequest}catch(t){}}
function ee (line 2) | function ee(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(...
function te (line 2) | function te(e){return pe.isWindow(e)?e:9===e.nodeType&&(e.defaultView||e...
function t (line 2) | function t(e,t,n,r){var i,o,a,s,u,l,f,p,h=t&&t.ownerDocument,g=t?t.nodeT...
function n (line 2) | function n(){function e(n,r){return t.push(n+" ")>T.cacheLength&&delete ...
function r (line 2) | function r(e){return e[P]=!0,e}
function i (line 2) | function i(e){var t=H.createElement("div");try{return!!e(t)}catch(n){ret...
function o (line 2) | function o(e,t){for(var n=e.split("|"),r=n.length;r--;)T.attrHandle[n[r]...
function a (line 2) | function a(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sour...
function s (line 2) | function s(e){return function(t){var n=t.nodeName.toLowerCase();return"i...
function u (line 2) | function u(e){return function(t){var n=t.nodeName.toLowerCase();return("...
function l (line 2) | function l(e){return r(function(t){return t=+t,r(function(n,r){for(var i...
function c (line 2) | function c(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}
function f (line 2) | function f(){}
function d (line 2) | function d(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}
function p (line 2) | function p(e,t,n){var r=t.dir,i=n&&"parentNode"===r,o=I++;return t.first...
function h (line 2) | function h(e){return e.length>1?function(t,n,r){for(var i=e.length;i--;)...
function g (line 2) | function g(e,n,r){for(var i=0,o=n.length;i<o;i++)t(e,n[i],r);return r}
function m (line 2) | function m(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o...
function y (line 2) | function y(e,t,n,i,o,a){return i&&!i[P]&&(i=y(i)),o&&!o[P]&&(o=y(o,a)),r...
function v (line 2) | function v(e){for(var t,n,r,i=e.length,o=T.relative[e[0].type],a=o||T.re...
function x (line 2) | function x(e,n){var i=n.length>0,o=e.length>0,a=function(r,a,s,u,l){var ...
function t (line 4) | function t(){var t,c,f=re.documentElement;f.appendChild(u),l.style.cssTe...
function r (line 4) | function r(t,n,r,i){var o,f,v,x,w,C=n;2!==b&&(b=2,u&&e.clearTimeout(u),c...
FILE: public/layuicms/layui/lay/modules/layer.js
function e (line 2) | function e(){var e=a.cancel&&a.cancel(t.index,n);e===!1||r.close(t.index)}
function o (line 2) | function o(e,t,i){var n=new Image;return n.src=e,n.complete?t(n):(n.onlo...
FILE: public/layuicms/layui/lay/modules/mobile.js
function t (line 2) | function t(t){return null==t?String(t):J[W.call(t)]||"object"}
function e (line 2) | function e(e){return"function"==t(e)}
function n (line 2) | function n(t){return null!=t&&t==t.window}
function r (line 2) | function r(t){return null!=t&&t.nodeType==t.DOCUMENT_NODE}
function i (line 2) | function i(e){return"object"==t(e)}
function o (line 2) | function o(t){return i(t)&&!n(t)&&Object.getPrototypeOf(t)==Object.proto...
function a (line 2) | function a(t){var e=!!t&&"length"in t&&t.length,r=T.type(t);return"funct...
function s (line 2) | function s(t){return A.call(t,function(t){return null!=t})}
function u (line 2) | function u(t){return t.length>0?T.fn.concat.apply([],t):t}
function c (line 2) | function c(t){return t.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/...
function l (line 2) | function l(t){return t in F?F[t]:F[t]=new RegExp("(^|\\s)"+t+"(\\s|$)")}
function f (line 2) | function f(t,e){return"number"!=typeof e||k[c(t)]?e:e+"px"}
function h (line 2) | function h(t){var e,n;return $[t]||(e=L.createElement(t),L.body.appendCh...
function p (line 2) | function p(t){return"children"in t?D.call(t.children):T.map(t.childNodes...
function d (line 2) | function d(t,e){var n,r=t?t.length:0;for(n=0;n<r;n++)this[n]=t[n];this.l...
function m (line 2) | function m(t,e,n){for(j in e)n&&(o(e[j])||Q(e[j]))?(o(e[j])&&!o(t[j])&&(...
function v (line 2) | function v(t,e){return null==e?T(t):T(t).filter(e)}
function g (line 2) | function g(t,n,r,i){return e(n)?n.call(t,r,i):n}
function y (line 2) | function y(t,e,n){null==n?t.removeAttribute(e):t.setAttribute(e,n)}
function x (line 2) | function x(t,e){var n=t.className||"",r=n&&n.baseVal!==E;return e===E?r?...
function b (line 2) | function b(t){try{return t?"true"==t||"false"!=t&&("null"==t?null:+t+""=...
function w (line 2) | function w(t,e){e(t);for(var n=0,r=t.childNodes.length;n<r;n++)w(t.child...
function e (line 2) | function e(t){return t._zid||(t._zid=h++)}
function n (line 2) | function n(t,n,o,a){if(n=r(n),n.ns)var s=i(n.ns);return(v[e(t)]||[]).fil...
function r (line 2) | function r(t){var e=(""+t).split(".");return{e:e[0],ns:e.slice(1).sort()...
function i (line 2) | function i(t){return new RegExp("(?:^| )"+t.replace(" "," .* ?")+"(?: |$...
function o (line 2) | function o(t,e){return t.del&&!y&&t.e in x||!!e}
function a (line 2) | function a(t){return b[t]||y&&x[t]||t}
function s (line 2) | function s(n,i,s,u,l,h,p){var d=e(n),m=v[d]||(v[d]=[]);i.split(/\s/).for...
function u (line 2) | function u(t,r,i,s,u){var c=e(t);(r||"").split(/\s/).forEach(function(e)...
function c (line 2) | function c(e,n){return!n&&e.isDefaultPrevented||(n||(n=e),t.each(T,funct...
function l (line 2) | function l(t){var e,n={originalEvent:t};for(e in t)j.test(e)||t[e]===f||...
function e (line 2) | function e(e,n,r){var i=t.Event(n);return t(e).trigger(i,r),!i.isDefault...
function n (line 2) | function n(t,n,r,i){if(t.global)return e(n||x,r,i)}
function r (line 2) | function r(e){e.global&&0===t.active++&&n(e,null,"ajaxStart")}
function i (line 2) | function i(e){e.global&&!--t.active&&n(e,null,"ajaxStop")}
function o (line 2) | function o(t,e){var r=e.context;return e.beforeSend.call(r,t,e)!==!1&&n(...
function a (line 2) | function a(t,e,r,i){var o=r.context,a="success";r.success.call(o,t,a,e),...
function s (line 2) | function s(t,e,r,i,o){var a=i.context;i.error.call(a,r,e,t),o&&o.rejectW...
function u (line 2) | function u(t,e,r){var o=r.context;r.complete.call(o,e,t),n(r,o,"ajaxComp...
function c (line 2) | function c(t,e,n){if(n.dataFilter==l)return t;var r=n.context;return n.d...
function l (line 2) | function l(){}
function f (line 2) | function f(t){return t&&(t=t.split(";",2)[0]),t&&(t==T?"html":t==j?"json...
function h (line 2) | function h(t,e){return""==e?t:(t+"&"+e).replace(/[&?]{1,2}/,"?")}
function p (line 2) | function p(e){e.processData&&e.data&&"string"!=t.type(e.data)&&(e.data=t...
function d (line 2) | function d(e,n,r,i){return t.isFunction(n)&&(i=r,r=n,n=void 0),t.isFunct...
function m (line 2) | function m(e,n,r,i){var o,a=t.isArray(n),s=t.isPlainObject(n);t.each(n,f...
FILE: public/layuicms/layui/layui.all.js
function s (line 2) | function s(e,t){var o="PLaySTATION 3"===navigator.platform?/^complete$/:...
function c (line 2) | function c(){l.push(layui[f]),e.length>1?y.use(e.slice(1),o,l):"function...
function n (line 2) | function n(e){var t=!!e&&"length"in e&&e.length,n=pe.type(e);return"func...
function r (line 2) | function r(e,t,n){if(pe.isFunction(t))return pe.grep(e,function(e,r){ret...
function i (line 2) | function i(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}
function o (line 2) | function o(e){var t={};return pe.each(e.match(De)||[],function(e,n){t[n]...
function a (line 2) | function a(){re.addEventListener?(re.removeEventListener("DOMContentLoad...
function s (line 2) | function s(){(re.addEventListener||"load"===e.event.type||"complete"===r...
function u (line 2) | function u(e,t,n){if(void 0===n&&1===e.nodeType){var r="data-"+t.replace...
function l (line 2) | function l(e){var t;for(t in e)if(("data"!==t||!pe.isEmptyObject(e[t]))&...
function c (line 2) | function c(e,t,n,r){if(He(e)){var i,o,a=pe.expando,s=e.nodeType,u=s?pe.c...
function f (line 2) | function f(e,t,n){if(He(e)){var r,i,o=e.nodeType,a=o?pe.cache:e,s=o?e[pe...
function d (line 2) | function d(e,t,n,r){var i,o=1,a=20,s=r?function(){return r.cur()}:functi...
function p (line 2) | function p(e){var t=ze.split("|"),n=e.createDocumentFragment();if(n.crea...
function h (line 2) | function h(e,t){var n,r,i=0,o="undefined"!=typeof e.getElementsByTagName...
function g (line 2) | function g(e,t){for(var n,r=0;null!=(n=e[r]);r++)pe._data(n,"globalEval"...
function m (line 2) | function m(e){Be.test(e.type)&&(e.defaultChecked=e.checked)}
function y (line 2) | function y(e,t,n,r,i){for(var o,a,s,u,l,c,f,d=e.length,y=p(t),v=[],x=0;x...
function v (line 2) | function v(){return!0}
function x (line 2) | function x(){return!1}
function b (line 2) | function b(){try{return re.activeElement}catch(e){}}
function w (line 2) | function w(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof ...
function T (line 2) | function T(e,t){return pe.nodeName(e,"table")&&pe.nodeName(11!==t.nodeTy...
function C (line 2) | function C(e){return e.type=(null!==pe.find.attr(e,"type"))+"/"+e.type,e}
function E (line 2) | function E(e){var t=it.exec(e.type);return t?e.type=t[1]:e.removeAttribu...
function N (line 2) | function N(e,t){if(1===t.nodeType&&pe.hasData(e)){var n,r,i,o=pe._data(e...
function k (line 2) | function k(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase...
function S (line 2) | function S(e,t,n,r){t=oe.apply([],t);var i,o,a,s,u,l,c=0,f=e.length,d=f-...
function A (line 2) | function A(e,t,n){for(var r,i=t?pe.filter(t,e):e,o=0;null!=(r=i[o]);o++)...
function D (line 2) | function D(e,t){var n=pe(t.createElement(e)).appendTo(t.body),r=pe.css(n...
function j (line 2) | function j(e){var t=re,n=lt[e];return n||(n=D(e,t),"none"!==n&&n||(ut=(u...
function L (line 2) | function L(e,t){return{get:function(){return e()?void delete this.get:(t...
function H (line 2) | function H(e){if(e in Et)return e;for(var t=e.charAt(0).toUpperCase()+e....
function q (line 2) | function q(e,t){for(var n,r,i,o=[],a=0,s=e.length;a<s;a++)r=e[a],r.style...
function _ (line 2) | function _(e,t,n){var r=bt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2...
function F (line 2) | function F(e,t,n,r,i){for(var o=n===(r?"border":"content")?4:"width"===t...
function M (line 2) | function M(t,n,r){var i=!0,o="width"===n?t.offsetWidth:t.offsetHeight,a=...
function O (line 2) | function O(e,t,n,r,i){return new O.prototype.init(e,t,n,r,i)}
function R (line 2) | function R(){return e.setTimeout(function(){Nt=void 0}),Nt=pe.now()}
function P (line 2) | function P(e,t){var n,r={height:e},i=0;for(t=t?1:0;i<4;i+=2-t)n=Oe[i],r[...
function B (line 2) | function B(e,t,n){for(var r,i=($.tweeners[t]||[]).concat($.tweeners["*"]...
function W (line 2) | function W(e,t,n){var r,i,o,a,s,u,l,c,f=this,d={},p=e.style,h=e.nodeType...
function I (line 2) | function I(e,t){var n,r,i,o,a;for(n in e)if(r=pe.camelCase(n),i=t[r],o=e...
function $ (line 2) | function $(e,t,n){var r,i,o=0,a=$.prefilters.length,s=pe.Deferred().alwa...
function z (line 2) | function z(e){return pe.attr(e,"class")||""}
function X (line 2) | function X(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r...
function U (line 2) | function U(e,t,n,r){function i(s){var u;return o[s]=!0,pe.each(e[s]||[],...
function V (line 2) | function V(e,t){var n,r,i=pe.ajaxSettings.flatOptions||{};for(r in t)voi...
function Y (line 2) | function Y(e,t,n){for(var r,i,o,a,s=e.contents,u=e.dataTypes;"*"===u[0];...
function J (line 2) | function J(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for...
function G (line 2) | function G(e){return e.style&&e.style.display||pe.css(e,"display")}
function K (line 2) | function K(e){for(;e&&1===e.nodeType;){if("none"===G(e)||"hidden"===e.ty...
function Q (line 2) | function Q(e,t,n,r){var i;if(pe.isArray(t))pe.each(t,function(t,i){n||rn...
function Z (line 2) | function Z(){try{return new e.XMLHttpRequest}catch(t){}}
function ee (line 2) | function ee(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(...
function te (line 2) | function te(e){return pe.isWindow(e)?e:9===e.nodeType&&(e.defaultView||e...
function t (line 2) | function t(e,t,n,r){var i,o,a,s,u,l,f,p,h=t&&t.ownerDocument,g=t?t.nodeT...
function n (line 2) | function n(){function e(n,r){return t.push(n+" ")>T.cacheLength&&delete ...
function r (line 2) | function r(e){return e[P]=!0,e}
function i (line 2) | function i(e){var t=H.createElement("div");try{return!!e(t)}catch(n){ret...
function o (line 2) | function o(e,t){for(var n=e.split("|"),r=n.length;r--;)T.attrHandle[n[r]...
function a (line 2) | function a(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sour...
function s (line 2) | function s(e){return function(t){var n=t.nodeName.toLowerCase();return"i...
function u (line 2) | function u(e){return function(t){var n=t.nodeName.toLowerCase();return("...
function l (line 2) | function l(e){return r(function(t){return t=+t,r(function(n,r){for(var i...
function c (line 2) | function c(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}
function f (line 2) | function f(){}
function d (line 2) | function d(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}
function p (line 2) | function p(e,t,n){var r=t.dir,i=n&&"parentNode"===r,o=I++;return t.first...
function h (line 2) | function h(e){return e.length>1?function(t,n,r){for(var i=e.length;i--;)...
function g (line 2) | function g(e,n,r){for(var i=0,o=n.length;i<o;i++)t(e,n[i],r);return r}
function m (line 2) | function m(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o...
function y (line 2) | function y(e,t,n,i,o,a){return i&&!i[P]&&(i=y(i)),o&&!o[P]&&(o=y(o,a)),r...
function v (line 2) | function v(e){for(var t,n,r,i=e.length,o=T.relative[e[0].type],a=o||T.re...
function x (line 2) | function x(e,n){var i=n.length>0,o=e.length>0,a=function(r,a,s,u,l){var ...
function t (line 4) | function t(){var t,c,f=re.documentElement;f.appendChild(u),l.style.cssTe...
function r (line 4) | function r(t,n,r,i){var o,f,v,x,w,C=n;2!==b&&(b=2,u&&e.clearTimeout(u),c...
function e (line 5) | function e(){var e=a.cancel&&a.cancel(t.index,n);e===!1||r.close(t.index)}
function o (line 5) | function o(e,t,i){var n=new Image;return n.src=e,n.complete?t(n):(n.onlo...
FILE: public/layuicms/layui/layui.js
function s (line 9) | function s(e,t){var o="PLaySTATION 3"===navigator.platform?/^complete$/:...
function c (line 9) | function c(){l.push(layui[f]),e.length>1?y.use(e.slice(1),o,l):"function...
FILE: public/layuicms/page/news/newsAdd.js
function filterTime (line 26) | function filterTime(val){
FILE: public/layuicms/page/news/newsList.js
function addNews (line 66) | function addNews(edit){
FILE: public/layuicms/page/systemSetting/basicParameter.js
function fillData (line 48) | function fillData(data){
FILE: public/layuicms/page/systemSetting/linkList.js
function addLink (line 56) | function addLink(edit){
function filterTime (line 139) | function filterTime(val){
FILE: public/layuicms/page/user/userAdd.js
function filterTime (line 32) | function filterTime(val){
FILE: public/layuicms/page/user/userList.js
function addUser (line 63) | function addUser(edit){
FILE: public/vendor/laravel-admin-ext/wang-editor/wangEditor-3.0.10/release/wangEditor.js
function createElemByHTML (line 57) | function createElemByHTML(html) {
function isDOMList (line 65) | function isDOMList(selector) {
function querySelectorAll (line 76) | function querySelectorAll(selector) {
function DomElement (line 86) | function DomElement(selector) {
function $ (line 498) | function $(selector) {
function objForEach (line 642) | function objForEach(obj, fn) {
function arrForEach (line 656) | function arrForEach(fakeArr, fn) {
function getRandom (line 671) | function getRandom(prefix) {
function replaceHtmlSymbol (line 676) | function replaceHtmlSymbol(html) {
function Bold (line 689) | function Bold(editor) {
function DropList (line 766) | function DropList(menu, opt) {
function Head (line 891) | function Head(editor) {
function Panel (line 958) | function Panel(menu, opt) {
function Link (line 1145) | function Link(editor) {
function Italic (line 1304) | function Italic(editor) {
function Redo (line 1357) | function Redo(editor) {
function StrikeThrough (line 1385) | function StrikeThrough(editor) {
function Underline (line 1438) | function Underline(editor) {
function Undo (line 1491) | function Undo(editor) {
function List (line 1519) | function List(editor) {
function Justify (line 1596) | function Justify(editor) {
function ForeColor (line 1634) | function ForeColor(editor) {
function BackColor (line 1672) | function BackColor(editor) {
function Quote (line 1710) | function Quote(editor) {
function Code (line 1771) | function Code(editor) {
function Emoticon (line 1906) | function Emoticon(editor) {
function Table (line 2002) | function Table(editor) {
function Video (line 2347) | function Video(editor) {
function Image (line 2422) | function Image(editor) {
function Menus (line 2677) | function Menus(editor) {
function getPasteText (line 2801) | function getPasteText(e) {
function getPasteHtml (line 2814) | function getPasteHtml(e, filterStyle) {
function getPasteImgs (line 2854) | function getPasteImgs(e) {
function Text (line 2883) | function Text(editor) {
function saveRange (line 2970) | function saveRange(e) {
function pHandle (line 2995) | function pHandle(e) {
function codeHandle (line 3031) | function codeHandle(e) {
function Command (line 3316) | function Command(editor) {
function API (line 3412) | function API(editor) {
function Progress (line 3587) | function Progress(editor) {
function UploadImg (line 3658) | function UploadImg(editor) {
function Editor (line 3956) | function Editor(toolbarSelector, textSelector) {
FILE: public/vendor/laravel-admin/AdminLTE/plugins/bootstrap-slider/bootstrap-slider.js
function noop (line 43) | function noop() {}
function defineBridget (line 47) | function defineBridget( $ ) {
function createNewSlider (line 197) | function createNewSlider(element, options) {
FILE: public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/cs.js
function e (line 3) | function e(e,t){switch(e){case 2:return t?"dva":"dvě";case 3:return"tři"...
FILE: public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/hr.js
function e (line 3) | function e(e){var t=" "+e+" znak";return e%10<5&&e%10>0&&(e%100<5||e%100...
FILE: public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/lt.js
function e (line 3) | function e(e,t,n,r){return e%10===1&&(e%100<11||e%100>19)?t:e%10>=2&&e%1...
FILE: public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/lv.js
function e (line 3) | function e(e,t,n,r){return e===11?t:e%10===1?n:r}
FILE: public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/ru.js
function e (line 3) | function e(e,t,n,r){return e%10<5&&e%10>0&&e%100<5||e%100>20?e%10>1?n:t:r}
FILE: public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/sr-Cyrl.js
function e (line 3) | function e(e,t,n,r){return e%10==1&&e%100!=11?t:e%10>=2&&e%10<=4&&(e%100...
FILE: public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/sr.js
function e (line 3) | function e(e,t,n,r){return e%10==1&&e%100!=11?t:e%10>=2&&e%10<=4&&(e%100...
FILE: public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/uk.js
function e (line 3) | function e(e,t,n,r){return e%100>10&&e%100<15?r:e%10===1?t:e%10>1&&e%10<...
FILE: public/vendor/laravel-admin/bootstrap-fileinput/js/plugins/piexif.js
function copy (line 308) | function copy(obj) {
function _get_thumbnail (line 313) | function _get_thumbnail(jpeg) {
function _pack_byte (line 322) | function _pack_byte(array) {
function _pack_short (line 327) | function _pack_short(array) {
function _pack_long (line 332) | function _pack_long(array) {
function _value_to_bytes (line 337) | function _value_to_bytes(raw_value, value_type, offset) {
function _dict_to_bytes (line 431) | function _dict_to_bytes(ifd_dict, ifd, ifd_offset) {
function ExifReader (line 480) | function ExifReader(data) {
function getImageSize (line 711) | function getImageSize(imageArray) {
function pack (line 730) | function pack(mark, array) {
function unpack (line 801) | function unpack(mark, str) {
function nStr (line 879) | function nStr(ch, num) {
function splitIntoSegments (line 887) | function splitIntoSegments(data) {
function getExifSeg (line 913) | function getExifSeg(segments) {
function mergeSegments (line 926) | function mergeSegments(segments, exif) {
function toHex (line 960) | function toHex(str) {
FILE: public/vendor/laravel-admin/bootstrap-fileinput/js/plugins/purify.js
function addToSet (line 27) | function addToSet(set, array) {
function clone (line 39) | function clone(object) {
function _toConsumableArray (line 60) | function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i ...
function createDOMPurify (line 66) | function createDOMPurify() {
FILE: public/vendor/laravel-admin/bootstrap-fileinput/js/plugins/sortable.js
function toFn (line 185) | function toFn(value, pull) {
function KvSortable (line 242) | function KvSortable(el, options) {
function _cloneHide (line 1188) | function _cloneHide(kvsortable, state) {
function _closest (line 1212) | function _closest(/**HTMLElement*/el, /**String*/selector, /**HTMLElemen...
function _getParentOrHost (line 1228) | function _getParentOrHost(el) {
function _globalDragOver (line 1235) | function _globalDragOver(/**Event*/evt) {
function _on (line 1243) | function _on(el, event, fn) {
function _off (line 1248) | function _off(el, event, fn) {
function _toggleClass (line 1253) | function _toggleClass(el, name, state) {
function _css (line 1266) | function _css(el, prop, val) {
function _find (line 1291) | function _find(ctx, tagName, iterator) {
function _dispatchEvent (line 1309) | function _dispatchEvent(kvsortable, rootEl, name, targetEl, toEl, fromEl...
function _onMove (line 1334) | function _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, o...
function _disableDraggable (line 1361) | function _disableDraggable(el) {
function _unsilent (line 1366) | function _unsilent() {
function _ghostIsLast (line 1372) | function _ghostIsLast(el, evt) {
function _generateId (line 1389) | function _generateId(el) {
function _index (line 1408) | function _index(el, selector) {
function _matches (line 1424) | function _matches(/**HTMLElement*/el, /**String*/selector) {
function _throttle (line 1440) | function _throttle(callback, ms) {
function _extend (line 1461) | function _extend(dst, src) {
function _clone (line 1473) | function _clone(el) {
function _saveInputCheckedState (line 1485) | function _saveInputCheckedState(root) {
function _nextTick (line 1495) | function _nextTick(fn) {
function _cancelNextTick (line 1499) | function _cancelNextTick(id) {
FILE: public/vendor/laravel-admin/jquery-pjax/jquery.pjax.js
function fnPjax (line 32) | function fnPjax(selector, container, options) {
function handleClick (line 61) | function handleClick(event, container, options) {
function handleSubmit (line 118) | function handleSubmit(event, container, options) {
function pjax (line 172) | function pjax(options) {
function pjaxReload (line 381) | function pjaxReload(container, options) {
function locationReplace (line 398) | function locationReplace(url) {
function onPjaxPopstate (line 424) | function onPjaxPopstate(event) {
function fallbackPjax (line 507) | function fallbackPjax(options) {
function abortXHR (line 547) | function abortXHR(xhr) {
function uniqueId (line 560) | function uniqueId() {
function cloneContents (line 564) | function cloneContents(container) {
function stripInternalParams (line 577) | function stripInternalParams(url) {
function parseURL (line 587) | function parseURL(url) {
function stripHash (line 599) | function stripHash(location) {
function optionsFor (line 620) | function optionsFor(container, options) {
function findContainerFor (line 648) | function findContainerFor(container) {
function findAll (line 671) | function findAll(elems, selector) {
function parseHTML (line 675) | function parseHTML(html) {
function extractContainer (line 690) | function extractContainer(data, xhr, options) {
function executeScriptTags (line 764) | function executeScriptTags(scripts, context) {
function cachePush (line 821) | function cachePush(id, value) {
function cachePop (line 841) | function cachePop(direction, id, value) {
function trimCacheStack (line 868) | function trimCacheStack(stack, length) {
function findVersion (line 876) | function findVersion() {
function enable (line 892) | function enable() {
function disable (line 924) | function disable() {
FILE: public/vendor/laravel-admin/nestable/jquery.nestable.js
function Plugin (line 48) | function Plugin(element, options)
FILE: public/vendor/laravel-admin/nprogress/nprogress.js
function clamp (line 300) | function clamp(n, min, max) {
function toBarPerc (line 311) | function toBarPerc(n) {
function barPositionCSS (line 321) | function barPositionCSS(n, speed, ease) {
function next (line 344) | function next() {
function camelCase (line 369) | function camelCase(string) {
function getVendorProp (line 375) | function getVendorProp(name) {
function getStyleProp (line 390) | function getStyleProp(name) {
function applyCss (line 395) | function applyCss(element, prop, value) {
function hasClass (line 420) | function hasClass(element, name) {
function addClass (line 429) | function addClass(element, name) {
function removeClass (line 443) | function removeClass(element, name) {
function classList (line 462) | function classList(element) {
function removeElement (line 470) | function removeElement(element) {
FILE: public/vendor/laravel-admin/number-input/bootstrap-number-input.js
function setText (line 39) | function setText(n) {
FILE: tests/CreatesApplication.php
type CreatesApplication (line 8) | trait CreatesApplication
method createApplication (line 15) | public function createApplication()
FILE: tests/Feature/ExampleTest.php
class ExampleTest (line 8) | class ExampleTest extends TestCase
method testBasicTest (line 15) | public function testBasicTest()
FILE: tests/TestCase.php
class TestCase (line 7) | abstract class TestCase extends BaseTestCase
FILE: tests/Unit/ExampleTest.php
class ExampleTest (line 8) | class ExampleTest extends TestCase
method testBasicTest (line 15) | public function testBasicTest()
Condensed preview — 399 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (3,890K chars).
[
{
"path": ".gitattributes",
"chars": 111,
"preview": "* text=auto\n*.css linguist-vendored\n*.scss linguist-vendored\n*.js linguist-vendored\nCHANGELOG.md export-ignore\n"
},
{
"path": ".gitignore",
"chars": 146,
"preview": "/node_modules\n/public/hot\n/public/storage\n/storage/*.key\n/vendor\n/.idea\n/.vagrant\nHomestead.json\nHomestead.yaml\nnpm-debu"
},
{
"path": "app/Admin/Controllers/AuthController.php",
"chars": 475,
"preview": "<?php\n\nnamespace App\\Admin\\Controllers;\n\nuse Encore\\Admin\\Controllers\\AuthController as BaseAuthController;\nuse Encore\\A"
},
{
"path": "app/Admin/Controllers/CardController.php",
"chars": 4985,
"preview": "<?php\n\nnamespace App\\Admin\\Controllers;\n\nuse App\\Models\\Card;\nuse App\\Http\\Controllers\\Controller;\nuse App\\Models\\Catego"
},
{
"path": "app/Admin/Controllers/CategoryController.php",
"chars": 3167,
"preview": "<?php\n\nnamespace App\\Admin\\Controllers;\n\nuse App\\Models\\Category;\nuse App\\Http\\Controllers\\Controller;\nuse Encore\\Admin\\"
},
{
"path": "app/Admin/Controllers/EmailTemplateController.php",
"chars": 1111,
"preview": "<?php\n\nnamespace App\\Admin\\Controllers;\n\nuse App\\Models\\EmailTemplate;\nuse Encore\\Admin\\Controllers\\AdminController;\nuse"
},
{
"path": "app/Admin/Controllers/ExampleController.php",
"chars": 2481,
"preview": "<?php\n\nnamespace App\\Admin\\Controllers;\n\nuse App\\Http\\Controllers\\Controller;\nuse Encore\\Admin\\Controllers\\HasResourceAc"
},
{
"path": "app/Admin/Controllers/GoodsController.php",
"chars": 4692,
"preview": "<?php\n\nnamespace App\\Admin\\Controllers;\n\nuse App\\Models\\Category;\nuse App\\Models\\EmailTemplate;\nuse App\\Models\\Goods;\nus"
},
{
"path": "app/Admin/Controllers/HomeController.php",
"chars": 951,
"preview": "<?php\n\nnamespace App\\Admin\\Controllers;\n\nuse App\\Http\\Controllers\\Controller;\nuse Encore\\Admin\\Controllers\\Dashboard;\nus"
},
{
"path": "app/Admin/Controllers/OrderController.php",
"chars": 6826,
"preview": "<?php\n\nnamespace App\\Admin\\Controllers;\n\nuse App\\Events\\OrderShipped;\nuse App\\Models\\Order;\nuse App\\Http\\Controllers\\Con"
},
{
"path": "app/Admin/Extensions/OrdersExporter.php",
"chars": 382,
"preview": "<?php\nnamespace App\\Admin\\Extensions;\n\nuse Encore\\Admin\\Grid\\Exporters\\ExcelExporter; \n\nclass OrdersExporter extends Exc"
},
{
"path": "app/Admin/Extensions/Tools/HandleOrders.php",
"chars": 734,
"preview": "<?php\n\nnamespace App\\Admin\\Extensions\\Tools;\n\nuse Encore\\Admin\\Grid\\Tools\\BatchAction;\n\nclass HandleOrders extends Batch"
},
{
"path": "app/Admin/bootstrap.php",
"chars": 583,
"preview": "<?php\n\n/**\n * Laravel-admin - admin builder based on Laravel.\n * @author z-song <https://github.com/z-song>\n *\n * Bootst"
},
{
"path": "app/Admin/routes.php",
"chars": 685,
"preview": "<?php\n\nuse Illuminate\\Routing\\Router;\n\nAdmin::registerAuthRoutes();\n\nRoute::group([\n 'prefix' => config('admin"
},
{
"path": "app/Console/Kernel.php",
"chars": 848,
"preview": "<?php\n\nnamespace App\\Console;\n\nuse Illuminate\\Console\\Scheduling\\Schedule;\nuse Illuminate\\Foundation\\Console\\Kernel as C"
},
{
"path": "app/Events/OrderShipped.php",
"chars": 339,
"preview": "<?php\n\nnamespace App\\Events;\n\nuse App\\Models\\Order;\nuse Illuminate\\Queue\\SerializesModels;\n\nclass OrderShipped\n{\n use"
},
{
"path": "app/Exceptions/Handler.php",
"chars": 1137,
"preview": "<?php\n\nnamespace App\\Exceptions;\n\nuse Exception;\nuse Illuminate\\Foundation\\Exceptions\\Handler as ExceptionHandler;\n\nclas"
},
{
"path": "app/Http/Controllers/BaseController.php",
"chars": 393,
"preview": "<?php\n\nnamespace App\\Http\\Controllers;\n\nclass BaseController extends Controller\n{\n\n public function success($message="
},
{
"path": "app/Http/Controllers/Controller.php",
"chars": 361,
"preview": "<?php\n\nnamespace App\\Http\\Controllers;\n\nuse Illuminate\\Foundation\\Bus\\DispatchesJobs;\nuse Illuminate\\Routing\\Controller "
},
{
"path": "app/Http/Controllers/GoodsController.php",
"chars": 957,
"preview": "<?php\n\nnamespace App\\Http\\Controllers;\n\nuse Illuminate\\Http\\Request;\nuse App\\Models\\Goods;\n\nclass GoodsController extend"
},
{
"path": "app/Http/Controllers/IndexController.php",
"chars": 811,
"preview": "<?php\n\nnamespace App\\Http\\Controllers;\n\nuse App\\Models\\Goods;\nuse Illuminate\\Http\\Request;\nuse App\\Models\\Category;\n\ncla"
},
{
"path": "app/Http/Controllers/NotifyController.php",
"chars": 2015,
"preview": "<?php\n\nnamespace App\\Http\\Controllers;\n\nuse App\\Events\\OrderShipped;\nuse App\\Models\\Goods;\nuse App\\Models\\Order;\nuse Ill"
},
{
"path": "app/Http/Controllers/OrderController.php",
"chars": 5731,
"preview": "<?php\n\nnamespace App\\Http\\Controllers;\n\nuse Illuminate\\Http\\Request;\nuse App\\Models\\Order;\nuse App\\Models\\Goods;\nuse Car"
},
{
"path": "app/Http/Controllers/ReceivePushController.php",
"chars": 2007,
"preview": "<?php\n\nnamespace App\\Http\\Controllers;\n\nuse Illuminate\\Http\\Request;\nuse App\\Models\\Order;\nuse App\\Events\\OrderShipped;\n"
},
{
"path": "app/Http/Controllers/TestController.php",
"chars": 932,
"preview": "<?php\n\nnamespace App\\Http\\Controllers;\n\nuse Illuminate\\Http\\Request;\nuse GuzzleHttp\\Client;\n\nclass TestController extend"
},
{
"path": "app/Http/Controllers/UploadController.php",
"chars": 564,
"preview": "<?php\n\nnamespace App\\Http\\Controllers;\n\nuse Illuminate\\Http\\Request;\nuse App\\Services\\FileUploadTool;\n\nclass UploadContr"
},
{
"path": "app/Http/Controllers/WechatMenuController.php",
"chars": 835,
"preview": "<?php\n\nnamespace App\\Http\\Controllers;\n\nuse Illuminate\\Http\\Request;\n\nclass WechatMenuController extends BaseController\n"
},
{
"path": "app/Http/Kernel.php",
"chars": 2172,
"preview": "<?php\n\nnamespace App\\Http;\n\nuse Illuminate\\Foundation\\Http\\Kernel as HttpKernel;\n\nclass Kernel extends HttpKernel\n{\n "
},
{
"path": "app/Http/Middleware/EncryptCookies.php",
"chars": 294,
"preview": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Illuminate\\Cookie\\Middleware\\EncryptCookies as Middleware;\n\nclass EncryptCook"
},
{
"path": "app/Http/Middleware/OAuthAuthenticate.php",
"chars": 1265,
"preview": "<?php\n\n/*\n * This file is part of the overtrue/laravel-wechat.\n *\n * (c) overtrue <i@overtrue.me>\n *\n * This source file"
},
{
"path": "app/Http/Middleware/RedirectIfAuthenticated.php",
"chars": 523,
"preview": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Closure;\nuse Illuminate\\Support\\Facades\\Auth;\n\nclass RedirectIfAuthenticated\n"
},
{
"path": "app/Http/Middleware/SiteOpenIf.php",
"chars": 434,
"preview": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Closure;\n\nclass SiteOpenIf\n{\n /**\n * Handle an incoming request.\n "
},
{
"path": "app/Http/Middleware/TrimStrings.php",
"chars": 340,
"preview": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Illuminate\\Foundation\\Http\\Middleware\\TrimStrings as Middleware;\n\nclass TrimS"
},
{
"path": "app/Http/Middleware/TrustProxies.php",
"chars": 697,
"preview": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Illuminate\\Http\\Request;\nuse Fideloper\\Proxy\\TrustProxies as Middleware;\n\ncla"
},
{
"path": "app/Http/Middleware/VerifyCsrfToken.php",
"chars": 307,
"preview": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken as Middleware;\n\nclass V"
},
{
"path": "app/Listeners/SendShipmentNotification.php",
"chars": 1212,
"preview": "<?php\n\nnamespace App\\Listeners;\n\nuse App\\Events\\OrderShipped;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate"
},
{
"path": "app/Mail/OrderShipped.php",
"chars": 926,
"preview": "<?php\n\nnamespace App\\Mail;\n\nuse Illuminate\\Bus\\Queueable;\nuse Illuminate\\Mail\\Mailable;\nuse Illuminate\\Queue\\SerializesM"
},
{
"path": "app/Models/Card.php",
"chars": 288,
"preview": "<?php\n\nnamespace App\\Models;\n\nuse Illuminate\\Database\\Eloquent\\Model;\n\nclass Card extends Model\n{\n public function go"
},
{
"path": "app/Models/Category.php",
"chars": 242,
"preview": "<?php\n\nnamespace App\\Models;\n\nuse Illuminate\\Database\\Eloquent\\Model;\n\nclass Category extends Model\n{\n protected $tab"
},
{
"path": "app/Models/EmailTemplate.php",
"chars": 116,
"preview": "<?php\n\nnamespace App\\Models;\n\nuse Illuminate\\Database\\Eloquent\\Model;\n\nclass EmailTemplate extends Model\n{\n //\n}\n"
},
{
"path": "app/Models/Goods.php",
"chars": 1184,
"preview": "<?php\n\nnamespace App\\Models;\n\nuse Illuminate\\Database\\Eloquent\\Model;\n\nclass Goods extends Model\n{\n\n public function "
},
{
"path": "app/Models/Order.php",
"chars": 812,
"preview": "<?php\n\nnamespace App\\Models;\n\nuse Illuminate\\Database\\Eloquent\\Model;\n\nclass Order extends Model\n{\n const WECHAT = 1;"
},
{
"path": "app/Models/WechatMaterial.php",
"chars": 310,
"preview": "<?php\n\nnamespace App\\Models;\n\nuse Illuminate\\Database\\Eloquent\\Model;\nuse Illuminate\\Pagination\\LengthAwarePaginator;\nus"
},
{
"path": "app/Models/WechatUser.php",
"chars": 510,
"preview": "<?php\n\nnamespace App\\Models;\n\nuse Illuminate\\Database\\Eloquent\\Model;\nuse Illuminate\\Pagination\\LengthAwarePaginator;\nus"
},
{
"path": "app/Providers/AppServiceProvider.php",
"chars": 704,
"preview": "<?php\n\nnamespace App\\Providers;\n\nuse Illuminate\\Support\\ServiceProvider;\nuse Encore\\Admin\\Config\\Config;\nuse Illuminate\\"
},
{
"path": "app/Providers/AuthServiceProvider.php",
"chars": 575,
"preview": "<?php\n\nnamespace App\\Providers;\n\nuse Illuminate\\Support\\Facades\\Gate;\nuse Illuminate\\Foundation\\Support\\Providers\\AuthSe"
},
{
"path": "app/Providers/BroadcastServiceProvider.php",
"chars": 380,
"preview": "<?php\n\nnamespace App\\Providers;\n\nuse Illuminate\\Support\\ServiceProvider;\nuse Illuminate\\Support\\Facades\\Broadcast;\n\nclas"
},
{
"path": "app/Providers/EventServiceProvider.php",
"chars": 614,
"preview": "<?php\n\nnamespace App\\Providers;\n\nuse Illuminate\\Support\\Facades\\Event;\nuse Illuminate\\Foundation\\Support\\Providers\\Event"
},
{
"path": "app/Providers/RouteServiceProvider.php",
"chars": 1529,
"preview": "<?php\n\nnamespace App\\Providers;\n\nuse Illuminate\\Support\\Facades\\Route;\nuse Illuminate\\Foundation\\Support\\Providers\\Route"
},
{
"path": "app/Services/FileUploadTool.php",
"chars": 969,
"preview": "<?php\n\nnamespace App\\Services;\n\nuse Illuminate\\Http\\UploadedFile;\n\nclass FileUploadTool\n{\n /**\n * 多文件上传\n * @p"
},
{
"path": "app/Services/PersonalPay.php",
"chars": 1245,
"preview": "<?php\n\nnamespace App\\Services;\n\nuse App\\Models\\Order;\nuse GuzzleHttp\\Client;\n\nclass PersonalPay\n{\n\n protected $baseUr"
},
{
"path": "artisan",
"chars": 1686,
"preview": "#!/usr/bin/env php\n<?php\n\ndefine('LARAVEL_START', microtime(true));\n\n/*\n|-----------------------------------------------"
},
{
"path": "bootstrap/app.php",
"chars": 1638,
"preview": "<?php\n\n/*\n|--------------------------------------------------------------------------\n| Create The Application\n|--------"
},
{
"path": "bootstrap/cache/.gitignore",
"chars": 14,
"preview": "*\n!.gitignore\n"
},
{
"path": "bootstrap/helpers.php",
"chars": 873,
"preview": "<?php\n\n/**\n * 获取当前毫秒数\n * @return type\n */\nfunction getMillisecond() {\n list($t1, $t2) = explode(' ', microtime());\n "
},
{
"path": "composer.json",
"chars": 2115,
"preview": "{\n \"name\": \"laravel/laravel\",\n \"description\": \"The Laravel Framework.\",\n \"keywords\": [\"framework\", \"laravel\"],\n"
},
{
"path": "config/admin.php",
"chars": 10832,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Laravel-ad"
},
{
"path": "config/app.php",
"chars": 9172,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Applicatio"
},
{
"path": "config/auth.php",
"chars": 3251,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Authentica"
},
{
"path": "config/broadcasting.php",
"chars": 1604,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Default Br"
},
{
"path": "config/cache.php",
"chars": 2682,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Default Ca"
},
{
"path": "config/captcha.php",
"chars": 998,
"preview": "<?php\n\nreturn [\n\n 'characters' => '2346789abcdefghjmnpqrtuxyzABCDEFGHJMNPQRTUXYZ',\n\n 'default' => [\n 'len"
},
{
"path": "config/database.php",
"chars": 4480,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Default Da"
},
{
"path": "config/excel.php",
"chars": 6398,
"preview": "<?php\n\nuse Maatwebsite\\Excel\\Excel;\n\nreturn [\n\n 'exports' => [\n\n /*\n |---------------------------------"
},
{
"path": "config/filesystems.php",
"chars": 2291,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Default Fi"
},
{
"path": "config/mail.php",
"chars": 4214,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Mail Drive"
},
{
"path": "config/payjs.php",
"chars": 117,
"preview": "<?php\n\nreturn [\n 'mchid' => '',\n 'key' => '',\n\n // 此地址一般无需更改\n 'api_url' => 'https://payjs.cn/api/',\n];\n"
},
{
"path": "config/personal_pay.php",
"chars": 122,
"preview": "<?php\n\nreturn [\n 'secret' => env('PERSON_PAY_SECRET','123456'),\n 'notify_url' => env('PERSON_PAY_NOTIFY_URL',''),\n"
},
{
"path": "config/queue.php",
"chars": 2572,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Default Qu"
},
{
"path": "config/services.php",
"chars": 980,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Third Part"
},
{
"path": "config/session.php",
"chars": 6875,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Default Se"
},
{
"path": "config/view.php",
"chars": 1004,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | View Stora"
},
{
"path": "config/wechat.php",
"chars": 4122,
"preview": "<?php\n\n/*\n * This file is part of the overtrue/laravel-wechat.\n *\n * (c) overtrue <i@overtrue.me>\n *\n * This source file"
},
{
"path": "database/.gitignore",
"chars": 9,
"preview": "*.sqlite\n"
},
{
"path": "database/factories/UserFactory.php",
"chars": 737,
"preview": "<?php\n\nuse Faker\\Generator as Faker;\n\n/*\n|--------------------------------------------------------------------------\n| M"
},
{
"path": "database/migrations/2019_08_13_120928_create_admin_menu_table.php",
"chars": 709,
"preview": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\n\nclass CreateAdminMenuTab"
},
{
"path": "database/migrations/2019_08_13_120928_create_admin_operation_log_table.php",
"chars": 657,
"preview": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\n\nclass CreateAdminOperati"
},
{
"path": "database/migrations/2019_08_13_120928_create_admin_permissions_table.php",
"chars": 661,
"preview": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\n\nclass CreateAdminPermiss"
},
{
"path": "database/migrations/2019_08_13_120928_create_admin_role_menu_table.php",
"chars": 561,
"preview": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\n\nclass CreateAdminRoleMen"
},
{
"path": "database/migrations/2019_08_13_120928_create_admin_role_permissions_table.php",
"chars": 594,
"preview": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\n\nclass CreateAdminRolePer"
},
{
"path": "database/migrations/2019_08_13_120928_create_admin_role_users_table.php",
"chars": 564,
"preview": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\n\nclass CreateAdminRoleUse"
},
{
"path": "database/migrations/2019_08_13_120928_create_admin_roles_table.php",
"chars": 548,
"preview": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\n\nclass CreateAdminRolesTa"
},
{
"path": "database/migrations/2019_08_13_120928_create_admin_user_permissions_table.php",
"chars": 594,
"preview": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\n\nclass CreateAdminUserPer"
},
{
"path": "database/migrations/2019_08_13_120928_create_admin_users_table.php",
"chars": 679,
"preview": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\n\nclass CreateAdminUsersTa"
},
{
"path": "database/migrations/2019_08_13_120928_create_cards_table.php",
"chars": 681,
"preview": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\n\nclass CreateCardsTable e"
},
{
"path": "database/migrations/2019_08_13_120928_create_failed_jobs_table.php",
"chars": 672,
"preview": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\n\nclass CreateFailedJobsTa"
},
{
"path": "database/migrations/2019_08_13_120928_create_goods_categories_table.php",
"chars": 641,
"preview": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\n\nclass CreateGoodsCategor"
},
{
"path": "database/migrations/2019_08_13_120928_create_goods_table.php",
"chars": 1187,
"preview": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\n\nclass CreateGoodsTable e"
},
{
"path": "database/migrations/2019_08_13_120928_create_jobs_table.php",
"chars": 699,
"preview": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\n\nclass CreateJobsTable ex"
},
{
"path": "database/migrations/2019_08_13_120928_create_orders_table.php",
"chars": 1508,
"preview": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\n\nclass CreateOrdersTable "
},
{
"path": "database/migrations/2019_08_13_173337_create_email_templates_table.php",
"chars": 737,
"preview": "<?php\n\nuse Illuminate\\Support\\Facades\\Schema;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Database\\Migratio"
},
{
"path": "database/seeds/AdminConfigTableSeeder.php",
"chars": 9227,
"preview": "<?php\n\nuse Illuminate\\Database\\Seeder;\n\nclass AdminConfigTableSeeder extends Seeder\n{\n\n /**\n * Auto generated see"
},
{
"path": "database/seeds/AdminMenuTableSeeder.php",
"chars": 5357,
"preview": "<?php\n\nuse Illuminate\\Database\\Seeder;\n\nclass AdminMenuTableSeeder extends Seeder\n{\n\n /**\n * Auto generated seed "
},
{
"path": "database/seeds/AdminPermissionsTableSeeder.php",
"chars": 3075,
"preview": "<?php\n\nuse Illuminate\\Database\\Seeder;\n\nclass AdminPermissionsTableSeeder extends Seeder\n{\n\n /**\n * Auto generate"
},
{
"path": "database/seeds/AdminRoleMenuTableSeeder.php",
"chars": 2481,
"preview": "<?php\n\nuse Illuminate\\Database\\Seeder;\n\nclass AdminRoleMenuTableSeeder extends Seeder\n{\n\n /**\n * Auto generated s"
},
{
"path": "database/seeds/AdminRolePermissionsTableSeeder.php",
"chars": 575,
"preview": "<?php\n\nuse Illuminate\\Database\\Seeder;\n\nclass AdminRolePermissionsTableSeeder extends Seeder\n{\n\n /**\n * Auto gene"
},
{
"path": "database/seeds/AdminRoleUsersTableSeeder.php",
"chars": 551,
"preview": "<?php\n\nuse Illuminate\\Database\\Seeder;\n\nclass AdminRoleUsersTableSeeder extends Seeder\n{\n\n /**\n * Auto generated "
},
{
"path": "database/seeds/AdminRolesTableSeeder.php",
"chars": 620,
"preview": "<?php\n\nuse Illuminate\\Database\\Seeder;\n\nclass AdminRolesTableSeeder extends Seeder\n{\n\n /**\n * Auto generated seed"
},
{
"path": "database/seeds/AdminUsersTableSeeder.php",
"chars": 778,
"preview": "<?php\n\nuse Illuminate\\Database\\Seeder;\n\nclass AdminUsersTableSeeder extends Seeder\n{\n\n /**\n * Auto generated seed"
},
{
"path": "database/seeds/DatabaseSeeder.php",
"chars": 781,
"preview": "<?php\n\nuse Illuminate\\Database\\Seeder;\n\nclass DatabaseSeeder extends Seeder\n{\n /**\n * Run the database seeds.\n "
},
{
"path": "database/seeds/EmailTemplatesTableSeeder.php",
"chars": 685,
"preview": "<?php\n\nuse Illuminate\\Database\\Seeder;\n\nclass EmailTemplatesTableSeeder extends Seeder\n{\n\n /**\n * Auto generated "
},
{
"path": "database/seeds/GoodsCategoriesTableSeeder.php",
"chars": 643,
"preview": "<?php\n\nuse Illuminate\\Database\\Seeder;\n\nclass GoodsCategoriesTableSeeder extends Seeder\n{\n\n /**\n * Auto generated"
},
{
"path": "database/seeds/GoodsTableSeeder.php",
"chars": 908,
"preview": "<?php\n\nuse Illuminate\\Database\\Seeder;\n\nclass GoodsTableSeeder extends Seeder\n{\n\n /**\n * Auto generated seed file"
},
{
"path": "package.json",
"chars": 1125,
"preview": "{\n \"private\": true,\n \"scripts\": {\n \"dev\": \"npm run development\",\n \"development\": \"cross-env NODE_ENV"
},
{
"path": "phpunit.xml",
"chars": 1040,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<phpunit backupGlobals=\"false\"\n backupStaticAttributes=\"false\"\n b"
},
{
"path": "public/.htaccess",
"chars": 593,
"preview": "<IfModule mod_rewrite.c>\n <IfModule mod_negotiation.c>\n Options -MultiViews -Indexes\n </IfModule>\n\n Rewr"
},
{
"path": "public/.user.ini",
"chars": 50,
"preview": "open_basedir=/www/wwwroot/payjs-faka/:/tmp/:/proc/"
},
{
"path": "public/css/app.css",
"chars": 146894,
"preview": "@import url(https://fonts.googleapis.com/css?family=Raleway:300,400,600);@charset \"UTF-8\";\n\n/*!\n * Bootstrap v3.4.0 (htt"
},
{
"path": "public/css/mobile_pay.css",
"chars": 4106,
"preview": "html {\n\tfont-size: 125%; /* 20梅16=125% min-font-size:12px bug*/\n}\n@media only screen and (min-width: 481px) {\nhtml {\n\tfo"
},
{
"path": "public/index.php",
"chars": 1823,
"preview": "<?php\n\n/**\n * Laravel - A PHP Framework For Web Artisans\n *\n * @package Laravel\n * @author Taylor Otwell <taylor@lara"
},
{
"path": "public/js/app.js",
"chars": 861226,
"preview": "/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/**"
},
{
"path": "public/layui/css/layui.css",
"chars": 69524,
"preview": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n .layui-inline,img{display:inline-block;vertical-align:middle}h"
},
{
"path": "public/layui/css/layui.mobile.css",
"chars": 9885,
"preview": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n blockquote,body,button,dd,div,dl,dt,form,h1,h2,h3,h4,h5,h6,inp"
},
{
"path": "public/layui/css/modules/code.css",
"chars": 1063,
"preview": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n html #layuicss-skincodecss{display:none;position:absolute;widt"
},
{
"path": "public/layui/css/modules/laydate/default/laydate.css",
"chars": 7537,
"preview": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n .laydate-set-ym,.layui-laydate,.layui-laydate *,.layui-laydate"
},
{
"path": "public/layui/css/modules/layer/default/layer.css",
"chars": 14425,
"preview": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n .layui-layer-imgbar,.layui-layer-imgtit a,.layui-layer-tab .la"
},
{
"path": "public/layui/lay/modules/carousel.js",
"chars": 3839,
"preview": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n ;layui.define(\"jquery\",function(e){\"use strict\";var i=layui.$,"
},
{
"path": "public/layui/lay/modules/code.js",
"chars": 1177,
"preview": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n ;layui.define(\"jquery\",function(e){\"use strict\";var a=layui.$,"
},
{
"path": "public/layui/lay/modules/colorpicker.js",
"chars": 11731,
"preview": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n ;layui.define(\"jquery\",function(e){\"use strict\";var i=layui.jq"
},
{
"path": "public/layui/lay/modules/element.js",
"chars": 7260,
"preview": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n ;layui.define(\"jquery\",function(t){\"use strict\";var a=layui.$,"
},
{
"path": "public/layui/lay/modules/flow.js",
"chars": 1996,
"preview": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n ;layui.define(\"jquery\",function(e){\"use strict\";var l=layui.$,"
},
{
"path": "public/layui/lay/modules/form.js",
"chars": 9111,
"preview": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n ;layui.define(\"layer\",function(e){\"use strict\";var t=layui.$,i"
},
{
"path": "public/layui/lay/modules/jquery.js",
"chars": 97648,
"preview": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n ;!function(e,t){\"object\"==typeof module&&\"object\"==typeof modu"
},
{
"path": "public/layui/lay/modules/laydate.js",
"chars": 27053,
"preview": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n ;!function(){\"use strict\";var e=window.layui&&layui.define,t={"
},
{
"path": "public/layui/lay/modules/layedit.js",
"chars": 12221,
"preview": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n ;layui.define([\"layer\",\"form\"],function(t){\"use strict\";var e="
},
{
"path": "public/layui/lay/modules/layer.js",
"chars": 22041,
"preview": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n ;!function(e,t){\"use strict\";var i,n,a=e.layui&&layui.define,o"
},
{
"path": "public/layui/lay/modules/laypage.js",
"chars": 4464,
"preview": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n ;layui.define(function(e){\"use strict\";var a=document,t=\"getEl"
},
{
"path": "public/layui/lay/modules/laytpl.js",
"chars": 1834,
"preview": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n ;layui.define(function(e){\"use strict\";var r={open:\"{{\",close:"
},
{
"path": "public/layui/lay/modules/mobile.js",
"chars": 33700,
"preview": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n ;layui.define(function(i){i(\"layui.mobile\",layui.v)});layui.de"
},
{
"path": "public/layui/lay/modules/rate.js",
"chars": 2749,
"preview": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n ;layui.define(\"jquery\",function(e){\"use strict\";var a=layui.jq"
},
{
"path": "public/layui/lay/modules/slider.js",
"chars": 7049,
"preview": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n ;layui.define(\"jquery\",function(e){\"use strict\";var i=layui.jq"
},
{
"path": "public/layui/lay/modules/table.js",
"chars": 30809,
"preview": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n ;layui.define([\"laytpl\",\"laypage\",\"layer\",\"form\",\"util\"],funct"
},
{
"path": "public/layui/lay/modules/tree.js",
"chars": 3042,
"preview": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n ;layui.define(\"jquery\",function(e){\"use strict\";var o=layui.$,"
},
{
"path": "public/layui/lay/modules/upload.js",
"chars": 6747,
"preview": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n ;layui.define(\"layer\",function(e){\"use strict\";var i=layui.$,t"
},
{
"path": "public/layui/lay/modules/util.js",
"chars": 3434,
"preview": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n ;layui.define(\"jquery\",function(t){\"use strict\";var e=layui.$,"
},
{
"path": "public/layui/layui.all.js",
"chars": 259917,
"preview": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n ;!function(e){\"use strict\";var t=document,o={modules:{},status"
},
{
"path": "public/layui/layui.js",
"chars": 6653,
"preview": "/** layui-v2.4.5 MIT License By https://www.layui.com */\n ;!function(e){\"use strict\";var t=document,o={modules:{},status"
},
{
"path": "public/layuicms/LICENSE",
"chars": 1071,
"preview": "The MIT License (MIT)\n\nCopyright (c) 2018 Admin\n\nPermission is hereby granted, free of charge, to any person obtaining a"
},
{
"path": "public/layuicms/README.md",
"chars": 2835,
"preview": "```\n本模版已进行作品版权证明,不管以何种形式获取的源码,请勿进行出售或者上传到任何素材网站【同时也请各站长自觉遵守】,否则将追究相应的责任\n```\n### 为我点赞\nhttp://fly.layui.com/case/u/3198216"
},
{
"path": "public/layuicms/css/index.css",
"chars": 9903,
"preview": "/*公共样式*/\n.header .layui-nav-child{ z-index:99999; top:60px; left: auto; right: 0;}\n.seraph{ font-size:16px !important;}\n"
},
{
"path": "public/layuicms/css/public.css",
"chars": 12455,
"preview": "/*公共样式*/\n.childrenBody{ padding:10px;}\n.layui-table-view{ margin:0 !important;}\n.magb0{margin-bottom:0 !important;}\n.mag"
},
{
"path": "public/layuicms/index.html",
"chars": 6568,
"preview": "<!DOCTYPE html>\n<html>\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>layui后台管理模板 2.0</title>\n\t<meta name=\"renderer\" content=\"we"
},
{
"path": "public/layuicms/js/address.js",
"chars": 2212,
"preview": "layui.define([\"form\",\"jquery\"],function(exports){\n var form = layui.form,\n $ = layui.jquery,\n Address = {\n "
},
{
"path": "public/layuicms/js/bodyTab.js",
"chars": 14508,
"preview": "/*\n\t@Author: 驊驊龔頾\n\t@Time: 2017-10\n\t@Tittle: bodyTab\n\t@Description: 点击对应按钮添加新窗口\n*/\nvar tabFilter,menu=[],liIndex,curNav,d"
},
{
"path": "public/layuicms/js/cache.js",
"chars": 16418,
"preview": "var cacheStr = window.sessionStorage.getItem(\"cache\"),\n oneLoginStr = window.sessionStorage.getItem(\"oneLogin\");\nlayu"
},
{
"path": "public/layuicms/js/cacheUserInfo.js",
"chars": 2657,
"preview": "layui.config({\n base : \"../../js/\"\n}).use(['form','jquery',\"address\"],function() {\n var form = layui.form,\n "
},
{
"path": "public/layuicms/js/index.js",
"chars": 5183,
"preview": "var $,tab,dataStr,layer;\nlayui.config({\n\tbase : \"layuicms/js/\"\n}).extend({\n\t\"bodyTab\" : \"bodyTab\"\n})\nlayui.use(['bodyTab"
},
{
"path": "public/layuicms/js/main.js",
"chars": 3553,
"preview": "//获取系统时间\nvar newDate = '';\ngetLangDate();\n//值小于10时,在前面补0\nfunction dateFilter(date){\n if(date < 10){return \"0\"+date;}\n"
},
{
"path": "public/layuicms/json/address.json",
"chars": 107607,
"preview": "[{\"code\":\"11\",\"name\":\"北京市\",\"childs\":[{\"code\":\"1101\",\"name\":\"市辖区\",\"childs\":[{\"code\":\"110101\",\"name\":\"东城区\"},{\"code\":\"11010"
},
{
"path": "public/layuicms/json/images.json",
"chars": 3580,
"preview": "{\n\t\"title\": \"图片管理\",\n\t\"id\": \"Images\",\n\t\"start\": 0,\n\t\"data\": [\n\t\t{\n\t\t\t\"src\": \"images/userface1.jpg\",\n\t\t\t\"thumb\": \"images/u"
},
{
"path": "public/layuicms/json/linkList.json",
"chars": 1015,
"preview": "{\n\t\"code\": 0,\n\t\"msg\": \"\",\n\t\"count\": 4,\n\t\"data\": [\n\t\t{\n\t\t\t\"linkId\": \"1\",\n\t\t\t\"logo\": \"../../images/layui.png\",\n\t\t\t\"website"
},
{
"path": "public/layuicms/json/linkLogo.json",
"chars": 203,
"preview": "{\n\t\"code\": 0,\n\t\"msg\": \"\",\n\t\"data\": [\n\t\t{\n\t\t\t\"src\": \"../../images/fly.png\"\n\t\t},{\n\t\t\t\"src\": \"../../images/git.png\"\n\t\t},{\n\t"
},
{
"path": "public/layuicms/json/logs.json",
"chars": 3674,
"preview": "{\n\t\"code\": 0,\n\t\"msg\": \"\",\n\t\"count\": 15,\n\t\"data\": [\n\t\t{\n\t\t\t\"logId\": \"1\",\n\t\t\t\"url\": \"https://gitee.com/layuicms/layuicms2."
},
{
"path": "public/layuicms/json/navs.json",
"chars": 132,
"preview": "{\n\t\"contentManagement\": [\n\t\t{\n\t\t\t\"title\": \"订单查询\",\n\t\t\t\"icon\": \"icon-text\",\n\t\t\t\"href\": \"/query_orders\",\n\t\t\t\"spread\": false"
},
{
"path": "public/layuicms/json/newsImg.json",
"chars": 100,
"preview": "{\n\t\"code\": 0,\n\t\"msg\": \"\",\n\t\"data\":{\n\t\t\"src\": \"../../images/userface1.jpg\",\n\t\t\"title\" : \"文章内容图片\"\n\t}\n}"
},
{
"path": "public/layuicms/json/newsList.json",
"chars": 6180,
"preview": "{\n\t\"code\": 0,\n\t\"msg\": \"\",\n\t\"count\": 15,\n\t\"data\": [\n\t\t{\n\t\t\t\"newsId\": \"1\",\n\t\t\t\"newsName\": \"css3用transition实现边框动画效果\",\n\t\t\t\"n"
},
{
"path": "public/layuicms/json/systemParameter.json",
"chars": 371,
"preview": "{\n\t\"cmsName\": \"layuiCMS后台管理模版\",\n\t\"version\": \"v2.0\",\n\t\"author\": \"驊驊龔頾\",\n\t\"homePage\": \"index.html\",\n\t\"server\": \"windows\",\n"
},
{
"path": "public/layuicms/json/userGrade.json",
"chars": 1227,
"preview": "{\n \"code\": 0,\n \"msg\": \"\",\n \"count\": 1000,\n \"data\": [\n {\n \"id\": 1,\n \"gradeIcon\": \"icon-vip1\",\n \"gra"
},
{
"path": "public/layuicms/json/userList.json",
"chars": 818,
"preview": "{\n \"code\": 0,\n \"msg\": \"\",\n \"count\": 3,\n \"data\": [\n {\n \"usersId\": \"1\",\n \"userName\": \"驊驊龔頾\",\n \"userE"
},
{
"path": "public/layuicms/json/userface.json",
"chars": 268,
"preview": "{\n\t\"code\": 0,\n\t\"msg\": \"\",\n\t\"data\": [\n\t\t{\n\t\t\t\"src\": \"../../images/userface1.jpg\"\n\t\t},{\n\t\t\t\"src\": \"../../images/userface2."
},
{
"path": "public/layuicms/layui/css/layui.css",
"chars": 59926,
"preview": "/* 自添加样式*/\n@import \"https://at.alicdn.com/t/font_400842_q6tk84n9ywvu0udi.css\";\n.layui-icon{ font-size:16px !important;}\n"
},
{
"path": "public/layuicms/layui/css/layui.mobile.css",
"chars": 9885,
"preview": "/** layui-v2.2.5 MIT License By https://www.layui.com */\n blockquote,body,button,dd,div,dl,dt,form,h1,h2,h3,h4,h5,h6,inp"
},
{
"path": "public/layuicms/layui/css/modules/code.css",
"chars": 1063,
"preview": "/** layui-v2.2.5 MIT License By https://www.layui.com */\n html #layuicss-skincodecss{display:none;position:absolute;widt"
},
{
"path": "public/layuicms/layui/css/modules/laydate/default/laydate.css",
"chars": 7537,
"preview": "/** layui-v2.2.5 MIT License By https://www.layui.com */\n .laydate-set-ym,.layui-laydate,.layui-laydate *,.layui-laydate"
},
{
"path": "public/layuicms/layui/css/modules/layer/default/layer.css",
"chars": 14425,
"preview": "/** layui-v2.2.5 MIT License By https://www.layui.com */\n .layui-layer-imgbar,.layui-layer-imgtit a,.layui-layer-tab .la"
},
{
"path": "public/layuicms/layui/lay/modules/carousel.js",
"chars": 3839,
"preview": "/** layui-v2.2.5 MIT License By https://www.layui.com */\n ;layui.define(\"jquery\",function(e){\"use strict\";var i=layui.$,"
},
{
"path": "public/layuicms/layui/lay/modules/code.js",
"chars": 1177,
"preview": "/** layui-v2.2.5 MIT License By https://www.layui.com */\n ;layui.define(\"jquery\",function(e){\"use strict\";var a=layui.$,"
},
{
"path": "public/layuicms/layui/lay/modules/element.js",
"chars": 7467,
"preview": "/** layui-v2.2.5 MIT License By https://www.layui.com */\n ;layui.define(\"jquery\",function(i){\"use strict\";var t=layui.$,"
},
{
"path": "public/layuicms/layui/lay/modules/flow.js",
"chars": 1996,
"preview": "/** layui-v2.2.5 MIT License By https://www.layui.com */\n ;layui.define(\"jquery\",function(e){\"use strict\";var l=layui.$,"
},
{
"path": "public/layuicms/layui/lay/modules/form.js",
"chars": 7777,
"preview": "/** layui-v2.2.5 MIT License By https://www.layui.com */\n ;layui.define(\"layer\",function(e){\"use strict\";var t=layui.$,i"
},
{
"path": "public/layuicms/layui/lay/modules/jquery.js",
"chars": 97648,
"preview": "/** layui-v2.2.5 MIT License By https://www.layui.com */\n ;!function(e,t){\"object\"==typeof module&&\"object\"==typeof modu"
},
{
"path": "public/layuicms/layui/lay/modules/laydate.js",
"chars": 27013,
"preview": "/** layui-v2.2.5 MIT License By https://www.layui.com */\n ;!function(){\"use strict\";var e=window.layui&&layui.define,t={"
},
{
"path": "public/layuicms/layui/lay/modules/layedit.js",
"chars": 12200,
"preview": "/** layui-v2.2.5 MIT License By https://www.layui.com */\n ;layui.define([\"layer\",\"form\"],function(t){\"use strict\";var e="
},
{
"path": "public/layuicms/layui/lay/modules/layer.js",
"chars": 22064,
"preview": "/** layui-v2.2.5 MIT License By https://www.layui.com */\n ;!function(e,t){\"use strict\";var i,n,a=e.layui&&layui.define,"
},
{
"path": "public/layuicms/layui/lay/modules/laypage.js",
"chars": 4311,
"preview": "/** layui-v2.2.5 MIT License By https://www.layui.com */\n ;layui.define(function(e){\"use strict\";var a=document,t=\"getEl"
},
{
"path": "public/layuicms/layui/lay/modules/laytpl.js",
"chars": 1834,
"preview": "/** layui-v2.2.5 MIT License By https://www.layui.com */\n ;layui.define(function(e){\"use strict\";var r={open:\"{{\",close:"
},
{
"path": "public/layuicms/layui/lay/modules/mobile.js",
"chars": 33700,
"preview": "/** layui-v2.2.5 MIT License By https://www.layui.com */\n ;layui.define(function(i){i(\"layui.mobile\",layui.v)});layui.de"
},
{
"path": "public/layuicms/layui/lay/modules/table.js",
"chars": 20639,
"preview": "/** layui-v2.2.5 MIT License By https://www.layui.com */\n ;layui.define([\"laytpl\",\"laypage\",\"layer\",\"form\"],function(e){"
},
{
"path": "public/layuicms/layui/lay/modules/tree.js",
"chars": 3042,
"preview": "/** layui-v2.2.5 MIT License By https://www.layui.com */\n ;layui.define(\"jquery\",function(e){\"use strict\";var o=layui.$,"
},
{
"path": "public/layuicms/layui/lay/modules/upload.js",
"chars": 6566,
"preview": "/** layui-v2.2.5 MIT License By https://www.layui.com */\n ;layui.define(\"layer\",function(e){\"use strict\";var i=layui.$,t"
},
{
"path": "public/layuicms/layui/lay/modules/util.js",
"chars": 2419,
"preview": "/** layui-v2.2.5 MIT License By https://www.layui.com */\n ;layui.define(\"jquery\",function(e){\"use strict\";var t=layui.$,"
},
{
"path": "public/layuicms/layui/layui.all.js",
"chars": 225749,
"preview": "/** layui-v2.2.5 MIT License By https://www.layui.com */\n ;!function(e){\"use strict\";var t=document,n={modules:{},status"
},
{
"path": "public/layuicms/layui/layui.js",
"chars": 6817,
"preview": "//防止页面单独打开【登录页面除外】\nif(/layuicms2.0\\/page/.test(top.location.href) && !/login.html/.test(top.location.href)){\n top.win"
},
{
"path": "public/layuicms/page/404.html",
"chars": 964,
"preview": "<!DOCTYPE html>\n<html>\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>404--layui后台管理模板 2.0</title>\n\t<meta name=\"renderer\" conten"
},
{
"path": "public/layuicms/page/doc/addressDoc.html",
"chars": 3307,
"preview": "<!DOCTYPE html>\n<html>\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>三级联动使用文档--layui后台管理模板 2.0</title>\n\t<meta name=\"renderer\" c"
},
{
"path": "public/layuicms/page/doc/bodyTabDoc.html",
"chars": 9229,
"preview": "<!DOCTYPE html>\n<html>\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>bodyTab使用文档--layui后台管理模板 2.0</title>\n\t<meta name=\"renderer"
},
{
"path": "public/layuicms/page/doc/navDoc.html",
"chars": 2720,
"preview": "<!DOCTYPE html>\n<html>\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>三级菜单使用文档--layui后台管理模板 2.0</title>\n\t<meta name=\"renderer\" c"
},
{
"path": "public/layuicms/page/img/images.html",
"chars": 1284,
"preview": "<!DOCTYPE html>\n<html>\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>图片总数--layui后台管理模板</title>\n\t<meta name=\"renderer\" content=\""
},
{
"path": "public/layuicms/page/img/images.js",
"chars": 4519,
"preview": "layui.config({\n\tbase : \"../../js/\"\n}).use(['flow','form','layer','upload'],function(){\n var flow = layui.flow,\n "
},
{
"path": "public/layuicms/page/login/login.html",
"chars": 2183,
"preview": "<!DOCTYPE html>\n<html class=\"loginHtml\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>登录--layui后台管理模板 2.0</title>\n\t<meta name="
},
{
"path": "public/layuicms/page/login/login.js",
"chars": 1221,
"preview": "layui.use(['form','layer','jquery'],function(){\n var form = layui.form,\n layer = parent.layer === undefined ? "
},
{
"path": "public/layuicms/page/main.html",
"chars": 10762,
"preview": "<!DOCTYPE html>\n<html>\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>首页--layui后台管理模板 2.0</title>\n\t<meta name=\"renderer\" content"
},
{
"path": "public/layuicms/page/news/newsAdd.html",
"chars": 4396,
"preview": "<!DOCTYPE html>\n<html>\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>文章列表--layui后台管理模板 2.0</title>\n\t<meta name=\"renderer\" conte"
},
{
"path": "public/layuicms/page/news/newsAdd.js",
"chars": 3604,
"preview": "layui.use(['form','layer','layedit','laydate','upload'],function(){\n var form = layui.form\n layer = parent.lay"
},
{
"path": "public/layuicms/page/news/newsList.html",
"chars": 1963,
"preview": "<!DOCTYPE html>\n<html>\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>文章列表--layui后台管理模板 2.0</title>\n\t<meta name=\"renderer\" conte"
},
{
"path": "public/layuicms/page/news/newsList.js",
"chars": 5053,
"preview": "layui.use(['form','layer','laydate','table','laytpl'],function(){\n var form = layui.form,\n layer = parent.laye"
},
{
"path": "public/layuicms/page/systemSetting/basicParameter.html",
"chars": 3436,
"preview": "<!DOCTYPE html>\n<html>\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>系统基本参数--layui后台管理模板 2.0</title>\n\t<meta name=\"renderer\" con"
},
{
"path": "public/layuicms/page/systemSetting/basicParameter.js",
"chars": 2355,
"preview": "layui.use(['form','layer','jquery'],function(){\n\tvar form = layui.form,\n\t\tlayer = parent.layer === undefined ? layui.lay"
},
{
"path": "public/layuicms/page/systemSetting/icons.html",
"chars": 1063,
"preview": "<!DOCTYPE html>\n<html>\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>图标管理--layui后台管理模板 2.0</title>\n\t<meta name=\"renderer\" conte"
},
{
"path": "public/layuicms/page/systemSetting/icons.js",
"chars": 1030,
"preview": "layui.use(['form','layer','jquery'],function(){\n var form = layui.form,\n layer = parent.layer === undefined ? "
}
]
// ... and 199 more files (download for full content)
About this extraction
This page contains the full source code of the zzDylan/faka GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 399 files (3.4 MB), approximately 919.6k tokens, and a symbol index with 1663 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.