├── vendor ├── .gitignore ├── gmars │ ├── tp5-rbac │ │ ├── .gitignore │ │ ├── composer.json │ │ └── LICENSE │ └── tp5-nestedsets │ │ ├── .gitignore │ │ ├── composer.json │ │ └── LICENSE ├── topthink │ ├── think-image │ │ ├── tests │ │ │ ├── images │ │ │ │ ├── test.bmp │ │ │ │ ├── test.gif │ │ │ │ ├── test.jpg │ │ │ │ ├── test.png │ │ │ │ └── test.ttf │ │ │ ├── tmp │ │ │ │ └── .gitignore │ │ │ ├── autoload.php │ │ │ ├── TestCase.php │ │ │ ├── RotateTest.php │ │ │ └── FlipTest.php │ │ ├── .gitignore │ │ ├── .travis.yml │ │ ├── composer.json │ │ ├── src │ │ │ └── image │ │ │ │ └── Exception.php │ │ ├── phpunit.xml │ │ └── README.md │ ├── think-captcha │ │ ├── .gitignore │ │ ├── assets │ │ │ ├── bgs │ │ │ │ ├── 1.jpg │ │ │ │ ├── 2.jpg │ │ │ │ ├── 3.jpg │ │ │ │ ├── 4.jpg │ │ │ │ ├── 5.jpg │ │ │ │ ├── 6.jpg │ │ │ │ ├── 7.jpg │ │ │ │ └── 8.jpg │ │ │ ├── ttfs │ │ │ │ ├── 1.ttf │ │ │ │ ├── 2.ttf │ │ │ │ ├── 3.ttf │ │ │ │ ├── 4.ttf │ │ │ │ ├── 5.ttf │ │ │ │ └── 6.ttf │ │ │ └── zhttfs │ │ │ │ └── 1.ttf │ │ ├── README.md │ │ ├── composer.json │ │ ├── src │ │ │ ├── CaptchaController.php │ │ │ └── helper.php │ │ └── LICENSE │ ├── think-installer │ │ ├── .gitignore │ │ ├── composer.json │ │ └── src │ │ │ └── Plugin.php │ └── think-migration │ │ ├── .gitignore │ │ ├── README.md │ │ ├── src │ │ ├── command │ │ │ └── stubs │ │ │ │ ├── seed.stub │ │ │ │ └── migrate.stub │ │ ├── Seeder.php │ │ ├── config.php │ │ └── Migrator.php │ │ ├── phinx │ │ ├── src │ │ │ └── Phinx │ │ │ │ ├── Seed │ │ │ │ └── Seed.template.php.dist │ │ │ │ └── Migration │ │ │ │ ├── Migration.template.php.dist │ │ │ │ └── IrreversibleMigrationException.php │ │ └── LICENSE │ │ ├── composer.json │ │ └── LICENSE ├── autoload.php └── composer │ ├── autoload_classmap.php │ ├── autoload_namespaces.php │ ├── autoload_files.php │ ├── autoload_psr4.php │ └── LICENSE ├── public ├── static │ ├── .gitignore │ ├── images │ │ ├── logo.png │ │ ├── l-line.png │ │ ├── l-line-white.png │ │ └── login │ │ │ ├── login_bg.png │ │ │ └── login_line.jpg │ ├── fonts │ │ ├── iconfont.eot │ │ ├── iconfont.ttf │ │ ├── iconfont.woff │ │ └── iconfont.css │ ├── layui │ │ ├── font │ │ │ ├── iconfont.eot │ │ │ ├── iconfont.ttf │ │ │ └── iconfont.woff │ │ ├── images │ │ │ └── face │ │ │ │ ├── 0.gif │ │ │ │ ├── 1.gif │ │ │ │ ├── 10.gif │ │ │ │ ├── 11.gif │ │ │ │ ├── 12.gif │ │ │ │ ├── 13.gif │ │ │ │ ├── 14.gif │ │ │ │ ├── 15.gif │ │ │ │ ├── 16.gif │ │ │ │ ├── 17.gif │ │ │ │ ├── 18.gif │ │ │ │ ├── 19.gif │ │ │ │ ├── 2.gif │ │ │ │ ├── 20.gif │ │ │ │ ├── 21.gif │ │ │ │ ├── 22.gif │ │ │ │ ├── 23.gif │ │ │ │ ├── 24.gif │ │ │ │ ├── 25.gif │ │ │ │ ├── 26.gif │ │ │ │ ├── 27.gif │ │ │ │ ├── 28.gif │ │ │ │ ├── 29.gif │ │ │ │ ├── 3.gif │ │ │ │ ├── 30.gif │ │ │ │ ├── 31.gif │ │ │ │ ├── 32.gif │ │ │ │ ├── 33.gif │ │ │ │ ├── 34.gif │ │ │ │ ├── 35.gif │ │ │ │ ├── 36.gif │ │ │ │ ├── 37.gif │ │ │ │ ├── 38.gif │ │ │ │ ├── 39.gif │ │ │ │ ├── 4.gif │ │ │ │ ├── 40.gif │ │ │ │ ├── 41.gif │ │ │ │ ├── 42.gif │ │ │ │ ├── 43.gif │ │ │ │ ├── 44.gif │ │ │ │ ├── 45.gif │ │ │ │ ├── 46.gif │ │ │ │ ├── 47.gif │ │ │ │ ├── 48.gif │ │ │ │ ├── 49.gif │ │ │ │ ├── 5.gif │ │ │ │ ├── 50.gif │ │ │ │ ├── 51.gif │ │ │ │ ├── 52.gif │ │ │ │ ├── 53.gif │ │ │ │ ├── 54.gif │ │ │ │ ├── 55.gif │ │ │ │ ├── 56.gif │ │ │ │ ├── 57.gif │ │ │ │ ├── 58.gif │ │ │ │ ├── 59.gif │ │ │ │ ├── 6.gif │ │ │ │ ├── 60.gif │ │ │ │ ├── 61.gif │ │ │ │ ├── 62.gif │ │ │ │ ├── 63.gif │ │ │ │ ├── 64.gif │ │ │ │ ├── 65.gif │ │ │ │ ├── 66.gif │ │ │ │ ├── 67.gif │ │ │ │ ├── 68.gif │ │ │ │ ├── 69.gif │ │ │ │ ├── 7.gif │ │ │ │ ├── 70.gif │ │ │ │ ├── 71.gif │ │ │ │ ├── 8.gif │ │ │ │ └── 9.gif │ │ ├── css │ │ │ └── modules │ │ │ │ ├── layer │ │ │ │ └── default │ │ │ │ │ ├── icon.png │ │ │ │ │ ├── icon-ext.png │ │ │ │ │ ├── loading-0.gif │ │ │ │ │ ├── loading-1.gif │ │ │ │ │ └── loading-2.gif │ │ │ │ └── code.css │ │ ├── lay2.2 │ │ │ ├── all-mobile.js │ │ │ ├── modules │ │ │ │ ├── mobile │ │ │ │ │ └── layim-mobile-open.js │ │ │ │ └── mobile.js │ │ │ └── all.js │ │ └── lay │ │ │ └── modules │ │ │ ├── code.js │ │ │ └── laytpl.js │ └── js │ │ └── module │ │ └── tool.js ├── robots.txt ├── favicon.ico ├── .htaccess ├── router.php └── index.php ├── thinkphp ├── .htaccess ├── logo.png ├── .gitignore ├── library │ └── think │ │ ├── console │ │ ├── bin │ │ │ ├── hiddeninput.exe │ │ │ └── README.md │ │ ├── command │ │ │ ├── make │ │ │ │ ├── stubs │ │ │ │ │ ├── model.stub │ │ │ │ │ ├── controller.plain.stub │ │ │ │ │ ├── middleware.stub │ │ │ │ │ ├── validate.stub │ │ │ │ │ ├── controller.api.stub │ │ │ │ │ └── controller.stub │ │ │ │ ├── Model.php │ │ │ │ ├── Middleware.php │ │ │ │ └── Validate.php │ │ │ └── Version.php │ │ ├── LICENSE │ │ └── output │ │ │ └── driver │ │ │ ├── Nothing.php │ │ │ └── Buffer.php │ │ ├── route │ │ └── dispatch │ │ │ ├── Response.php │ │ │ ├── Redirect.php │ │ │ ├── Callback.php │ │ │ ├── View.php │ │ │ └── Controller.php │ │ ├── exception │ │ ├── RouteNotFoundException.php │ │ ├── HttpResponseException.php │ │ ├── ClassNotFoundException.php │ │ ├── TemplateNotFoundException.php │ │ ├── ValidateException.php │ │ ├── HttpException.php │ │ ├── DbException.php │ │ ├── PDOException.php │ │ ├── ThrowableError.php │ │ └── ErrorException.php │ │ ├── config │ │ └── driver │ │ │ ├── Json.php │ │ │ ├── Ini.php │ │ │ └── Xml.php │ │ ├── response │ │ ├── Jump.php │ │ └── Json.php │ │ ├── facade │ │ ├── Url.php │ │ ├── Env.php │ │ ├── Build.php │ │ ├── Config.php │ │ ├── Middleware.php │ │ ├── Template.php │ │ ├── Hook.php │ │ ├── Cookie.php │ │ ├── Lang.php │ │ └── View.php │ │ ├── db │ │ ├── Expression.php │ │ └── exception │ │ │ ├── BindParamException.php │ │ │ ├── ModelNotFoundException.php │ │ │ └── DataNotFoundException.php │ │ ├── model │ │ └── Pivot.php │ │ ├── process │ │ └── exception │ │ │ ├── Faild.php │ │ │ └── Failed.php │ │ └── Exception.php ├── tpl │ └── default_index.tpl ├── composer.json ├── LICENSE.txt └── phpunit.xml.dist ├── application ├── .htaccess ├── admin │ ├── model │ │ ├── AuthAdminRole.php │ │ ├── Address.php │ │ ├── AuthRoleItems.php │ │ ├── Area.php │ │ ├── Statistics.php │ │ ├── GoodsImages.php │ │ ├── AuthItems.php │ │ ├── Ads.php │ │ ├── AuthMenu.php │ │ ├── Message.php │ │ ├── FriendLink.php │ │ ├── Nav.php │ │ ├── AuthRole.php │ │ ├── OrderGoods.php │ │ ├── GoodsCat.php │ │ ├── AttrGroup.php │ │ ├── ArticleCat.php │ │ ├── Delivery.php │ │ ├── Payment.php │ │ ├── Attr.php │ │ ├── Users.php │ │ ├── Order.php │ │ ├── Article.php │ │ ├── AuthAdmin.php │ │ ├── Config.php │ │ ├── AdminMessage.php │ │ └── Goods.php │ ├── view │ │ ├── Database │ │ │ ├── backup.html │ │ │ ├── query.html │ │ │ └── index.html │ │ ├── head.html │ │ ├── Area │ │ │ ├── edit.html │ │ │ └── add.html │ │ ├── AuthAdmin │ │ │ └── notebook.html │ │ ├── Message │ │ │ ├── add.html │ │ │ └── edit.html │ │ ├── AdminMessage │ │ │ └── read.html │ │ ├── AttrGroup │ │ │ ├── add.html │ │ │ └── edit.html │ │ ├── ArticleCat │ │ │ ├── add.html │ │ │ └── edit.html │ │ ├── GoodsCat │ │ │ ├── edit.html │ │ │ └── add.html │ │ └── AuthMenu │ │ │ ├── add.html │ │ │ └── edit.html │ ├── crontab │ │ └── SubOrders.php │ └── controller │ │ └── demo.php ├── provider.php ├── command.php └── tags.php ├── extend └── .gitignore ├── runtime └── .gitignore ├── readme ├── 01.png ├── 02.png ├── 03.png ├── 04.png ├── 05.png └── 06.png ├── .gitignore ├── README.md ├── route └── route.php ├── think ├── config ├── middleware.php ├── console.php ├── cache.php ├── trace.php ├── log.php ├── cookie.php ├── template.php └── session.php ├── composer.json └── LICENSE.txt /vendor/.gitignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/static/.gitignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /thinkphp/.htaccess: -------------------------------------------------------------------------------- 1 | deny from all -------------------------------------------------------------------------------- /application/.htaccess: -------------------------------------------------------------------------------- 1 | deny from all -------------------------------------------------------------------------------- /extend/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /runtime/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /vendor/gmars/tp5-rbac/.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | -------------------------------------------------------------------------------- /vendor/gmars/tp5-nestedsets/.gitignore: -------------------------------------------------------------------------------- 1 | .idea/* -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: 3 | -------------------------------------------------------------------------------- /vendor/topthink/think-image/tests/images/test.bmp: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /vendor/topthink/think-image/tests/tmp/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /readme/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/readme/01.png -------------------------------------------------------------------------------- /readme/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/readme/02.png -------------------------------------------------------------------------------- /readme/03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/readme/03.png -------------------------------------------------------------------------------- /readme/04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/readme/04.png -------------------------------------------------------------------------------- /readme/05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/readme/05.png -------------------------------------------------------------------------------- /readme/06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/readme/06.png -------------------------------------------------------------------------------- /vendor/topthink/think-captcha/.gitignore: -------------------------------------------------------------------------------- 1 | /vendor/ 2 | /composer.lock 3 | .idea -------------------------------------------------------------------------------- /vendor/topthink/think-installer/.gitignore: -------------------------------------------------------------------------------- 1 | /.idea 2 | composer.lock 3 | /vendor -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /thinkphp/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/thinkphp/logo.png -------------------------------------------------------------------------------- /vendor/topthink/think-migration/.gitignore: -------------------------------------------------------------------------------- 1 | /vendor/ 2 | .idea 3 | composer.lock 4 | -------------------------------------------------------------------------------- /vendor/topthink/think-image/.gitignore: -------------------------------------------------------------------------------- 1 | /vendor/ 2 | /thinkphp/ 3 | /composer.lock 4 | /.idea/ -------------------------------------------------------------------------------- /public/static/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/images/logo.png -------------------------------------------------------------------------------- /public/static/fonts/iconfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/fonts/iconfont.eot -------------------------------------------------------------------------------- /public/static/fonts/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/fonts/iconfont.ttf -------------------------------------------------------------------------------- /public/static/fonts/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/fonts/iconfont.woff -------------------------------------------------------------------------------- /public/static/images/l-line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/images/l-line.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /.idea 2 | /.vscode 3 | *.log 4 | .env 5 | /application/build 6 | /public/uploads 7 | /nbproject 8 | /readme -------------------------------------------------------------------------------- /public/static/images/l-line-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/images/l-line-white.png -------------------------------------------------------------------------------- /public/static/layui/font/iconfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/font/iconfont.eot -------------------------------------------------------------------------------- /public/static/layui/font/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/font/iconfont.ttf -------------------------------------------------------------------------------- /public/static/layui/font/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/font/iconfont.woff -------------------------------------------------------------------------------- /public/static/layui/images/face/0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/0.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/1.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/10.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/10.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/11.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/11.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/12.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/12.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/13.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/13.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/14.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/14.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/15.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/15.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/16.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/16.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/17.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/17.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/18.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/18.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/19.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/19.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/2.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/20.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/20.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/21.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/21.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/22.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/22.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/23.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/23.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/24.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/24.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/25.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/25.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/26.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/26.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/27.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/27.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/28.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/28.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/29.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/29.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/3.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/30.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/30.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/31.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/31.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/32.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/32.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/33.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/33.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/34.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/34.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/35.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/35.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/36.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/36.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/37.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/37.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/38.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/38.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/39.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/39.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/4.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/40.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/40.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/41.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/41.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/42.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/42.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/43.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/43.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/44.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/44.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/45.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/45.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/46.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/46.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/47.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/47.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/48.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/48.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/49.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/49.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/5.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/50.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/50.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/51.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/51.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/52.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/52.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/53.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/53.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/54.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/54.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/55.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/55.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/56.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/56.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/57.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/57.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/58.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/58.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/59.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/59.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/6.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/6.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/60.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/60.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/61.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/61.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/62.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/62.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/63.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/63.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/64.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/64.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/65.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/65.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/66.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/66.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/67.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/67.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/68.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/68.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/69.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/69.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/7.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/7.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/70.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/70.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/71.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/71.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/8.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/8.gif -------------------------------------------------------------------------------- /public/static/layui/images/face/9.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/images/face/9.gif -------------------------------------------------------------------------------- /public/static/images/login/login_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/images/login/login_bg.png -------------------------------------------------------------------------------- /public/static/images/login/login_line.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/images/login/login_line.jpg -------------------------------------------------------------------------------- /thinkphp/.gitignore: -------------------------------------------------------------------------------- 1 | /vendor 2 | composer.phar 3 | composer.lock 4 | .DS_Store 5 | Thumbs.db 6 | /phpunit.xml 7 | /.idea 8 | /.vscode -------------------------------------------------------------------------------- /vendor/topthink/think-captcha/assets/bgs/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/vendor/topthink/think-captcha/assets/bgs/1.jpg -------------------------------------------------------------------------------- /vendor/topthink/think-captcha/assets/bgs/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/vendor/topthink/think-captcha/assets/bgs/2.jpg -------------------------------------------------------------------------------- /vendor/topthink/think-captcha/assets/bgs/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/vendor/topthink/think-captcha/assets/bgs/3.jpg -------------------------------------------------------------------------------- /vendor/topthink/think-captcha/assets/bgs/4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/vendor/topthink/think-captcha/assets/bgs/4.jpg -------------------------------------------------------------------------------- /vendor/topthink/think-captcha/assets/bgs/5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/vendor/topthink/think-captcha/assets/bgs/5.jpg -------------------------------------------------------------------------------- /vendor/topthink/think-captcha/assets/bgs/6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/vendor/topthink/think-captcha/assets/bgs/6.jpg -------------------------------------------------------------------------------- /vendor/topthink/think-captcha/assets/bgs/7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/vendor/topthink/think-captcha/assets/bgs/7.jpg -------------------------------------------------------------------------------- /vendor/topthink/think-captcha/assets/bgs/8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/vendor/topthink/think-captcha/assets/bgs/8.jpg -------------------------------------------------------------------------------- /vendor/topthink/think-captcha/assets/ttfs/1.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/vendor/topthink/think-captcha/assets/ttfs/1.ttf -------------------------------------------------------------------------------- /vendor/topthink/think-captcha/assets/ttfs/2.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/vendor/topthink/think-captcha/assets/ttfs/2.ttf -------------------------------------------------------------------------------- /vendor/topthink/think-captcha/assets/ttfs/3.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/vendor/topthink/think-captcha/assets/ttfs/3.ttf -------------------------------------------------------------------------------- /vendor/topthink/think-captcha/assets/ttfs/4.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/vendor/topthink/think-captcha/assets/ttfs/4.ttf -------------------------------------------------------------------------------- /vendor/topthink/think-captcha/assets/ttfs/5.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/vendor/topthink/think-captcha/assets/ttfs/5.ttf -------------------------------------------------------------------------------- /vendor/topthink/think-captcha/assets/ttfs/6.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/vendor/topthink/think-captcha/assets/ttfs/6.ttf -------------------------------------------------------------------------------- /thinkphp/library/think/console/bin/hiddeninput.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/thinkphp/library/think/console/bin/hiddeninput.exe -------------------------------------------------------------------------------- /vendor/topthink/think-captcha/assets/zhttfs/1.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/vendor/topthink/think-captcha/assets/zhttfs/1.ttf -------------------------------------------------------------------------------- /vendor/topthink/think-image/tests/images/test.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/vendor/topthink/think-image/tests/images/test.gif -------------------------------------------------------------------------------- /vendor/topthink/think-image/tests/images/test.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/vendor/topthink/think-image/tests/images/test.jpg -------------------------------------------------------------------------------- /vendor/topthink/think-image/tests/images/test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/vendor/topthink/think-image/tests/images/test.png -------------------------------------------------------------------------------- /vendor/topthink/think-image/tests/images/test.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/vendor/topthink/think-image/tests/images/test.ttf -------------------------------------------------------------------------------- /vendor/topthink/think-migration/README.md: -------------------------------------------------------------------------------- 1 | # thinkphp5.1 数据库迁移工具 2 | 3 | ## 安装 4 | ~~~ 5 | composer require topthink/think-migration 6 | ~~~ 7 | -------------------------------------------------------------------------------- /public/static/layui/css/modules/layer/default/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/css/modules/layer/default/icon.png -------------------------------------------------------------------------------- /public/static/layui/css/modules/layer/default/icon-ext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/css/modules/layer/default/icon-ext.png -------------------------------------------------------------------------------- /public/static/layui/css/modules/layer/default/loading-0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/css/modules/layer/default/loading-0.gif -------------------------------------------------------------------------------- /public/static/layui/css/modules/layer/default/loading-1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/css/modules/layer/default/loading-1.gif -------------------------------------------------------------------------------- /public/static/layui/css/modules/layer/default/loading-2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpvcl/shop/HEAD/public/static/layui/css/modules/layer/default/loading-2.gif -------------------------------------------------------------------------------- /thinkphp/library/think/console/bin/README.md: -------------------------------------------------------------------------------- 1 | console 工具使用 hiddeninput.exe 在 windows 上隐藏密码输入,该二进制文件由第三方提供,相关源码和其他细节可以在 [Hidden Input](https://github.com/Seldaek/hidden-input) 找到。 2 | -------------------------------------------------------------------------------- /application/admin/model/AuthAdminRole.php: -------------------------------------------------------------------------------- 1 | 2 | Options +FollowSymlinks -Multiviews 3 | RewriteEngine On 4 | 5 | RewriteCond %{REQUEST_FILENAME} !-d 6 | RewriteCond %{REQUEST_FILENAME} !-f 7 | 8 | RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] 9 | 10 | -------------------------------------------------------------------------------- /application/admin/model/Address.php: -------------------------------------------------------------------------------- 1 | belongsTo('Goods'); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /vendor/composer/autoload_files.php: -------------------------------------------------------------------------------- 1 | $vendorDir . '/topthink/think-migration/src/config.php', 10 | '1cfd2761b63b0a29ed23657ea394cb2d' => $vendorDir . '/topthink/think-captcha/src/helper.php', 11 | ); 12 | -------------------------------------------------------------------------------- /vendor/topthink/think-migration/src/command/stubs/seed.stub: -------------------------------------------------------------------------------- 1 | belongsTo('AuthMenu'); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /vendor/topthink/think-migration/phinx/src/Phinx/Seed/Seed.template.php.dist: -------------------------------------------------------------------------------- 1 | ['规则1','规则2'...] 12 | * 13 | * @var array 14 | */ 15 | protected $rule = []; 16 | 17 | /** 18 | * 定义错误信息 19 | * 格式:'字段名.规则名' => '错误信息' 20 | * 21 | * @var array 22 | */ 23 | protected $message = []; 24 | } 25 | -------------------------------------------------------------------------------- /vendor/topthink/think-migration/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "topthink/think-migration", 3 | "authors": [ 4 | { 5 | "name": "yunwuxin", 6 | "email": "448901948@qq.com" 7 | } 8 | ], 9 | "license": "Apache-2.0", 10 | "autoload": { 11 | "psr-4": { 12 | "Phinx\\": "phinx/src/Phinx", 13 | "think\\migration\\": "src" 14 | }, 15 | "files": [ 16 | "src/config.php" 17 | ] 18 | }, 19 | "require": { 20 | "topthink/framework": "5.1.*" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /vendor/topthink/think-captcha/README.md: -------------------------------------------------------------------------------- 1 | # think-captcha 2 | thinkphp5.1 验证码类库 3 | 4 | ## 安装 5 | > composer require topthink/think-captcha 6 | 7 | 8 | ##使用 9 | 10 | ###模板里输出验证码 11 | 12 | ~~~ 13 |
{:captcha_img()}
14 | ~~~ 15 | 或者 16 | ~~~ 17 |
captcha
18 | ~~~ 19 | > 上面两种的最终效果是一样的 20 | 21 | ### 控制器里验证 22 | 使用TP5的内置验证功能即可 23 | ~~~ 24 | $this->validate($data,[ 25 | 'captcha|验证码'=>'require|captcha' 26 | ]); 27 | ~~~ 28 | 或者手动验证 29 | ~~~ 30 | if(!captcha_check($captcha)){ 31 | //验证失败 32 | }; 33 | ~~~ -------------------------------------------------------------------------------- /vendor/gmars/tp5-nestedsets/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "gmars/tp5-nestedsets", 3 | "description": "此扩展是thinkPHP5的nestendsets的扩展。能够方便的在项目中来管理有层级关系的数据结构。该扩展在算法上部分参考了Willfred di Vampo的nestedsets,实现了数据的插入,移动,删除,遍历等功能。", 4 | "type": "library", 5 | "license": "MIT", 6 | "authors": [ 7 | { 8 | "name": "weiyongqiang", 9 | "email": "hayixia606@163.com" 10 | } 11 | ], 12 | "minimum-stability": "dev", 13 | "require": { 14 | }, 15 | "autoload": { 16 | "psr-4": { 17 | "gmars\\nestedsets\\": "src" 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /application/admin/model/Ads.php: -------------------------------------------------------------------------------- 1 | 'required', 17 | 'url|广告地址' => 'required|url', 18 | ]; 19 | //预设场景 20 | public $_scene = [ 21 | 'global' => [], 22 | 'doEdit' => ['title', 'url'], 23 | 'doAdd' => ['title', 'url'] 24 | ]; 25 | 26 | } 27 | -------------------------------------------------------------------------------- /application/admin/model/AuthMenu.php: -------------------------------------------------------------------------------- 1 | hasMany('AuthItems', 'menu_id'); 24 | } 25 | public function withAuthItems() 26 | { 27 | return $this->with('AuthItems'); 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /vendor/topthink/think-captcha/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "topthink/think-captcha", 3 | "description": "captcha package for thinkphp5", 4 | "authors": [ 5 | { 6 | "name": "yunwuxin", 7 | "email": "448901948@qq.com" 8 | } 9 | ], 10 | "license": "Apache-2.0", 11 | "require": { 12 | "topthink/framework": "5.1.*" 13 | }, 14 | "autoload": { 15 | "psr-4": { 16 | "think\\captcha\\": "src/" 17 | }, 18 | "files": [ 19 | "src/helper.php" 20 | ] 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /application/admin/model/Message.php: -------------------------------------------------------------------------------- 1 | 'required', 20 | 'content|内容' => 'required' 21 | ]; 22 | //预设场景 23 | public $_scene = [ 24 | 'global' => [], 25 | 'doEdit' => ['title', 'content'], 26 | 'doAdd' => ['title', 'content'] 27 | ]; 28 | 29 | } 30 | -------------------------------------------------------------------------------- /application/admin/model/FriendLink.php: -------------------------------------------------------------------------------- 1 | 'required', 20 | 'url|链接地址' => 'required|url', 21 | ]; 22 | //预设场景 23 | public $_scene = [ 24 | 'global' => [], 25 | 'doEdit' => ['name', 'url'], 26 | 'doAdd' => ['name', 'url'] 27 | ]; 28 | 29 | } 30 | -------------------------------------------------------------------------------- /application/admin/model/Nav.php: -------------------------------------------------------------------------------- 1 | 'required', 20 | 'nav_url|导航地址' => 'required', 21 | ]; 22 | //预设场景 23 | public $_scene = [ 24 | 'global' => [], 25 | 'doEdit' => ['nav_name', 'nav_url'], 26 | 'doAdd' => ['nav_name', 'nav_url'] 27 | ]; 28 | 29 | } 30 | -------------------------------------------------------------------------------- /application/admin/model/AuthRole.php: -------------------------------------------------------------------------------- 1 | belongsToMany('AuthItems', 'AuthRoleItems', 'items_id', 'role_id'); 24 | } 25 | public function withAuthItems() 26 | { 27 | return $this->with('AuthItems'); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /application/admin/model/OrderGoods.php: -------------------------------------------------------------------------------- 1 | belongsTo('Goods', 'goods_id'); 24 | } 25 | 26 | public function goodsImages() 27 | { 28 | return $this->belongsTo('GoodsImages', 'goods_id', 'goods_id'); 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /application/admin/model/GoodsCat.php: -------------------------------------------------------------------------------- 1 | 'required' 20 | ]; 21 | //预设场景 22 | public $_scene = [ 23 | 'global' => [], 24 | 'doEdit' => ['name'], 25 | 'doAdd' => ['name'] 26 | ]; 27 | 28 | public function goods() 29 | { 30 | return $this->hasMany('Goods'); 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /application/admin/model/AttrGroup.php: -------------------------------------------------------------------------------- 1 | 'required' 20 | ]; 21 | //预设场景 22 | public $_scene = [ 23 | 'global' => [], 24 | 'doEdit' => ['group_name'], 25 | 'doAdd' => ['group_name'] 26 | ]; 27 | 28 | public function attr() 29 | { 30 | return $this->hasMany('Attr'); 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /vendor/topthink/think-installer/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "topthink/think-installer", 3 | "type": "composer-plugin", 4 | "require": { 5 | "composer-plugin-api": "^1.0" 6 | }, 7 | "require-dev": { 8 | "composer/composer": "1.0.*@dev" 9 | }, 10 | "license": "Apache-2.0", 11 | "authors": [ 12 | { 13 | "name": "yunwuxin", 14 | "email": "448901948@qq.com" 15 | } 16 | ], 17 | "autoload": { 18 | "psr-4": { 19 | "think\\composer\\": "src" 20 | } 21 | }, 22 | "extra": { 23 | "class": "think\\composer\\Plugin" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /vendor/topthink/think-image/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "topthink/think-image", 3 | "description": "The ThinkPHP5 Image Package", 4 | "license": "Apache-2.0", 5 | "authors": [ 6 | { 7 | "name": "yunwuxin", 8 | "email": "448901948@qq.com" 9 | } 10 | ], 11 | "require": { 12 | "ext-gd": "*" 13 | }, 14 | "require-dev": { 15 | "topthink/framework": "^5.0", 16 | "phpunit/phpunit": "4.8.*" 17 | }, 18 | "config": { 19 | "preferred-install": "dist" 20 | }, 21 | "autoload": { 22 | "psr-4": { 23 | "think\\": "src" 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /vendor/gmars/tp5-rbac/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "gmars/tp5-rbac", 3 | "description": "这个扩展是基于thinkPHP5框架的RBAC权限验证的扩展。使用本扩展能够快速的将RBAC权限控制器模块引入到自己的系统中。原则上本模块适合于任何PHP框架但是由于使用了thinkPHP5的特性所以使用composer安装到其他框架时需要做相应的修改。模块所需要的扩展库可以通过thinkPHP5的migration来做数据迁移。", 4 | "type": "library", 5 | "license": "MIT", 6 | "authors": [ 7 | { 8 | "name": "weiyongqiang", 9 | "email": "hayixia606@163.com" 10 | } 11 | ], 12 | "minimum-stability": "dev", 13 | "require": { 14 | "topthink/think-migration": "*", 15 | "gmars/tp5-nestedsets": "dev-master" 16 | }, 17 | "autoload": { 18 | "psr-4": { 19 | "gmars\\rbac\\": "src" 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /public/static/layui/lay2.2/modules/mobile.js: -------------------------------------------------------------------------------- 1 | /** 2 | 3 | @Name:layui 移动模块入口 | 构建后则为移动模块集合 4 | @Author:贤心 5 | @License:MIT 6 | 7 | */ 8 | 9 | 10 | if(!layui['layui.mobile']){ 11 | layui.config({ 12 | base: layui.cache.dir + 'lay/modules/mobile/' 13 | }).extend({ 14 | 'layer-mobile': 'layer-mobile' 15 | ,'zepto': 'zepto' 16 | ,'upload-mobile': 'upload-mobile' 17 | ,'layim-mobile': 'layim-mobile' 18 | }); 19 | } 20 | 21 | layui.define([ 22 | 'layer-mobile' 23 | ,'zepto' 24 | ,'layim-mobile' 25 | ], function(exports){ 26 | exports('mobile', { 27 | layer: layui['layer-mobile'] //弹层 28 | ,layim: layui['layim-mobile'] //WebIM 29 | }); 30 | }); -------------------------------------------------------------------------------- /application/admin/model/ArticleCat.php: -------------------------------------------------------------------------------- 1 | 'required' 21 | ]; 22 | //预设场景 23 | public $_scene = [ 24 | 'global' => [], 25 | 'doEdit' => ['type_name'], 26 | 'doAdd' => ['type_name'] 27 | ]; 28 | 29 | public function article() 30 | { 31 | return $this->hasMany('Article'); 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /application/provider.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | // 应用容器绑定定义 13 | return [ 14 | ]; 15 | -------------------------------------------------------------------------------- /application/command.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | return [ 13 | 'app\admin\crontab\SubOrders' 14 | ]; 15 | -------------------------------------------------------------------------------- /vendor/topthink/think-installer/src/Plugin.php: -------------------------------------------------------------------------------- 1 | getInstallationManager(); 15 | 16 | //框架核心 17 | $manager->addInstaller(new ThinkFramework($io, $composer)); 18 | 19 | //单元测试 20 | $manager->addInstaller(new ThinkTesting($io, $composer)); 21 | 22 | //扩展 23 | $manager->addInstaller(new ThinkExtend($io, $composer)); 24 | 25 | } 26 | } -------------------------------------------------------------------------------- /application/admin/model/Delivery.php: -------------------------------------------------------------------------------- 1 | 'required', 20 | 'first_price|首件运费' => 'required|number', 21 | 'other_price|加件运费' => 'required|number' 22 | ]; 23 | //预设场景 24 | public $_scene = [ 25 | 'global' => [], 26 | 'doEdit' => ['delivery_name', 'first_price', 'other_price'], 27 | 'doAdd' => ['delivery_name', 'first_price', 'other_price'] 28 | ]; 29 | 30 | } 31 | -------------------------------------------------------------------------------- /application/admin/view/Database/backup.html: -------------------------------------------------------------------------------- 1 | {include file='head'} 2 | 3 |
4 |
5 |
6 | 数据备份 7 |
8 | 9 |
10 |
11 | 12 |
13 |
14 | 15 | 16 | -------------------------------------------------------------------------------- /application/admin/view/head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 商城后台管理 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 程序是基于thinkphp5.19 + layui3.0开发的商城后台,关于layui可到这里了解下https://www.layui.com/ 2 | 另外说明一下本程序虽然是基于thinkphp5,但用法还是有点不一样的。本程序是将数据验证整合进了model层(有点类似yii2),而不是官方文档里面写的另分validate层。 3 | 4 | thinkphp5不同版本命名大小写有点小变化,本程序是php文件名与类名是保持一致的,模板与方法名一致, 5 | 即配置中url_convert设为false; 6 | 7 | 其他可以看下面演示图 8 | 9 | ![图片1](https://github.com/phpvcl/shop/blob/master/readme/01.png) 10 | 11 | ![图片2](https://github.com/phpvcl/shop/blob/master/readme/02.png) 12 | 13 | ![图片3](https://github.com/phpvcl/shop/blob/master/readme/03.png) 14 | 15 | ![图片4](https://github.com/phpvcl/shop/blob/master/readme/04.png) 16 | 17 | ![图片5](https://github.com/phpvcl/shop/blob/master/readme/05.png) 18 | 19 | ![图片6](https://github.com/phpvcl/shop/blob/master/readme/06.png) -------------------------------------------------------------------------------- /vendor/topthink/think-image/src/image/Exception.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | namespace think\image; 13 | 14 | 15 | class Exception extends \RuntimeException 16 | { 17 | 18 | } -------------------------------------------------------------------------------- /application/admin/model/Payment.php: -------------------------------------------------------------------------------- 1 | 'required', 20 | 'fee|费用' => 'number', 21 | 'checkcode|校验码' => 'required', 22 | 'username|商号' => 'required', 23 | 'password|密钥' => 'required' 24 | ]; 25 | //预设场景 26 | public $_scene = [ 27 | 'global' => [], 28 | 'doEdit' => ['pay_name', 'fee', 'checkcode', 'username', 'password'], 29 | 'doAdd' => ['pay_name', 'fee', 'checkcode', 'username', 'password'] 30 | ]; 31 | 32 | } 33 | -------------------------------------------------------------------------------- /vendor/topthink/think-image/phpunit.xml: -------------------------------------------------------------------------------- 1 | 2 | 12 | 13 | 14 | ./tests/ 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /vendor/topthink/think-migration/src/Seeder.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | namespace think\migration; 12 | 13 | use Phinx\Seed\AbstractSeed; 14 | 15 | class Seeder extends AbstractSeed 16 | { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /application/admin/model/Attr.php: -------------------------------------------------------------------------------- 1 | 'required|number', 20 | 'attr_name|属性名' => 'required', 21 | 'attr_value|属性值' => 'required' 22 | ]; 23 | //预设场景 24 | public $_scene = [ 25 | 'global' => [], 26 | 'doEdit' => ['attr_group_id', 'attr_name', 'attr_value'], 27 | 'doAdd' => ['attr_group_id', 'attr_name', 'attr_value'] 28 | ]; 29 | 30 | public function attrGroup() 31 | { 32 | return $this->belongsTo('AttrGroup'); 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /route/route.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | Route::get('think', function () { 13 | return 'hello,ThinkPHP5!'; 14 | }); 15 | 16 | Route::get('hello/:name', 'index/hello'); 17 | 18 | return [ 19 | 20 | ]; 21 | -------------------------------------------------------------------------------- /public/router.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | // $Id$ 12 | 13 | if (is_file($_SERVER["DOCUMENT_ROOT"] . $_SERVER["SCRIPT_NAME"])) { 14 | return false; 15 | } else { 16 | require __DIR__ . "/index.php"; 17 | } 18 | -------------------------------------------------------------------------------- /vendor/composer/autoload_psr4.php: -------------------------------------------------------------------------------- 1 | array($vendorDir . '/topthink/think-migration/src'), 10 | 'think\\composer\\' => array($vendorDir . '/topthink/think-installer/src'), 11 | 'think\\captcha\\' => array($vendorDir . '/topthink/think-captcha/src'), 12 | 'think\\' => array($vendorDir . '/topthink/think-image/src'), 13 | 'gmars\\rbac\\' => array($vendorDir . '/gmars/tp5-rbac/src'), 14 | 'gmars\\nestedsets\\' => array($vendorDir . '/gmars/tp5-nestedsets/src'), 15 | 'app\\' => array($baseDir . '/application'), 16 | 'Phinx\\' => array($vendorDir . '/topthink/think-migration/phinx/src/Phinx'), 17 | ); 18 | -------------------------------------------------------------------------------- /application/admin/model/Users.php: -------------------------------------------------------------------------------- 1 | 'required|unique', 20 | 'password|密码' => 'required|compare:repassword|md5', 21 | 'integral|积分' =>'>=:0' 22 | ]; 23 | //预设场景 24 | public $_scene = [ 25 | 'global' => [], 26 | 'doEdit' => [], 27 | 'modifyPassword' => ['password', 'integral'], 28 | 'doAdd' => ['username', 'password', 'integral'] 29 | ]; 30 | public function address() 31 | { 32 | return $this->hasMany('Address', 'user_id'); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /application/admin/model/Order.php: -------------------------------------------------------------------------------- 1 | belongsTo('Users'); 24 | } 25 | 26 | public function delivery() 27 | { 28 | return $this->belongsTo('Delivery', 'delivery_type'); 29 | } 30 | 31 | public function payment() 32 | { 33 | return $this->belongsTo('Payment', 'pay_type'); 34 | } 35 | 36 | public function orderGoods() 37 | { 38 | return $this->hasMany('OrderGoods', 'order_no', 'order_no'); 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /public/index.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | // [ 应用入口文件 ] 13 | namespace think; 14 | 15 | // 加载基础文件 16 | require __DIR__ . '/../thinkphp/base.php'; 17 | 18 | // 支持事先使用静态方法设置Request对象和Config对象 19 | 20 | // 执行应用并响应 21 | Container::get('app')->run()->send(); 22 | -------------------------------------------------------------------------------- /think: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env php 2 | 11 | // +---------------------------------------------------------------------- 12 | 13 | namespace think; 14 | 15 | // 加载基础文件 16 | require __DIR__ . '/thinkphp/base.php'; 17 | // 应用初始化 18 | Container::get('app')->path(__DIR__ . '/application/')->initialize(); 19 | 20 | // 控制台初始化 21 | Console::init(); -------------------------------------------------------------------------------- /vendor/topthink/think-image/tests/autoload.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | define('TEST_PATH', __DIR__ . '/'); 12 | // 加载框架基础文件 13 | require __DIR__ . '/../thinkphp/base.php'; 14 | \think\Loader::addNamespace('tests', TEST_PATH); 15 | \think\Loader::addNamespace('think', __DIR__ . '/../src/'); -------------------------------------------------------------------------------- /application/admin/crontab/SubOrders.php: -------------------------------------------------------------------------------- 1 | setName('SubOrders')->setDescription('订阅秒杀订单消息');; 15 | } 16 | protected function execute(Input $input, Output $output) 17 | { 18 | $redis = new \Redis(); 19 | $redis->pconnect('127.0.0.1', 6379, 0); 20 | $redis->subscribe(array($this->channel), array($this, 'callback')); 21 | } 22 | 23 | // 回调函数,这里写处理逻辑 24 | public function callback($redis, $channelName, $message) 25 | { 26 | echo $channelName, "==>", $message, PHP_EOL; 27 | } 28 | } -------------------------------------------------------------------------------- /application/admin/model/Article.php: -------------------------------------------------------------------------------- 1 | 'required', 20 | 'content|文章内容' => 'required', 21 | 'article_cat_id|文章分类' => 'required|number', 22 | 'is_hot' => 'default:0', 23 | 'is_top' => 'default:0' 24 | ]; 25 | //预设场景 26 | public $_scene = [ 27 | 'global' => [], 28 | 'doEdit' => ['title', 'content', 'article_cat_id', 'is_hot', 'is_top'], 29 | 'doAdd' => ['title', 'content', 'article_cat_id'] 30 | ]; 31 | 32 | public function articleCat() 33 | { 34 | return $this->belongsTo('ArticleCat'); 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /thinkphp/library/think/route/dispatch/Response.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | namespace think\route\dispatch; 13 | 14 | use think\route\Dispatch; 15 | 16 | class Response extends Dispatch 17 | { 18 | public function exec() 19 | { 20 | return $this->dispatch; 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /config/middleware.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | // +---------------------------------------------------------------------- 13 | // | 中间件配置 14 | // +---------------------------------------------------------------------- 15 | return [ 16 | // 默认中间件命名空间 17 | 'default_namespace' => 'app\\http\\middleware\\', 18 | ]; 19 | -------------------------------------------------------------------------------- /thinkphp/library/think/exception/RouteNotFoundException.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | namespace think\exception; 13 | 14 | class RouteNotFoundException extends HttpException 15 | { 16 | 17 | public function __construct() 18 | { 19 | parent::__construct(404, 'Route Not Found'); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /application/admin/model/AuthAdmin.php: -------------------------------------------------------------------------------- 1 | 'required|unique', 21 | 'password|密码' => 'required|compare:repassword|md5' 22 | ]; 23 | //预设场景 24 | public $_scene = [ 25 | 'global' => [], 26 | 'doEdit' => ['username'], 27 | 'modifyPassword' => ['password'], 28 | 'doAdd' => ['username', 'password'], 29 | 'doEditAdminInfo' => ['username', 'password'] 30 | ]; 31 | 32 | public function authRole() 33 | { 34 | return $this->belongsToMany('AuthRole', 'AuthAdminRole', 'role_id', 'admin_id'); 35 | } 36 | 37 | 38 | } 39 | -------------------------------------------------------------------------------- /config/console.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | // +---------------------------------------------------------------------- 13 | // | 控制台配置 14 | // +---------------------------------------------------------------------- 15 | return [ 16 | 'name' => 'Think Console', 17 | 'version' => '0.1', 18 | 'user' => null, 19 | ]; 20 | -------------------------------------------------------------------------------- /thinkphp/tpl/default_index.tpl: -------------------------------------------------------------------------------- 1 | *{ padding: 0; margin: 0; } div{ padding: 4px 48px;} a{color:#2E5CD5;cursor: pointer;text-decoration: none} a:hover{text-decoration:underline; } body{ background: #fff; font-family: "Century Gothic","Microsoft yahei"; color: #333;font-size:18px;} h1{ font-size: 100px; font-weight: normal; margin-bottom: 12px; } p{ line-height: 1.6em; font-size: 42px }

:)

ThinkPHP V5.1
12载初心不改(2006-2018) - 你值得信赖的PHP框架

'; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /application/admin/view/Database/query.html: -------------------------------------------------------------------------------- 1 | {include file='head'} 2 | 3 |
4 |
5 |
6 | 7 |
8 | 9 |
10 | 11 |
12 |
13 | 14 | 15 |
16 |
17 |
18 |
19 | 20 | 21 | -------------------------------------------------------------------------------- /vendor/topthink/think-migration/src/config.php: -------------------------------------------------------------------------------- 1 | 8 | // +---------------------------------------------------------------------- 9 | 10 | \think\Console::addDefaultCommands([ 11 | "think\\migration\\command\\migrate\\Create", 12 | "think\\migration\\command\\migrate\\Run", 13 | "think\\migration\\command\\migrate\\Rollback", 14 | "think\\migration\\command\\migrate\\Breakpoint", 15 | "think\\migration\\command\\migrate\\Status", 16 | "think\\migration\\command\\seed\\Create", 17 | "think\\migration\\command\\seed\\Run", 18 | ]); 19 | -------------------------------------------------------------------------------- /thinkphp/library/think/route/dispatch/Redirect.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | namespace think\route\dispatch; 13 | 14 | use think\Response; 15 | use think\route\Dispatch; 16 | 17 | class Redirect extends Dispatch 18 | { 19 | public function exec() 20 | { 21 | return Response::create($this->dispatch, 'redirect')->code($this->code); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /vendor/topthink/think-captcha/src/CaptchaController.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | namespace think\captcha; 13 | 14 | use think\facade\Config; 15 | 16 | class CaptchaController 17 | { 18 | public function index($id = "") 19 | { 20 | $captcha = new Captcha((array) Config::pull('captcha')); 21 | return $captcha->entry($id); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /vendor/topthink/think-migration/phinx/src/Phinx/Migration/Migration.template.php.dist: -------------------------------------------------------------------------------- 1 | 'required|email', 20 | 'domain|域名' => 'required|url', 21 | 'tel' => 'required|number', 22 | 'order_prex' => 'required', 23 | 'smtp_user' => 'required', 24 | 'smtp_pwd' => 'required', 25 | 'smtp_server' => 'required', 26 | 'smtp_port|SMTP端口' => 'required|integer', 27 | ]; 28 | //预设场景 29 | public $_scene = [ 30 | 'global' => [], 31 | 'setConfig' => ['email', 'domain'], 32 | 'setEmailconfig' => [], 33 | 'setRules' => [] 34 | ]; 35 | //设置提示错误信息 36 | public $_errorMsg = [ 37 | 'email.email' => '邮箱出错了' 38 | ]; 39 | 40 | } 41 | -------------------------------------------------------------------------------- /application/admin/model/AdminMessage.php: -------------------------------------------------------------------------------- 1 | 'session:admin_id', 16 | 'receiver_id|接收人' => 'required', 17 | 'title|标题' => 'required', 18 | 'message|留言' => 'required', 19 | 'send_time' => 'default:time' 20 | ]; 21 | //预设场景 22 | public $_scene = [ 23 | 'global' => [], 24 | 'doAdd' => ['sender_id','receiver_id', 'title', 'message', 'send_time'] 25 | ]; 26 | 27 | public function authAdmin() 28 | { 29 | return $this->belongsTo('AuthAdmin', 'receiver_id'); 30 | } 31 | public function authAdminSender() 32 | { 33 | return $this->belongsTo('AuthAdmin', 'sender_id'); 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /vendor/topthink/think-migration/src/command/stubs/migrate.stub: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | // +---------------------------------------------------------------------- 13 | // | 缓存设置 14 | // +---------------------------------------------------------------------- 15 | 16 | return [ 17 | // 驱动方式 18 | 'type' => 'File', 19 | // 缓存保存目录 20 | 'path' => '', 21 | // 缓存前缀 22 | 'prefix' => '', 23 | // 缓存有效期 0表示永久缓存 24 | 'expire' => 0, 25 | ]; 26 | -------------------------------------------------------------------------------- /application/admin/view/Area/edit.html: -------------------------------------------------------------------------------- 1 | {include file='head'} 2 | 3 |
4 |
5 |
6 | 7 |
8 | 9 |
10 |
11 | 12 |
13 |
14 | 15 | 16 |
17 |
18 |
19 |
20 | 21 | 22 | -------------------------------------------------------------------------------- /application/tags.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | // 应用行为扩展定义文件 13 | return [ 14 | // 应用初始化 15 | 'app_init' => [], 16 | // 应用开始 17 | 'app_begin' => [], 18 | // 模块初始化 19 | 'module_init' => [], 20 | // 操作开始执行 21 | 'action_begin' => [], 22 | // 视图内容过滤 23 | 'view_filter' => [], 24 | // 日志写入 25 | 'log_write' => [], 26 | // 应用结束 27 | 'app_end' => [], 28 | ]; 29 | -------------------------------------------------------------------------------- /thinkphp/library/think/route/dispatch/Callback.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | namespace think\route\dispatch; 13 | 14 | use think\route\Dispatch; 15 | 16 | class Callback extends Dispatch 17 | { 18 | public function exec() 19 | { 20 | // 执行回调方法 21 | $vars = array_merge($this->request->param(), $this->param); 22 | 23 | return $this->app->invoke($this->dispatch, $vars); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "topthink/think", 3 | "description": "the new thinkphp framework", 4 | "type": "project", 5 | "keywords": [ 6 | "framework", 7 | "thinkphp", 8 | "ORM" 9 | ], 10 | "homepage": "http://thinkphp.cn/", 11 | "license": "Apache-2.0", 12 | "authors": [ 13 | { 14 | "name": "liu21st", 15 | "email": "liu21st@gmail.com" 16 | } 17 | ], 18 | "require": { 19 | "php": ">=5.6.0", 20 | "topthink/framework": "5.1.*", 21 | "topthink/think-captcha": "^2.0", 22 | "topthink/think-migration": "*", 23 | "gmars/tp5-nestedsets": "dev-master", 24 | "gmars/tp5-rbac": "^1.3", 25 | "topthink/think-image": "^1.0" 26 | }, 27 | "autoload": { 28 | "psr-4": { 29 | "app\\": "application" 30 | } 31 | }, 32 | "extra": { 33 | "think-path": "thinkphp" 34 | }, 35 | "config": { 36 | "preferred-install": "dist" 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /thinkphp/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "topthink/framework", 3 | "description": "the new thinkphp framework", 4 | "type": "think-framework", 5 | "keywords": [ 6 | "framework", 7 | "thinkphp", 8 | "ORM" 9 | ], 10 | "homepage": "http://thinkphp.cn/", 11 | "license": "Apache-2.0", 12 | "authors": [ 13 | { 14 | "name": "liu21st", 15 | "email": "liu21st@gmail.com" 16 | }, 17 | { 18 | "name": "yunwuxin", 19 | "email": "448901948@qq.com" 20 | } 21 | ], 22 | "require": { 23 | "php": ">=5.6.0", 24 | "topthink/think-installer": "2.*" 25 | }, 26 | "require-dev": { 27 | "phpunit/phpunit": "^5.0|^6.0", 28 | "johnkary/phpunit-speedtrap": "^1.0", 29 | "mikey179/vfsStream": "~1.6", 30 | "phploc/phploc": "2.*", 31 | "sebastian/phpcpd": "2.*", 32 | "squizlabs/php_codesniffer": "2.*", 33 | "phpdocumentor/reflection-docblock": "^2.0" 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /thinkphp/library/think/route/dispatch/View.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | namespace think\route\dispatch; 13 | 14 | use think\Response; 15 | use think\route\Dispatch; 16 | 17 | class View extends Dispatch 18 | { 19 | public function exec() 20 | { 21 | // 渲染模板输出 22 | $vars = array_merge($this->request->param(), $this->param); 23 | 24 | return Response::create($this->dispatch, 'view')->assign($vars); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /public/static/js/module/tool.js: -------------------------------------------------------------------------------- 1 | layui.define(['jquery'], function (exports) { 2 | var $ = layui.jquery; 3 | var tool = { 4 | /** 5 | * 移除数组的值 6 | * @param arr 数组 7 | * @param val 删除的值 8 | */ 9 | removeByValue: function (arr, val) { 10 | for (var i = 0; i < arr.length; i++) { 11 | if (arr[i] == val) { 12 | arr.splice(i, 1); 13 | break; 14 | } 15 | } 16 | }, 17 | /** 18 | * 转义字符,防止xxs 19 | * @param str 20 | * @returns {string} 21 | */ 22 | stringEncode:function (str){ 23 | var div=document.createElement('div'); 24 | if(div.innerText){ 25 | div.innerText=str; 26 | }else{ 27 | div.textContent=str;//Support firefox 28 | } 29 | return div.innerHTML; 30 | } 31 | }; 32 | 33 | exports('tool', tool); 34 | }); -------------------------------------------------------------------------------- /application/admin/view/Area/add.html: -------------------------------------------------------------------------------- 1 | {include file='head'} 2 | 3 |
4 |
5 |
6 | 7 |
8 | 9 |
10 |
11 | 12 |
13 |
14 | 15 | 16 | 17 |
18 |
19 |
20 |
21 | 22 | 23 | -------------------------------------------------------------------------------- /public/static/layui/css/modules/code.css: -------------------------------------------------------------------------------- 1 | /** layui-v2.3.0 MIT License By https://www.layui.com */ 2 | html #layuicss-skincodecss{display:none;position:absolute;width:1989px}.layui-code-h3,.layui-code-view{position:relative;font-size:12px}.layui-code-view{display:block;margin:10px 0;padding:0;border:1px solid #e2e2e2;border-left-width:6px;background-color:#F2F2F2;color:#333;font-family:Courier New}.layui-code-h3{padding:0 10px;height:32px;line-height:32px;border-bottom:1px solid #e2e2e2}.layui-code-h3 a{position:absolute;right:10px;top:0;color:#999}.layui-code-view .layui-code-ol{position:relative;overflow:auto}.layui-code-view .layui-code-ol li{position:relative;margin-left:45px;line-height:20px;padding:0 5px;border-left:1px solid #e2e2e2;list-style-type:decimal-leading-zero;*list-style-type:decimal;background-color:#fff}.layui-code-view pre{margin:0}.layui-code-notepad{border:1px solid #0C0C0C;border-left-color:#3F3F3F;background-color:#0C0C0C;color:#C2BE9E}.layui-code-notepad .layui-code-h3{border-bottom:none}.layui-code-notepad .layui-code-ol li{background-color:#3F3F3F;border-left:none} -------------------------------------------------------------------------------- /thinkphp/library/think/config/driver/Json.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | namespace think\config\driver; 13 | 14 | class Json 15 | { 16 | protected $config; 17 | 18 | public function __construct($config) 19 | { 20 | if (is_file($config)) { 21 | $config = file_get_contents($config); 22 | } 23 | 24 | $this->config = $config; 25 | } 26 | 27 | public function parse() 28 | { 29 | return json_decode($this->config, true); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /vendor/topthink/think-migration/phinx/LICENSE: -------------------------------------------------------------------------------- 1 | (The MIT license) 2 | 3 | Copyright (c) 2014 Rob Morgan 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /vendor/topthink/think-migration/src/Migrator.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | namespace think\migration; 12 | 13 | use Phinx\Migration\AbstractMigration; 14 | use think\migration\db\Table; 15 | 16 | class Migrator extends AbstractMigration 17 | { 18 | /** 19 | * @param string $tableName 20 | * @param array $options 21 | * @return Table 22 | */ 23 | public function table($tableName, $options = []) 24 | { 25 | return new Table($tableName, $options, $this->getAdapter()); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /thinkphp/library/think/config/driver/Ini.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | namespace think\config\driver; 13 | 14 | class Ini 15 | { 16 | protected $config; 17 | 18 | public function __construct($config) 19 | { 20 | $this->config = $config; 21 | } 22 | 23 | public function parse() 24 | { 25 | if (is_file($this->config)) { 26 | return parse_ini_file($this->config, true); 27 | } else { 28 | return parse_ini_string($this->config, true); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /thinkphp/library/think/exception/HttpResponseException.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | namespace think\exception; 13 | 14 | use think\Response; 15 | 16 | class HttpResponseException extends \RuntimeException 17 | { 18 | /** 19 | * @var Response 20 | */ 21 | protected $response; 22 | 23 | public function __construct(Response $response) 24 | { 25 | $this->response = $response; 26 | } 27 | 28 | public function getResponse() 29 | { 30 | return $this->response; 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /thinkphp/library/think/console/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2004-2016 Fabien Potencier 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is furnished 8 | to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. -------------------------------------------------------------------------------- /config/trace.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | // +---------------------------------------------------------------------- 13 | // | Trace设置 开启 app_trace 后 有效 14 | // +---------------------------------------------------------------------- 15 | return [ 16 | // 内置Html Console 支持扩展 17 | 'type' => 'Html', 18 | 'trace_tabs' => [ 19 | 'base'=>'基本', 20 | 'file'=>'文件', 21 | 'info'=>'流程', 22 | 'error|notice|warning'=>'错误', 23 | 'sql'=>'SQL', 24 | 'debug'=>'调试', 25 | 'user'=>'用户' 26 | ] 27 | ]; 28 | -------------------------------------------------------------------------------- /thinkphp/library/think/console/output/driver/Nothing.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | namespace think\console\output\driver; 13 | 14 | use think\console\Output; 15 | 16 | class Nothing 17 | { 18 | 19 | public function __construct(Output $output) 20 | { 21 | // do nothing 22 | } 23 | 24 | public function write($messages, $newline = false, $options = Output::OUTPUT_NORMAL) 25 | { 26 | // do nothing 27 | } 28 | 29 | public function renderException(\Exception $e) 30 | { 31 | // do nothing 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /vendor/composer/LICENSE: -------------------------------------------------------------------------------- 1 | 2 | Copyright (c) Nils Adermann, Jordi Boggiano 3 | 4 | Permission is hereby granted, free of charge, to any person obtaining a copy 5 | of this software and associated documentation files (the "Software"), to deal 6 | in the Software without restriction, including without limitation the rights 7 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | copies of the Software, and to permit persons to whom the Software is furnished 9 | to do so, subject to the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be included in all 12 | copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 17 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 20 | THE SOFTWARE. 21 | 22 | -------------------------------------------------------------------------------- /thinkphp/library/think/exception/ClassNotFoundException.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | namespace think\exception; 13 | 14 | class ClassNotFoundException extends \RuntimeException 15 | { 16 | protected $class; 17 | public function __construct($message, $class = '') 18 | { 19 | $this->message = $message; 20 | $this->class = $class; 21 | } 22 | 23 | /** 24 | * 获取类名 25 | * @access public 26 | * @return string 27 | */ 28 | public function getClass() 29 | { 30 | return $this->class; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /thinkphp/library/think/response/Jump.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | namespace think\response; 13 | 14 | use think\Response; 15 | 16 | class Jump extends Response 17 | { 18 | protected $contentType = 'text/html'; 19 | 20 | /** 21 | * 处理数据 22 | * @access protected 23 | * @param mixed $data 要处理的数据 24 | * @return mixed 25 | * @throws \Exception 26 | */ 27 | protected function output($data) 28 | { 29 | $data = $this->app['view']->fetch($this->options['jump_template'], $data); 30 | return $data; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /vendor/gmars/tp5-rbac/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 weiyongqiang 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /vendor/topthink/think-image/tests/TestCase.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | namespace tests; 13 | 14 | use think\File; 15 | 16 | abstract class TestCase extends \PHPUnit_Framework_TestCase 17 | { 18 | 19 | protected function getJpeg() 20 | { 21 | return new File(TEST_PATH . 'images/test.jpg'); 22 | } 23 | 24 | protected function getPng() 25 | { 26 | return new File(TEST_PATH . 'images/test.png'); 27 | } 28 | 29 | protected function getGif() 30 | { 31 | return new File(TEST_PATH . 'images/test.gif'); 32 | } 33 | } -------------------------------------------------------------------------------- /vendor/gmars/tp5-nestedsets/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 weiyongqiang 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /public/static/layui/lay/modules/code.js: -------------------------------------------------------------------------------- 1 | /** layui-v2.3.0 MIT License By https://www.layui.com */ 2 | ;layui.define("jquery",function(e){"use strict";var a=layui.$,l="http://www.layui.com/doc/modules/code.html";e("code",function(e){var t=[];e=e||{},e.elem=a(e.elem||".layui-code"),e.about=!("about"in e)||e.about,e.elem.each(function(){t.push(this)}),layui.each(t.reverse(),function(t,i){var c=a(i),o=c.html();(c.attr("lay-encode")||e.encode)&&(o=o.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,""")),c.html('
  1. '+o.replace(/[\r\t\n]+/g,"
  2. ")+"
"),c.find(">.layui-code-h3")[0]||c.prepend('

'+(c.attr("lay-title")||e.title||"code")+(e.about?'layui.code':"")+"

");var d=c.find(">.layui-code-ol");c.addClass("layui-box layui-code-view"),(c.attr("lay-skin")||e.skin)&&c.addClass("layui-code-"+(c.attr("lay-skin")||e.skin)),(d.find("li").length/100|0)>0&&d.css("margin-left",(d.find("li").length/100|0)+"px"),(c.attr("lay-height")||e.height)&&d.css("max-height",c.attr("lay-height")||e.height)})})}).addcss("modules/code.css","skincodecss"); -------------------------------------------------------------------------------- /thinkphp/library/think/route/dispatch/Controller.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | namespace think\route\dispatch; 13 | 14 | use think\route\Dispatch; 15 | 16 | class Controller extends Dispatch 17 | { 18 | public function exec() 19 | { 20 | // 执行控制器的操作方法 21 | $vars = array_merge($this->request->param(), $this->param); 22 | 23 | return $this->app->action( 24 | $this->dispatch, $vars, 25 | $this->rule->getConfig('url_controller_layer'), 26 | $this->rule->getConfig('controller_suffix') 27 | ); 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /application/admin/view/AuthAdmin/notebook.html: -------------------------------------------------------------------------------- 1 | {include file='head'} 2 | 3 | 4 |
5 |
6 | 7 |
8 | 9 |
10 | 11 |
12 |
13 | 14 |
15 | 16 |
17 |
18 |
19 | 20 | 31 | 32 | -------------------------------------------------------------------------------- /config/log.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | // +---------------------------------------------------------------------- 13 | // | 日志设置 14 | // +---------------------------------------------------------------------- 15 | return [ 16 | // 日志记录方式,内置 file socket 支持扩展 17 | 'type' => 'File', 18 | // 日志保存目录 19 | 'path' => '', 20 | // 日志记录级别 21 | 'level' => [], 22 | // 单文件日志写入 23 | 'single' => false, 24 | // 独立日志级别 25 | 'apart_level' => [], 26 | // 最大日志文件数量 27 | 'max_files' => 0, 28 | // 是否关闭日志写入 29 | 'close' => true, 30 | ]; 31 | -------------------------------------------------------------------------------- /thinkphp/library/think/exception/TemplateNotFoundException.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | namespace think\exception; 13 | 14 | class TemplateNotFoundException extends \RuntimeException 15 | { 16 | protected $template; 17 | 18 | public function __construct($message, $template = '') 19 | { 20 | $this->message = $message; 21 | $this->template = $template; 22 | } 23 | 24 | /** 25 | * 获取模板文件 26 | * @access public 27 | * @return string 28 | */ 29 | public function getTemplate() 30 | { 31 | return $this->template; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /config/cookie.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | // +---------------------------------------------------------------------- 13 | // | Cookie设置 14 | // +---------------------------------------------------------------------- 15 | return [ 16 | // cookie 名称前缀 17 | 'prefix' => '', 18 | // cookie 保存时间 19 | 'expire' => 3600, 20 | // cookie 保存路径 21 | 'path' => '/', 22 | // cookie 有效域名 23 | 'domain' => '', 24 | // cookie 启用安全传输 25 | 'secure' => false, 26 | // httponly设置 27 | 'httponly' => '', 28 | // 是否使用 setcookie 29 | 'setcookie' => true, 30 | ]; 31 | -------------------------------------------------------------------------------- /thinkphp/library/think/console/command/Version.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | namespace think\console\command; 12 | 13 | use think\console\Command; 14 | use think\console\Input; 15 | use think\console\Output; 16 | use think\facade\App; 17 | 18 | class Version extends Command 19 | { 20 | protected function configure() 21 | { 22 | // 指令配置 23 | $this->setName('version') 24 | ->setDescription('show thinkphp framework version'); 25 | } 26 | 27 | protected function execute(Input $input, Output $output) 28 | { 29 | $output->writeln('v' . App::version()); 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /application/admin/view/Message/add.html: -------------------------------------------------------------------------------- 1 | {include file='head'} 2 | 3 |
4 |
5 |
6 | 7 |
8 | 9 |
10 |
11 | 12 |
13 | 14 |
15 | 16 | 17 |
18 |
19 | 20 | 21 |
22 |
23 |
24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /thinkphp/library/think/facade/Url.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | namespace think\facade; 13 | 14 | use think\Facade; 15 | 16 | /** 17 | * @see \think\Url 18 | * @mixin \think\Url 19 | * @method string build(string $url = '', mixed $vars = '', mixed $suffix = true, mixed $domain = false) static URL生成 支持路由反射 20 | * @method void root(string $root) static 指定当前生成URL地址的root 21 | */ 22 | class Url extends Facade 23 | { 24 | /** 25 | * 获取当前Facade对应类名(或者已经绑定的容器对象标识) 26 | * @access protected 27 | * @return string 28 | */ 29 | protected static function getFacadeClass() 30 | { 31 | return 'url'; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /thinkphp/library/think/exception/ValidateException.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | namespace think\exception; 13 | 14 | class ValidateException extends \RuntimeException 15 | { 16 | protected $error; 17 | 18 | public function __construct($error, $code = 0) 19 | { 20 | $this->error = $error; 21 | $this->message = is_array($error) ? implode("\n\r", $error) : $error; 22 | $this->code = $code; 23 | } 24 | 25 | /** 26 | * 获取验证错误信息 27 | * @access public 28 | * @return array|string 29 | */ 30 | public function getError() 31 | { 32 | return $this->error; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /thinkphp/library/think/console/command/make/stubs/controller.api.stub: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | namespace think\facade; 13 | 14 | use think\Facade; 15 | 16 | /** 17 | * @see \think\Env 18 | * @mixin \think\Env 19 | * @method void load(string $file) static 读取环境变量定义文件 20 | * @method mixed get(string $name = null, mixed $default = null) static 获取环境变量值 21 | * @method void set(mixed $env, string $value = null) static 设置环境变量值 22 | */ 23 | class Env extends Facade 24 | { 25 | /** 26 | * 获取当前Facade对应类名(或者已经绑定的容器对象标识) 27 | * @access protected 28 | * @return string 29 | */ 30 | protected static function getFacadeClass() 31 | { 32 | return 'env'; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /application/admin/view/AdminMessage/read.html: -------------------------------------------------------------------------------- 1 | {include file='head'} 2 | 3 |
4 |
5 | 6 |
7 |
{$records.authAdminSender.username}
8 |
9 |
10 |
11 | 12 |
13 |
{$records.authAdmin.username}
14 |
15 |
16 |
17 | 18 |
19 |
{$records.title}
20 |
21 |
22 |
23 | 24 |
25 |
{$records.message}
26 |
27 |
28 | 29 |
30 | 31 | 32 | -------------------------------------------------------------------------------- /application/admin/view/AttrGroup/add.html: -------------------------------------------------------------------------------- 1 | {include file='head'} 2 | 3 |
4 |
5 |
6 | 7 |
8 | 9 |
10 |
11 | 12 |
13 | 14 |
15 | 16 |
17 |
18 | 19 |
20 |
21 |
22 |
23 | 24 | 25 | -------------------------------------------------------------------------------- /thinkphp/library/think/facade/Build.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | namespace think\facade; 13 | 14 | use think\Facade; 15 | 16 | /** 17 | * @see \think\Build 18 | * @mixin \think\Build 19 | * @method void run(array $build = [], string $namespace = 'app', bool $suffix = false) static 根据传入的build资料创建目录和文件 20 | * @method void module(string $module = '', array $list = [], string $namespace = 'app', bool $suffix = false) static 创建模块 21 | */ 22 | class Build extends Facade 23 | { 24 | /** 25 | * 获取当前Facade对应类名(或者已经绑定的容器对象标识) 26 | * @access protected 27 | * @return string 28 | */ 29 | protected static function getFacadeClass() 30 | { 31 | return 'build'; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /application/admin/model/Goods.php: -------------------------------------------------------------------------------- 1 | 'required', 20 | 'goods_number|库存数量' => 'required|number', 21 | 'shop_price|商城价格' => 'number|>:0', 22 | 'content|商品详情' => 'required', 23 | 'reference_price|参考价格'=> 'number|>:0', 24 | 'is_on_sale' => 'default:0', 25 | 'is_integral' => 'default:0' 26 | ]; 27 | //预设场景 28 | public $_scene = [ 29 | 'global' => [], 30 | 'doEdit' => ['goods_name', 'goods_number', 'shop_price','reference_price', 'content', 'is_on_sale', 'is_integral'], 31 | 'doAdd' => ['goods_name', 'goods_number', 'shop_price','reference_price', 'content'] 32 | ]; 33 | 34 | public function attrGroup() 35 | { 36 | return $this->belongsTo('AttrGroup'); 37 | } 38 | 39 | public function goodsImages() 40 | { 41 | return $this->hasMany('GoodsImages', 'goods_id'); 42 | } 43 | 44 | public function goodsCat() 45 | { 46 | return $this->belongsTo('GoodsCat'); 47 | } 48 | 49 | 50 | } 51 | -------------------------------------------------------------------------------- /thinkphp/library/think/db/Expression.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | namespace think\db; 13 | 14 | class Expression 15 | { 16 | /** 17 | * 查询表达式 18 | * 19 | * @var string 20 | */ 21 | protected $value; 22 | 23 | /** 24 | * 创建一个查询表达式 25 | * 26 | * @param string $value 27 | * @return void 28 | */ 29 | public function __construct($value) 30 | { 31 | $this->value = $value; 32 | } 33 | 34 | /** 35 | * 获取表达式 36 | * 37 | * @return string 38 | */ 39 | public function getValue() 40 | { 41 | return $this->value; 42 | } 43 | 44 | public function __toString() 45 | { 46 | return (string) $this->value; 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /thinkphp/library/think/exception/HttpException.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | namespace think\exception; 13 | 14 | class HttpException extends \RuntimeException 15 | { 16 | private $statusCode; 17 | private $headers; 18 | 19 | public function __construct($statusCode, $message = null, \Exception $previous = null, array $headers = [], $code = 0) 20 | { 21 | $this->statusCode = $statusCode; 22 | $this->headers = $headers; 23 | 24 | parent::__construct($message, $code, $previous); 25 | } 26 | 27 | public function getStatusCode() 28 | { 29 | return $this->statusCode; 30 | } 31 | 32 | public function getHeaders() 33 | { 34 | return $this->headers; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /application/admin/view/AttrGroup/edit.html: -------------------------------------------------------------------------------- 1 | {include file='head'} 2 | 3 |
4 |
5 |
6 | 7 |
8 | 9 |
10 |
11 | 12 |
13 | 14 |
15 | 16 |
17 |
18 | 19 |
20 |
21 |
22 |
23 | 24 | 25 | -------------------------------------------------------------------------------- /thinkphp/library/think/console/command/make/Model.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | namespace think\console\command\make; 13 | 14 | use think\console\command\Make; 15 | 16 | class Model extends Make 17 | { 18 | protected $type = "Model"; 19 | 20 | protected function configure() 21 | { 22 | parent::configure(); 23 | $this->setName('make:model') 24 | ->setDescription('Create a new model class'); 25 | } 26 | 27 | protected function getStub() 28 | { 29 | return __DIR__ . DIRECTORY_SEPARATOR . 'stubs' . DIRECTORY_SEPARATOR . 'model.stub'; 30 | } 31 | 32 | protected function getNamespace($appNamespace, $module) 33 | { 34 | return parent::getNamespace($appNamespace, $module) . '\model'; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /thinkphp/library/think/db/exception/BindParamException.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | namespace think\db\exception; 13 | 14 | use think\exception\DbException; 15 | 16 | /** 17 | * PDO参数绑定异常 18 | */ 19 | class BindParamException extends DbException 20 | { 21 | 22 | /** 23 | * BindParamException constructor. 24 | * @access public 25 | * @param string $message 26 | * @param array $config 27 | * @param string $sql 28 | * @param array $bind 29 | * @param int $code 30 | */ 31 | public function __construct($message, $config, $sql, $bind, $code = 10502) 32 | { 33 | $this->setData('Bind Param', $bind); 34 | parent::__construct($message, $config, $sql, $code); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /config/template.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | // +---------------------------------------------------------------------- 13 | // | 模板设置 14 | // +---------------------------------------------------------------------- 15 | 16 | return [ 17 | // 模板引擎类型 支持 php think 支持扩展 18 | 'type' => 'Think', 19 | // 默认模板渲染规则 1 解析为小写+下划线 2 全部转换小写 3 保持操作方法 20 | 'auto_rule' => 3, 21 | // 模板路径 22 | 'view_path' => '', 23 | // 模板后缀 24 | 'view_suffix' => 'html', 25 | // 模板文件名分隔符 26 | 'view_depr' => DIRECTORY_SEPARATOR, 27 | // 模板引擎普通标签开始标记 28 | 'tpl_begin' => '{', 29 | // 模板引擎普通标签结束标记 30 | 'tpl_end' => '}', 31 | // 标签库标签开始标记 32 | 'taglib_begin' => '{', 33 | // 标签库标签结束标记 34 | 'taglib_end' => '}', 35 | ]; 36 | -------------------------------------------------------------------------------- /thinkphp/library/think/model/Pivot.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | namespace think\model; 13 | 14 | use think\Model; 15 | 16 | class Pivot extends Model 17 | { 18 | 19 | /** @var Model */ 20 | public $parent; 21 | 22 | protected $autoWriteTimestamp = false; 23 | 24 | /** 25 | * 架构函数 26 | * @access public 27 | * @param array|object $data 数据 28 | * @param Model $parent 上级模型 29 | * @param string $table 中间数据表名 30 | */ 31 | public function __construct($data = [], Model $parent = null, $table = '') 32 | { 33 | $this->parent = $parent; 34 | 35 | if (is_null($this->name)) { 36 | $this->name = $table; 37 | } 38 | 39 | parent::__construct($data); 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /thinkphp/library/think/facade/Config.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | namespace think\facade; 13 | 14 | use think\Facade; 15 | 16 | /** 17 | * @see \think\Config 18 | * @mixin \think\Config 19 | * @method bool has(string $name) static 检测配置是否存在 20 | * @method array pull(string $name) static 获取一级配置 21 | * @method mixed get(string $name,mixed $default = null) static 获取配置参数 22 | * @method mixed set(string $name, mixed $value = null) static 设置配置参数 23 | * @method array reset(string $prefix ='') static 重置配置参数 24 | */ 25 | class Config extends Facade 26 | { 27 | /** 28 | * 获取当前Facade对应类名(或者已经绑定的容器对象标识) 29 | * @access protected 30 | * @return string 31 | */ 32 | protected static function getFacadeClass() 33 | { 34 | return 'config'; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /application/admin/view/ArticleCat/add.html: -------------------------------------------------------------------------------- 1 | {include file='head'} 2 | 3 |
4 |
5 |
6 | 7 |
8 | 9 |
10 |
11 | 12 |
13 | 14 | 15 |
16 |
17 | 18 |
19 |
20 | 21 | 22 |
23 |
24 |
25 |
26 | 27 | 28 | -------------------------------------------------------------------------------- /thinkphp/library/think/config/driver/Xml.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | namespace think\config\driver; 13 | 14 | class Xml 15 | { 16 | protected $config; 17 | 18 | public function __construct($config) 19 | { 20 | $this->config = $config; 21 | } 22 | 23 | public function parse() 24 | { 25 | if (is_file($this->config)) { 26 | $content = simplexml_load_file($this->config); 27 | } else { 28 | $content = simplexml_load_string($this->config); 29 | } 30 | 31 | $result = (array) $content; 32 | foreach ($result as $key => $val) { 33 | if (is_object($val)) { 34 | $result[$key] = (array) $val; 35 | } 36 | } 37 | 38 | return $result; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /vendor/topthink/think-image/README.md: -------------------------------------------------------------------------------- 1 | # The ThinkPHP5 Image Package 2 | 3 | [![Build Status](https://img.shields.io/travis/top-think/think-image.svg)](https://travis-ci.org/top-think/think-image) 4 | [![Coverage Status](https://img.shields.io/codecov/c/github/top-think/think-image.svg)](https://codecov.io/github/top-think/think-image) 5 | [![Downloads](https://img.shields.io/github/downloads/top-think/think-image/total.svg)](https://github.com/top-think/think-image/releases) 6 | [![Releases](https://img.shields.io/github/release/top-think/think-image.svg)](https://github.com/top-think/think-image/releases/latest) 7 | [![Releases Downloads](https://img.shields.io/github/downloads/top-think/think-image/latest/total.svg)](https://github.com/top-think/think-image/releases/latest) 8 | [![Packagist Status](https://img.shields.io/packagist/v/top-think/think-image.svg)](https://packagist.org/packages/topthink/think-image) 9 | [![Packagist Downloads](https://img.shields.io/packagist/dt/top-think/think-image.svg)](https://packagist.org/packages/topthink/think-image) 10 | 11 | ## 安装 12 | 13 | > composer require topthink/think-image 14 | 15 | ## 使用 16 | 17 | ~~~ 18 | $image = \think\Image::open('./image.jpg'); 19 | 或者 20 | $image = \think\Image::open(request()->file('image')); 21 | 22 | 23 | $image->crop(...) 24 | ->thumb(...) 25 | ->water(...) 26 | ->text(....) 27 | ->save(..); 28 | 29 | ~~~ -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | 2 | ThinkPHP遵循Apache2开源协议发布,并提供免费使用。 3 | 版权所有Copyright © 2006-2016 by ThinkPHP (http://thinkphp.cn) 4 | All rights reserved。 5 | ThinkPHP® 商标和著作权所有者为上海顶想信息科技有限公司。 6 | 7 | Apache Licence是著名的非盈利开源组织Apache采用的协议。 8 | 该协议和BSD类似,鼓励代码共享和尊重原作者的著作权, 9 | 允许代码修改,再作为开源或商业软件发布。需要满足 10 | 的条件: 11 | 1. 需要给代码的用户一份Apache Licence ; 12 | 2. 如果你修改了代码,需要在被修改的文件中说明; 13 | 3. 在延伸的代码中(修改和有源代码衍生的代码中)需要 14 | 带有原来代码中的协议,商标,专利声明和其他原来作者规 15 | 定需要包含的说明; 16 | 4. 如果再发布的产品中包含一个Notice文件,则在Notice文 17 | 件中需要带有本协议内容。你可以在Notice中增加自己的 18 | 许可,但不可以表现为对Apache Licence构成更改。 19 | 具体的协议参考:http://www.apache.org/licenses/LICENSE-2.0 20 | 21 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 24 | FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 25 | COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 26 | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 27 | BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 28 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 29 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30 | LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 31 | ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 32 | POSSIBILITY OF SUCH DAMAGE. 33 | -------------------------------------------------------------------------------- /thinkphp/library/think/console/command/make/Middleware.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | namespace think\console\command\make; 13 | 14 | use think\console\command\Make; 15 | 16 | class Middleware extends Make 17 | { 18 | protected $type = "Middleware"; 19 | 20 | protected function configure() 21 | { 22 | parent::configure(); 23 | $this->setName('make:middleware') 24 | ->setDescription('Create a new middleware class'); 25 | } 26 | 27 | protected function getStub() 28 | { 29 | return __DIR__ . DIRECTORY_SEPARATOR . 'stubs' . DIRECTORY_SEPARATOR . 'middleware.stub'; 30 | } 31 | 32 | protected function getNamespace($appNamespace, $module) 33 | { 34 | return parent::getNamespace($appNamespace, 'http') . '\middleware'; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /thinkphp/library/think/facade/Middleware.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | namespace think\facade; 13 | 14 | use think\Facade; 15 | 16 | /** 17 | * @see \think\Middleware 18 | * @mixin \think\Middleware 19 | * @method void import(array $middlewares = []) static 批量设置中间件 20 | * @method void add(mixed $middleware) static 添加中间件到队列 21 | * @method void unshift(mixed $middleware) static 添加中间件到队列开头 22 | * @method array all() static 获取中间件队列 23 | * @method \think\Response dispatch(\think\Request $request) static 执行中间件调度 24 | */ 25 | class Middleware extends Facade 26 | { 27 | /** 28 | * 获取当前Facade对应类名(或者已经绑定的容器对象标识) 29 | * @access protected 30 | * @return string 31 | */ 32 | protected static function getFacadeClass() 33 | { 34 | return 'middleware'; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /application/admin/view/GoodsCat/edit.html: -------------------------------------------------------------------------------- 1 | {include file='head'} 2 | 3 |
4 |
5 |
6 | 7 |
8 | 9 |
10 |
11 | 12 |
13 | 14 | 15 |
16 |
17 | 18 |
19 |
20 | 21 |
22 |
23 |
24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /thinkphp/LICENSE.txt: -------------------------------------------------------------------------------- 1 | 2 | ThinkPHP遵循Apache2开源协议发布,并提供免费使用。 3 | 版权所有Copyright © 2006-2016 by ThinkPHP (http://thinkphp.cn) 4 | All rights reserved。 5 | ThinkPHP® 商标和著作权所有者为上海顶想信息科技有限公司。 6 | 7 | Apache Licence是著名的非盈利开源组织Apache采用的协议。 8 | 该协议和BSD类似,鼓励代码共享和尊重原作者的著作权, 9 | 允许代码修改,再作为开源或商业软件发布。需要满足 10 | 的条件: 11 | 1. 需要给代码的用户一份Apache Licence ; 12 | 2. 如果你修改了代码,需要在被修改的文件中说明; 13 | 3. 在延伸的代码中(修改和有源代码衍生的代码中)需要 14 | 带有原来代码中的协议,商标,专利声明和其他原来作者规 15 | 定需要包含的说明; 16 | 4. 如果再发布的产品中包含一个Notice文件,则在Notice文 17 | 件中需要带有本协议内容。你可以在Notice中增加自己的 18 | 许可,但不可以表现为对Apache Licence构成更改。 19 | 具体的协议参考:http://www.apache.org/licenses/LICENSE-2.0 20 | 21 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 24 | FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 25 | COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 26 | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 27 | BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 28 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 29 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30 | LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 31 | ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 32 | POSSIBILITY OF SUCH DAMAGE. 33 | -------------------------------------------------------------------------------- /application/admin/view/ArticleCat/edit.html: -------------------------------------------------------------------------------- 1 | {include file='head'} 2 | 3 |
4 |
5 |
6 | 7 |
8 | 9 |
10 |
11 | 12 |
13 | 14 | 15 |
16 |
17 | 18 |
19 |
20 | 21 |
22 |
23 |
24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /vendor/topthink/think-captcha/LICENSE: -------------------------------------------------------------------------------- 1 | 2 | ThinkPHP遵循Apache2开源协议发布,并提供免费使用。 3 | 版权所有Copyright © 2006-2016 by ThinkPHP (http://thinkphp.cn) 4 | All rights reserved。 5 | ThinkPHP® 商标和著作权所有者为上海顶想信息科技有限公司。 6 | 7 | Apache Licence是著名的非盈利开源组织Apache采用的协议。 8 | 该协议和BSD类似,鼓励代码共享和尊重原作者的著作权, 9 | 允许代码修改,再作为开源或商业软件发布。需要满足 10 | 的条件: 11 | 1. 需要给代码的用户一份Apache Licence ; 12 | 2. 如果你修改了代码,需要在被修改的文件中说明; 13 | 3. 在延伸的代码中(修改和有源代码衍生的代码中)需要 14 | 带有原来代码中的协议,商标,专利声明和其他原来作者规 15 | 定需要包含的说明; 16 | 4. 如果再发布的产品中包含一个Notice文件,则在Notice文 17 | 件中需要带有本协议内容。你可以在Notice中增加自己的 18 | 许可,但不可以表现为对Apache Licence构成更改。 19 | 具体的协议参考:http://www.apache.org/licenses/LICENSE-2.0 20 | 21 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 24 | FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 25 | COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 26 | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 27 | BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 28 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 29 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30 | LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 31 | ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 32 | POSSIBILITY OF SUCH DAMAGE. 33 | -------------------------------------------------------------------------------- /vendor/topthink/think-migration/LICENSE: -------------------------------------------------------------------------------- 1 | 2 | ThinkPHP遵循Apache2开源协议发布,并提供免费使用。 3 | 版权所有Copyright © 2006-2016 by ThinkPHP (http://thinkphp.cn) 4 | All rights reserved。 5 | ThinkPHP® 商标和著作权所有者为上海顶想信息科技有限公司。 6 | 7 | Apache Licence是著名的非盈利开源组织Apache采用的协议。 8 | 该协议和BSD类似,鼓励代码共享和尊重原作者的著作权, 9 | 允许代码修改,再作为开源或商业软件发布。需要满足 10 | 的条件: 11 | 1. 需要给代码的用户一份Apache Licence ; 12 | 2. 如果你修改了代码,需要在被修改的文件中说明; 13 | 3. 在延伸的代码中(修改和有源代码衍生的代码中)需要 14 | 带有原来代码中的协议,商标,专利声明和其他原来作者规 15 | 定需要包含的说明; 16 | 4. 如果再发布的产品中包含一个Notice文件,则在Notice文 17 | 件中需要带有本协议内容。你可以在Notice中增加自己的 18 | 许可,但不可以表现为对Apache Licence构成更改。 19 | 具体的协议参考:http://www.apache.org/licenses/LICENSE-2.0 20 | 21 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 24 | FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 25 | COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 26 | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 27 | BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 28 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 29 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30 | LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 31 | ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 32 | POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- /thinkphp/library/think/console/command/make/Validate.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | namespace think\console\command\make; 13 | 14 | use think\console\command\Make; 15 | 16 | class Validate extends Make 17 | { 18 | 19 | protected $type = "Validate"; 20 | 21 | protected function configure() 22 | { 23 | parent::configure(); 24 | $this->setName('make:validate') 25 | ->setDescription('Create a validate class'); 26 | } 27 | 28 | protected function getStub() 29 | { 30 | $stubPath = __DIR__ . DIRECTORY_SEPARATOR . 'stubs' . DIRECTORY_SEPARATOR; 31 | 32 | return $stubPath . 'validate.stub'; 33 | } 34 | 35 | protected function getNamespace($appNamespace, $module) 36 | { 37 | return parent::getNamespace($appNamespace, $module) . '\validate'; 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /application/admin/view/GoodsCat/add.html: -------------------------------------------------------------------------------- 1 | {include file='head'} 2 | 3 |
4 |
5 |
6 | 7 |
8 | 9 |
10 |
11 | 12 |
13 | 14 | 15 |
16 |
17 | 18 |
19 |
20 | 21 | 22 |
23 |
24 |
25 |
26 | 27 | 28 | -------------------------------------------------------------------------------- /thinkphp/library/think/facade/Template.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | namespace think\facade; 13 | 14 | use think\Facade; 15 | 16 | /** 17 | * @see \think\Template 18 | * @mixin \think\Template 19 | * @method void assign(mixed $name, mixed $value = '') static 模板变量赋值 20 | * @method mixed get(string $name = '') static 获取模板变量 21 | * @method void fetch(string $template, array $vars = [], array $config = []) static 渲染模板文件 22 | * @method void display(string $content, array $vars = [], array $config = []) static 渲染模板内容 23 | * @method mixed layout(string $name, string $replace = '') static 设置模板布局 24 | */ 25 | class Template extends Facade 26 | { 27 | /** 28 | * 获取当前Facade对应类名(或者已经绑定的容器对象标识) 29 | * @access protected 30 | * @return string 31 | */ 32 | protected static function getFacadeClass() 33 | { 34 | return 'template'; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /thinkphp/library/think/db/exception/ModelNotFoundException.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | namespace think\db\exception; 13 | 14 | use think\exception\DbException; 15 | 16 | class ModelNotFoundException extends DbException 17 | { 18 | protected $model; 19 | 20 | /** 21 | * 构造方法 22 | * @access public 23 | * @param string $message 24 | * @param string $model 25 | * @param array $config 26 | */ 27 | public function __construct($message, $model = '', array $config = []) 28 | { 29 | $this->message = $message; 30 | $this->model = $model; 31 | 32 | $this->setData('Database Config', $config); 33 | } 34 | 35 | /** 36 | * 获取模型类名 37 | * @access public 38 | * @return string 39 | */ 40 | public function getModel() 41 | { 42 | return $this->model; 43 | } 44 | 45 | } 46 | -------------------------------------------------------------------------------- /vendor/topthink/think-image/tests/RotateTest.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | namespace tests; 12 | 13 | use think\Image; 14 | 15 | class RotateTest extends TestCase 16 | { 17 | public function testJpeg() 18 | { 19 | $pathname = TEST_PATH . 'tmp/rotate.jpg'; 20 | $image = Image::open($this->getJpeg()); 21 | $image->rotate(90)->save($pathname); 22 | 23 | $file = new \SplFileInfo($pathname); 24 | 25 | $this->assertTrue($file->isFile()); 26 | 27 | @unlink($pathname); 28 | } 29 | 30 | public function testGif() 31 | { 32 | $pathname = TEST_PATH . 'tmp/rotate.gif'; 33 | $image = Image::open($this->getGif()); 34 | $image->rotate(90)->save($pathname); 35 | 36 | $file = new \SplFileInfo($pathname); 37 | 38 | $this->assertTrue($file->isFile()); 39 | 40 | @unlink($pathname); 41 | } 42 | } -------------------------------------------------------------------------------- /thinkphp/library/think/db/exception/DataNotFoundException.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | namespace think\db\exception; 13 | 14 | use think\exception\DbException; 15 | 16 | class DataNotFoundException extends DbException 17 | { 18 | protected $table; 19 | 20 | /** 21 | * DbException constructor. 22 | * @access public 23 | * @param string $message 24 | * @param string $table 25 | * @param array $config 26 | */ 27 | public function __construct($message, $table = '', array $config = []) 28 | { 29 | $this->message = $message; 30 | $this->table = $table; 31 | 32 | $this->setData('Database Config', $config); 33 | } 34 | 35 | /** 36 | * 获取数据表名 37 | * @access public 38 | * @return string 39 | */ 40 | public function getTable() 41 | { 42 | return $this->table; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /vendor/topthink/think-image/tests/FlipTest.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | namespace tests; 12 | 13 | use think\Image; 14 | 15 | class FlipTest extends TestCase 16 | { 17 | public function testJpeg() 18 | { 19 | $pathname = TEST_PATH . 'tmp/flip.jpg'; 20 | $image = Image::open($this->getJpeg()); 21 | $image->flip()->save($pathname); 22 | 23 | $file = new \SplFileInfo($pathname); 24 | 25 | $this->assertTrue($file->isFile()); 26 | 27 | @unlink($pathname); 28 | } 29 | 30 | 31 | public function testGif() 32 | { 33 | $pathname = TEST_PATH . 'tmp/flip.gif'; 34 | $image = Image::open($this->getGif()); 35 | $image->flip(Image::FLIP_Y)->save($pathname); 36 | 37 | $file = new \SplFileInfo($pathname); 38 | 39 | $this->assertTrue($file->isFile()); 40 | 41 | @unlink($pathname); 42 | } 43 | } -------------------------------------------------------------------------------- /application/admin/controller/demo.php: -------------------------------------------------------------------------------- 1 | connect('127.0.0.1', '6379'); 15 | $price = 100; 16 | //$userId = session('user_id'); 17 | $userId = rand(1, 100); 18 | 19 | $goodsId = 111; 20 | 21 | if ($userId && $redis->decr('amount') > -1) 22 | { 23 | //构造16位md5字符串 24 | $orderNo = date('YmdHis') . $userId; 25 | if ($redis->hMset($orderNo, ['user_id' => $userId, 'goods_id' => $goodsId, 'price' => $price])) 26 | { 27 | //加入队列 28 | $redis->lPush("orders:$goodsId", $orderNo); 29 | //发布一条消息 30 | $redis->publish($this->channel, $orderNo); 31 | } 32 | } 33 | else 34 | { 35 | echo '出错了'; 36 | } 37 | exit; 38 | } 39 | //支付回调接口 40 | public function payNotify() 41 | { 42 | //回调处理 43 | } 44 | 45 | public function setAmount() 46 | { 47 | 48 | $redis = new \Redis(); 49 | $redis->connect('127.0.0.1', '6379'); 50 | $redis->set('amount', 20); 51 | } 52 | 53 | public function flush() 54 | { 55 | $redis = new \Redis(); 56 | $redis->connect('127.0.0.1', '6379'); 57 | $redis->flushDB(); 58 | } 59 | 60 | } 61 | -------------------------------------------------------------------------------- /thinkphp/library/think/facade/Hook.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | namespace think\facade; 13 | 14 | use think\Facade; 15 | 16 | /** 17 | * @see \think\Hook 18 | * @mixin \think\Hook 19 | * @method \think\Hook alias(mixed $name, mixed $behavior = null) static 指定行为标识 20 | * @method void add(string $tag, mixed $behavior, bool $first = false) static 动态添加行为扩展到某个标签 21 | * @method void import(array $tags, bool $recursive = true) static 批量导入插件 22 | * @method array get(string $tag = '') static 获取插件信息 23 | * @method mixed listen(string $tag, mixed $params = null, bool $once = false) static 监听标签的行为 24 | * @method mixed exec(mixed $class, mixed $params = null) static 执行行为 25 | */ 26 | class Hook extends Facade 27 | { 28 | /** 29 | * 获取当前Facade对应类名(或者已经绑定的容器对象标识) 30 | * @access protected 31 | * @return string 32 | */ 33 | protected static function getFacadeClass() 34 | { 35 | return 'hook'; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /config/session.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | // +---------------------------------------------------------------------- 13 | // | 会话设置 14 | // +---------------------------------------------------------------------- 15 | return [ 16 | 'id' => '', 17 | // SESSION_ID的提交变量,解决flash上传跨域 18 | 'var_session_id' => '', 19 | // SESSION 前缀 20 | 'prefix' => 'think', 21 | // 驱动方式 支持redis memcache memcached 22 | 'type' => '', 23 | // 是否自动开启 SESSION 24 | 'auto_start' => true, 25 | ]; 26 | /* 27 | return [ 28 | 'id' => '', 29 | // SESSION_ID的提交变量,解决flash上传跨域 30 | 'var_session_id' => '', 31 | // SESSION 前缀 32 | 'prefix' => 'think', 33 | // 驱动方式 支持redis memcache memcached 34 | 'type' => 'redis', 35 | 'host' => '127.0.0.1', 36 | 'port' => '6379', 37 | // 是否自动开启 SESSION 38 | 'auto_start' => true, 39 | 'expire' => 86400 40 | ]; 41 | */ -------------------------------------------------------------------------------- /thinkphp/library/think/exception/DbException.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | namespace think\exception; 13 | 14 | use think\Exception; 15 | 16 | /** 17 | * Database相关异常处理类 18 | */ 19 | class DbException extends Exception 20 | { 21 | /** 22 | * DbException constructor. 23 | * @access public 24 | * @param string $message 25 | * @param array $config 26 | * @param string $sql 27 | * @param int $code 28 | */ 29 | public function __construct($message, array $config, $sql, $code = 10500) 30 | { 31 | $this->message = $message; 32 | $this->code = $code; 33 | 34 | $this->setData('Database Status', [ 35 | 'Error Code' => $code, 36 | 'Error Message' => $message, 37 | 'Error SQL' => $sql, 38 | ]); 39 | 40 | unset($config['username'], $config['password']); 41 | $this->setData('Database Config', $config); 42 | } 43 | 44 | } 45 | -------------------------------------------------------------------------------- /thinkphp/library/think/console/output/driver/Buffer.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | namespace think\console\output\driver; 13 | 14 | use think\console\Output; 15 | 16 | class Buffer 17 | { 18 | /** 19 | * @var string 20 | */ 21 | private $buffer = ''; 22 | 23 | public function __construct(Output $output) 24 | { 25 | // do nothing 26 | } 27 | 28 | public function fetch() 29 | { 30 | $content = $this->buffer; 31 | $this->buffer = ''; 32 | return $content; 33 | } 34 | 35 | public function write($messages, $newline = false, $options = Output::OUTPUT_NORMAL) 36 | { 37 | $messages = (array) $messages; 38 | 39 | foreach ($messages as $message) { 40 | $this->buffer .= $message; 41 | } 42 | if ($newline) { 43 | $this->buffer .= "\n"; 44 | } 45 | } 46 | 47 | public function renderException(\Exception $e) 48 | { 49 | // do nothing 50 | } 51 | 52 | } 53 | -------------------------------------------------------------------------------- /thinkphp/library/think/exception/PDOException.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | namespace think\exception; 13 | 14 | /** 15 | * PDO异常处理类 16 | * 重新封装了系统的\PDOException类 17 | */ 18 | class PDOException extends DbException 19 | { 20 | /** 21 | * PDOException constructor. 22 | * @access public 23 | * @param \PDOException $exception 24 | * @param array $config 25 | * @param string $sql 26 | * @param int $code 27 | */ 28 | public function __construct(\PDOException $exception, array $config, $sql, $code = 10501) 29 | { 30 | $error = $exception->errorInfo; 31 | 32 | $this->setData('PDO Error Info', [ 33 | 'SQLSTATE' => $error[0], 34 | 'Driver Error Code' => isset($error[1]) ? $error[1] : 0, 35 | 'Driver Error Message' => isset($error[2]) ? $error[2] : '', 36 | ]); 37 | 38 | parent::__construct($exception->getMessage(), $config, $sql, $code); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /thinkphp/phpunit.xml.dist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | ./library/think/*/tests/ 27 | 28 | 29 | 30 | 31 | 32 | ./library/ 33 | 34 | ./library/think/*/tests 35 | ./library/think/*/assets 36 | ./library/think/*/resources 37 | ./library/think/*/vendor 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /thinkphp/library/think/console/command/make/stubs/controller.stub: -------------------------------------------------------------------------------- 1 | 3 |
4 |
5 |
6 | 7 |
8 | 9 |
10 |
11 | 12 |
13 | 14 |
15 |
16 | 17 |
18 | 19 |
20 |
21 | 22 |
23 |
24 | 25 | 26 |
27 |
28 |
29 |
30 | 31 | 32 | -------------------------------------------------------------------------------- /application/admin/view/Database/index.html: -------------------------------------------------------------------------------- 1 | {include file='head'} 2 | 3 | 4 |
5 |
6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | {foreach name='list' item='myList' empty=""} 20 | 21 | 27 | 28 | {/foreach} 29 | 30 |
数据文件文件大小时间操作
暂无数据
{$myList.file}{$myList.size}KB{$myList.time} 22 |   23 | 24 | 25 |   26 |
31 |
32 | 33 |
34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /thinkphp/library/think/process/exception/Faild.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | namespace think\process\exception; 13 | 14 | use think\Process; 15 | 16 | class Faild extends \RuntimeException 17 | { 18 | 19 | private $process; 20 | 21 | public function __construct(Process $process) 22 | { 23 | if ($process->isSuccessful()) { 24 | throw new \InvalidArgumentException('Expected a failed process, but the given process was successful.'); 25 | } 26 | 27 | $error = sprintf('The command "%s" failed.' . "\nExit Code: %s(%s)", $process->getCommandLine(), $process->getExitCode(), $process->getExitCodeText()); 28 | 29 | if (!$process->isOutputDisabled()) { 30 | $error .= sprintf("\n\nOutput:\n================\n%s\n\nError Output:\n================\n%s", $process->getOutput(), $process->getErrorOutput()); 31 | } 32 | 33 | parent::__construct($error); 34 | 35 | $this->process = $process; 36 | } 37 | 38 | public function getProcess() 39 | { 40 | return $this->process; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /vendor/topthink/think-migration/phinx/src/Phinx/Migration/IrreversibleMigrationException.php: -------------------------------------------------------------------------------- 1 | 36 | */ 37 | class IrreversibleMigrationException extends \Exception 38 | { 39 | } 40 | -------------------------------------------------------------------------------- /thinkphp/library/think/process/exception/Failed.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | namespace think\process\exception; 13 | 14 | use think\Process; 15 | 16 | class Failed extends \RuntimeException 17 | { 18 | 19 | private $process; 20 | 21 | public function __construct(Process $process) 22 | { 23 | if ($process->isSuccessful()) { 24 | throw new \InvalidArgumentException('Expected a failed process, but the given process was successful.'); 25 | } 26 | 27 | $error = sprintf('The command "%s" failed.' . "\nExit Code: %s(%s)", $process->getCommandLine(), $process->getExitCode(), $process->getExitCodeText()); 28 | 29 | if (!$process->isOutputDisabled()) { 30 | $error .= sprintf("\n\nOutput:\n================\n%s\n\nError Output:\n================\n%s", $process->getOutput(), $process->getErrorOutput()); 31 | } 32 | 33 | parent::__construct($error); 34 | 35 | $this->process = $process; 36 | } 37 | 38 | public function getProcess() 39 | { 40 | return $this->process; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /thinkphp/library/think/facade/Cookie.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | namespace think\facade; 13 | 14 | use think\Facade; 15 | 16 | /** 17 | * @see \think\Cookie 18 | * @mixin \think\Cookie 19 | * @method void init(array $config = []) static 初始化 20 | * @method bool has(string $name,string $prefix = null) static 判断Cookie数据 21 | * @method mixed prefix(string $prefix = '') static 设置或者获取cookie作用域(前缀) 22 | * @method mixed get(string $name,string $prefix = null) static Cookie获取 23 | * @method mixed set(string $name, mixed $value = null, mixed $option = null) static 设置Cookie 24 | * @method void forever(string $name, mixed $value = null, mixed $option = null) static 永久保存Cookie数据 25 | * @method void delete(string $name, string $prefix = null) static Cookie删除 26 | * @method void clear($prefix = null) static Cookie清空 27 | */ 28 | class Cookie extends Facade 29 | { 30 | /** 31 | * 获取当前Facade对应类名(或者已经绑定的容器对象标识) 32 | * @access protected 33 | * @return string 34 | */ 35 | protected static function getFacadeClass() 36 | { 37 | return 'cookie'; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /thinkphp/library/think/response/Json.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | namespace think\response; 13 | 14 | use think\Response; 15 | 16 | class Json extends Response 17 | { 18 | // 输出参数 19 | protected $options = [ 20 | 'json_encode_param' => JSON_UNESCAPED_UNICODE, 21 | ]; 22 | 23 | protected $contentType = 'application/json'; 24 | 25 | /** 26 | * 处理数据 27 | * @access protected 28 | * @param mixed $data 要处理的数据 29 | * @return mixed 30 | * @throws \Exception 31 | */ 32 | protected function output($data) 33 | { 34 | try { 35 | // 返回JSON数据格式到客户端 包含状态信息 36 | $data = json_encode($data, $this->options['json_encode_param']); 37 | 38 | if (false === $data) { 39 | throw new \InvalidArgumentException(json_last_error_msg()); 40 | } 41 | 42 | return $data; 43 | } catch (\Exception $e) { 44 | if ($e->getPrevious()) { 45 | throw $e->getPrevious(); 46 | } 47 | throw $e; 48 | } 49 | } 50 | 51 | } 52 | -------------------------------------------------------------------------------- /public/static/fonts/iconfont.css: -------------------------------------------------------------------------------- 1 | 2 | @font-face {font-family: "iconfont"; 3 | src: url('iconfont.eot?t=1490337422326'); /* IE9*/ 4 | src: url('iconfont.eot?t=1490337422326#iefix') format('embedded-opentype'), /* IE6-IE8 */ 5 | url('iconfont.woff?t=1490337422326') format('woff'), /* chrome, firefox */ 6 | url('iconfont.ttf?t=1490337422326') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/ 7 | url('iconfont.svg?t=1490337422326#iconfont') format('svg'); /* iOS 4.1- */ 8 | } 9 | 10 | .iconfont { 11 | font-family:"iconfont" !important; 12 | font-size:16px; 13 | font-style:normal; 14 | -webkit-font-smoothing: antialiased; 15 | -moz-osx-font-smoothing: grayscale; 16 | } 17 | 18 | .icon-shuaxin:before { content: "\e60d"; } 19 | 20 | .icon-shujuku:before { content: "\e600"; } 21 | 22 | .icon-shanchu:before { content: "\e601"; } 23 | 24 | .icon-wenzhang:before { content: "\e602"; } 25 | 26 | .icon-lianjie:before { content: "\e60c"; } 27 | 28 | .icon-caidan:before { content: "\e60e"; } 29 | 30 | .icon-youjian:before { content: "\e603"; } 31 | 32 | .icon-tuijian:before { content: "\e604"; } 33 | 34 | .icon-msg:before { content: "\e605"; } 35 | 36 | .icon-userpro:before { content: "\e606"; } 37 | 38 | .icon-leimulianjie:before { content: "\e607"; } 39 | 40 | .icon-list:before { content: "\e608"; } 41 | 42 | .icon-remind:before { content: "\e609"; } 43 | 44 | .icon-Password:before { content: "\e60a"; } 45 | 46 | .icon-Setup:before { content: "\e60b"; } 47 | 48 | .icon-shangsheng:before { content: "\e628"; } 49 | 50 | .icon-fajianxiang:before { content: "\e639"; } 51 | 52 | .icon-xiajiang:before { content: "\e60f"; } 53 | 54 | .icon-paixu:before { content: "\e656"; } 55 | 56 | -------------------------------------------------------------------------------- /thinkphp/library/think/Exception.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | namespace think; 13 | 14 | class Exception extends \Exception 15 | { 16 | 17 | /** 18 | * 保存异常页面显示的额外Debug数据 19 | * @var array 20 | */ 21 | protected $data = []; 22 | 23 | /** 24 | * 设置异常额外的Debug数据 25 | * 数据将会显示为下面的格式 26 | * 27 | * Exception Data 28 | * -------------------------------------------------- 29 | * Label 1 30 | * key1 value1 31 | * key2 value2 32 | * Label 2 33 | * key1 value1 34 | * key2 value2 35 | * 36 | * @access protected 37 | * @param string $label 数据分类,用于异常页面显示 38 | * @param array $data 需要显示的数据,必须为关联数组 39 | */ 40 | final protected function setData($label, array $data) 41 | { 42 | $this->data[$label] = $data; 43 | } 44 | 45 | /** 46 | * 获取异常额外Debug数据 47 | * 主要用于输出到异常页面便于调试 48 | * @access public 49 | * @return array 由setData设置的Debug数据 50 | */ 51 | final public function getData() 52 | { 53 | return $this->data; 54 | } 55 | 56 | } 57 | -------------------------------------------------------------------------------- /application/admin/view/AuthMenu/edit.html: -------------------------------------------------------------------------------- 1 | {include file='head'} 2 | 3 |
4 |
5 |
6 | 7 |
8 | 9 |
10 |
11 | 12 |
13 | 14 |
15 |
16 | 17 |
18 | 19 |
20 |
21 | 22 |
23 |
24 | 25 | 26 |
27 |
28 |
29 |
30 | 31 | 32 | -------------------------------------------------------------------------------- /thinkphp/library/think/facade/Lang.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | namespace think\facade; 13 | 14 | use think\Facade; 15 | 16 | /** 17 | * @see \think\Lang 18 | * @mixin \think\Lang 19 | * @method mixed range($range = '') static 设定当前的语言 20 | * @method mixed set(mixed $name, string $value = null, string $range = '') static 设置语言定义 21 | * @method array load(mixed $file, string $range = '') static 加载语言定义 22 | * @method mixed get(string $name = null, array $vars = [], string $range = '') static 获取语言定义 23 | * @method mixed has(string $name, string $range = '') static 获取语言定义 24 | * @method string detect() static 自动侦测设置获取语言选择 25 | * @method void saveToCookie(string $lang = null) static 设置当前语言到Cookie 26 | * @method void setLangDetectVar(string $var) static 设置语言自动侦测的变量 27 | * @method void setLangCookieVar(string $var) static 设置语言的cookie保存变量 28 | * @method void setAllowLangList(array $list) static 设置允许的语言列表 29 | */ 30 | class Lang extends Facade 31 | { 32 | /** 33 | * 获取当前Facade对应类名(或者已经绑定的容器对象标识) 34 | * @access protected 35 | * @return string 36 | */ 37 | protected static function getFacadeClass() 38 | { 39 | return 'lang'; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /thinkphp/library/think/exception/ThrowableError.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | namespace think\exception; 13 | 14 | class ThrowableError extends \ErrorException 15 | { 16 | public function __construct(\Throwable $e) 17 | { 18 | 19 | if ($e instanceof \ParseError) { 20 | $message = 'Parse error: ' . $e->getMessage(); 21 | $severity = E_PARSE; 22 | } elseif ($e instanceof \TypeError) { 23 | $message = 'Type error: ' . $e->getMessage(); 24 | $severity = E_RECOVERABLE_ERROR; 25 | } else { 26 | $message = 'Fatal error: ' . $e->getMessage(); 27 | $severity = E_ERROR; 28 | } 29 | 30 | parent::__construct( 31 | $message, 32 | $e->getCode(), 33 | $severity, 34 | $e->getFile(), 35 | $e->getLine() 36 | ); 37 | 38 | $this->setTrace($e->getTrace()); 39 | } 40 | 41 | protected function setTrace($trace) 42 | { 43 | $traceReflector = new \ReflectionProperty('Exception', 'trace'); 44 | $traceReflector->setAccessible(true); 45 | $traceReflector->setValue($this, $trace); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /application/admin/view/Message/edit.html: -------------------------------------------------------------------------------- 1 | {include file='head'} 2 | 3 |
4 |
5 |
6 | 7 |
8 | 9 |
10 |
11 | 12 |
13 | 14 |
15 | 16 |
17 | {foreach name="statusItems" item="status"} 18 | 19 | {/foreach} 20 |
21 | 22 | 23 |
24 |
25 | 26 | 27 |
28 |
29 |
30 |
31 | 32 | 33 | -------------------------------------------------------------------------------- /public/static/layui/lay/modules/laytpl.js: -------------------------------------------------------------------------------- 1 | /** layui-v2.3.0 MIT License By https://www.layui.com */ 2 | ;layui.define(function(e){"use strict";var r={open:"{{",close:"}}"},c={exp:function(e){return new RegExp(e,"g")},query:function(e,c,t){var o=["#([\\s\\S])+?","([^{#}])*?"][e||0];return n((c||"")+r.open+o+r.close+(t||""))},escape:function(e){return String(e||"").replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,""")},error:function(e,r){var c="Laytpl Error:";return"object"==typeof console&&console.error(c+e+"\n"+(r||"")),c+e}},n=c.exp,t=function(e){this.tpl=e};t.pt=t.prototype,window.errors=0,t.pt.parse=function(e,t){var o=this,p=e,a=n("^"+r.open+"#",""),l=n(r.close+"$","");e=e.replace(/\s+|\r|\t|\n/g," ").replace(n(r.open+"#"),r.open+"# ").replace(n(r.close+"}"),"} "+r.close).replace(/\\/g,"\\\\").replace(n(r.open+"!(.+?)!"+r.close),function(e){return e=e.replace(n("^"+r.open+"!"),"").replace(n("!"+r.close),"").replace(n(r.open+"|"+r.close),function(e){return e.replace(/(.)/g,"\\$1")})}).replace(/(?="|')/g,"\\").replace(c.query(),function(e){return e=e.replace(a,"").replace(l,""),'";'+e.replace(/\\/g,"")+';view+="'}).replace(c.query(1),function(e){var c='"+(';return e.replace(/\s/g,"")===r.open+r.close?"":(e=e.replace(n(r.open+"|"+r.close),""),/^=/.test(e)&&(e=e.replace(/^=/,""),c='"+_escape_('),c+e.replace(/\\/g,"")+')+"')}),e='"use strict";var view = "'+e+'";return view;';try{return o.cache=e=new Function("d, _escape_",e),e(t,c.escape)}catch(u){return delete o.cache,c.error(u,p)}},t.pt.render=function(e,r){var n,t=this;return e?(n=t.cache?t.cache(e,c.escape):t.parse(t.tpl,e),r?void r(n):n):c.error("no data")};var o=function(e){return"string"!=typeof e?c.error("Template not found"):new t(e)};o.config=function(e){e=e||{};for(var c in e)r[c]=e[c]},o.v="1.2.0",e("laytpl",o)}); -------------------------------------------------------------------------------- /thinkphp/library/think/exception/ErrorException.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | namespace think\exception; 13 | 14 | use think\Exception; 15 | 16 | /** 17 | * ThinkPHP错误异常 18 | * 主要用于封装 set_error_handler 和 register_shutdown_function 得到的错误 19 | * 除开从 think\Exception 继承的功能 20 | * 其他和PHP系统\ErrorException功能基本一样 21 | */ 22 | class ErrorException extends Exception 23 | { 24 | /** 25 | * 用于保存错误级别 26 | * @var integer 27 | */ 28 | protected $severity; 29 | 30 | /** 31 | * 错误异常构造函数 32 | * @access public 33 | * @param integer $severity 错误级别 34 | * @param string $message 错误详细信息 35 | * @param string $file 出错文件路径 36 | * @param integer $line 出错行号 37 | */ 38 | public function __construct($severity, $message, $file, $line) 39 | { 40 | $this->severity = $severity; 41 | $this->message = $message; 42 | $this->file = $file; 43 | $this->line = $line; 44 | $this->code = 0; 45 | } 46 | 47 | /** 48 | * 获取错误级别 49 | * @access public 50 | * @return integer 错误级别 51 | */ 52 | final public function getSeverity() 53 | { 54 | return $this->severity; 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /vendor/topthink/think-captcha/src/helper.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | Route::get('captcha/[:id]', "\\think\\captcha\\CaptchaController@index"); 13 | 14 | Validate::extend('captcha', function ($value, $id = '') { 15 | return captcha_check($value, $id); 16 | }); 17 | 18 | Validate::setTypeMsg('captcha', ':attribute错误!'); 19 | 20 | /** 21 | * @param string $id 22 | * @param array $config 23 | * @return \think\Response 24 | */ 25 | function captcha($id = '', $config = []) 26 | { 27 | $captcha = new \think\captcha\Captcha($config); 28 | return $captcha->entry($id); 29 | } 30 | 31 | /** 32 | * @param $id 33 | * @return string 34 | */ 35 | function captcha_src($id = '') 36 | { 37 | return Url::build('/captcha' . ($id ? "/{$id}" : '')); 38 | } 39 | 40 | /** 41 | * @param $id 42 | * @return mixed 43 | */ 44 | function captcha_img($id = '') 45 | { 46 | return 'captcha'; 47 | } 48 | 49 | /** 50 | * @param $value 51 | * @param string $id 52 | * @param array $config 53 | * @return bool 54 | */ 55 | function captcha_check($value, $id = '') 56 | { 57 | $captcha = new \think\captcha\Captcha((array) Config::pull('captcha')); 58 | return $captcha->check($value, $id); 59 | } 60 | -------------------------------------------------------------------------------- /thinkphp/library/think/facade/View.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | namespace think\facade; 13 | 14 | use think\Facade; 15 | 16 | /** 17 | * @see \think\View 18 | * @mixin \think\View 19 | * @method \think\View init(mixed $engine = [], array $replace = []) static 初始化 20 | * @method \think\View share(mixed $name, mixed $value = '') static 模板变量静态赋值 21 | * @method \think\View assign(mixed $name, mixed $value = '') static 模板变量赋值 22 | * @method \think\View config(mixed $name, mixed $value = '') static 配置模板引擎 23 | * @method \think\View exists(mixed $name) static 检查模板是否存在 24 | * @method \think\View filter(Callable $filter) static 视图内容过滤 25 | * @method \think\View engine(mixed $engine = []) static 设置当前模板解析的引擎 26 | * @method string fetch(string $template = '', array $vars = [], array $replace = [], array $config = [], bool $renderContent = false) static 解析和获取模板内容 27 | * @method string display(string $content = '', array $vars = [], array $replace = [], array $config = []) static 渲染内容输出 28 | */ 29 | class View extends Facade 30 | { 31 | /** 32 | * 获取当前Facade对应类名(或者已经绑定的容器对象标识) 33 | * @access protected 34 | * @return string 35 | */ 36 | protected static function getFacadeClass() 37 | { 38 | return 'view'; 39 | } 40 | } 41 | --------------------------------------------------------------------------------